Mercurial > repos > shellac > sam_consensus_v3
comparison env/lib/python3.9/site-packages/virtualenv/seed/embed/pip_invoke.py @ 0:4f3585e2f14b draft default tip
"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author | shellac |
---|---|
date | Mon, 22 Mar 2021 18:12:50 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4f3585e2f14b |
---|---|
1 from __future__ import absolute_import, unicode_literals | |
2 | |
3 import logging | |
4 from contextlib import contextmanager | |
5 | |
6 from virtualenv.discovery.cached_py_info import LogCmd | |
7 from virtualenv.seed.embed.base_embed import BaseEmbed | |
8 from virtualenv.util.subprocess import Popen | |
9 | |
10 from ..wheels import Version, get_wheel, pip_wheel_env_run | |
11 | |
12 | |
13 class PipInvoke(BaseEmbed): | |
14 def __init__(self, options): | |
15 super(PipInvoke, self).__init__(options) | |
16 | |
17 def run(self, creator): | |
18 if not self.enabled: | |
19 return | |
20 for_py_version = creator.interpreter.version_release_str | |
21 with self.get_pip_install_cmd(creator.exe, for_py_version) as cmd: | |
22 env = pip_wheel_env_run(self.extra_search_dir, self.app_data, self.env) | |
23 self._execute(cmd, env) | |
24 | |
25 @staticmethod | |
26 def _execute(cmd, env): | |
27 logging.debug("pip seed by running: %s", LogCmd(cmd, env)) | |
28 process = Popen(cmd, env=env) | |
29 process.communicate() | |
30 if process.returncode != 0: | |
31 raise RuntimeError("failed seed with code {}".format(process.returncode)) | |
32 return process | |
33 | |
34 @contextmanager | |
35 def get_pip_install_cmd(self, exe, for_py_version): | |
36 cmd = [str(exe), "-m", "pip", "-q", "install", "--only-binary", ":all:", "--disable-pip-version-check"] | |
37 if not self.download: | |
38 cmd.append("--no-index") | |
39 folders = set() | |
40 for dist, version in self.distribution_to_versions().items(): | |
41 wheel = get_wheel( | |
42 distribution=dist, | |
43 version=version, | |
44 for_py_version=for_py_version, | |
45 search_dirs=self.extra_search_dir, | |
46 download=False, | |
47 app_data=self.app_data, | |
48 do_periodic_update=self.periodic_update, | |
49 env=self.env, | |
50 ) | |
51 if wheel is None: | |
52 raise RuntimeError("could not get wheel for distribution {}".format(dist)) | |
53 folders.add(str(wheel.path.parent)) | |
54 cmd.append(Version.as_pip_req(dist, wheel.version)) | |
55 for folder in sorted(folders): | |
56 cmd.extend(["--find-links", str(folder)]) | |
57 yield cmd |