Remove Enum prefixes (#187)
Co-authored-by: nat <n@natn.me> Co-authored-by: Tim Schmidt <w4rum@users.noreply.github.com> Co-authored-by: Arun Babu Neelicattu <arun.neelicattu@gmail.com>
This commit is contained in:
committed by
GitHub
parent
d9b7608980
commit
bd7de203e1
@@ -136,4 +136,8 @@ def lowercase_first(value: str) -> str:
|
||||
|
||||
def sanitize_name(value: str) -> str:
|
||||
# https://www.python.org/dev/peps/pep-0008/#descriptive-naming-styles
|
||||
return f"{value}_" if keyword.iskeyword(value) else value
|
||||
if keyword.iskeyword(value):
|
||||
return f"{value}_"
|
||||
if not value.isidentifier():
|
||||
return f"_{value}"
|
||||
return value
|
||||
|
||||
@@ -11,3 +11,11 @@ def pythonize_field_name(name: str) -> str:
|
||||
|
||||
def pythonize_method_name(name: str) -> str:
|
||||
return casing.safe_snake_case(name)
|
||||
|
||||
|
||||
def pythonize_enum_member_name(name: str, enum_name: str) -> str:
|
||||
enum_name = casing.snake_case(enum_name).upper()
|
||||
find = name.find(enum_name)
|
||||
if find != -1:
|
||||
name = name[find + len(enum_name) :].strip("_")
|
||||
return casing.sanitize_name(name)
|
||||
|
||||
@@ -57,7 +57,7 @@ class EnumType(EnumMeta if TYPE_CHECKING else type):
|
||||
members = {
|
||||
name: value
|
||||
for name, value in namespace.items()
|
||||
if not _is_descriptor(value) and name[0] != "_"
|
||||
if not _is_descriptor(value) and not name.startswith("__")
|
||||
}
|
||||
|
||||
cls = type.__new__(
|
||||
@@ -70,9 +70,6 @@ class EnumType(EnumMeta if TYPE_CHECKING else type):
|
||||
# members become proper class variables
|
||||
|
||||
for name, value in members.items():
|
||||
if _is_descriptor(value) or name[0] == "_":
|
||||
continue
|
||||
|
||||
member = value_map.get(value)
|
||||
if member is None:
|
||||
member = cls.__new__(cls, name=name, value=value) # type: ignore
|
||||
|
||||
@@ -72,13 +72,13 @@ from betterproto.lib.google.protobuf import (
|
||||
)
|
||||
from betterproto.lib.google.protobuf.compiler import CodeGeneratorRequest
|
||||
|
||||
from ..casing import sanitize_name
|
||||
from ..compile.importing import (
|
||||
get_type_reference,
|
||||
parse_source_type_name,
|
||||
)
|
||||
from ..compile.naming import (
|
||||
pythonize_class_name,
|
||||
pythonize_enum_member_name,
|
||||
pythonize_field_name,
|
||||
pythonize_method_name,
|
||||
)
|
||||
@@ -673,7 +673,9 @@ class EnumDefinitionCompiler(MessageCompiler):
|
||||
# Get entries/allowed values for this Enum
|
||||
self.entries = [
|
||||
self.EnumEntry(
|
||||
name=sanitize_name(entry_proto_value.name),
|
||||
name=pythonize_enum_member_name(
|
||||
entry_proto_value.name, self.proto_obj.name
|
||||
),
|
||||
value=entry_proto_value.number,
|
||||
comment=get_comment(
|
||||
proto_file=self.source_file, path=self.path + [2, entry_number]
|
||||
|
||||
Reference in New Issue
Block a user