Greg Weller <gwelle...@gmail.com> added the comment:

I think this is a documentation bug.  The criteria for datetime and time 
objects being aware are slightly different.  A datetime object d is aware if 
d.tzinfo.utcoffset(d) does not return None, while a time object t is aware if 
t.tzinfo.utcoffset(None) does not return None (time objects call utcoffset with 
None while datetime objects call utcoffset with self).

This accounts for the TypeError in the original example:
>>> import pytz, datetime
>>> UTC_TZ = pytz.utc
>>> EASTERN_TZ = pytz.timezone('America/New_York')
>>> d1 = datetime.time(10, tzinfo=UTC_TZ)
>>> d2 = datetime.time(10, tzinfo=EASTERN_TZ)
>>> repr(d1.tzinfo.utcoffset(None))
'datetime.timedelta(0)'
>>> repr(d2.tzinfo.utcoffset(None))
'None'
>>> d1 < d2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't compare offset-naive and offset-aware times

It looks like this example is flawed according to http://pytz.sourceforge.net/ 
: "Unfortunately using the tzinfo argument of the standard datetime 
constructors ‘’does not work’’ with pytz for many timezones. It is safe for 
timezones without daylight savings trasitions though, such as UTC."  (If you 
think about it, the error still makes sense: the UTC time is aware and the 
eastern time is naive -- any DST time object has to be naive -- but this has 
more to do with pytz).

It doesn't make sense to have time objects pass self to utcoffset because 
utcoffset expects a datetime object.  You shouldn't be able to infer what the 
UTC offset is from a time object unless the offset is constant, in which case 
you don't even need the time object.  If the UTC offset isn't constant, you 
need the date, which a time object doesn't have.  I think this is the logic 
behind having datetime objects call utcoffset(self) and time objects call 
utcoffset(None).

I've attached a small patch for the documentation.

----------
keywords: +patch
nosy: +greg.weller
Added file: http://bugs.python.org/file25517/14766.patch

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue14766>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to