Skip to content

Commit

Permalink
bugfix wrong exception in lazy import __getattr__ (PrefectHQ#15739)
Browse files Browse the repository at this point in the history
  • Loading branch information
antosiv committed Oct 17, 2024
1 parent fc37aa9 commit 739af1e
Showing 1 changed file with 17 additions and 14 deletions.
31 changes: 17 additions & 14 deletions src/prefect/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,17 +102,20 @@
def __getattr__(attr_name: str) -> object:
if attr_name in _slots:
return _slots[attr_name]

dynamic_attr = _public_api.get(attr_name)
if dynamic_attr is None:
return importlib.import_module(f".{attr_name}", package=__name__)

package, module_name = dynamic_attr

from importlib import import_module

if module_name == "__module__":
return import_module(f".{attr_name}", package=package)
else:
module = import_module(module_name, package=package)
return getattr(module, attr_name)
try:
dynamic_attr = _public_api.get(attr_name)
if dynamic_attr is None:
return importlib.import_module(f".{attr_name}", package=__name__)

package, module_name = dynamic_attr

from importlib import import_module

if module_name == "__module__":
return import_module(f".{attr_name}", package=package)
else:
module = import_module(module_name, package=package)
return getattr(module, attr_name)
except ModuleNotFoundError as ex:
module, _, attribute = ex.name.rpartition(".")
raise AttributeError(f"module {module} has no attribute {attribute}") from ex

0 comments on commit 739af1e

Please sign in to comment.