def with_project_on_sys_path(self, func): # Ensure metadata is up-to-date self.reinitialize_command('build_py', inplace=0) self.run_command('build_py') bpy_cmd = self.get_finalized_command("build_py") build_path = normalize_path(bpy_cmd.build_lib) # Build extensions self.reinitialize_command('egg_info', egg_base=build_path) self.run_command('egg_info') self.reinitialize_command('build_ext', inplace=0) self.run_command('build_ext') ei_cmd = self.get_finalized_command("egg_info") old_path = sys.path[:] old_modules = sys.modules.copy() try: sys.path.insert(0, normalize_path(ei_cmd.egg_base)) working_set.__init__() add_activation_listener(lambda dist: dist.activate()) require('%s==%s' % (ei_cmd.egg_name, ei_cmd.egg_version)) func() finally: sys.path[:] = old_path sys.modules.clear() sys.modules.update(old_modules) working_set.__init__()
def add_project_to_sys_path(self): from pkg_resources import ( add_activation_listener, normalize_path, require, working_set, ) self.reinitialize_command("egg_info") self.run_command("egg_info") # Check if this distribution is already on sys.path # and remove that version, this ensures that the right # copy of the package gets tested. self.__old_path = sys.path[:] self.__old_modules = sys.modules.copy() ei_cmd = self.get_finalized_command("egg_info") sys.path.insert(0, normalize_path(ei_cmd.egg_base)) sys.path.insert(1, os.path.dirname(__file__)) # Strip the namespace packages defined in this distribution # from sys.modules, needed to reset the search path for # those modules. nspkgs = getattr(self.distribution, "namespace_packages", None) if nspkgs is not None: for nm in nspkgs: del sys.modules[nm] # Reset pkg_resources state: add_activation_listener(lambda dist: dist.activate()) working_set.__init__() require("%s==%s" % (ei_cmd.egg_name, ei_cmd.egg_version))
def add_project_to_sys_path(self): from pkg_resources import normalize_path, add_activation_listener from pkg_resources import working_set, require self.reinitialize_command('egg_info') self.run_command('egg_info') self.reinitialize_command('build_ext', inplace=1) self.run_command('build_ext') # Check if this distribution is already on sys.path # and remove that version, this ensures that the right # copy of the package gets tested. self.__old_path = sys.path[:] self.__old_modules = sys.modules.copy() ei_cmd = self.get_finalized_command('egg_info') sys.path.insert(0, normalize_path(ei_cmd.egg_base)) sys.path.insert(1, os.path.dirname(__file__)) # Strip the namespace packages defined in this distribution # from sys.modules, needed to reset the search path for # those modules. nspkgs = getattr(self.distribution, 'namespace_packages') if nspkgs is not None: for nm in nspkgs: del sys.modules[nm] # Reset pkg_resources state: add_activation_listener(lambda dist: dist.activate()) working_set.__init__() require('%s==%s'%(ei_cmd.egg_name, ei_cmd.egg_version))
def project_on_sys_path(self, include_dists=[]): self.run_command('egg_info') # Build extensions in-place self.reinitialize_command('build_ext', inplace=1) self.run_command('build_ext') ei_cmd = self.get_finalized_command("egg_info") old_path = sys.path[:] old_modules = sys.modules.copy() try: project_path = normalize_path(ei_cmd.egg_base) sys.path.insert(0, project_path) working_set.__init__() add_activation_listener(lambda dist: dist.activate()) require('%s==%s' % (ei_cmd.egg_name, ei_cmd.egg_version)) with self.paths_on_pythonpath([project_path]): yield finally: sys.path[:] = old_path sys.modules.clear() sys.modules.update(old_modules) working_set.__init__()
def add_project_to_sys_path(self): from pkg_resources import normalize_path, add_activation_listener from pkg_resources import working_set, require if getattr(self.distribution, 'use_2to3', False): # Using 2to3, cannot do this inplace: self.reinitialize_command('build_py', inplace=0) self.run_command('build_py') bpy_cmd = self.get_finalized_command("build_py") build_path = normalize_path(bpy_cmd.build_lib) self.reinitialize_command('egg_info', egg_base=build_path) self.run_command('egg_info') self.reinitialize_command('build_ext', inplace=0) self.run_command('build_ext') else: self.reinitialize_command('egg_info') self.run_command('egg_info') self.reinitialize_command('build_ext', inplace=1) self.run_command('build_ext') self.__old_path = sys.path[:] self.__old_modules = sys.modules.copy() if 'PyObjCTools' in sys.modules: del sys.modules['PyObjCTools'] ei_cmd = self.get_finalized_command('egg_info') sys.path.insert(0, normalize_path(ei_cmd.egg_base)) sys.path.insert(1, os.path.dirname(__file__)) add_activation_listener(lambda dist: dist.activate()) working_set.__init__() require('%s==%s' % (ei_cmd.egg_name, ei_cmd.egg_version)) from PyObjCTools import TestSupport if os.path.realpath(os.path.dirname( TestSupport.__file__)) != os.path.realpath('Lib/PyObjCTools'): raise DistutilsError( "Setting up test environment failed for 'PyObjCTools.TestSupport'" ) import objc if os.path.realpath(os.path.dirname( objc.__file__)) != os.path.realpath('Lib/objc'): raise DistutilsError( "Setting up test environment failed for 'objc'")
def project_on_sys_path(self): self.build_in_place() ei_cmd = self.get_finalized_command("egg_info") old_path = sys.path[:] old_modules = sys.modules.copy() try: sys.path.insert(0, pkg_resources.normalize_path(ei_cmd.egg_base)) pkg_resources.working_set.__init__() pkg_resources.add_activation_listener(lambda dist: dist.activate()) pkg_resources.require('%s==%s' % (ei_cmd.egg_name, ei_cmd.egg_version)) yield finally: sys.path[:] = old_path sys.modules.clear() sys.modules.update(old_modules) pkg_resources.working_set.__init__()
def add_project_to_sys_path(self): from pkg_resources import normalize_path, add_activation_listener from pkg_resources import working_set, require if getattr(self.distribution, 'use_2to3', False): # Using 2to3, cannot do this inplace: self.reinitialize_command('build_py', inplace=0) self.run_command('build_py') bpy_cmd = self.get_finalized_command("build_py") build_path = normalize_path(bpy_cmd.build_lib) self.reinitialize_command('egg_info', egg_base=build_path) self.run_command('egg_info') self.reinitialize_command('build_ext', inplace=0) self.run_command('build_ext') else: self.reinitialize_command('egg_info') self.run_command('egg_info') self.reinitialize_command('build_ext', inplace=1) self.run_command('build_ext') self.__old_path = sys.path[:] self.__old_modules = sys.modules.copy() if 'PyObjCTools' in sys.modules: del sys.modules['PyObjCTools'] ei_cmd = self.get_finalized_command('egg_info') sys.path.insert(0, normalize_path(ei_cmd.egg_base)) sys.path.insert(1, os.path.dirname(__file__)) add_activation_listener(lambda dist: dist.activate()) working_set.__init__() require('%s==%s'%(ei_cmd.egg_name, ei_cmd.egg_version)) from PyObjCTools import TestSupport if os.path.realpath(os.path.dirname(TestSupport.__file__)) != os.path.realpath('Lib/PyObjCTools'): raise DistutilsError("Setting up test environment failed for 'PyObjCTools.TestSupport'") import objc if os.path.realpath(os.path.dirname(objc.__file__)) != os.path.realpath('Lib/objc'): raise DistutilsError("Setting up test environment failed for 'objc'")
def project_on_sys_path(self, include_dists=[]): with_2to3 = not six.PY2 and getattr( self.distribution, 'use_2to3', False) if with_2to3: # If we run 2to3 we can not do this inplace: # Ensure metadata is up-to-date self.reinitialize_command('build_py', inplace=0) self.run_command('build_py') bpy_cmd = self.get_finalized_command("build_py") build_path = normalize_path(bpy_cmd.build_lib) # Build extensions self.reinitialize_command('egg_info', egg_base=build_path) self.run_command('egg_info') self.reinitialize_command('build_ext', inplace=0) self.run_command('build_ext') else: # Without 2to3 inplace works fine: self.run_command('egg_info') # Build extensions in-place self.reinitialize_command('build_ext', inplace=1) self.run_command('build_ext') ei_cmd = self.get_finalized_command("egg_info") old_path = sys.path[:] old_modules = sys.modules.copy() try: project_path = normalize_path(ei_cmd.egg_base) sys.path.insert(0, project_path) working_set.__init__() add_activation_listener(lambda dist: dist.activate()) require('%s==%s' % (ei_cmd.egg_name, ei_cmd.egg_version)) with self.paths_on_pythonpath([project_path]): yield finally: sys.path[:] = old_path sys.modules.clear() sys.modules.update(old_modules) working_set.__init__()
def cleanup_environment(self): ei_cmd = self.get_finalized_command('egg_info') egg_name = ei_cmd.egg_name.replace('-', '_') to_remove = [] for dirname in sys.path: bn = os.path.basename(dirname) if bn.startswith(egg_name + "-"): to_remove.append(dirname) for dirname in to_remove: log.info("removing installed %r from sys.path before testing"%( dirname,)) sys.path.remove(dirname) from pkg_resources import add_activation_listener add_activation_listener(lambda dist: dist.activate()) working_set.__init__()
def cleanup_environment(self): ei_cmd = self.get_finalized_command('egg_info') egg_name = ei_cmd.egg_name.replace('-', '_') to_remove = [] for dirname in sys.path: bn = os.path.basename(dirname) if bn.startswith(egg_name + "-"): to_remove.append(dirname) for dirname in to_remove: log.info("removing installed %r from sys.path before testing" % (dirname, )) sys.path.remove(dirname) from pkg_resources import add_activation_listener add_activation_listener(lambda dist: dist.activate()) working_set.__init__()
def with_project_on_sys_path(self, func): with_2to3 = ( sys.version_info >= (3,) and getattr(self.distribution, 'use_2to3', False) ) if with_2to3: # If we run 2to3 we can not do this inplace: # Ensure metadata is up-to-date self.reinitialize_command('build_py', inplace=0) self.run_command('build_py') bpy_cmd = self.get_finalized_command("build_py") build_path = normalize_path(bpy_cmd.build_lib) # Build extensions self.reinitialize_command('egg_info', egg_base=build_path) self.run_command('egg_info') self.reinitialize_command('build_ext', inplace=0) self.run_command('build_ext') else: # Without 2to3 inplace works fine: self.run_command('egg_info') # Build extensions in-place self.reinitialize_command('build_ext', inplace=1) self.run_command('build_ext') ei_cmd = self.get_finalized_command("egg_info") old_path = sys.path[:] old_modules = sys.modules.copy() try: sys.path.insert(0, normalize_path(ei_cmd.egg_base)) working_set.__init__() add_activation_listener(lambda dist: dist.activate()) require('%s==%s' % (ei_cmd.egg_name, ei_cmd.egg_version)) func() finally: sys.path[:] = old_path sys.modules.clear() sys.modules.update(old_modules) working_set.__init__()
def add_project_to_sys_path(self): from pkg_resources import normalize_path, add_activation_listener from pkg_resources import working_set, require self.reinitialize_command('egg_info') self.run_command('egg_info') self.reinitialize_command('build_ext', inplace=1) self.run_command('build_ext') self.__old_path = sys.path[:] self.__old_modules = sys.modules.copy() if 'PyObjCTools' in sys.modules: del sys.modules['PyObjCTools'] ei_cmd = self.get_finalized_command('egg_info') sys.path.insert(0, normalize_path(ei_cmd.egg_base)) sys.path.insert(1, os.path.dirname(__file__)) add_activation_listener(lambda dist: dist.activate()) working_set.__init__() require('%s==%s' % (ei_cmd.egg_name, ei_cmd.egg_version))
def add_project_to_sys_path(self): from pkg_resources import normalize_path, add_activation_listener from pkg_resources import working_set, require self.reinitialize_command("egg_info") self.run_command("egg_info") self.reinitialize_command("build_ext", inplace=1) self.run_command("build_ext") self.__old_path = sys.path[:] self.__old_modules = sys.modules.copy() if "PyObjCTools" in sys.modules: del sys.modules["PyObjCTools"] ei_cmd = self.get_finalized_command("egg_info") sys.path.insert(0, normalize_path(ei_cmd.egg_base)) sys.path.insert(1, os.path.dirname(__file__)) add_activation_listener(lambda dist: dist.activate()) working_set.__init__() require("%s==%s" % (ei_cmd.egg_name, ei_cmd.egg_version))
def add_project_to_sys_path(self): from pkg_resources import normalize_path, add_activation_listener from pkg_resources import working_set, require if getattr(self.distribution, 'use_2to3', False): # Using 2to3, cannot do this inplace: self.reinitialize_command('build_py', inplace=0) self.run_command('build_py') bpy_cmd = self.get_finalized_command("build_py") build_path = normalize_path(bpy_cmd.build_lib) self.reinitialize_command('egg_info', egg_base=build_path) self.run_command('egg_info') self.reinitialize_command('build_ext', inplace=0) self.run_command('build_ext') else: self.reinitialize_command('egg_info') self.run_command('egg_info') self.reinitialize_command('build_ext', inplace=1) self.run_command('build_ext') self.__old_path = sys.path[:] self.__old_modules = sys.modules.copy() if 'PyObjCTools' in sys.modules: del sys.modules['PyObjCTools'] ei_cmd = self.get_finalized_command('egg_info') sys.path.insert(0, normalize_path(ei_cmd.egg_base)) sys.path.insert(1, os.path.dirname(__file__)) add_activation_listener(lambda dist: dist.activate()) working_set.__init__() require('%s==%s'%(ei_cmd.egg_name, ei_cmd.egg_version))
def add_project_to_sys_path(self): from pkg_resources import normalize_path, add_activation_listener from pkg_resources import working_set, require self.reinitialize_command("egg_info") self.run_command("egg_info") self.reinitialize_command("build_ext", inplace=1) self.run_command("build_ext") self.__old_path = sys.path[:] self.__old_modules = sys.modules.copy() if "PyObjCTools" in sys.modules: del sys.modules["PyObjCTools"] ei_cmd = self.get_finalized_command("egg_info") sys.path.insert(0, normalize_path(ei_cmd.egg_base)) sys.path.insert(1, os.path.dirname(__file__)) add_activation_listener(lambda dist: dist.activate()) working_set.__init__() require("%s==%s" % (ei_cmd.egg_name, ei_cmd.egg_version)) from PyObjCTools import TestSupport if os.path.realpath(os.path.dirname( TestSupport.__file__)) != os.path.realpath("Lib/PyObjCTools"): raise DistutilsError( "Setting up test environment failed for 'PyObjCTools.TestSupport'" ) import objc if os.path.realpath(os.path.dirname( objc.__file__)) != os.path.realpath("Lib/objc"): raise DistutilsError( "Setting up test environment failed for 'objc'")
def run(self): """A command's raison d'etre: carry out the action it exists to perform, controlled by the options initialized in 'initialize_options()', customized by other commands, the setup script, the command-line, and config files, and finalized in 'finalize_options()'. All terminal output and filesystem interaction should be done by 'run()'. """ if not self.skip_build: # Make sure install requirements are actually installed if self.distribution.install_requires: self.announce('Installing *install_requires* packages') subprocess.check_call( [sys.executable, '-m', 'pip', 'install', '--user', '-q'] + self.distribution.install_requires) # Ensure metadata is up-to-date self.reinitialize_command('build_py', inplace=0) self.run_command('build_py') bpy_cmd = self.get_finalized_command("build_py") build_path = normalize_path(bpy_cmd.build_lib) # Build extensions self.reinitialize_command('egg_info', egg_base=build_path) self.run_command('egg_info') self.reinitialize_command('build_ext', inplace=0) self.run_command('build_ext') # Make sure test requirements are actually installed if self.distribution.tests_require: self.announce('Installing *test_require* packages') subprocess.check_call( [sys.executable, '-m', 'pip', 'install', '--user', '-q'] + self.distribution.tests_require) ei_cmd = self.get_finalized_command("egg_info") # Get actual package location if self.skip_build: # Retrieve installation directory package_path = normalize_path( get_distribution(PACKAGE_NAME).location) else: # Package was just built... package_path = normalize_path(ei_cmd.egg_base) old_path = sys.path[:] old_modules = sys.modules.copy() try: if self.skip_build: sys.path.pop(0) else: sys.path.insert(0, package_path) working_set.__init__() add_activation_listener(lambda dist: dist.activate()) require('%s==%s' % (ei_cmd.egg_name, ei_cmd.egg_version)) if not self._run_tests(package_path): raise DistutilsError("Tests failed!") finally: sys.path[:] = old_path sys.modules.clear() sys.modules.update(old_modules) working_set.__init__()
if name.startswith('name '): format_name = name[5:].strip() if _format_names.get(format_name, data) != data: raise pkg_resources.VersionConflict( "Distribution %r has identical format name (%r) as distribution %r" % (dist, format_name, _format_names[format_nmame][0])) _format_names[format_name] = data continue parts = name.split() if len(parts) != 3 or parts[1] != 'to': warnings.warn( 'Entry point [httpencode.format] %r in distribution ' '%r is not a valid format' % (name, dist)) continue mimetype, type = parts[0], parts[2] mdict = _format_mimetypes.setdefault(mimetype, {}) if mdict.get(type, data) != data: raise pkg_resources.VersionConflict( "Distribution %r has an identical conversion (%r) as distribution %r" % (dist, name, mdict[type][0])) mdict[type] = data tdict = _format_types.setdefault(type, {}) # If mdict didn't have a dup, this shouldn't # either assert tdict.get(mimetype, data) == data tdict[mimetype] = data # This calls dist_activated for all existing and future distributions pkg_resources.add_activation_listener(_dist_activated)
self.run_command('egg_info') # Build extensions in-place self.reinitialize_command('build_ext', inplace=1) self.run_command('build_ext') ei_cmd = self.get_finalized_command("egg_info") old_path = sys.path[:] old_modules = sys.modules.copy() try: project_path = normalize_path(ei_cmd.egg_base) sys.path.insert(0, project_path) working_set.__init__() add_activation_listener(lambda dist: dist.activate()) require('%s==%s' % (ei_cmd.egg_name, ei_cmd.egg_version)) with self.paths_on_pythonpath([project_path]): yield finally: sys.path[:] = old_path sys.modules.clear() sys.modules.update(old_modules) working_set.__init__() @staticmethod @contextlib.contextmanager def paths_on_pythonpath(paths): """ Add the indicated paths to the head of the PYTHONPATH environment variable so that subprocesses will also see the packages at