summaryrefslogtreecommitdiffstats
path: root/Lib/socket.py
diff options
context:
space:
mode:
authorEthan Furman <ethan@stoneleaf.us>2015-03-19 01:19:30 (GMT)
committerEthan Furman <ethan@stoneleaf.us>2015-03-19 01:19:30 (GMT)
commit482fe0477e5923f0b8fff16c59052650cf7247cf (patch)
tree0b2ee2281894cda0a745373a8a5df9569a33ec55 /Lib/socket.py
parentd833779ceaebeb29352488ffddabf5fc2f070364 (diff)
downloadcpython-482fe0477e5923f0b8fff16c59052650cf7247cf.zip
cpython-482fe0477e5923f0b8fff16c59052650cf7247cf.tar.gz
cpython-482fe0477e5923f0b8fff16c59052650cf7247cf.tar.bz2
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
Diffstat (limited to 'Lib/socket.py')
-rw-r--r--Lib/socket.py18
1 files changed, 9 insertions, 9 deletions
diff --git a/Lib/socket.py b/Lib/socket.py
index 8efd760..0045886 100644
--- a/Lib/socket.py
+++ b/Lib/socket.py
@@ -69,15 +69,15 @@ __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_'))
def _intenum_converter(value, enum_klass):
"""Convert a numeric family value to an IntEnum member.