Revision: 4755
          http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4755&view=rev
Author:   jdh2358
Date:     2007-12-16 20:37:38 -0800 (Sun, 16 Dec 2007)

Log Message:
-----------
mods to support dates in csv2rec and friends

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-17 02:57:17 UTC (rev 
4754)
+++ trunk/matplotlib/lib/matplotlib/mlab.py     2007-12-17 04:37:38 UTC (rev 
4755)
@@ -2129,6 +2129,7 @@
 
     process_skiprows(reader)
 
+    dateparser = dateutil.parser.parse
 
     def myfloat(x):
         if x==missing:
@@ -2136,9 +2137,18 @@
         else:
             return float(x)
 
+    def mydate(x):
+        # try and return a date object
+        d = dateparser(x)
+
+        if d.hour>0 or d.minute>0 or d.second>0:
+            raise ValueError('not a date')
+        return d.date()
+
+
     def get_func(item, func):
         # promote functions in this order
-        funcmap = {int:myfloat, myfloat:dateutil.parser.parse, 
dateutil.parser.parse:str}
+        funcmap = {int:myfloat, myfloat:mydate, mydate:dateparser, 
dateparser:str}
         try: func(item)
         except:
             if func==str:
@@ -2233,17 +2243,17 @@
         return self.toval(x)
 
     def toval(self, x):
-        return repr(x)
+        return str(x)
 
 
-class FormatString2(FormatObj):
+class FormatString(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 FormatString(FormatObj):
+#    def tostr(self, x):
+#        return '"%r"'%self.toval(x)
 
 class FormatFormatStr(FormatObj):
     def __init__(self, fmt):
@@ -2301,7 +2311,7 @@
     npy.float32 : FormatFloat(),
     npy.float64 : FormatFloat(),
     npy.object_ : FormatObj(),
-    npy.string_ : FormatString2(),
+    npy.string_ : FormatString(),
     }
 
 def get_formatd(r, formatd=None):

Modified: trunk/matplotlib/unit/mlab_unit.py
===================================================================
--- trunk/matplotlib/unit/mlab_unit.py  2007-12-17 02:57:17 UTC (rev 4754)
+++ trunk/matplotlib/unit/mlab_unit.py  2007-12-17 04:37:38 UTC (rev 4755)
@@ -1,7 +1,6 @@
-import unittest
+import datetime, StringIO, unittest
 import matplotlib.mlab as mlab
 import numpy
-import StringIO
 
 class TestMlab(unittest.TestCase):
     def test_csv2rec_closefile(self):
@@ -21,11 +20,22 @@
         # 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, 'a,bc'),
-                            (456, 123.456, 'd\'ef'),
-                            (789, 0.000000001, 'ghi'),
+        delta = datetime.timedelta(days=1)
+        date0 = datetime.date(2007,12,16)
+        date1 = date0 + delta
+        date2 = date1 + delta
+
+        delta = datetime.timedelta(days=1)
+        datetime0 = datetime.datetime(2007,12,16,22,29,34,924122)
+        datetime1 = datetime0 + delta
+        datetime2 = datetime1 + delta
+        ra=numpy.rec.fromrecords([
+                (123, date0, datetime0, 1197346475.0137341, 'a,bc'),
+                (456, date1, datetime1, 123.456, 'd\'ef'),
+                (789, date2, datetime2, 0.000000001, 'ghi'),
                             ],
-                           dtype=[('a', '<i8'), ('b', '<f8'), ('c', '|S3')])
+            names='intdata,datedata,datetimedata,floatdata,stringdata')
+
         fh = StringIO.StringIO()
         mlab.rec2csv( ra, fh )
         fh.seek(0)
@@ -36,6 +46,8 @@
             fh.seek(0)
         ra2 = mlab.csv2rec(fh)
         fh.close()
+        #print 'ra', ra
+        #print 'ra2', ra2
         for name in ra.dtype.names:
             if 0:
                 print name, repr(ra[name]), repr(ra2[name])


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