76 lines
2.1 KiB
Python
76 lines
2.1 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
"""
|
||
|
Part of the astor library for Python AST manipulation.
|
||
|
|
||
|
License: 3-clause BSD
|
||
|
|
||
|
Copyright 2012 (c) Patrick Maupin
|
||
|
Copyright 2013 (c) Berker Peksag
|
||
|
|
||
|
"""
|
||
|
|
||
|
import warnings
|
||
|
|
||
|
from .code_gen import to_source # NOQA
|
||
|
from .node_util import iter_node, strip_tree, dump_tree # NOQA
|
||
|
from .node_util import ExplicitNodeVisitor # NOQA
|
||
|
from .file_util import CodeToAst, code_to_ast # NOQA
|
||
|
from .op_util import get_op_symbol, get_op_precedence # NOQA
|
||
|
from .op_util import symbol_data # NOQA
|
||
|
from .tree_walk import TreeWalk # NOQA
|
||
|
|
||
|
__version__ = '0.7.1'
|
||
|
|
||
|
parse_file = code_to_ast.parse_file
|
||
|
|
||
|
# DEPRECATED!!!
|
||
|
# These aliases support old programs. Please do not use in future.
|
||
|
|
||
|
deprecated = """
|
||
|
get_boolop = get_binop = get_cmpop = get_unaryop = get_op_symbol
|
||
|
get_anyop = get_op_symbol
|
||
|
parsefile = code_to_ast.parse_file
|
||
|
codetoast = code_to_ast
|
||
|
dump = dump_tree
|
||
|
all_symbols = symbol_data
|
||
|
treewalk = tree_walk
|
||
|
codegen = code_gen
|
||
|
"""
|
||
|
|
||
|
exec(deprecated)
|
||
|
|
||
|
|
||
|
def deprecate():
|
||
|
def wrap(deprecated_name, target_name):
|
||
|
if '.' in target_name:
|
||
|
target_mod, target_fname = target_name.split('.')
|
||
|
target_func = getattr(globals()[target_mod], target_fname)
|
||
|
else:
|
||
|
target_func = globals()[target_name]
|
||
|
msg = "astor.%s is deprecated. Please use astor.%s." % (
|
||
|
deprecated_name, target_name)
|
||
|
if callable(target_func):
|
||
|
def newfunc(*args, **kwarg):
|
||
|
warnings.warn(msg, DeprecationWarning, stacklevel=2)
|
||
|
return target_func(*args, **kwarg)
|
||
|
else:
|
||
|
class ModProxy:
|
||
|
def __getattr__(self, name):
|
||
|
warnings.warn(msg, DeprecationWarning, stacklevel=2)
|
||
|
return getattr(target_func, name)
|
||
|
newfunc = ModProxy()
|
||
|
|
||
|
globals()[deprecated_name] = newfunc
|
||
|
|
||
|
for line in deprecated.splitlines(): # NOQA
|
||
|
line = line.split('#')[0].replace('=', '').split()
|
||
|
if line:
|
||
|
target_name = line.pop()
|
||
|
for deprecated_name in line:
|
||
|
wrap(deprecated_name, target_name)
|
||
|
|
||
|
|
||
|
deprecate()
|
||
|
|
||
|
del deprecate, deprecated
|