Use ruff instead of black+isort (#644)

* Use ruff

* Update .gitignore

* Format code

* Use Ruff on generated code

* Update pre-commit hook

* Wrong commit

* Remove wrong imports

* Update hook

* Format code

* Target Python 3.8

* Reformat

* Pin ruff version
This commit is contained in:
Adrien
2025-01-03 02:59:43 +01:00
committed by GitHub
parent 37fa3abbac
commit f41934a0e2
12 changed files with 539 additions and 559 deletions

View File

@@ -66,8 +66,7 @@ if sys.version_info >= (3, 10):
from types import UnionType as _types_UnionType
else:
class _types_UnionType:
...
class _types_UnionType: ...
# Proto 3 data types

View File

@@ -1204,9 +1204,9 @@ class EnumDescriptorProto(betterproto.Message):
name: str = betterproto.string_field(1)
value: List["EnumValueDescriptorProto"] = betterproto.message_field(2)
options: "EnumOptions" = betterproto.message_field(3)
reserved_range: List[
"EnumDescriptorProtoEnumReservedRange"
] = betterproto.message_field(4)
reserved_range: List["EnumDescriptorProtoEnumReservedRange"] = (
betterproto.message_field(4)
)
"""
Range of reserved numeric values. Reserved numeric values may not be used
by enum values in the same enum declaration. Reserved ranges may not
@@ -1792,9 +1792,9 @@ class FeatureSetDefaults(betterproto.Message):
for the closest matching edition, followed by proto merges.
"""
defaults: List[
"FeatureSetDefaultsFeatureSetEditionDefault"
] = betterproto.message_field(1)
defaults: List["FeatureSetDefaultsFeatureSetEditionDefault"] = (
betterproto.message_field(1)
)
minimum_edition: "Edition" = betterproto.enum_field(4)
"""
The minimum supported edition (inclusive) when this was constructed.

View File

@@ -53,9 +53,9 @@ class CodeGeneratorRequest(betterproto.Message):
parameter: str = betterproto.string_field(2)
"""The generator parameter passed on the command-line."""
proto_file: List[
"betterproto_lib_pydantic_google_protobuf.FileDescriptorProto"
] = betterproto.message_field(15)
proto_file: List["betterproto_lib_pydantic_google_protobuf.FileDescriptorProto"] = (
betterproto.message_field(15)
)
"""
FileDescriptorProtos for all files in files_to_generate and everything
they import. The files will appear in topological order, so each file
@@ -195,9 +195,9 @@ class CodeGeneratorResponseFile(betterproto.Message):
content: str = betterproto.string_field(15)
"""The file contents."""
generated_code_info: (
"betterproto_lib_pydantic_google_protobuf.GeneratedCodeInfo"
) = betterproto.message_field(16)
generated_code_info: "betterproto_lib_pydantic_google_protobuf.GeneratedCodeInfo" = betterproto.message_field(
16
)
"""
Information describing the file content being inserted. If an insertion
point is used, this information will be appropriately offset and inserted

View File

@@ -1064,9 +1064,9 @@ class EnumDescriptorProto(betterproto.Message):
name: str = betterproto.string_field(1)
value: List["EnumValueDescriptorProto"] = betterproto.message_field(2)
options: "EnumOptions" = betterproto.message_field(3)
reserved_range: List[
"EnumDescriptorProtoEnumReservedRange"
] = betterproto.message_field(4)
reserved_range: List["EnumDescriptorProtoEnumReservedRange"] = (
betterproto.message_field(4)
)
"""
Range of reserved numeric values. Reserved numeric values may not be used
by enum values in the same enum declaration. Reserved ranges may not
@@ -1688,9 +1688,9 @@ class FeatureSetDefaults(betterproto.Message):
for the closest matching edition, followed by proto merges.
"""
defaults: List[
"FeatureSetDefaultsFeatureSetEditionDefault"
] = betterproto.message_field(1)
defaults: List["FeatureSetDefaultsFeatureSetEditionDefault"] = (
betterproto.message_field(1)
)
minimum_edition: "Edition" = betterproto.enum_field(4)
"""
The minimum supported edition (inclusive) when this was constructed.

View File

@@ -46,9 +46,9 @@ class CodeGeneratorRequest(betterproto.Message):
parameter: str = betterproto.string_field(2)
"""The generator parameter passed on the command-line."""
proto_file: List[
"betterproto_lib_google_protobuf.FileDescriptorProto"
] = betterproto.message_field(15)
proto_file: List["betterproto_lib_google_protobuf.FileDescriptorProto"] = (
betterproto.message_field(15)
)
"""
FileDescriptorProtos for all files in files_to_generate and everything
they import. The files will appear in topological order, so each file

View File

@@ -1,4 +1,5 @@
import os.path
import subprocess
import sys
from .module_validation import ModuleValidator
@@ -6,8 +7,6 @@ from .module_validation import ModuleValidator
try:
# betterproto[compiler] specific dependencies
import black
import isort.api
import jinja2
except ImportError as err:
print(
@@ -40,20 +39,17 @@ def outputfile_compiler(output_file: OutputTemplate) -> str:
code = body_template.render(output_file=output_file)
code = header_template.render(output_file=output_file) + code
code = isort.api.sort_code_string(
code=code,
show_diff=False,
py_version=37,
profile="black",
combine_as_imports=True,
lines_after_imports=2,
quiet=True,
force_grid_wrap=2,
known_third_party=["grpclib", "betterproto"],
# Sort imports, delete unused ones
code = subprocess.check_output(
["ruff", "check", "--select", "I,F401", "--fix", "--silent", "-"],
input=code,
encoding="utf-8",
)
code = black.format_str(
src_contents=code,
mode=black.Mode(),
# Format the code
code = subprocess.check_output(
["ruff", "format", "-"], input=code, encoding="utf-8"
)
# Validate the generated code.