Mercurial > repos > guerler > springsuite
comparison planemo/lib/python3.7/site-packages/virtualenv/seed/embed/pip_invoke.py @ 1:56ad4e20f292 draft
"planemo upload commit 6eee67778febed82ddd413c3ca40b3183a3898f1"
author | guerler |
---|---|
date | Fri, 31 Jul 2020 00:32:28 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
0:d30785e31577 | 1:56ad4e20f292 |
---|---|
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) | |
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 ) | |
50 if wheel is None: | |
51 raise RuntimeError("could not get wheel for distribution {}".format(dist)) | |
52 folders.add(str(wheel.path.parent)) | |
53 cmd.append(Version.as_pip_req(dist, wheel.version)) | |
54 for folder in sorted(folders): | |
55 cmd.extend(["--find-links", str(folder)]) | |
56 yield cmd |