Source code for hatchet.util.deprecated

# Copyright 2017-2023 Lawrence Livermore National Security, LLC and other
# Hatchet Project Developers. See the top-level LICENSE file for details.
#
# SPDX-License-Identifier: MIT

import functools


[docs]def deprecated_params(**old_to_new): def deco(f): @functools.wraps(f) def wrapper(*args, **kwargs): rename_kwargs(f.__name__, old_to_new, kwargs) return f(*args, **kwargs) return wrapper return deco
[docs]def rename_kwargs(fname, old_to_new, kwargs): for old, new in old_to_new.items(): if old in kwargs: if new in kwargs: raise TypeError( '{}() received both "{}=" and "{}=".'.format(fname, old, new) ) # if parameter has been removed if not new: raise ValueError( '{}() parameter "{}=" will be removed in a future release. Please remove it from this script.'.format( fname, old ) ) # if parameter has been deprecated and renamed else: raise ValueError( '{}() parameter "{}=" has been deprecated, please use "{}=".'.format( fname, old, new ) ) kwargs[new] = kwargs.pop(old)