Module livekit.agents.utils.deprecation
Functions
def deprecate_params(mapping: dict[str, str], *, target_version: str | None = None) ‑> Callable[[~_F], ~_F]-
Expand source code
def deprecate_params( mapping: dict[str, str], *, target_version: str | None = None, ) -> Callable[[_F], _F]: """ Args: mapping: {old_param: suggestion} target_version: If set, the warning includes "will be removed in {target_version}". Example: >>> @deprecate_params({ ... "old_param": "Use new_param instead", ... }, target_version="v2.0") ... def my_function(old_param: NotGivenOr[int] = NOT_GIVEN, new_param: int = 0): ... print(old_param) >>> my_function(old_param=1) WARNING: old_param is deprecated and will be removed in v2.0. Use new_param instead 1 >>> my_function(new_param=1) # no warning """ removal = f" and will be removed in {target_version}" if target_version else "" def decorator(fn: Callable[_P, _R]) -> Callable[_P, _R]: signature = inspect.signature(fn) @functools.wraps(fn) def wrapper(*args: _P.args, **kwargs: _P.kwargs) -> _R: bound = signature.bind_partial(*args, **kwargs) by_suggestion: defaultdict[str, list[str]] = defaultdict(list) for name, suggestion in mapping.items(): if is_given(bound.arguments.get(name, NOT_GIVEN)): by_suggestion[suggestion].append(name) for suggestion, names in by_suggestion.items(): params = ", ".join(names) logger.warning( f"{params} {'are' if len(names) > 1 else 'is'} deprecated{removal}. {suggestion}", # noqa: E501 stacklevel=2, ) return fn(*args, **kwargs) return wrapper return cast(Callable[[_F], _F], decorator)Args
mapping- {old_param: suggestion}
target_version- If set, the warning includes "will be removed in {target_version}".
Example:
>>> @deprecate_params({ ... "old_param": "Use new_param instead", ... }, target_version="v2.0") ... def my_function(old_param: NotGivenOr[int] = NOT_GIVEN, new_param: int = 0): ... print(old_param) >>> my_function(old_param=1) WARNING: old_param is deprecated and will be removed in v2.0. Use new_param instead 1 >>> my_function(new_param=1) # no warning