File: deprecate.py

package info (click to toggle)
dune-common 2.10.0-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,824 kB
  • sloc: cpp: 52,256; python: 3,979; sh: 1,658; makefile: 17
file content (29 lines) | stat: -rw-r--r-- 1,288 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception

import warnings

def deprecated(msg,name=None):
    '''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 deprecated_decorator(func):
        def new_func(*args, **kwargs):
            if name is None:
                funcName = func.__name__
            else:
                funcName = name
            if msg:
                print("Call to deprecated function/property `{}`.".format(funcName),msg)
            else:
                print("Call to deprecated function/property `{}`.".format(funcName))
            warnings.warn("Call to deprecated function {}.".format(funcName),
                          category=DeprecationWarning)
            # note: DepracationWarning is ignored by default (could use FutureWarning)
            # also the warning will be only shown once
            return func(*args, **kwargs)
        new_func.__name__ = func.__name__
        new_func.__doc__ = func.__doc__
        new_func.__dict__.update(func.__dict__)
        return new_func
    return deprecated_decorator