Source code for ler.rates

# -*- coding: utf-8 -*-
"""
Rate drivers: ``LeR`` (lensed + unlensed CBC) and ``GWRATES`` (unlensed CBC).

Public symbols are resolved lazily so importing ``ler.rates`` does not initialize
the full lensed/rate stack until ``LeR`` or ``GWRATES`` is requested.
"""

from importlib import import_module

_SUBMODULES = {
    "ler": ".ler",
    "gwrates": ".gwrates",
}

_SYMBOL_TO_MODULE = {
    "LeR": ".ler",
    "GWRATES": ".gwrates",
}

[docs] __all__ = sorted([*_SUBMODULES, *_SYMBOL_TO_MODULE])
[docs] def __getattr__(name): if name in _SUBMODULES: module = import_module(_SUBMODULES[name], __name__) globals()[name] = module return module module_name = _SYMBOL_TO_MODULE.get(name) if module_name is None: raise AttributeError(f"module {__name__!r} has no attribute {name!r}") value = getattr(import_module(module_name, __name__), name) globals()[name] = value return value
[docs] def __dir__(): return sorted([*globals(), *__all__])