Kaydet (Commit) 103a6d6c authored tarafından Giampaolo Rodolà's avatar Giampaolo Rodolà

Issue 11177: asyncore's create_socket() arguments can now be omitted.

üst 0bd4deba
...@@ -184,12 +184,14 @@ any that have been added to the map during asynchronous service) is closed. ...@@ -184,12 +184,14 @@ any that have been added to the map during asynchronous service) is closed.
Most of these are nearly identical to their socket partners. Most of these are nearly identical to their socket partners.
.. method:: create_socket(family, type) .. method:: create_socket(family=socket.AF_INET, type=socket.SOCK_STREAM)
This is identical to the creation of a normal socket, and will use the This is identical to the creation of a normal socket, and will use the
same options for creation. Refer to the :mod:`socket` documentation for same options for creation. Refer to the :mod:`socket` documentation for
information on creating sockets. information on creating sockets.
.. versionchanged:: 3.3 family and type arguments can be omitted.
.. method:: connect(address) .. method:: connect(address)
...@@ -280,7 +282,7 @@ implement its socket handling:: ...@@ -280,7 +282,7 @@ implement its socket handling::
def __init__(self, host, path): def __init__(self, host, path):
asyncore.dispatcher.__init__(self) asyncore.dispatcher.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM) self.create_socket()
self.connect( (host, 80) ) self.connect( (host, 80) )
self.buffer = bytes('GET %s HTTP/1.0\r\n\r\n' % path, 'ascii') self.buffer = bytes('GET %s HTTP/1.0\r\n\r\n' % path, 'ascii')
...@@ -326,7 +328,7 @@ connections and dispatches the incoming connections to a handler:: ...@@ -326,7 +328,7 @@ connections and dispatches the incoming connections to a handler::
def __init__(self, host, port): def __init__(self, host, port):
asyncore.dispatcher.__init__(self) asyncore.dispatcher.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM) self.create_socket()
self.set_reuse_addr() self.set_reuse_addr()
self.bind((host, port)) self.bind((host, port))
self.listen(5) self.listen(5)
......
...@@ -287,7 +287,7 @@ class dispatcher: ...@@ -287,7 +287,7 @@ class dispatcher:
del map[fd] del map[fd]
self._fileno = None self._fileno = None
def create_socket(self, family, type): def create_socket(self, family=socket.AF_INET, type=socket.SOCK_STREAM):
self.family_and_type = family, type self.family_and_type = family, type
sock = socket.socket(family, type) sock = socket.socket(family, type)
sock.setblocking(0) sock.setblocking(0)
......
...@@ -352,7 +352,7 @@ class DispatcherWithSendTests(unittest.TestCase): ...@@ -352,7 +352,7 @@ class DispatcherWithSendTests(unittest.TestCase):
@support.reap_threads @support.reap_threads
def test_send(self): def test_send(self):
evt = threading.Event() evt = threading.Event()
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock = socket.socket()
sock.settimeout(3) sock.settimeout(3)
port = support.bind_port(sock) port = support.bind_port(sock)
...@@ -367,7 +367,7 @@ class DispatcherWithSendTests(unittest.TestCase): ...@@ -367,7 +367,7 @@ class DispatcherWithSendTests(unittest.TestCase):
data = b"Suppose there isn't a 16-ton weight?" data = b"Suppose there isn't a 16-ton weight?"
d = dispatcherwithsend_noread() d = dispatcherwithsend_noread()
d.create_socket(socket.AF_INET, socket.SOCK_STREAM) d.create_socket()
d.connect((HOST, port)) d.connect((HOST, port))
# give time for socket to connect # give time for socket to connect
...@@ -474,7 +474,7 @@ class TCPServer(asyncore.dispatcher): ...@@ -474,7 +474,7 @@ class TCPServer(asyncore.dispatcher):
def __init__(self, handler=BaseTestHandler, host=HOST, port=0): def __init__(self, handler=BaseTestHandler, host=HOST, port=0):
asyncore.dispatcher.__init__(self) asyncore.dispatcher.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM) self.create_socket()
self.set_reuse_addr() self.set_reuse_addr()
self.bind((host, port)) self.bind((host, port))
self.listen(5) self.listen(5)
...@@ -495,7 +495,7 @@ class BaseClient(BaseTestHandler): ...@@ -495,7 +495,7 @@ class BaseClient(BaseTestHandler):
def __init__(self, address): def __init__(self, address):
BaseTestHandler.__init__(self) BaseTestHandler.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM) self.create_socket()
self.connect(address) self.connect(address)
def handle_connect(self): def handle_connect(self):
...@@ -536,7 +536,7 @@ class BaseTestAPI(unittest.TestCase): ...@@ -536,7 +536,7 @@ class BaseTestAPI(unittest.TestCase):
def __init__(self): def __init__(self):
BaseTestHandler.__init__(self) BaseTestHandler.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM) self.create_socket()
self.bind((HOST, 0)) self.bind((HOST, 0))
self.listen(5) self.listen(5)
self.address = self.socket.getsockname()[:2] self.address = self.socket.getsockname()[:2]
...@@ -555,7 +555,7 @@ class BaseTestAPI(unittest.TestCase): ...@@ -555,7 +555,7 @@ class BaseTestAPI(unittest.TestCase):
def __init__(self): def __init__(self):
BaseTestHandler.__init__(self) BaseTestHandler.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM) self.create_socket()
self.bind((HOST, 0)) self.bind((HOST, 0))
self.listen(5) self.listen(5)
self.address = self.socket.getsockname()[:2] self.address = self.socket.getsockname()[:2]
...@@ -693,20 +693,20 @@ class BaseTestAPI(unittest.TestCase): ...@@ -693,20 +693,20 @@ class BaseTestAPI(unittest.TestCase):
def test_create_socket(self): def test_create_socket(self):
s = asyncore.dispatcher() s = asyncore.dispatcher()
s.create_socket(socket.AF_INET, socket.SOCK_STREAM) s.create_socket()
self.assertEqual(s.socket.family, socket.AF_INET) self.assertEqual(s.socket.family, socket.AF_INET)
SOCK_NONBLOCK = getattr(socket, 'SOCK_NONBLOCK', 0) SOCK_NONBLOCK = getattr(socket, 'SOCK_NONBLOCK', 0)
self.assertEqual(s.socket.type, socket.SOCK_STREAM | SOCK_NONBLOCK) self.assertEqual(s.socket.type, socket.SOCK_STREAM | SOCK_NONBLOCK)
def test_bind(self): def test_bind(self):
s1 = asyncore.dispatcher() s1 = asyncore.dispatcher()
s1.create_socket(socket.AF_INET, socket.SOCK_STREAM) s1.create_socket()
s1.bind((HOST, 0)) s1.bind((HOST, 0))
s1.listen(5) s1.listen(5)
port = s1.socket.getsockname()[1] port = s1.socket.getsockname()[1]
s2 = asyncore.dispatcher() s2 = asyncore.dispatcher()
s2.create_socket(socket.AF_INET, socket.SOCK_STREAM) s2.create_socket()
# EADDRINUSE indicates the socket was correctly bound # EADDRINUSE indicates the socket was correctly bound
self.assertRaises(socket.error, s2.bind, (HOST, port)) self.assertRaises(socket.error, s2.bind, (HOST, port))
...@@ -723,7 +723,7 @@ class BaseTestAPI(unittest.TestCase): ...@@ -723,7 +723,7 @@ class BaseTestAPI(unittest.TestCase):
self.assertFalse(s.socket.getsockopt(socket.SOL_SOCKET, self.assertFalse(s.socket.getsockopt(socket.SOL_SOCKET,
socket.SO_REUSEADDR)) socket.SO_REUSEADDR))
s.socket.close() s.socket.close()
s.create_socket(socket.AF_INET, socket.SOCK_STREAM) s.create_socket()
s.set_reuse_addr() s.set_reuse_addr()
self.assertTrue(s.socket.getsockopt(socket.SOL_SOCKET, self.assertTrue(s.socket.getsockopt(socket.SOL_SOCKET,
socket.SO_REUSEADDR)) socket.SO_REUSEADDR))
......
...@@ -35,6 +35,8 @@ Core and Builtins ...@@ -35,6 +35,8 @@ Core and Builtins
Library Library
------- -------
- Issue 11177: asyncore's create_socket() arguments can now be omitted.
- Issue #6064: Add a ``daemon`` keyword argument to the threading.Thread - Issue #6064: Add a ``daemon`` keyword argument to the threading.Thread
and multiprocessing.Process constructors in order to override the and multiprocessing.Process constructors in order to override the
default behaviour of inheriting the daemonic property from the current default behaviour of inheriting the daemonic property from the current
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment