-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Description
I was checking out the type stub, and found these points;
- There are a bunch of
docstring: strnodes 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_commentonFunctionDef/AsyncFunctionDef(and maybe on other nodes) stringfields in the ASDL are encoded asstr. The problem isstringcorresponds 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.