[Tim]
>>> ...
>>> The
>>> top-level operation on the RHS is datetime.fromtimestamp().  However,
>>> it didn't pass a tzinfo, so it creates a naive datetime.  Assuming dt
>>> was aware to begin with, the attempt to compare will always (gap or
>>> not) raise an exception.

[Tim]
>> Oops!  In current Python, comparing naive and aware via `==` just
>> returns False.  That's even more confusing ;-)

[Guido]
> Hm, but that's in general how == is *supposed* to work between objects of
> incompatible types. < and > are supposed to fail but == is supposed to
> return False (the __eq__ should return NotImplemented). If == ever raises an
> exception, having two different objects as dict keys can cause random,
> hard-to-debug failures.

Sure - no complaint.  I was just saying that in the specific,
complicated, contrived expression Nick presented, that it always
returns False (no matter which aware datetime he starts with) would be
more of a head-scratcher than if it raised a "can't compare naive and
aware datetimes" exception instead.

That's why, whenever anyone is confused by anything they see in a
Python program, they should post all their code verbatim to
Python-Dev, prefaced with a "Doesn't work!  Fix it." comment ;-)
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to