def __init__(self, expr):
self.expr = expr
self.ns = {}
try:
tree = ast.parse(expr)
except SyntaxError as exc:
raise argparse.ArgumentTypeError('Invalid service spec %r. Parse error:\n'
' %s %s^\n'
'%s' % (expr, exc.text, ' '*exc.offset, exc))
for node in ast.walk(tree):
if isinstance(node, ast.Name):
if not hasattr(builtins, node.id):
try:
__import__(node.id)
except ImportError as exc:
raise argparse.ArgumentTypeError('Invalid service spec %r. Import error: %s' % (expr, exc))
self.ns[node.id] = sys.modules[node.id]
评论列表
文章目录