add getnewargs_ex to Enum, fix pickling (#663)
This commit is contained in:
parent
6a65ca94bc
commit
08e8a68893
@ -132,6 +132,9 @@ class Enum(IntEnum if TYPE_CHECKING else int, metaclass=EnumType):
|
|||||||
super().__setattr__(self, "value", value)
|
super().__setattr__(self, "value", value)
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
def __getnewargs_ex__(self) -> Tuple[Tuple[()], Dict[str, Any]]:
|
||||||
|
return (), {"name": self.name, "value": self.value}
|
||||||
|
|
||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
return self.name or "None"
|
return self.name or "None"
|
||||||
|
|
||||||
|
@ -57,6 +57,11 @@ class Complex(betterproto.Message):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class BetterprotoEnum(betterproto.Enum):
|
||||||
|
UNSPECIFIED = 0
|
||||||
|
ONE = 1
|
||||||
|
|
||||||
|
|
||||||
def complex_msg():
|
def complex_msg():
|
||||||
return Complex(
|
return Complex(
|
||||||
foo_str="yep",
|
foo_str="yep",
|
||||||
@ -201,3 +206,11 @@ def test_message_can_be_cached():
|
|||||||
.string_value
|
.string_value
|
||||||
== "world"
|
== "world"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_pickle_enum():
|
||||||
|
enum = BetterprotoEnum.ONE
|
||||||
|
assert unpickled(enum) == enum
|
||||||
|
|
||||||
|
enum = BetterprotoEnum.UNSPECIFIED
|
||||||
|
assert unpickled(enum) == enum
|
||||||
|
Loading…
x
Reference in New Issue
Block a user