|
20 | 20 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
21 | 21 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
22 | 22 | # SOFTWARE. |
| 23 | +import sys |
23 | 24 |
|
| 25 | +from ducktools.lazyimporter import LazyImporter |
| 26 | +from ducktools.lazyimporter.capture import capture_imports |
24 | 27 |
|
25 | | -from ducktools.lazyimporter import ( |
26 | | - LazyImporter, |
27 | | - FromImport, |
28 | | - ModuleImport, |
29 | | - MultiFromImport, |
30 | | - TryExceptImport, |
31 | | -) |
| 28 | +__all__ = [ |
| 29 | + # stdlib |
| 30 | + "hashlib", |
| 31 | + "json", |
| 32 | + "metadata", # importlib.metadata |
| 33 | + "re", |
| 34 | + "shutil", |
| 35 | + "sql", |
| 36 | + "subprocess", |
| 37 | + "tempfile", |
| 38 | + "tomllib", |
| 39 | + "warnings", |
| 40 | + "zipfile", |
32 | 41 |
|
33 | | -laz = LazyImporter( |
34 | | - [ |
35 | | - # Stdlib and dependency imports |
36 | | - ModuleImport("hashlib"), |
37 | | - ModuleImport("json"), |
38 | | - ModuleImport("re"), |
39 | | - ModuleImport("shutil"), |
40 | | - ModuleImport("sqlite3", asname="sql"), |
41 | | - ModuleImport("subprocess"), |
42 | | - ModuleImport("tempfile"), |
43 | | - ModuleImport("warnings"), |
44 | | - ModuleImport("zipfile"), |
| 42 | + "TemporaryDirectory", |
| 43 | + "urlopen", |
45 | 44 |
|
46 | | - MultiFromImport( |
47 | | - "ducktools.pythonfinder", |
48 | | - ["list_python_installs", "PythonInstall"], |
49 | | - ), |
50 | | - FromImport( |
51 | | - "ducktools.pythonfinder.shared", |
52 | | - "get_uv_pythons", |
53 | | - "get_installed_uv_pythons" |
54 | | - ), |
55 | | - FromImport( |
56 | | - "importlib", |
57 | | - "metadata" |
58 | | - ), |
59 | | - FromImport( |
60 | | - "tempfile", |
61 | | - "TemporaryDirectory" |
62 | | - ), |
63 | | - FromImport( |
64 | | - "urllib.request", |
65 | | - "urlopen" |
66 | | - ), |
| 45 | + # Packaging |
| 46 | + "Requirement", |
| 47 | + "InvalidRequirement", |
| 48 | + "SpecifierSet", |
| 49 | + "InvalidSpecifier", |
| 50 | + "Version", |
| 51 | + "InvalidVersion", |
67 | 52 |
|
68 | | - MultiFromImport( |
69 | | - "packaging.requirements", |
70 | | - ["Requirement", "InvalidRequirement"], |
71 | | - ), |
72 | | - MultiFromImport( |
73 | | - "packaging.specifiers", |
74 | | - ["SpecifierSet", "InvalidSpecifier"], |
75 | | - ), |
76 | | - MultiFromImport( |
77 | | - "packaging.version", |
78 | | - ["Version", "InvalidVersion"] |
79 | | - ), |
| 53 | + # ducktools-pythonfinder |
| 54 | + "list_python_installs", |
| 55 | + "PythonInstall", |
| 56 | + "get_installed_uv_pythons", |
| 57 | +] |
80 | 58 |
|
81 | | - TryExceptImport( |
82 | | - "tomllib", |
83 | | - "tomli", |
84 | | - "tomllib", |
85 | | - ), |
86 | | - ], |
87 | | -) |
| 59 | +laz = LazyImporter() |
| 60 | + |
| 61 | + |
| 62 | +with capture_imports(laz): |
| 63 | + import hashlib |
| 64 | + import importlib.metadata as metadata |
| 65 | + import json |
| 66 | + import re |
| 67 | + import shutil |
| 68 | + import sqlite3 as sql |
| 69 | + import subprocess |
| 70 | + import tempfile |
| 71 | + import warnings |
| 72 | + import zipfile |
| 73 | + |
| 74 | + if sys.version_info >= (3, 11): |
| 75 | + import tomllib as tomllib |
| 76 | + else: |
| 77 | + import tomli as tomllib |
| 78 | + |
| 79 | + from tempfile import TemporaryDirectory |
| 80 | + from urllib.request import urlopen |
| 81 | + |
| 82 | + from packaging.requirements import Requirement, InvalidRequirement |
| 83 | + from packaging.specifiers import SpecifierSet, InvalidSpecifier |
| 84 | + from packaging.version import Version, InvalidVersion |
| 85 | + |
| 86 | + from ducktools.pythonfinder import list_python_installs, PythonInstall |
| 87 | + from ducktools.pythonfinder.shared import get_uv_pythons as get_installed_uv_pythons |
0 commit comments