Is this an error in python-babel or am I missing something?

cl at isbd.net cl at isbd.net
Thu Mar 17 18:40:47 EDT 2016


cl at isbd.net wrote:
> I am getting the following error when running some code that uses
> python-sqlkit.  This uses python-babel to handle dates for different
> locales.
> 
>     Traceback (most recent call last):
> File "/usr/local/lib/python2.7/dist-packages/sqlkit-0.9.6.1-py2.7.egg/sqlkit/widgets/table/columns.py", 
> 
 
> line 169, in cell_data_func_cb formatted_value = self.field.format_value(value) 
> 
> File "/usr/local/lib/python2.7/dist-packages/sqlkit-0.9.6.1-py2.7.egg/sqlkit/fields.py", 
> line 1114, in format_value return dates.format_date(value, format=format 
> or self.format, locale=self.locale) 
> File "/usr/lib/python2.7/dist-packages/babel/dates.py", line 569, in format_date 
> return pattern.apply(date, locale) 
> File "/usr/lib/python2.7/dist-packages/babel/dates.py", line 892, in apply 
> return self % DateTimeFormat(datetime, locale) 
> File "/usr/lib/python2.7/dist-packages/babel/dates.py", line 889, in __mod__ 
> return self.format % other 
> File "/usr/lib/python2.7/dist-packages/babel/dates.py", line 948, in __getitem__ 
> return self.format_milliseconds_in_day(num) 
> File "/usr/lib/python2.7/dist-packages/babel/dates.py", line 1029, in format_milliseconds_in_day 
> self.value.minute * 60000 + self.value.hour * 3600000 
>     AttributeError: 'datetime.date' object has no attribute 'microsecond'
> 
> I'm handling a date in my sqlite database, *not* a datetime.  The
> sqlkit code seems to be calling the correct method - format_date() -
> in the python-babel dates.py file.
> 
> However it seems that python-babel ends up trying to hand the date
> down to a method that's expecting a datetime.
> 
> I've tried searching for reports of this error but I can't see any
> which makes me wonder if it's not a bug in python-babel, however if
> it's not a bug then I'm confused about what has gone wrong.
> 
> Is it a bug or is sqlkit doing something wrong?
> 
Well, it's a sort of bug.  I had made the sqlkit code set the 'format'
field to something that it shouldn't be.  It should be "full", "long",
"medium", or "short".  Due to my misunderstanding I had set it to a
completely wrong value.  This makes python-babel fall over as above.

So, my mistake, but python-babel should have caught it.

-- 
Chris Green
·



More information about the Python-list mailing list