Revision: 7370
          http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7370&view=rev
Author:   jdh2358
Date:     2009-08-05 15:07:41 +0000 (Wed, 05 Aug 2009)

Log Message:
-----------
add support for nested dirs in sample_data

Modified Paths:
--------------
    trunk/matplotlib/lib/matplotlib/cbook.py

Modified: trunk/matplotlib/lib/matplotlib/cbook.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/cbook.py    2009-08-05 15:02:12 UTC (rev 
7369)
+++ trunk/matplotlib/lib/matplotlib/cbook.py    2009-08-05 15:07:41 UTC (rev 
7370)
@@ -356,8 +356,14 @@
         self.remove_stale_files()
 
     def in_cache_dir(self, fn):
-        return os.path.join(self.cache_dir, fn)
+        # make sure the datadir exists
+        reldir, filename = os.path.split(fn)
+        datadir = os.path.join(self.cache_dir, reldir)
+        if not os.path.exists(datadir):
+            os.makedirs(datadir)
 
+        return os.path.join(datadir, filename)
+
     def read_cache(self):
         """
         Read the cache file from the cache directory.
@@ -386,7 +392,11 @@
         listed = set([fn for (_, (fn, _, _)) in self.cache.items()])
         for path in os.listdir(self.cache_dir):
             if path not in listed and path != 'cache.pck':
-                os.remove(os.path.join(self.cache_dir, path))
+                thisfile = os.path.join(self.cache_dir, path)
+                if not os.path.isdir(thisfile):
+                    
matplotlib.verbose.report('_CacheProcessor:remove_stale_files: removing 
%s'%thisfile,
+                                              level='debug')
+                    os.remove(thisfile)
 
     def write_cache(self):
         """
@@ -402,12 +412,14 @@
         Store a received file in the cache directory.
         """
         # Pick a filename
-        rightmost = url.rstrip('/').split('/')[-1]
-        fn = rightmost
-        while os.path.exists(self.in_cache_dir(fn)):
-            fn = rightmost + '.' + str(random.randint(0,9999999))
+        fn = url[len(self.baseurl):]
+        fullpath = self.in_cache_dir(fn)
 
-        # Write out the data
+        #while os.path.exists(self.in_cache_dir(fn)):
+        #    fn = rightmost + '.' + str(random.randint(0,9999999))
+
+        
+        
         f = open(self.in_cache_dir(fn), 'wb')
         f.write(data)
         f.close()
@@ -438,7 +450,9 @@
         """
         url = req.get_full_url()
         fn, _, _ = self.cache[url]
-        file = open(self.in_cache_dir(fn), 'rb')
+        cachefile = self.in_cache_dir(fn)
+        matplotlib.verbose.report('_CacheProcessor: reading data file from 
cache file "%s"'%cachefile)
+        file = open(cachefile, 'rb')
         handle = urllib2.addinfourl(file, hdrs, url)
         handle.code = 304
         return handle
@@ -480,13 +494,14 @@
     intended for use in mpl examples that need custom data
     """
 
+    baseurl 
='http://matplotlib.svn.sourceforge.net/viewvc/matplotlib/trunk/sample_data/'
     if not hasattr(get_sample_data, 'opener'):
         configdir = matplotlib.get_configdir()
         cachedir = os.path.join(configdir, 'sample_data')
         if not os.path.exists(cachedir):
             os.mkdir(cachedir)
         # Store the cache processor and url opener as attributes of this 
function
-        get_sample_data.processor = _CacheProcessor(cachedir)
+        get_sample_data.processor = _CacheProcessor(cachedir, baseurl)
         get_sample_data.opener = 
urllib2.build_opener(get_sample_data.processor)
 
 
@@ -497,8 +512,7 @@
         import urllib
         quote = urllib.quote
 
-    url = 
'http://matplotlib.svn.sourceforge.net/viewvc/matplotlib/trunk/sample_data/' + \
-        quote(fname)
+    url = baseurl + quote(fname)
     response = get_sample_data.opener.open(url)
     if asfileobj:
         return response


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Matplotlib-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins

Reply via email to