Skip to content

tinker_cookbook.utils.make_deprecated_module_getattr

tinker_cookbook.utils.make_deprecated_module_getattr(module_name, attrs)

Create a __getattr__ function for deprecating module-level attributes.

Returns a function suitable for assigning to __getattr__ at module scope. When an old attribute name is accessed, it emits a deprecation warning and transparently returns the new object.

Parameters:

  • module_name (str) – __name__ of the module defining __getattr__.
  • attrs (dict[str, tuple[str, str | None]]) – Mapping of {old_name: (dotted_path_to_new, removal_version)}. dotted_path_to_new is "package.module.NewName" and will be imported and returned. removal_version may be None.

Returns: A __getattr__ function.

# In mymodule/__init__.py
__getattr__ = make_deprecated_module_getattr(
__name__,
{"OldThing": ("mymodule.new_place.NewThing", "0.20.0")},
)