[Checkins] SVN: zc.buildoutsftp/trunk/src/zc/buildoutsftp/ Updated to work with the new setuptools, which *also* has it's way with urllib2

jim cvs-admin at zope.org
Thu Aug 1 20:31:07 CEST 2013


Log message for revision 130285:
  Updated to work with the new setuptools, which *also* has it's way with urllib2

Changed:
  U   zc.buildoutsftp/trunk/src/zc/buildoutsftp/__init__.py
  U   zc.buildoutsftp/trunk/src/zc/buildoutsftp/main.test
  U   zc.buildoutsftp/trunk/src/zc/buildoutsftp/tests.py

-=-
Modified: zc.buildoutsftp/trunk/src/zc/buildoutsftp/__init__.py
===================================================================
--- zc.buildoutsftp/trunk/src/zc/buildoutsftp/__init__.py	2013-08-01 09:50:37 UTC (rev 130284)
+++ zc.buildoutsftp/trunk/src/zc/buildoutsftp/__init__.py	2013-08-01 18:31:06 UTC (rev 130285)
@@ -23,16 +23,25 @@
 import stat
 import sys
 import urllib
-import urllib2
 
+try:
+    from setuptools.compat import urllib2
+except ImportError:
+    # Older setuptools/distribute
+    import urllib2
+
+original_build_opener = urllib2.build_opener
+
 logger = logging.getLogger(__name__)
 
 def install(buildout=None):
-    urllib2.install_opener(urllib2.build_opener(SFTPHandler))
+    urllib2.build_opener = lambda *a: original_build_opener(SFTPHandler, *a)
+    urllib2.install_opener(urllib2.build_opener())
     logging.getLogger('paramiko').setLevel(logger.getEffectiveLevel()+10)
 
 def unload(buildout=None):
-    # no uninstall_opener. Screw it. :)
+    urllib2.build_opener = original_build_opener
+    urllib2.install_opener(urllib2.build_opener())
     cleanup()
 
 parse_url_host = re.compile(

Modified: zc.buildoutsftp/trunk/src/zc/buildoutsftp/main.test
===================================================================
--- zc.buildoutsftp/trunk/src/zc/buildoutsftp/main.test	2013-08-01 09:50:37 UTC (rev 130284)
+++ zc.buildoutsftp/trunk/src/zc/buildoutsftp/main.test	2013-08-01 18:31:06 UTC (rev 130285)
@@ -7,11 +7,10 @@
 
 The buildoutsftp extension installs an sftp handler in urllib2.
 
-    >>> import zc.buildoutsftp, urllib2
+    >>> import zc.buildoutsftp
+    >>> from zc.buildoutsftp import urllib2
     >>> zc.buildoutsftp.install(None)
-    >>> urllib2.build_opener.assert_called_with(zc.buildoutsftp.SFTPHandler)
-    >>> urllib2.install_opener.assert_called_with(
-    ...     urllib2.build_opener.return_value)
+    >>> build_opener.assert_called_with(zc.buildoutsftp.SFTPHandler)
 
 A buildout object is passed to install, but install ignores it.
 

Modified: zc.buildoutsftp/trunk/src/zc/buildoutsftp/tests.py
===================================================================
--- zc.buildoutsftp/trunk/src/zc/buildoutsftp/tests.py	2013-08-01 09:50:37 UTC (rev 130284)
+++ zc.buildoutsftp/trunk/src/zc/buildoutsftp/tests.py	2013-08-01 18:31:06 UTC (rev 130285)
@@ -35,9 +35,11 @@
     mimetypes.init()
 
     setupstack.setUpDirectory(test)
-    setupstack.context_manager(test, mock.patch('urllib2.install_opener'))
-    setupstack.context_manager(test, mock.patch('urllib2.build_opener'))
     setupstack.context_manager(
+        test, mock.patch('zc.buildoutsftp.urllib2.install_opener'))
+    test.globs['build_opener'] = setupstack.context_manager(
+        test, mock.patch('zc.buildoutsftp.original_build_opener'))
+    setupstack.context_manager(
         test, mock.patch.dict(os.environ, values=dict(HOME=os.getcwd())))
 
     original_exists = os.path.exists



More information about the checkins mailing list