22# SPDX-License-Identifier: Apache-2.0
33
44
5- # CYTHON-BINDINGS-GENERATED-DO-NOT-MODIFY-THIS-FILE: format=1; content-sha256=581469c1fadb5f72c43b478d73f2b905562136c8723a25e2f4240b5b681e2894
5+ # CYTHON-BINDINGS-GENERATED-DO-NOT-MODIFY-THIS-FILE: format=1; content-sha256=8e5f9b5cdfa1966fc26d3fd6782a41f08bc8b6c24321b0fe5fd1ddd92393bea8
66"""
77This is a replacement for the stdlib enum.IntEnum.
88
@@ -22,6 +22,7 @@ def __init__(cls, name, bases, namespace):
2222
2323 cls .__singletons__ = {}
2424 cls .__members__ = {}
25+ aliases = {}
2526 for name , value in cls .__dict__ .items ():
2627 if name .startswith ("__" ) and name .endswith ("__" ):
2728 continue
@@ -33,6 +34,14 @@ def __init__(cls, name, bases, namespace):
3334 else :
3435 continue
3536
37+ # A name sharing a value with an already-processed member is an
38+ # alias (e.g. a deprecated name kept for backward compatibility):
39+ # it resolves to the same singleton, but isn't a distinct member
40+ # (excluded from __members__, iteration, and len()).
41+ if value in cls .__singletons__ :
42+ aliases [name ] = cls .__singletons__ [value ]
43+ continue
44+
3645 singleton = int .__new__ (cls , value )
3746 singleton .__doc__ = doc
3847 singleton ._name = name
@@ -41,6 +50,8 @@ def __init__(cls, name, bases, namespace):
4150
4251 for name , member in cls .__members__ .items ():
4352 setattr (cls , name , member )
53+ for name , member in aliases .items ():
54+ setattr (cls , name , member )
4455
4556 def __repr__ (cls ) -> str :
4657 return f"<enum '{ cls .__name__ } '>"
0 commit comments