Skip to content

Commit

Permalink
Merge pull request #3 from tupui/hooks
Browse files Browse the repository at this point in the history
Run pre-commit hooks
  • Loading branch information
stefanv authored Mar 1, 2022
2 parents 22fb3bc + 968904e commit ab3d7df
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 16 deletions.
16 changes: 6 additions & 10 deletions lazy_loader/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
"""
import importlib
import importlib.util
import types
import os
import sys
import types


def attach(package_name, submodules=None, submod_attrs=None):
Expand Down Expand Up @@ -66,19 +66,17 @@ def attach(package_name, submodules=None, submod_attrs=None):

def __getattr__(name):
if name in submodules:
return importlib.import_module(f'{package_name}.{name}')
return importlib.import_module(f"{package_name}.{name}")
elif name in attr_to_modules:
submod = importlib.import_module(
f'{package_name}.{attr_to_modules[name]}'
)
submod = importlib.import_module(f"{package_name}.{attr_to_modules[name]}")
return getattr(submod, name)
else:
raise AttributeError(f'No {package_name} attribute {name}')
raise AttributeError(f"No {package_name} attribute {name}")

def __dir__():
return __all__

if os.environ.get('EAGER_IMPORT', ''):
if os.environ.get("EAGER_IMPORT", ""):
for attr in set(attr_to_modules.keys()) | submodules:
__getattr__(attr)

Expand Down Expand Up @@ -171,6 +169,4 @@ def __getattribute__(self, attr):
if attr in ["__class__"]:
return super().__getattribute__("__class__")

raise ModuleNotFoundError(
f"No module named '{spec.name}'"
)
raise ModuleNotFoundError(f"No module named '{spec.name}'")
12 changes: 6 additions & 6 deletions tests/test_lazy_loader.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import sys
import importlib
import types

import pytest

import lazy_loader as lazy
Expand Down Expand Up @@ -31,20 +31,20 @@ def test_lazy_import_impact_on_sys_modules():
math = lazy.load("math")
anything_not_real = lazy.load("anything_not_real")

assert type(math) == types.ModuleType
assert isinstance(math, types.ModuleType)
assert "math" in sys.modules
assert type(anything_not_real) == lazy.DelayedImportErrorModule
assert isinstance(anything_not_real, lazy.DelayedImportErrorModule)
assert "anything_not_real" not in sys.modules

# only do this if numpy is installed
np_test = pytest.importorskip("numpy")
pytest.importorskip("numpy")
np = lazy.load("numpy")
assert type(np) == types.ModuleType
assert isinstance(np, types.ModuleType)
assert "numpy" in sys.modules

np.pi # trigger load of numpy

assert type(np) == types.ModuleType
assert isinstance(np, types.ModuleType)
assert "numpy" in sys.modules


Expand Down

0 comments on commit ab3d7df

Please # to comment.