Mercurial > repos > guerler > hhblits
diff lib/python3.8/site-packages/_virtualenv.py @ 1:64071f2a4cf0 draft default tip
Deleted selected files
author | guerler |
---|---|
date | Mon, 27 Jul 2020 03:55:49 -0400 |
parents | 9e54283cc701 |
children |
line wrap: on
line diff
--- a/lib/python3.8/site-packages/_virtualenv.py Mon Jul 27 03:47:31 2020 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,112 +0,0 @@ -"""Patches that are applied at runtime to the virtual environment""" -# -*- coding: utf-8 -*- - -import os -import sys - -VIRTUALENV_PATCH_FILE = os.path.join(__file__) - - -def patch_dist(dist): - """ - Distutils allows user to configure some arguments via a configuration file: - https://docs.python.org/3/install/index.html#distutils-configuration-files - - Some of this arguments though don't make sense in context of the virtual environment files, let's fix them up. - """ - # we cannot allow some install config as that would get packages installed outside of the virtual environment - old_parse_config_files = dist.Distribution.parse_config_files - - def parse_config_files(self, *args, **kwargs): - result = old_parse_config_files(self, *args, **kwargs) - install = self.get_option_dict("install") - - if "prefix" in install: # the prefix governs where to install the libraries - install["prefix"] = VIRTUALENV_PATCH_FILE, os.path.abspath(sys.prefix) - for base in ("purelib", "platlib", "headers", "scripts", "data"): - key = "install_{}".format(base) - if key in install: # do not allow global configs to hijack venv paths - install.pop(key, None) - return result - - dist.Distribution.parse_config_files = parse_config_files - - -# Import hook that patches some modules to ignore configuration values that break package installation in case -# of virtual environments. -_DISTUTILS_PATCH = "distutils.dist", "setuptools.dist" -if sys.version_info > (3, 4): - # https://docs.python.org/3/library/importlib.html#setting-up-an-importer - from importlib.abc import MetaPathFinder - from importlib.util import find_spec - from threading import Lock - from functools import partial - - class _Finder(MetaPathFinder): - """A meta path finder that allows patching the imported distutils modules""" - - fullname = None - lock = Lock() - - def find_spec(self, fullname, path, target=None): - if fullname in _DISTUTILS_PATCH and self.fullname is None: - with self.lock: - self.fullname = fullname - try: - spec = find_spec(fullname, path) - if spec is not None: - # https://www.python.org/dev/peps/pep-0451/#how-loading-will-work - is_new_api = hasattr(spec.loader, "exec_module") - func_name = "exec_module" if is_new_api else "load_module" - old = getattr(spec.loader, func_name) - func = self.exec_module if is_new_api else self.load_module - if old is not func: - setattr(spec.loader, func_name, partial(func, old)) - return spec - finally: - self.fullname = None - - @staticmethod - def exec_module(old, module): - old(module) - if module.__name__ in _DISTUTILS_PATCH: - patch_dist(module) - - @staticmethod - def load_module(old, name): - module = old(name) - if module.__name__ in _DISTUTILS_PATCH: - patch_dist(module) - return module - - sys.meta_path.insert(0, _Finder()) -else: - # https://www.python.org/dev/peps/pep-0302/ - from imp import find_module - from pkgutil import ImpImporter, ImpLoader - - class _VirtualenvImporter(object, ImpImporter): - def __init__(self, path=None): - object.__init__(self) - ImpImporter.__init__(self, path) - - def find_module(self, fullname, path=None): - if fullname in _DISTUTILS_PATCH: - try: - return _VirtualenvLoader(fullname, *find_module(fullname.split(".")[-1], path)) - except ImportError: - pass - return None - - class _VirtualenvLoader(object, ImpLoader): - def __init__(self, fullname, file, filename, etc): - object.__init__(self) - ImpLoader.__init__(self, fullname, file, filename, etc) - - def load_module(self, fullname): - module = super(_VirtualenvLoader, self).load_module(fullname) - patch_dist(module) - module.__loader__ = None # distlib fallback - return module - - sys.meta_path.append(_VirtualenvImporter())