diff --git a/Doc/library/socket.rst b/Doc/library/socket.rst
index a7656c1..c7d7ee3 100644
--- a/Doc/library/socket.rst
+++ b/Doc/library/socket.rst
@@ -364,6 +364,10 @@
    if defined on the platform; otherwise, the default is :const:`AF_INET`.
    Availability: Unix.
 
+   .. versionchanged:: 3.2
+      The returned socket objects now support the whole socket API, rather
+      than a subset.
+
 
 .. function:: fromfd(fd, family, type[, proto])
 
diff --git a/Lib/socket.py b/Lib/socket.py
index bfc9a726..9b5b23d 100644
--- a/Lib/socket.py
+++ b/Lib/socket.py
@@ -199,6 +199,27 @@
     return socket(family, type, proto, nfd)
 
 
+if hasattr(_socket, "socketpair"):
+
+    def socketpair(family=None, type=SOCK_STREAM, proto=0):
+        """socketpair([family[, type[, proto]]]) -> (socket object, socket object)
+
+        Create a pair of socket objects from the sockets returned by the platform
+        socketpair() function.
+        The arguments are the same as for socket() except the default family is
+        AF_UNIX if defined on the platform; otherwise, the default is AF_INET.
+        """
+        if family is None:
+            try:
+                family = AF_UNIX
+            except NameError:
+                family = AF_INET
+        a, b = _socket.socketpair(family, type, proto)
+        a = socket(family, type, proto, a.detach())
+        b = socket(family, type, proto, b.detach())
+        return a, b
+
+
 class SocketIO(io.RawIOBase):
 
     """Raw I/O implementation for stream sockets.
diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py
index 05b6ca7..690d9b5 100644
--- a/Lib/test/test_socket.py
+++ b/Lib/test/test_socket.py
@@ -714,6 +714,7 @@
         # Testing fromfd()
         fd = self.cli_conn.fileno()
         sock = socket.fromfd(fd, socket.AF_INET, socket.SOCK_STREAM)
+        self.assertIsInstance(sock, socket.socket)
         msg = sock.recv(1024)
         self.assertEqual(msg, MSG)
 
@@ -814,6 +815,23 @@
     def __init__(self, methodName='runTest'):
         SocketPairTest.__init__(self, methodName=methodName)
 
+    def _testDefaults(self):
+        pass
+
+    def testDefaults(self):
+        self.assertIsInstance(self.cli, socket.socket)
+        self.assertIsInstance(self.serv, socket.socket)
+        if hasattr(socket, 'AF_UNIX'):
+            self.assertEqual(self.cli.family, socket.AF_UNIX)
+            self.assertEqual(self.serv.family, socket.AF_UNIX)
+        else:
+            self.assertEqual(self.cli.family, socket.AF_INET)
+            self.assertEqual(self.serv.family, socket.AF_INET)
+        self.assertEqual(self.cli.type, socket.SOCK_STREAM)
+        self.assertEqual(self.serv.type, socket.SOCK_STREAM)
+        self.assertEqual(self.cli.proto, 0)
+        self.assertEqual(self.serv.proto, 0)
+
     def testRecv(self):
         msg = self.serv.recv(1024)
         self.assertEqual(msg, MSG)
diff --git a/Misc/NEWS b/Misc/NEWS
index c6ae1ce..8dba55b 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -52,6 +52,10 @@
 Library
 -------
 
+- Issue #1552: socket.socketpair() now returns regular socket.socket
+  objects supporting the whole socket API (rather than the "raw"
+  _socket.socket objects).
+
 - Issue #9853: Fix the signature of SSLSocket.recvfrom() and
   SSLSocket.sendto() to match the corresponding socket methods.
 
