Description
I was checking out the type stub, and found these points;
- There are a bunch of
docstring: str
nodes guarded withsys.version >= (3, 7)
. This is not actually true since bpo-32911: Remove the docstring attribute of AST types cpython#7121 reverts the change that introduceddocstring
(that PR also targets 3.7). They can be safely eliminated - There is no
type_comment
onFunctionDef
/AsyncFunctionDef
(and maybe on other nodes) string
fields in the ASDL are encoded asstr
. The problem isstring
corresponds totyping.AnyStr
, notstr
. (https://github.com/python/cpython/blob/cda99b4022daa08ac74b0420e9903cce883d91c6/Python/Python-ast.c#L1195-L1202)- As mentioned in this
TODO:
, every node has current position information (lineno
/col_offset
) however this is not the case.
While examining this, I got an idea of autogenerating stub files by inputting a program with ASDLs (abstract syntax description language). So I wrote generators/typing_stub.py
to my ASDL implementation, also generated test stub file.
I didn't test using that stub file, so don't know if there is a problem with it, but from a high level view they look similar with the _ast.pyi
here, plus it covers the points I just mentioned (be aware, it is completely auto generated). There is only a single problem with that stub file, it ignores one of the broken parts of our AST. Dict(expr* keys, expr* values)
actually doesn't describe the Dict
well since when one of the items is **star_unpack
the keys
will contain None
(so it should be List[Optional[expr]]
not List[expr]
). The currently type stub handles it, so if anyone wants to make a PR by copying things over the auto generated type stub, this point should not be actually copied.