def deprecated(version, *replacement):
def deprecated_wrapper(func):<EOL><INDENT>replacement_message = '<STR_LIT>'.format('<STR_LIT:U+002CU+0020>'.join(<EOL>["<STR_LIT>".format(_get_func_fq_name(x))<EOL>for x in replacement]))<EOL>log_message = ("<STR_LIT>"<EOL>"<STR_LIT>".format(_get_func_fq_name(func), replacement_message))<EOL>func_path = _get_func_path(func)<EOL>doc_replacement = []<EOL>for x in replacement:<EOL><INDENT>if func_path == _get_func_path(x):<EOL><INDENT>doc_replacement.append('<STR_LIT>'.format(_func_name(x)))<EOL><DEDENT>else:<EOL><INDENT>doc_replacement.append(<EOL>'<STR_LIT>'.format(_get_func_fq_name(x)))<EOL><DEDENT><DEDENT>func.__doc__ = """<STR_LIT>""".format(version,<EOL>'<STR_LIT:U+002CU+0020>'.join(doc_replacement),<EOL>func.__doc__ if func.__doc__ else '<STR_LIT>')<EOL>@wraps(func)<EOL>def wrapper(*args, **kwargs):<EOL><INDENT>log.warning(log_message)<EOL>return func(*args, **kwargs)<EOL><DEDENT>return wrapper<EOL><DEDENT>return deprecated_wrapper<EOL>
Decorator to mark a specified function as deprecated

    :param version: version in which it is deprecated
    :param replacement: replacement functions to use