comparison planemo/lib/python3.7/site-packages/virtualenv/seed/wheels/bundle.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 from virtualenv.app_data import AppDataDiskFolder, TempAppData
4
5 from ..wheels.embed import get_embed_wheel
6 from .periodic_update import periodic_update
7 from .util import Version, Wheel, discover_wheels
8
9
10 def from_bundle(distribution, version, for_py_version, search_dirs, app_data, do_periodic_update):
11 """
12 Load the bundled wheel to a cache directory.
13 """
14 of_version = Version.of_version(version)
15 wheel = load_embed_wheel(app_data, distribution, for_py_version, of_version)
16
17 if version != Version.embed:
18 # 2. check if we have upgraded embed
19 if isinstance(app_data, AppDataDiskFolder) and not isinstance(app_data, TempAppData):
20 wheel = periodic_update(distribution, for_py_version, wheel, search_dirs, app_data, do_periodic_update)
21
22 # 3. acquire from extra search dir
23 found_wheel = from_dir(distribution, of_version, for_py_version, search_dirs)
24 if found_wheel is not None:
25 if wheel is None:
26 wheel = found_wheel
27 elif found_wheel.version_tuple > wheel.version_tuple:
28 wheel = found_wheel
29 return wheel
30
31
32 def load_embed_wheel(app_data, distribution, for_py_version, version):
33 wheel = get_embed_wheel(distribution, for_py_version)
34 if wheel is not None:
35 version_match = version == wheel.version
36 if version is None or version_match:
37 with app_data.ensure_extracted(wheel.path, lambda: app_data.house) as wheel_path:
38 wheel = Wheel(wheel_path)
39 else: # if version does not match ignore
40 wheel = None
41 return wheel
42
43
44 def from_dir(distribution, version, for_py_version, directories):
45 """
46 Load a compatible wheel from a given folder.
47 """
48 for folder in directories:
49 for wheel in discover_wheels(folder, distribution, version, for_py_version):
50 return wheel
51 return None