[Pkg-exppsy-pynifti] [Nipy-devel] Data packaging, a proposal for feedback

John Hunter jdh2358 at gmail.com
Wed Aug 5 20:13:34 UTC 2009


On Wed, Aug 5, 2009 at 2:37 PM, Fernando Perez<fperez.net at gmail.com> wrote:
> Hi all,
>
> just as an FYI, this came out on the mpl-dev list:
>
> http://sourceforge.net/mailarchive/forum.php?thread_name=88e473830907311110w5b0097aai313d2c4c5dd6b165%40mail.gmail.com&forum_name=matplotlib-devel

This was introduced to solve a problem in that we want our example
code to "run anywhere" even if the data is not installed locally,
mainly so gallery users can run examples that require data.  I hacked
up something to grab from a dedicated svn dir using urllib, and Jouni
made some very nice enhancements, writing a custom urllib2 BaseHandler
that checks the "ETag" HTTP header for the svn revision number
(apparently something viewvc provides) to make a conditional http
request (grab only if the revision number has changed).  The class
dumps the file to a local cachedir, and reloads from there going
forward.  If the revision number changes, the cache is updated with
the new file.  All you need is urllib2 -- no svn dependency.

Anticipating someone might want to use this outside mpl, I refactored
the code this morning so it can be used independently from mpl's svn
repo or cachedir.  demo.py::

    import matplotlib.cbook as cbook
    cachedir = '/tmp/mydata'
    # replace this with your viewvc server
    baseurl = 'http://matplotlib.svn.sourceforge.net/viewvc/matplotlib/trunk/sample_data/'
    myserver = cbook.ViewVCCachedServer(cachedir, baseurl)

    datafile = 'testdir/subdir/testsub.csv'
    localfile = myserver.get_sample_data(datafile, asfileobj=False)
    print localfile

w/ the resulting output::

    johnh at udesktop191:~> python demo.py
    /tmp/mydata/testdir/subdir/testsub.csv

By default file handles are returned.

JDH



More information about the Pkg-exppsy-pynifti mailing list