ruff/crates/ruff_python_ast
Douglas Creager 8e3633f55a
Auto-generate AST boilerplate (#15544)
This PR replaces most of the hard-coded AST definitions with a
generation script, similar to what happens in `rust_python_formatter`.
I've replaced every "rote" definition that I could find, where the
content is entirely boilerplate and only depends on what syntax nodes
there are and which groups they belong to.

This is a pretty massive diff, but it's entirely a refactoring. It
should make absolutely no changes to the API or implementation. In
particular, this required adding some configuration knobs that let us
override default auto-generated names where they don't line up with
types that we created previously by hand.

## Test plan

There should be no changes outside of the `rust_python_ast` crate, which
verifies that there were no API changes as a result of the
auto-generation. Aggressive `cargo clippy` and `uvx pre-commit` runs
after each commit in the branch.

---------

Co-authored-by: Micha Reiser <micha@reiser.io>
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
2025-01-17 14:23:02 -05:00
..
src Auto-generate AST boilerplate (#15544) 2025-01-17 14:23:02 -05:00
ast.toml Auto-generate AST boilerplate (#15544) 2025-01-17 14:23:02 -05:00
Cargo.toml Remove the optional salsa dependency from the AST crate (#14363) 2024-11-15 16:46:04 +00:00
generate.py Auto-generate AST boilerplate (#15544) 2025-01-17 14:23:02 -05:00