You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2014/07/08 20:43:49 UTC

svn commit: r1608888 - /qpid/dispatch/trunk/python/qpid_dispatch_internal/management/node.py

Author: aconway
Date: Tue Jul  8 18:43:48 2014
New Revision: 1608888

URL: http://svn.apache.org/r1608888
Log:
NO-JIRA: Python Url constructor, allow kwargs to replace values in Url

Modified:
    qpid/dispatch/trunk/python/qpid_dispatch_internal/management/node.py

Modified: qpid/dispatch/trunk/python/qpid_dispatch_internal/management/node.py
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/python/qpid_dispatch_internal/management/node.py?rev=1608888&r1=1608887&r2=1608888&view=diff
==============================================================================
--- qpid/dispatch/trunk/python/qpid_dispatch_internal/management/node.py (original)
+++ qpid/dispatch/trunk/python/qpid_dispatch_internal/management/node.py Tue Jul  8 18:43:48 2014
@@ -55,33 +55,29 @@ class Url:
     AMQPS = "amqps"
     AMQP = "amqp"
 
-    def __init__(self, s=None, **kwargs):
+    def __init__(self, url=None, **kwargs):
         """
-        @param s: String value to convert to URL
-        @param kwargs: URL components: scheme, user, password, host, port, path.
+        @param url: String or Url instance to parse or copy.
+        @param kwargs: URL fields: scheme, user, password, host, port, path.
+            If specified, replaces corresponding component in url.
         """
-        if s is None:
-            self.scheme = kwargs.get('scheme')
-            self.user = kwargs.get('user')
-            self.password = kwargs.get('password')
-            self.host = kwargs.get('host')
-            self.port = kwargs.get('port')
-            self.path = kwargs.get('path')
-        elif isinstance(s, Url):
-            self.scheme = s.scheme
-            self.user = s.user
-            self.password = s.password
-            self.host = s.host
-            self.port = s.port
-            self.path = s.path
-        else:
-            match = Url.RE.match(s)
+
+        fields = ['scheme', 'user', 'password', 'host', 'port', 'path']
+        for field in fields: setattr(self, field, None)
+
+        if isinstance(url, Url): # Copy from url
+            for field in fields:
+                setattr(self, field, getattr(url, field))
+        elif url is not None: # Parse from url
+            match = Url.RE.match(url)
             if match is None:
                 raise ValueError("Invalid AMQP URL: %s"%s)
-            scheme, self.user, self.password, host4, host6, port, self.path = match.groups()
+            self.scheme, self.user, self.password, host4, host6, port, self.path = match.groups()
             self.host = host4 or host6
             self.port = port and int(port)
-            self.scheme = scheme
+        # Let kwargs override values previously set from url
+        for field in fields:
+            setattr(self, field, kwargs.get(field, getattr(self, field)))
 
     def __repr__(self):
         return "Url(%r)" % str(self)



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org