Source code for pyicat_plus.client.deprecation_utils
import warnings
from functools import wraps
from typing import Any
[docs]
def deprecated_property(property_method):
"""Decorator to mark properties as deprecated with a warning."""
@wraps(property_method)
def deprecated_method(self):
warnings.warn(
f"Property '{property_method.__name__}' is deprecated and may be removed in future versions.",
DeprecationWarning,
stacklevel=2,
)
return property_method(self)
return property(deprecated_method)
[docs]
def deprecated_argument(
new_name: str, new_value: Any, deprecated_name: str, deprecated_value: Any
) -> Any:
"""Function to handle new and deprecated function argument."""
if deprecated_value is not None:
if new_value is not None:
raise ValueError(
f"Argument '{deprecated_name}' is replaced by '{new_name}'."
)
new_value = deprecated_value
warnings.warn(
f"Argument '{deprecated_name}' is deprecated and may be removed in future versions. Use '{new_name}' instead.",
DeprecationWarning,
stacklevel=2,
)
return new_value
[docs]
def deprecated_method(func):
"""Decorator to mark methods as deprecated with a warning."""
@wraps(func)
def wrapper(*args, **kwargs):
warnings.warn(
f"Method '{func.__name__}' is deprecated and may be removed in future versions.",
DeprecationWarning,
stacklevel=2,
)
return func(*args, **kwargs)
return wrapper
[docs]
def warn_deprecated_module(
message: str = "This module is deprecated and may be removed in future versions.",
):
warnings.warn(message, ImportWarning, stacklevel=2)