# Created on savesnippets.com · https://savesnippets.com/pPFmMSABNfO5eu import functools import warnings def deprecated(reason: str = "", *, replacement: str | None = None): def decorator(fn): msg = f"{fn.__qualname__}() is deprecated" if replacement: msg += f" — use {replacement}() instead" if reason: msg += f" ({reason})" @functools.wraps(fn) def wrapper(*args, **kwargs): warnings.warn(msg, DeprecationWarning, stacklevel=2) return fn(*args, **kwargs) return wrapper return decorator @deprecated("renamed for clarity", replacement="connect_db") def open_db(): pass open_db() # DeprecationWarning: open_db() is deprecated — use connect_db() instead (renamed for clarity)