Use ast::PythonVersion internally in the formatter and linter (#16170)

## Summary

This PR updates the formatter and linter to use the `PythonVersion`
struct from the `ruff_python_ast` crate internally. While this doesn't
remove the need for the `linter::PythonVersion` enum, it does remove the
`formatter::PythonVersion` enum and limits the use in the linter to
deserializing from CLI arguments and config files and moves most of the
remaining methods to the `ast::PythonVersion` struct.

## Test Plan

Existing tests, with some inputs and outputs updated to reflect the new
(de)serialization format. I think these are test-specific and shouldn't
affect any external (de)serialization.

---------

Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
This commit is contained in:
Brent Westbrook 2025-02-18 12:03:13 -05:00 committed by GitHub
parent 0868e73d2c
commit a9efdea113
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
153 changed files with 456 additions and 539 deletions

View file

@ -1 +1 @@
{"target_version": "py310"}
{"target_version": "3.10"}

View file

@ -1 +1 @@
{"target_version": "py38"}
{"target_version": "3.8"}

View file

@ -1 +1 @@
{"target_version": "py310"}
{"target_version": "3.10"}

View file

@ -1 +1 @@
{"target_version": "py311"}
{"target_version": "3.11"}

View file

@ -1 +1 @@
{"target_version": "py38"}
{"target_version": "3.8"}

View file

@ -1 +1 @@
{"preview": "enabled", "target_version": "py310"}
{"preview": "enabled", "target_version": "3.10"}

View file

@ -1 +1 @@
{"target_version": "py310"}
{"target_version": "3.10"}

View file

@ -1 +1 @@
{"target_version": "py310"}
{"target_version": "3.10"}

View file

@ -1 +1 @@
{"target_version": "py310"}
{"target_version": "3.10"}

View file

@ -1 +1 @@
{"target_version": "py310"}
{"target_version": "3.10"}

View file

@ -1 +1 @@
{"target_version": "py310"}
{"target_version": "3.10"}

View file

@ -1 +1 @@
{"target_version": "py310"}
{"target_version": "3.10"}

View file

@ -1 +1 @@
{"target_version": "py310"}
{"target_version": "3.10"}

View file

@ -1 +1 @@
{"target_version": "py310"}
{"target_version": "3.10"}

View file

@ -1 +1 @@
{"target_version": "py310"}
{"target_version": "3.10"}

View file

@ -1 +1 @@
{"preview": "enabled", "target_version": "py310"}
{"preview": "enabled", "target_version": "3.10"}

View file

@ -1 +1 @@
{"target_version": "py310"}
{"target_version": "3.10"}

View file

@ -1 +1 @@
{"target_version": "py310"}
{"target_version": "3.10"}

View file

@ -1 +1 @@
{"target_version": "py311"}
{"target_version": "3.11"}

View file

@ -1 +1 @@
{"target_version": "py311"}
{"target_version": "3.11"}

View file

@ -1 +1 @@
{"target_version": "py311"}
{"target_version": "3.11"}

View file

@ -1 +1 @@
{"target_version": "py312"}
{"target_version": "3.12"}

View file

@ -1 +1 @@
{"preview": "enabled", "target_version": "py311"}
{"preview": "enabled", "target_version": "3.11"}

View file

@ -1 +1 @@
{"target_version": "py310"}
{"target_version": "3.10"}

View file

@ -1 +1 @@
{"preview": "enabled", "line_width": 79, "target_version": "py310"}
{"preview": "enabled", "line_width": 79, "target_version": "3.10"}

View file

@ -1 +1 @@
{"target_version": "py310"}
{"target_version": "3.10"}

View file

@ -1 +1 @@
{"target_version": "py312"}
{"target_version": "3.12"}

View file

@ -1 +1 @@
{"target_version": "py313"}
{"target_version": "3.13"}

View file

@ -1 +1 @@
{"target_version": "py312"}
{"target_version": "3.12"}

View file

@ -58,8 +58,7 @@ def import_fixture(fixture: Path, fixture_set: str):
if "--minimum-version=" in flags:
[_, version] = flags.split("--minimum-version=", 1)
version = version.split(" ", 1)[0]
# Convert 3.10 to py310
black_options["target_version"] = f"py{version.strip().replace('.', '')}"
black_options["target_version"] = version.strip()
if "--skip-magic-trailing-comma" in flags:
black_options["magic_trailing_comma"] = "ignore"

View file

@ -4,6 +4,6 @@
},
{
"quote_style": "preserve",
"target_version": "py312"
"target_version": "3.12"
}
]

View file

@ -1,9 +1,9 @@
[
{
"target_version": "py38"
"target_version": "3.8"
},
{
"target_version": "py39",
"target_version": "3.9",
"preview": "enabled"
}
]

View file

@ -1,6 +1,6 @@
[
{
"target_version": "py39",
"target_version": "3.9",
"preview": "enabled"
}
]