Revision: 4749
          http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4749&view=rev
Author:   astraw
Date:     2007-12-16 15:19:59 -0800 (Sun, 16 Dec 2007)

Log Message:
-----------
fix csv2rec roundtrip for funky strings, too

Modified Paths:
--------------
    trunk/matplotlib/lib/matplotlib/mlab.py
    trunk/matplotlib/unit/mlab_unit.py

Modified: trunk/matplotlib/lib/matplotlib/mlab.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/mlab.py     2007-12-16 20:53:35 UTC (rev 
4748)
+++ trunk/matplotlib/lib/matplotlib/mlab.py     2007-12-16 23:19:59 UTC (rev 
4749)
@@ -2236,11 +2236,15 @@
         return repr(x)
 
 
+class FormatString2(FormatObj):
+    def tostr(self, x):
+        val = repr(x)
+        return val[1:-1]
+
 class FormatString(FormatObj):
     def tostr(self, x):
         return '"%r"'%self.toval(x)
 
-
 class FormatFormatStr(FormatObj):
     def __init__(self, fmt):
         self.fmt = fmt
@@ -2297,7 +2301,7 @@
     npy.float32 : FormatFloat(),
     npy.float64 : FormatFloat(),
     npy.object_ : FormatObj(),
-    npy.string_ : FormatObj(),
+    npy.string_ : FormatString2(),
     }
 
 def get_formatd(r, formatd=None):

Modified: trunk/matplotlib/unit/mlab_unit.py
===================================================================
--- trunk/matplotlib/unit/mlab_unit.py  2007-12-16 20:53:35 UTC (rev 4748)
+++ trunk/matplotlib/unit/mlab_unit.py  2007-12-16 23:19:59 UTC (rev 4749)
@@ -13,25 +13,34 @@
         self.failIf( fh.closed )
 
     def test_csv2rec_roundtrip(self):
-        # Make sure double-precision floats pass through.
 
+        # Make sure double-precision floats and strings pass through a
+        # roundtrip unaltered.
+
         # A bug in numpy (fixed in r4602) meant that numpy scalars
         # lost precision when passing through repr(). csv2rec was
         # affected by this. This test will only pass on numpy >=
         # 1.0.5.
-        ra=numpy.rec.array([(123, 1197346475.0137341), (456, 123.456)],
-                           dtype=[('a', '<i8'), ('b', '<f8')])
-        rec2csv_closes_files = True
-        if rec2csv_closes_files:
-            fh = 'mlab_unit_tmp.csv'
-        else:
-            fh = StringIO.StringIO()
+        ra=numpy.rec.array([(123, 1197346475.0137341, 'a,bc'),
+                            (456, 123.456, 'd\'ef'),
+                            (789, 0.000000001, 'ghi'),
+                            ],
+                           dtype=[('a', '<i8'), ('b', '<f8'), ('c', '|S3')])
+        fh = StringIO.StringIO()
         mlab.rec2csv( ra, fh )
-        if not rec2csv_closes_files:
+        fh.seek(0)
+        if 0:
+            print 'CSV contents:','-'*40
+            print fh.read()
+            print '-'*40
             fh.seek(0)
         ra2 = mlab.csv2rec(fh)
+        fh.close()
         for name in ra.dtype.names:
-            #print name, repr(ra[name]), repr(ra2[name])
+            if 0:
+                print name, repr(ra[name]), repr(ra2[name])
+                dt = ra.dtype[name]
+                print 'repr(dt.type)',repr(dt.type)
             self.failUnless( numpy.all(ra[name] == ra2[name]) ) # should not 
fail with numpy 1.0.5
 
 if __name__=='__main__':


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

-------------------------------------------------------------------------
SF.Net email is sponsored by:
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services
for just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
Matplotlib-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins

Reply via email to