mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
issue23673
add private method to enum to support replacing global constants with Enum members: - search for candidate constants via supplied filter - create new enum class and members - insert enum class and replace constants with members via supplied module name - replace __reduce_ex__ with function that returns member name, so previous Python versions can unpickle modify IntEnum classes to use new method
This commit is contained in:
parent
8eef6a9ad0
commit
24e837f231
6 changed files with 63 additions and 30 deletions
|
@ -69,16 +69,16 @@ __all__.extend(os._get_exports_list(_socket))
|
|||
# Note that _socket only knows about the integer values. The public interface
|
||||
# in this module understands the enums and translates them back from integers
|
||||
# where needed (e.g. .family property of a socket object).
|
||||
AddressFamily = IntEnum('AddressFamily',
|
||||
{name: value for name, value in globals().items()
|
||||
if name.isupper() and name.startswith('AF_')})
|
||||
globals().update(AddressFamily.__members__)
|
||||
|
||||
SocketKind = IntEnum('SocketKind',
|
||||
{name: value for name, value in globals().items()
|
||||
if name.isupper() and name.startswith('SOCK_')})
|
||||
globals().update(SocketKind.__members__)
|
||||
IntEnum._convert(
|
||||
'AddressFamily',
|
||||
__name__,
|
||||
lambda C: C.isupper() and C.startswith('AF_'))
|
||||
|
||||
IntEnum._convert(
|
||||
'SocketKind',
|
||||
__name__,
|
||||
lambda C: C.isupper() and C.startswith('SOCK_'))
|
||||
|
||||
_LOCALHOST = '127.0.0.1'
|
||||
_LOCALHOST_V6 = '::1'
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue