Skip to content

Commit a708649

Browse files
authored
Merge pull request #32 from DavidCEllis/rework_laziness
Convert imports to use the new capture_imports context manager.
2 parents c1d69ca + 4f093ca commit a708649

File tree

14 files changed

+73
-73
lines changed

14 files changed

+73
-73
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ readme="README.md"
1515
requires-python = ">=3.10"
1616
dependencies = [
1717
"ducktools-classbuilder>=0.7.1",
18-
"ducktools-lazyimporter>=0.5.1",
18+
"ducktools-lazyimporter>=0.7.0",
1919
"ducktools-scriptmetadata",
2020
"ducktools-pythonfinder>=0.6.0",
2121
"tomli; python_version < '3.11'",

src/ducktools/env/_lazy_imports.py

Lines changed: 59 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -20,68 +20,68 @@
2020
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
2121
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2222
# SOFTWARE.
23+
import sys
2324

25+
from ducktools.lazyimporter import LazyImporter
26+
from ducktools.lazyimporter.capture import capture_imports
2427

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",
3241

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",
4544

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",
6752

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+
]
8058

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

src/ducktools/env/bundled_data.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939

4040
from ducktools.classbuilder.prefab import Prefab, attribute
4141

42-
from ._lazy_imports import laz as _laz
42+
from . import _lazy_imports as _laz
4343

4444

4545
class BundledDataError(Exception):

src/ducktools/env/catalogue.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
from ._logger import log
3636

3737

38-
from ._lazy_imports import laz as _laz
38+
from . import _lazy_imports as _laz
3939

4040

4141
def _datetime_now_iso() -> str:

src/ducktools/env/config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
from datetime import timedelta as _timedelta
2929

3030
from ducktools.classbuilder.prefab import Prefab, get_attributes, as_dict
31-
from ._lazy_imports import laz as _laz
31+
from . import _lazy_imports as _laz
3232

3333

3434
class Config(Prefab, kw_only=True):

src/ducktools/env/environment_specs.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
from .exceptions import ApplicationError
2929
from ._logger import log
3030

31-
from ._lazy_imports import laz as _laz
31+
from . import _lazy_imports as _laz
3232

3333

3434
class AppDetails(Prefab, kw_only=True):

src/ducktools/env/manager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
)
5050
from .register import RegisterManager, RegisteredScript
5151

52-
from ._lazy_imports import laz as _laz
52+
from . import _lazy_imports as _laz
5353
from ._logger import log
5454

5555

src/ducktools/env/register.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
from ducktools.classbuilder.prefab import Prefab
2626

27-
from ._lazy_imports import laz as _laz
27+
from . import _lazy_imports as _laz
2828
from ._sqlclasses import SQLAttribute, SQLClass, SQLContext
2929
from .exceptions import ScriptNotFound
3030

src/ducktools/env/scripts/get_pip.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
from ..platform_paths import ManagedPaths
3737
from .._logger import log
3838
from ..exceptions import InvalidPipDownload
39-
from .._lazy_imports import laz as _laz
39+
from .. import _lazy_imports as _laz
4040

4141
BASE_URL = "https://bootstrap.pypa.io/pip"
4242

src/ducktools/env/scripts/get_uv.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
from .get_pip import retrieve_pip
2727
from .._logger import log
28-
from .._lazy_imports import laz as _laz
28+
from .. import _lazy_imports as _laz
2929
from ..platform_paths import ManagedPaths
3030

3131

0 commit comments

Comments
 (0)