Source code for pymor.tools.deprecated

# This file is part of the pyMOR project (http://www.pymor.org).
# Copyright 2013-2018 pyMOR developers and contributors. All rights reserved.
# License: BSD 2-Clause License (http://opensource.org/licenses/BSD-2-Clause)

import functools
import types
import inspect
import warnings


[docs]class Deprecated: """This is a decorator which can be used to mark functions as deprecated. It will result in a warning being emitted when the function is used. """ def __init__(self, alt='no alternative given'): self._alt = alt
[docs] def __call__(self, func): func.decorated = self @functools.wraps(func) def new_func(*args, **kwargs): frame = inspect.currentframe().f_back msg = 'DeprecationWarning. Call to deprecated function {} in {}:{}\nUse {} instead'.format( func.__name__, frame.f_code.co_filename, frame.f_code.co_firstlineno, self._alt) warnings.warn(msg, DeprecationWarning) return func(*args, **kwargs) return new_func
[docs] def __get__(self, obj, ownerClass=None): """Return a wrapper that binds self as a method of obj (!)""" self.obj = obj return types.MethodType(self, obj)