New submission from Eli Bendersky: As part of original plan and since issue #18264 has been resolved, it's time to dust off some old patches I have for the socket.* module. The socket.AF_* and socket.SOCK_* constants are good candidates for IntEnum conversion.
I'm attaching an initial patch that handles socket.AF_* (as a proof-of-concept; socket.SOCK_* should get identical treatment); it only touches Lib/socket.py and all regrtest tests pass without changes. Result: >>> import socket >>> socket.AF_INET <AddressFamily.AF_INET: 2> >>> s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) >>> s.family <AddressFamily.AF_INET: 2> >>> '{}'.format(s.family) 'AddressFamily.AF_INET' The code in the patch is pretty well commented, and I also want to point out a couple of decision points that came up: 1. The underlying socketmodule.c has no idea of IntEnums, and neither IMHO it should. These constants are essentially one-way, going from Python into C. They are only exposed back through read-only accessors (e.g. s.family above), at which point the Python code can wrap them back into the enum. The alternative, making socketmodule.c use enums is probably way more complicated than really necessary. 2. As a followup to (1), the constants are actually wrapped into an IntEnum at the Python level and exposed back to the user. My hacking of globals() there may be a bit rough - suggestions for a better way are welcome. 3. A bunch of AF_* constants exported by Python built on my x64 Ubuntu are not documented in socket.rst; I'm still wrapping them all in enums; I basically went over all PyModule_AddIntMacro(m, AF_*) in PyInit__socket. PTAL ---------- assignee: eli.bendersky components: Library (Lib) files: socket-intenum-af.1.patch keywords: patch messages: 195018 nosy: barry, eli.bendersky, ethan.furman, gvanrossum, ncoghlan, pitrou priority: normal severity: normal stage: patch review status: open title: Switch suitable constants in the socket module to IntEnum type: enhancement versions: Python 3.4 Added file: http://bugs.python.org/file31261/socket-intenum-af.1.patch _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue18720> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com