diff options
author | Shubham Saini <shubham6405@gmail.com> | 2018-12-11 10:01:23 +0000 |
---|---|---|
committer | Shubham Saini <shubham6405@gmail.com> | 2018-12-11 10:01:23 +0000 |
commit | 68df54d6629ec019142eb149dd037774f2d11e7c (patch) | |
tree | 345bc22d46b4e01a4ba8303b94278952a4ed2b9e /venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_internal/build_env.py |
First commit
Diffstat (limited to 'venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_internal/build_env.py')
-rw-r--r-- | venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_internal/build_env.py | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_internal/build_env.py b/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_internal/build_env.py new file mode 100644 index 0000000..8ad7735 --- /dev/null +++ b/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_internal/build_env.py | |||
@@ -0,0 +1,92 @@ | |||
1 | """Build Environment used for isolation during sdist building | ||
2 | """ | ||
3 | |||
4 | import os | ||
5 | from distutils.sysconfig import get_python_lib | ||
6 | from sysconfig import get_paths | ||
7 | |||
8 | from pip._internal.utils.temp_dir import TempDirectory | ||
9 | |||
10 | |||
11 | class BuildEnvironment(object): | ||
12 | """Creates and manages an isolated environment to install build deps | ||
13 | """ | ||
14 | |||
15 | def __init__(self, no_clean): | ||
16 | self._temp_dir = TempDirectory(kind="build-env") | ||
17 | self._no_clean = no_clean | ||
18 | |||
19 | @property | ||
20 | def path(self): | ||
21 | return self._temp_dir.path | ||
22 | |||
23 | def __enter__(self): | ||
24 | self._temp_dir.create() | ||
25 | |||
26 | self.save_path = os.environ.get('PATH', None) | ||
27 | self.save_pythonpath = os.environ.get('PYTHONPATH', None) | ||
28 | self.save_nousersite = os.environ.get('PYTHONNOUSERSITE', None) | ||
29 | |||
30 | install_scheme = 'nt' if (os.name == 'nt') else 'posix_prefix' | ||
31 | install_dirs = get_paths(install_scheme, vars={ | ||
32 | 'base': self.path, | ||
33 | 'platbase': self.path, | ||
34 | }) | ||
35 | |||
36 | scripts = install_dirs['scripts'] | ||
37 | if self.save_path: | ||
38 | os.environ['PATH'] = scripts + os.pathsep + self.save_path | ||
39 | else: | ||
40 | os.environ['PATH'] = scripts + os.pathsep + os.defpath | ||
41 | |||
42 | # Note: prefer distutils' sysconfig to get the | ||
43 | # library paths so PyPy is correctly supported. | ||
44 | purelib = get_python_lib(plat_specific=0, prefix=self.path) | ||
45 | platlib = get_python_lib(plat_specific=1, prefix=self.path) | ||
46 | if purelib == platlib: | ||
47 | lib_dirs = purelib | ||
48 | else: | ||
49 | lib_dirs = purelib + os.pathsep + platlib | ||
50 | if self.save_pythonpath: | ||
51 | os.environ['PYTHONPATH'] = lib_dirs + os.pathsep + \ | ||
52 | self.save_pythonpath | ||
53 | else: | ||
54 | os.environ['PYTHONPATH'] = lib_dirs | ||
55 | |||
56 | os.environ['PYTHONNOUSERSITE'] = '1' | ||
57 | |||
58 | return self.path | ||
59 | |||
60 | def __exit__(self, exc_type, exc_val, exc_tb): | ||
61 | if not self._no_clean: | ||
62 | self._temp_dir.cleanup() | ||
63 | |||
64 | def restore_var(varname, old_value): | ||
65 | if old_value is None: | ||
66 | os.environ.pop(varname, None) | ||
67 | else: | ||
68 | os.environ[varname] = old_value | ||
69 | |||
70 | restore_var('PATH', self.save_path) | ||
71 | restore_var('PYTHONPATH', self.save_pythonpath) | ||
72 | restore_var('PYTHONNOUSERSITE', self.save_nousersite) | ||
73 | |||
74 | def cleanup(self): | ||
75 | self._temp_dir.cleanup() | ||
76 | |||
77 | |||
78 | class NoOpBuildEnvironment(BuildEnvironment): | ||
79 | """A no-op drop-in replacement for BuildEnvironment | ||
80 | """ | ||
81 | |||
82 | def __init__(self, no_clean): | ||
83 | pass | ||
84 | |||
85 | def __enter__(self): | ||
86 | pass | ||
87 | |||
88 | def __exit__(self, exc_type, exc_val, exc_tb): | ||
89 | pass | ||
90 | |||
91 | def cleanup(self): | ||
92 | pass | ||