From 7a8089917c6a199b6b0fd1c0b6eacc3a301cf413 Mon Sep 17 00:00:00 2001 From: Alexander Ororbia Date: Thu, 25 Jun 2026 23:08:51 -0400 Subject: [PATCH] updated/generalized function deprecator - it now accepts an is_replaced warning --- ngcsimlib/_src/deprecators.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/ngcsimlib/_src/deprecators.py b/ngcsimlib/_src/deprecators.py index a340527..053dc10 100644 --- a/ngcsimlib/_src/deprecators.py +++ b/ngcsimlib/_src/deprecators.py @@ -1,17 +1,23 @@ from ngcsimlib._src.logger import warn -def deprecated(fn): - def _wrapped(*args, **kwargs): - warn(fn.__qualname__, "is deprecated") - return fn(*args, **kwargs) - - _wrapped._is_deprecated = True - _wrapped._original = fn - return _wrapped +def deprecated(replaced_by=None): ## function deprecating decorator + def decorator(fn): + def _wrapped(*args, **kwargs): + message = "is deprecated" ## <= default warning message + if replaced_by: ## make known substitute function name, if replaced_by != None + ## uses __name__ or string representation + new_name = getattr(replaced_by, '__name__', str(replaced_by)) + message += f" (use {new_name} instead)" + warn(fn.__qualname__, message) + return fn(*args, **kwargs) + _wrapped._is_deprecated = True + _wrapped._original = fn + return _wrapped + return decorator -def deprecate_args(_rebind=True, **arg_list): +def deprecate_args(_rebind=True, **arg_list): ## argument deprecating decorator def _deprecate_args(fn): def _wrapped(*args, **kwargs): for kwarg in list(kwargs.keys()):