When binding to a socket for creating a service, the socket API provides a mechanism for selecting only IPv4 or IPv6, but the simple operation of binding to all interfaces in a dual-stack environment is not easy, as is revealed in and , but also in third-party packages. I ran into this during the implementation of aiosmtpd (https://gitlab.com/python-smtpd-hackers/aiosmtpd). As a long time maintainer of CherryPy, I've enjoyed the [dual stack support](https://bitbucket.org/cherrypy/cherrypy/src/536a9cb66e91de92502e766b2b0cf53d1cb5cb4a/cherrypy/wsgiserver/wsgiserver2.py?at=default&fileviewer=file-view-default#wsgiserver2.py-2007:2020) there. I propose the Python stdlib provide a routine to facilitate this need more generally, and then invoke that implementation to address these other use-cases. As it is a new feature, a backports package should be created to supply the same functionality for older Pythons. Would this effort require a PEP? Is there a good place for such a routine (maybe socketserver)? Any other thoughts?
I don't think it should require a PEP, it looks like a fairly straightforward small enhancement. What is the reason to not put it in the socket module?
No reason not to put it in the socket module. I was thinking originally that the socket module was C only, but on further reflection, it could easily be one of the "additional facilities implemented in Python". Great suggestion.