def _parse_string(data, type_comments=True): parser_module = get_parser_module(type_comments=type_comments) try: parsed = parser_module.parse(data + "\n", type_comments=type_comments) except SyntaxError as exc: # If the type annotations are misplaced for some reason, we do not want # to fail the entire parsing of the file, so we need to retry the parsing without # type comment support. if exc.args[0] != MISPLACED_TYPE_ANNOTATION_ERROR or not type_comments: raise parser_module = get_parser_module(type_comments=False) parsed = parser_module.parse(data + "\n", type_comments=False) return parsed, parser_module
def __init__(self, manager, parser_module: Optional[ParserModule] = None): self._manager = manager self._global_names = [] self._import_from_nodes = [] self._delayed_assattr = [] self._visit_meths = {} if parser_module is None: self._parser_module = get_parser_module() else: self._parser_module = parser_module self._module = self._parser_module.module