Don't we need to do all of this in the _ast module, already? We already have an AST composed of Python objects
We have AST of Python objects, but the python versions are not used internally, especially in the parser, where they are created. The parser and the compiler currently use exclusively the C versions of the nodes. Changing the parser to use Python versions and especially not to use the arena allocator can complicate the parser substantially, and destroying the resulting tree can be expensive (as destroying a deep tree composed of Python objects currently is).
Cheers from cloudy London, Pablo