Ejemplo n.º 1
0
def write_pickle(ast, options, loader=None):
    """Dump a pickle of the ast to a file."""
    loader = loader or load_pytd.create_loader(options)
    try:
        ast = serialize_ast.PrepareForExport(options.module_name, ast, loader)
    except parser.ParseError as e:
        if options.nofail:
            ast = serialize_ast.PrepareForExport(
                options.module_name,
                pytd_builtins.GetDefaultAst(options.python_version), loader)
            log.warning("***Caught exception: %s", str(e), exc_info=True)
        else:
            raise
    if options.verify_pickle:
        ast1 = ast.Visit(visitors.LateTypeToClassType())
        ast1 = ast1.Visit(visitors.ClearClassPointers())
        ast2 = loader.load_file(options.module_name, options.verify_pickle)
        ast2 = ast2.Visit(visitors.ClearClassPointers())
        if not pytd_utils.ASTeq(ast1, ast2):
            raise AssertionError()
    serialize_ast.StoreAst(ast, options.output, options.open_function)
Ejemplo n.º 2
0
 def _Pickle(self, ast, module_name):
     assert module_name
     ast = serialize_ast.PrepareForExport(module_name, ast, self.loader)
     return serialize_ast.StoreAst(ast)