[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