[pypy-commit] pypy py3k: Fixes for the socket module.

amauryfa noreply at buildbot.pypy.org
Wed Oct 19 01:43:27 CEST 2011


Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch: py3k
Changeset: r48223:3ca3586ad5f2
Date: 2011-10-19 01:25 +0200
http://bitbucket.org/pypy/pypy/changeset/3ca3586ad5f2/

Log:	Fixes for the socket module.

diff --git a/lib_pypy/array.py b/lib_pypy/array.py
--- a/lib_pypy/array.py
+++ b/lib_pypy/array.py
@@ -106,9 +106,7 @@
         self.itemsize = calcsize(typecode)
         if isinstance(initializer, list):
             self.fromlist(initializer)
-        elif isinstance(initializer, str):
-            self.fromstring(initializer)
-        elif isinstance(initializer, unicode) and self.typecode == "u":
+        elif isinstance(initializer, str) and self.typecode == "u":
             self.fromunicode(initializer)
         else:
             self.extend(initializer)
@@ -188,6 +186,7 @@
 
     def tostring(self):
         return self._data[:]
+    tobytes = tostring
 
     def __buffer__(self):
         return buffer(self._data)
diff --git a/pypy/module/_socket/interp_func.py b/pypy/module/_socket/interp_func.py
--- a/pypy/module/_socket/interp_func.py
+++ b/pypy/module/_socket/interp_func.py
@@ -227,9 +227,9 @@
         buf = rsocket.inet_pton(family, ip)
     except SocketError, e:
         raise converted_error(space, e)
-    return space.wrap(buf)
+    return space.wrapbytes(buf)
 
- at unwrap_spec(family=int, packed=str)
+ at unwrap_spec(family=int, packed="bufferstr")
 def inet_ntop(space, family, packed):
     """inet_ntop(family, packed_ip) -> string formatted IP address
 
@@ -255,11 +255,11 @@
     # host can be None, string or unicode
     if space.is_w(w_host, space.w_None):
         host = None
-    elif space.is_true(space.isinstance(w_host, space.w_str)):
-        host = space.str_w(w_host)
+    elif space.is_true(space.isinstance(w_host, space.w_bytes)):
+        host = space.bytes_w(w_host)
     elif space.is_true(space.isinstance(w_host, space.w_unicode)):
         w_shost = space.call_method(w_host, "encode", space.wrap("idna"))
-        host = space.str_w(w_shost)
+        host = space.bytes_w(w_shost)
     else:
         raise OperationError(space.w_TypeError,
                              space.wrap(
diff --git a/pypy/module/_socket/interp_socket.py b/pypy/module/_socket/interp_socket.py
--- a/pypy/module/_socket/interp_socket.py
+++ b/pypy/module/_socket/interp_socket.py
@@ -19,8 +19,8 @@
     def __del__(self):
         self.close()
 
-    def accept_w(self, space):
-        """accept() -> (socket object, address info)
+    def _accept_w(self, space):
+        """_accept() -> (socket object, address info)
 
         Wait for an incoming connection.  Return a new socket representing the
         connection, and the address of the client.  For IP sockets, the address
@@ -133,7 +133,7 @@
             except SocketError, e:
                 raise converted_error(space, e)
         buflen = space.int_w(w_buflen)
-        return space.wrap(self.getsockopt(level, optname, buflen))
+        return space.wrapbytes(self.getsockopt(level, optname, buflen))
 
     def gettimeout_w(self, space):
         """gettimeout() -> timeout
@@ -180,7 +180,7 @@
             data = self.recv(buffersize, flags)
         except SocketError, e:
             raise converted_error(space, e)
-        return space.wrap(data)
+        return space.wrapbytes(data)
 
     @unwrap_spec(buffersize='nonnegint', flags=int)
     def recvfrom_w(self, space, buffersize, flags=0):
@@ -194,7 +194,7 @@
                 w_addr = addr.as_object(self.fd, space)
             else:
                 w_addr = space.w_None
-            return space.newtuple([space.wrap(data), w_addr])
+            return space.newtuple([space.wrapbytes(data), w_addr])
         except SocketError, e:
             raise converted_error(space, e)
 
@@ -268,7 +268,7 @@
         try:
             optval = space.int_w(w_optval)
         except:
-            optval = space.str_w(w_optval)
+            optval = space.bytes_w(w_optval)
             try:
                 self.setsockopt(level, optname, optval)
             except SocketError, e:
@@ -462,7 +462,7 @@
 # ____________________________________________________________
 
 socketmethodnames = """
-accept bind close connect connect_ex dup fileno
+_accept bind close connect connect_ex dup fileno
 getpeername getsockname getsockopt gettimeout listen makefile
 recv recvfrom send sendall sendto setblocking
 setsockopt settimeout shutdown _reuse _drop recv_into recvfrom_into
@@ -493,7 +493,7 @@
 
 Methods of socket objects (keyword arguments not allowed):
 
-accept() -- accept a connection, returning new socket and client address
+_accept() -- accept a connection, returning new socket and client address
 bind(addr) -- bind the socket to a local address
 close() -- close the socket
 connect(addr) -- connect the socket to a remote address
diff --git a/pypy/module/_socket/test/test_sock_app.py b/pypy/module/_socket/test/test_sock_app.py
--- a/pypy/module/_socket/test/test_sock_app.py
+++ b/pypy/module/_socket/test/test_sock_app.py
@@ -181,7 +181,7 @@
         ("\x00" * 10 + "\xff\xff\x01\x02\x03\x04", "::ffff:1.2.3.4"),
     ]
     for packed, ip in tests:
-        w_ip = space.appexec([w_socket, space.wrap(packed)],
+        w_ip = space.appexec([w_socket, space.wrapbytes(packed)],
             "(_socket, packed): return _socket.inet_ntop(_socket.AF_INET6, packed)")
         if ip is not None:   # else don't check for the precise representation
             assert space.unwrap(w_ip) == ip
@@ -217,14 +217,14 @@
     assert space.unwrap(res) == socket.has_ipv6
 
 def test_getaddrinfo():
-    host = "localhost"
+    host = b"localhost"
     port = 25
     info = socket.getaddrinfo(host, port)
-    w_l = space.appexec([w_socket, space.wrap(host), space.wrap(port)],
+    w_l = space.appexec([w_socket, space.wrapbytes(host), space.wrap(port)],
                         "(_socket, host, port): return _socket.getaddrinfo(host, port)")
     assert space.unwrap(w_l) == info
     py.test.skip("Unicode conversion is too slow")
-    w_l = space.appexec([w_socket, space.wrap(unicode(host)), space.wrap(port)],
+    w_l = space.appexec([w_socket, space.wrap(host), space.wrap(port)],
                         "(_socket, host, port): return _socket.getaddrinfo(host, port)")
     assert space.unwrap(w_l) == info
 
@@ -314,10 +314,10 @@
         if not hasattr(_socket, 'inet_ntop'):
             skip('No socket.inet_pton on this platform')
         for family, packed, exception in \
-                    [(_socket.AF_INET + _socket.AF_INET6, "", _socket.error),
-                     (_socket.AF_INET, "a", ValueError),
-                     (_socket.AF_INET6, "a", ValueError),
-                     (_socket.AF_INET, u"aa\u2222a", UnicodeEncodeError)]:
+                    [(_socket.AF_INET + _socket.AF_INET6, b"", _socket.error),
+                     (_socket.AF_INET, b"a", ValueError),
+                     (_socket.AF_INET6, b"a", ValueError),
+                     (_socket.AF_INET, u"aa\u2222a", TypeError)]:
             raises(exception, _socket.inet_ntop, family, packed)
 
     def test_pton_exceptions(self):
@@ -503,8 +503,8 @@
         assert s.fileno() != s2.fileno()
         assert s.getsockname() == s2.getsockname()
 
-    def test_buffer_or_unicode(self):
-        # Test that send/sendall/sendto accept a buffer or a unicode as arg
+    def test_buffer(self):
+        # Test that send/sendall/sendto accept a buffer as arg
         import _socket, os
         s = _socket.socket(_socket.AF_INET, _socket.SOCK_STREAM, 0)
         # XXX temporarily we use python.org to test, will have more robust tests
@@ -515,14 +515,13 @@
             s.connect(("www.python.org", 80))
         except _socket.gaierror, ex:
             skip("GAIError - probably no connection: %s" % str(ex.args))
-        s.send(buffer(''))
-        s.sendall(buffer(''))
-        s.send(u'')
-        s.sendall(u'')
-        raises(UnicodeEncodeError, s.send, u'\xe9')
+        s.send(buffer(b''))
+        s.sendall(buffer(b''))
+        raises(TypeError, s.send, u'')
+        raises(TypeError, s.sendall, u'')
         s.close()
         s = _socket.socket(_socket.AF_INET, _socket.SOCK_DGRAM, 0)
-        s.sendto(buffer(''), ('localhost', 9)) # Send to discard port.
+        s.sendto(buffer(b''), ('localhost', 9)) # Send to discard port.
         s.close()
 
     def test_unix_socket_connect(self):
@@ -537,15 +536,15 @@
 
         clientsock = _socket.socket(_socket.AF_UNIX)
         clientsock.connect(sockpath)
-        s, addr = serversock.accept()
+        s, addr = serversock._accept()
         assert not addr
 
-        s.send('X')
+        s.send(b'X')
         data = clientsock.recv(100)
-        assert data == 'X'
-        clientsock.send('Y')
+        assert data == b'X'
+        clientsock.send(b'Y')
         data = s.recv(100)
-        assert data == 'Y'
+        assert data == b'Y'
 
         clientsock.close()
         s.close()
@@ -575,45 +574,45 @@
         from _socket import timeout
         def raise_timeout():
             self.serv.settimeout(1.0)
-            self.serv.accept()
+            self.serv._accept()
         raises(timeout, raise_timeout)
 
     def test_timeout_zero(self):
         from _socket import error
         def raise_error():
             self.serv.settimeout(0.0)
-            foo = self.serv.accept()
+            foo = self.serv._accept()
         raises(error, raise_error)
 
     def test_recv_send_timeout(self):
         from _socket import socket, timeout
         cli = socket()
         cli.connect(self.serv.getsockname())
-        t, addr = self.serv.accept()
+        t, addr = self.serv._accept()
         cli.settimeout(1.0)
         # test recv() timeout
-        t.send('*')
+        t.send(b'*')
         buf = cli.recv(100)
-        assert buf == '*'
+        assert buf == b'*'
         raises(timeout, cli.recv, 100)
         # test that send() works
-        count = cli.send('!')
+        count = cli.send(b'!')
         assert count == 1
         buf = t.recv(1)
-        assert buf == '!'
+        assert buf == b'!'
         # test that sendall() works
-        cli.sendall('?')
+        cli.sendall(b'?')
         assert count == 1
         buf = t.recv(1)
-        assert buf == '?'
+        assert buf == b'?'
         # test send() timeout
         try:
             while 1:
-                cli.send('foobar' * 70)
+                cli.send(b'foobar' * 70)
         except timeout:
             pass
         # test sendall() timeout
-        raises(timeout, cli.sendall, 'foobar' * 70)
+        raises(timeout, cli.sendall, b'foobar' * 70)
         # done
         cli.close()
         t.close()
@@ -621,31 +620,31 @@
     def test_recv_into(self):
         import socket
         import array
-        MSG = 'dupa was here\n'
+        MSG = b'dupa was here\n'
         cli = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
         cli.connect(self.serv.getsockname())
-        conn, addr = self.serv.accept()
+        conn, addr = self.serv._accept()
         buf = buffer(MSG)
         conn.send(buf)
-        buf = array.array('c', ' '*1024)
+        buf = array.array('b', b' '*1024)
         nbytes = cli.recv_into(buf)
         assert nbytes == len(MSG)
-        msg = buf.tostring()[:len(MSG)]
+        msg = buf.tobytes()[:len(MSG)]
         assert msg == MSG
 
     def test_recvfrom_into(self):
         import socket
         import array
-        MSG = 'dupa was here\n'
+        MSG = b'dupa was here\n'
         cli = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
         cli.connect(self.serv.getsockname())
-        conn, addr = self.serv.accept()
+        conn, addr = self.serv._accept()
         buf = buffer(MSG)
         conn.send(buf)
-        buf = array.array('c', ' '*1024)
+        buf = array.array('b', b' '*1024)
         nbytes, addr = cli.recvfrom_into(buf)
         assert nbytes == len(MSG)
-        msg = buf.tostring()[:len(MSG)]
+        msg = buf.tobytes()[:len(MSG)]
         assert msg == MSG
 
     def test_family(self):


More information about the pypy-commit mailing list