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