OK, I found one problem with repr. When adding support for date vs
datetime to the csv2rec roundtrip, and adding this to the unit test, I
notice that repr is probably not what we want for datetime; str makes
more sense here:
In [1]: import datetime
In [2]: d = datetime.date.today()
In [3]: repr(d)
Out[3]: 'datetime.date(2007, 12, 16)'
In [4]: str(d)
Out[4]: '2007-12-16'
The latter is more natural in the CSV file, and the repr version is
not supported by dateutil, at least not the one we are shipping:
In [5]: import dateutil.parser
In [6]: dateutil.parser.parse(repr(d))
···
On Dec 16, 2007 5:26 PM, Andrew Straw <strawman@...36...> wrote:
As a followup to the work on floats, I fixed rec2csv to deal with funky
strings (strings with commas and quotes). I've checked this is as r4749,
but I thought I'd announce here in case someone (John, in particular)
was depending on some peculiar aspect of the old implementation. If
there is something you depend on, can you update the unittests in
unit/mlab_unit.py to check for the behavior you need?
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
/Users/jdhunter/python/svn/matplotlib/examples/<ipython console> in <module>()
...snip the rest of the traceback...
In [7]: dateutil.parser.parse(str(d))
Out[7]: datetime.datetime(2007, 12, 16, 0, 0)
So I changed FormatObject to use str, pending further discussion. At
least for my common use cases, the only obj types I have in my record
arrays are dates and datetimes, and I find this to be a pretty
compelling use case since it is the type least likely to be supported
by other persistence methods (tostring and pickle both fail or do not
behave as expected with datetimes in the recarray).
But there is an oddity in the parsing of milliseconds which is causing
the updated unit test to fail; the code below illustrates the problem:
In [3]: import dateutil.parser
In [4]: import datetime
In [5]: s = '2007-12-18 22:29:34.924122'
In [6]: dateutil.parser.parse(s)
Out[6]: datetime.datetime(2007, 12, 18, 22, 29, 34, 924121)
Thoughts?
JDH