[Python-checkins] cpython (2.7): add context parameter to xmlrpclib.ServerProxy (#22960)

benjamin.peterson python-checkins at python.org
Sun Nov 30 04:57:22 CET 2014


https://hg.python.org/cpython/rev/62bd574e95d5
changeset:   93657:62bd574e95d5
branch:      2.7
parent:      93636:1ac5aec658f6
user:        Benjamin Peterson <benjamin at python.org>
date:        Sat Nov 29 22:55:35 2014 -0500
summary:
  add context parameter to xmlrpclib.ServerProxy (#22960)

Patch from Alex Gaynor.

files:
  Doc/library/xmlrpclib.rst |  11 ++++++++---
  Lib/xmlrpclib.py          |  10 +++++++---
  Misc/NEWS                 |  11 +++++++++++
  3 files changed, 26 insertions(+), 6 deletions(-)


diff --git a/Doc/library/xmlrpclib.rst b/Doc/library/xmlrpclib.rst
--- a/Doc/library/xmlrpclib.rst
+++ b/Doc/library/xmlrpclib.rst
@@ -39,7 +39,7 @@
    For https URIs, :mod:`xmlrpclib` now performs all the necessary certificate
    and hostname checks by default
 
-.. class:: ServerProxy(uri[, transport[, encoding[, verbose[,  allow_none[, use_datetime]]]]])
+.. class:: ServerProxy(uri[, transport[, encoding[, verbose[, allow_none[, use_datetime[, context]]]]]])
 
    A :class:`ServerProxy` instance is an object that manages communication with a
    remote XML-RPC server.  The required first argument is a URI (Uniform Resource
@@ -57,11 +57,13 @@
    :class:`datetime.datetime` objects may be passed to calls.
 
    Both the HTTP and HTTPS transports support the URL syntax extension for HTTP
-   Basic Authentication: ``http://user:pass@host:port/path``.  The  ``user:pass``
+   Basic Authentication: ``http://user:pass@host:port/path``.  The ``user:pass``
    portion will be base64-encoded as an HTTP 'Authorization' header, and sent to
    the remote server as part of the connection process when invoking an XML-RPC
    method.  You only need to use this if the remote server requires a Basic
-   Authentication user and password.
+   Authentication user and password. If an HTTPS url is provided, *context* may
+   be :class:`ssl.SSLContext` and configures the SSL settings of the underlying
+   HTTPS connection.
 
    The returned instance is a proxy object with methods that can be used to invoke
    corresponding RPC calls on the remote server.  If the remote server supports the
@@ -131,6 +133,9 @@
       *__dict__* attribute and don't have a base class that is marshalled in a
       special way.
 
+   .. versionchanged:: 2.7.9
+      Added the *context* argument.
+
 
 .. seealso::
 
diff --git a/Lib/xmlrpclib.py b/Lib/xmlrpclib.py
--- a/Lib/xmlrpclib.py
+++ b/Lib/xmlrpclib.py
@@ -1478,6 +1478,10 @@
 class SafeTransport(Transport):
     """Handles an HTTPS transaction to an XML-RPC server."""
 
+    def __init__(self, use_datetime=0, context=None):
+        Transport.__init__(self, use_datetime=use_datetime)
+        self.context = context
+
     # FIXME: mostly untested
 
     def make_connection(self, host):
@@ -1493,7 +1497,7 @@
                 )
         else:
             chost, self._extra_headers, x509 = self.get_host_info(host)
-            self._connection = host, HTTPS(chost, None, **(x509 or {}))
+            self._connection = host, HTTPS(chost, None, context=context, **(x509 or {}))
             return self._connection[1]
 
 ##
@@ -1536,7 +1540,7 @@
     """
 
     def __init__(self, uri, transport=None, encoding=None, verbose=0,
-                 allow_none=0, use_datetime=0):
+                 allow_none=0, use_datetime=0, context=None):
         # establish a "logical" server connection
 
         if isinstance(uri, unicode):
@@ -1553,7 +1557,7 @@
 
         if transport is None:
             if type == "https":
-                transport = SafeTransport(use_datetime=use_datetime)
+                transport = SafeTransport(use_datetime=use_datetime, context=context)
             else:
                 transport = Transport(use_datetime=use_datetime)
         self.__transport = transport
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -2,6 +2,17 @@
 Python News
 +++++++++++
 
+What's New in Python 2.7.9?
+===========================
+
+*Release date: 2014-12-XX*
+
+Library
+-------
+
+- Issue #22960: Add a context argument to xmlrpclib.ServerProxy.
+
+
 What's New in Python 2.7.9 release candidate 1?
 ===============================================
 

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list