Rev 46: Lazily load external modules in bzr-cia. in file:///home/jelmer/bzr-cia/trunk/

Jelmer Vernooij jelmer at samba.org
Thu Feb 12 13:40:19 GMT 2009


At file:///home/jelmer/bzr-cia/trunk/

------------------------------------------------------------
revno: 46
revision-id: jelmer at samba.org-20090212134018-f8k8uhxmip0ob0ss
parent: jelmer at samba.org-20090212133543-9jw8xrzc7vwj74k8
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: trunk
timestamp: Thu 2009-02-12 14:40:18 +0100
message:
  Lazily load external modules in bzr-cia.
=== modified file '__init__.py'
--- a/__init__.py	2009-02-12 13:35:43 +0000
+++ b/__init__.py	2009-02-12 13:40:18 +0000
@@ -37,8 +37,6 @@
 
 version_info = (1, 0, 0, 'dev', 0)
 
-import socket
-import xmlrpclib
 
 import bzrlib
 from bzrlib.branch import Branch
@@ -129,6 +127,7 @@
 
 
 def cia_connect(config):
+    import xmlrpclib
     server = config.get_user_option('cia_server')
     if server is None:
         server = "http://cia.navi.cx"
@@ -136,6 +135,24 @@
     return xmlrpclib.ServerProxy(server)
 
 
+class CIADeliverError(Exception):
+
+    def __init__(self, message):
+        self.message = message
+
+
+def cia_deliver(server, msg):
+    import socket, xmlrpclib
+    try:
+        server.hub.deliver(msg)
+    except xmlrpclib.ProtocolError, e:
+        raise CIADeliverError(e.errmsg)
+    except socket.gaierror, (_, errmsg):
+        raise CIADeliverError(errmsg)
+    except socket.error, (_, errmsg):
+        raise CIADeliverError(errmsg)
+
+
 def cia_submit(branch, revid, revno, dry_run=False):
     config = branch.get_config()
 
@@ -157,16 +174,9 @@
     if not quiet:
         info("Submitting revision to CIA.")
     if not dry_run:
-        error = None
         try:
-            cia_connect(config).hub.deliver(msg)
-        except xmlrpclib.ProtocolError, e:
-            error = e.errmsg
-        except socket.gaierror, (_, errmsg):
-            error = errmsg
-        except socket.error, (_, errmsg):
-            error = errmsg
-        if error is not None:
+            cia_deliver(cia_connect(config), msg)
+        except CIADeliverError, (error, ):
             warning("Unable to submit revision to CIA: %s" % error)
             store_failed_message(revid, msg)
             info("To retry submit later, run 'bzr cia-submit --pending'.")
@@ -198,16 +208,9 @@
     for revid in os.listdir(cache_dir):
         path = os.path.join(cache_dir, revid)
         msg = open(path, 'r').read()
-        error = None
         try:
-            server.hub.deliver(msg)
-        except xmlrpclib.ProtocolError, e:
-            error = e.errmsg
-        except socket.gaierror, (_, errmsg):
-            error = errmsg
-        except socket.error, (_, errmsg):
-            error = errmsg
-        if error is not None:
+            cia_deliver(server, msg)
+        except CIADeliverError, (error, ):
             warning("Submitting %s failed: %s" % (revid, error))
         else:
             os.remove(path)




More information about the bazaar-commits mailing list