# 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")},
)
```
