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:
		| @@ -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 | ||||
|   | ||||
| @@ -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. | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -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. | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -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. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user