diff --git a/neuro_py/__init__.py b/neuro_py/__init__.py index 2a559be..9cce42d 100644 --- a/neuro_py/__init__.py +++ b/neuro_py/__init__.py @@ -1,4 +1,4 @@ -import lazy_loader as lazy +import lazy_loader as _lazy -(__getattr__, __dir__, __all__) = lazy.attach_stub(__name__, __file__) -del lazy \ No newline at end of file +(__getattr__, __dir__, __all__) = _lazy.attach_stub(__name__, __file__) +del _lazy diff --git a/neuro_py/behavior/__init__.py b/neuro_py/behavior/__init__.py index 9ff4bc3..9cce42d 100644 --- a/neuro_py/behavior/__init__.py +++ b/neuro_py/behavior/__init__.py @@ -1,4 +1,4 @@ -import lazy_loader as lazy +import lazy_loader as _lazy -(__getattr__, __dir__, __all__) = lazy.attach_stub(__name__, __file__) -del lazy +(__getattr__, __dir__, __all__) = _lazy.attach_stub(__name__, __file__) +del _lazy diff --git a/neuro_py/ensemble/__init__.py b/neuro_py/ensemble/__init__.py index 9ff4bc3..9cce42d 100644 --- a/neuro_py/ensemble/__init__.py +++ b/neuro_py/ensemble/__init__.py @@ -1,4 +1,4 @@ -import lazy_loader as lazy +import lazy_loader as _lazy -(__getattr__, __dir__, __all__) = lazy.attach_stub(__name__, __file__) -del lazy +(__getattr__, __dir__, __all__) = _lazy.attach_stub(__name__, __file__) +del _lazy diff --git a/neuro_py/io/__init__.py b/neuro_py/io/__init__.py index 9ff4bc3..9cce42d 100644 --- a/neuro_py/io/__init__.py +++ b/neuro_py/io/__init__.py @@ -1,4 +1,4 @@ -import lazy_loader as lazy +import lazy_loader as _lazy -(__getattr__, __dir__, __all__) = lazy.attach_stub(__name__, __file__) -del lazy +(__getattr__, __dir__, __all__) = _lazy.attach_stub(__name__, __file__) +del _lazy diff --git a/neuro_py/lfp/__init__.py b/neuro_py/lfp/__init__.py index 9ff4bc3..9cce42d 100644 --- a/neuro_py/lfp/__init__.py +++ b/neuro_py/lfp/__init__.py @@ -1,4 +1,4 @@ -import lazy_loader as lazy +import lazy_loader as _lazy -(__getattr__, __dir__, __all__) = lazy.attach_stub(__name__, __file__) -del lazy +(__getattr__, __dir__, __all__) = _lazy.attach_stub(__name__, __file__) +del _lazy diff --git a/neuro_py/plotting/__init__.py b/neuro_py/plotting/__init__.py index 9ff4bc3..9cce42d 100644 --- a/neuro_py/plotting/__init__.py +++ b/neuro_py/plotting/__init__.py @@ -1,4 +1,4 @@ -import lazy_loader as lazy +import lazy_loader as _lazy -(__getattr__, __dir__, __all__) = lazy.attach_stub(__name__, __file__) -del lazy +(__getattr__, __dir__, __all__) = _lazy.attach_stub(__name__, __file__) +del _lazy diff --git a/neuro_py/process/__init__.py b/neuro_py/process/__init__.py index 9ff4bc3..9cce42d 100644 --- a/neuro_py/process/__init__.py +++ b/neuro_py/process/__init__.py @@ -1,4 +1,4 @@ -import lazy_loader as lazy +import lazy_loader as _lazy -(__getattr__, __dir__, __all__) = lazy.attach_stub(__name__, __file__) -del lazy +(__getattr__, __dir__, __all__) = _lazy.attach_stub(__name__, __file__) +del _lazy diff --git a/neuro_py/session/__init__.py b/neuro_py/session/__init__.py index 9ff4bc3..9cce42d 100644 --- a/neuro_py/session/__init__.py +++ b/neuro_py/session/__init__.py @@ -1,4 +1,4 @@ -import lazy_loader as lazy +import lazy_loader as _lazy -(__getattr__, __dir__, __all__) = lazy.attach_stub(__name__, __file__) -del lazy +(__getattr__, __dir__, __all__) = _lazy.attach_stub(__name__, __file__) +del _lazy diff --git a/neuro_py/spikes/__init__.py b/neuro_py/spikes/__init__.py index 9ff4bc3..9cce42d 100644 --- a/neuro_py/spikes/__init__.py +++ b/neuro_py/spikes/__init__.py @@ -1,4 +1,4 @@ -import lazy_loader as lazy +import lazy_loader as _lazy -(__getattr__, __dir__, __all__) = lazy.attach_stub(__name__, __file__) -del lazy +(__getattr__, __dir__, __all__) = _lazy.attach_stub(__name__, __file__) +del _lazy diff --git a/neuro_py/stats/__init__.py b/neuro_py/stats/__init__.py index 9ff4bc3..9cce42d 100644 --- a/neuro_py/stats/__init__.py +++ b/neuro_py/stats/__init__.py @@ -1,4 +1,4 @@ -import lazy_loader as lazy +import lazy_loader as _lazy -(__getattr__, __dir__, __all__) = lazy.attach_stub(__name__, __file__) -del lazy +(__getattr__, __dir__, __all__) = _lazy.attach_stub(__name__, __file__) +del _lazy diff --git a/neuro_py/tuning/__init__.py b/neuro_py/tuning/__init__.py index 9ff4bc3..9cce42d 100644 --- a/neuro_py/tuning/__init__.py +++ b/neuro_py/tuning/__init__.py @@ -1,4 +1,4 @@ -import lazy_loader as lazy +import lazy_loader as _lazy -(__getattr__, __dir__, __all__) = lazy.attach_stub(__name__, __file__) -del lazy +(__getattr__, __dir__, __all__) = _lazy.attach_stub(__name__, __file__) +del _lazy diff --git a/tests/test_lazy_loading.py b/tests/test_lazy_loading.py new file mode 100644 index 0000000..1a12446 --- /dev/null +++ b/tests/test_lazy_loading.py @@ -0,0 +1,41 @@ +import sys + + +def test_lazy_loading(): + # clear all neuro_py submodules + for module in list(sys.modules.keys()): + if module.startswith("neuro_py"): + sys.modules.pop(module) + + import neuro_py + + npy_submodules = set( + x.split(".")[1] + for x in sys.modules.keys() + if ( + x.startswith("neuro_py.") + and "__" not in x + and not x.split(".")[1].startswith("_") + and sys.modules[x] is not None + ) + ) + + # ensure that no submodules have been imported yet + assert npy_submodules == set(), \ + f"Submodules already loaded: {npy_submodules}" + + # ensure that only the accessed submodule has been imported + neuro_py.behavior + npy_submodules = set( + x.split(".")[1] + for x in sys.modules.keys() + if ( + x.startswith("neuro_py.") + and "__" not in x + and not x.split(".")[1].startswith("_") + and sys.modules[x] is not None + ) + ) + assert npy_submodules == { + "behavior" + }, f"Submodules already loaded: {npy_submodules}"