class_docstr: Enhanced 'build_py' command that includes data files with packages
  
  The data files are specified via a 'package_data' argument to 'setup()'.
  See 'setuptools.dist.Distribution' for more details.
  
  Also, this version of the 'build_py' command allows you to specify both
  'py_modules' and 'packages' in the same setup operation.
docstr: Build modules, packages, and copy data files to build directory
docstr_tok: ["Build","modules",",","packages",",","and","copy","data","files","to","build","directory"]
code: def run(self):
      """Build modules, packages, and copy data files to build directory"""
      if not self.py_modules and not self.packages:
          return
  
      if self.py_modules:
          self.build_modules()
  
      if self.packages:
          self.build_packages()
          self.build_package_data()
  
      self.run_2to3(self.__updated_files, False)
      self.run_2to3(self.__updated_files, True)
      self.run_2to3(self.__doctests_2to3, True)
  
      # Only compile actual .py files, using our base class' idea of what our
      # output files are.
      self.byte_compile(
          orig.build_py.get_outputs(self, include_bytecode=0)
      )
  
imports: from glob import glob
  from distutils.util import convert_path
  import distutils.command.build_py
  import os
  import fnmatch
  import textwrap
  import io
  import distutils.errors
  import itertools
  from setuptools.extern import six
  from setuptools.extern.six.moves import map, filter, filterfalse
label_desc: Use image node_id 2 for calling the build_py obj's underlying member method code with example usage: obj.run() without return types