10 from functools
import wraps
12 from warnings
import warn_explicit, warn
17 def deprecated(message):
19 Flags a method as deprecated. 20 param message: Text emitted as part of warning. Include instructions to replace the deprecated function e.g. "use waldo_pepper() isnstead." 24 def wrapper(*args, **kwargs):
25 warning_msg =
'Call to deprecated function {}. {}'.format(
26 func.__name__, message)
27 frame = inspect.current_frame().f_back
29 warn_explicit(message,
30 category=DeprecationWarnig,
31 filename=inspect.getfile(frame.f_code),
32 lineno=frame.f_lineno)
33 return func(*args, **kwargs)
39 def deprecated_args_session(ignore_lock_or_mode=None, is_new=None,
40 force_new=None, mode=None, ignore_lock=None):
43 deprecated_args = (ignore_lock, is_new, force_new)
44 deprecated_keyword_use = deprecated_args.count(
None) != len(deprecated_args)
45 if deprecated_keyword_use:
54 mode = ignore_lock_or_mode
59 "Use of ignore_lock, is_new or force_new arguments is deprecated. Use mode argument instead. Have a look at gnucash.SessionOpenMode.",
60 category=DeprecationWarning,
67 ignore_lock =
False if ignore_lock
is None else ignore_lock
68 is_new =
False if is_new
is None else is_new
69 force_new =
False if force_new
is None else force_new
70 mode = SessionOpenMode((ignore_lock << 2) + (is_new << 1) + force_new)
74 def deprecated_args_session_init(original_function):
75 """decorator for Session.__init__() to provide backward compatibility for deprecated use of ignore_lock, is_new and force_new""" 76 @wraps(original_function)
77 def new_function(self, book_uri=None, ignore_lock_or_mode=None, is_new=None,
78 force_new=None, instance=None, mode=None, ignore_lock=None):
80 mode = deprecated_args_session(ignore_lock_or_mode, is_new, force_new, mode, ignore_lock)
81 return(original_function(self, book_uri=book_uri, mode=mode, instance=instance))
84 def deprecated_args_session_begin(original_function):
85 """decorator for Session.begin() to provide backward compatibility for deprecated use of ignore_lock, is_new and force_new""" 86 @wraps(original_function)
87 def new_function(self, new_uri=None, ignore_lock_or_mode=None, is_new=None,
88 force_new=None, mode=None, ignore_lock=None):
89 mode = deprecated_args_session(ignore_lock_or_mode, is_new, force_new, mode, ignore_lock)
90 return(original_function(self, new_uri=new_uri, mode=mode))