New submission from Samuel Marks <samuelma...@gmail.com>:
I tried making `node.annotation` an `ast.Name("str", ast.Load())`, which worked but when the AST was unparsed to a string it shows as `# type: <ast.Name object at 0x7fe0f393bfa0>`. https://github.com/offscale/cdd-python/runs/3213864077 Replicate with: ``` unparse(Assign(annotation=None, simple=1, targets=[Name("foo", Store())], value=Constant(value=5, kind=None), expr=None, expr_targe ...: t=None, expr_annotation=None, type_comment=Name('str', Load()), lineno=None)) ``` Checking what it expects, it does expect a str. E.g.,: ``` $ python3.9 -c 'import ast; tc=ast.parse("foo = 5 # type: int", type_comments=True).body[0].type_comment; print("type_comment is a", type(tc).__name__, "with value", tc)' type_comment is a str with value int ``` But when I do make it a str and unparse it, I get: ``` File "/opt/python3.10/lib/python3.10/ast.py", line 1674, in unparse return unparser.visit(ast_obj) File "/opt/python3.10/lib/python3.10/ast.py", line 808, in visit self.traverse(node) File "/opt/python3.10/lib/python3.10/ast.py", line 799, in traverse super().visit(node) File "/opt/python3.10/lib/python3.10/ast.py", line 410, in visit return visitor(node) File "/opt/python3.10/lib/python3.10/ast.py", line 1005, in visit_FunctionDef self._function_helper(node, "def") File "/opt/python3.10/lib/python3.10/ast.py", line 1023, in _function_helper self._write_docstring_and_traverse_body(node) File "/opt/python3.10/lib/python3.10/ast.py", line 816, in _write_docstring_and_traverse_body self.traverse(node.body) File "/opt/python3.10/lib/python3.10/ast.py", line 797, in traverse self.traverse(item) File "/opt/python3.10/lib/python3.10/ast.py", line 799, in traverse super().visit(node) File "/opt/python3.10/lib/python3.10/ast.py", line 410, in visit return visitor(node) File "/opt/python3.10/lib/python3.10/ast.py", line 879, in visit_AnnAssign self.traverse(node.annotation) File "/opt/python3.10/lib/python3.10/ast.py", line 799, in traverse super().visit(node) File "/opt/python3.10/lib/python3.10/ast.py", line 410, in visit return visitor(node) File "/opt/python3.10/lib/python3.10/ast.py", line 414, in generic_visit for field, value in iter_fields(node): File "/opt/python3.10/lib/python3.10/ast.py", line 252, in iter_fields for field in node._fields: AttributeError: 'str' object has no attribute '_fields' ``` ---------- messages: 398878 nosy: samuelmarks priority: normal severity: normal status: open title: node.annotation is not a str in `ast`'s `class _Unparser(NodeVisitor)` versions: Python 3.10, Python 3.11, Python 3.9 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue44825> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com