[Numpy-svn] r5040 - in trunk/numpy/lib: . tests

numpy-svn at scipy.org numpy-svn at scipy.org
Thu Apr 17 16:16:11 EDT 2008


Author: rkern
Date: 2008-04-17 15:16:11 -0500 (Thu, 17 Apr 2008)
New Revision: 5040

Modified:
   trunk/numpy/lib/_datasource.py
   trunk/numpy/lib/io.py
   trunk/numpy/lib/tests/test__datasource.py
Log:
Don't require gzip or bz2 until the actual functionality is requested.

Modified: trunk/numpy/lib/_datasource.py
===================================================================
--- trunk/numpy/lib/_datasource.py	2008-04-16 21:03:41 UTC (rev 5039)
+++ trunk/numpy/lib/_datasource.py	2008-04-17 20:16:11 UTC (rev 5040)
@@ -34,17 +34,24 @@
 
 __docformat__ = "restructuredtext en"
 
-import bz2
-import gzip
 import os
 import tempfile
 from shutil import rmtree
 from urllib2 import urlopen, URLError
 from urlparse import urlparse
 
-
 # TODO: .zip support, .tar support?
-_file_openers = {".gz":gzip.open, ".bz2":bz2.BZ2File, None:file}
+_file_openers = {None: open}
+try:
+    import bz2
+    _file_openers[".bz2"] = bz2.BZ2File
+except ImportError:
+    pass
+try:
+    import gzip
+    _file_openers[".gz"] = gzip.open
+except ImportError:
+    pass
 
 
 def open(path, mode='r', destpath=os.curdir):

Modified: trunk/numpy/lib/io.py
===================================================================
--- trunk/numpy/lib/io.py	2008-04-16 21:03:41 UTC (rev 5039)
+++ trunk/numpy/lib/io.py	2008-04-17 20:16:11 UTC (rev 5040)
@@ -8,7 +8,6 @@
 
 import numpy as np
 import format
-import zipfile
 import cStringIO
 import tempfile
 import os
@@ -42,6 +41,9 @@
     with .files and the ZipFile object itself using .zip
     """
     def __init__(self, fid):
+        # Import is postponed to here since zipfile depends on gzip, an optional
+        # component of the so-called standard library.
+        import zipfile
         _zip = zipfile.ZipFile(fid)
         self._files = _zip.namelist()
         self.files = []
@@ -165,6 +167,10 @@
     arr_0, arr_1, etc.
     """
 
+    # Import is postponed to here since zipfile depends on gzip, an optional
+    # component of the so-called standard library.
+    import zipfile
+
     if isinstance(file, str):
         if not file.endswith('.npz'):
             file = file + '.npz'

Modified: trunk/numpy/lib/tests/test__datasource.py
===================================================================
--- trunk/numpy/lib/tests/test__datasource.py	2008-04-16 21:03:41 UTC (rev 5039)
+++ trunk/numpy/lib/tests/test__datasource.py	2008-04-17 20:16:11 UTC (rev 5040)
@@ -1,6 +1,4 @@
 
-import bz2
-import gzip
 import os
 import sys
 import struct
@@ -90,6 +88,13 @@
         self.assertRaises(IOError, self.ds.open, invalid_file)
 
     def test_ValidGzipFile(self):
+        try:
+            import gzip
+        except ImportError:
+            # We don't have the bz2 capabilities to test.
+            # FIXME: when we start using nose, raise a SkipTest rather than
+            # passing the test.
+            return
         # Test datasource's internal file_opener for Gzip files.
         filepath = os.path.join(self.tmpdir, 'foobar.txt.gz')
         fp = gzip.open(filepath, 'w')
@@ -101,6 +106,13 @@
         self.assertEqual(magic_line, result)
 
     def test_ValidBz2File(self):
+        try:
+            import bz2
+        except ImportError:
+            # We don't have the bz2 capabilities to test.
+            # FIXME: when we start using nose, raise a SkipTest rather than
+            # passing the test.
+            return
         # Test datasource's internal file_opener for BZip2 files.
         filepath = os.path.join(self.tmpdir, 'foobar.txt.bz2')
         fp = bz2.BZ2File(filepath, 'w')




More information about the Numpy-svn mailing list