mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
date and datetime comparison: when we don't know how to
compare against "the other" argument, we raise TypeError, in order to prevent comparison from falling back to the default (and worse than useless, in this case) comparison by object address. That's fine so far as it goes, but leaves no way for another date/datetime object to make itself comparable to our objects. For example, it leaves Marc-Andre no way to teach mxDateTime dates how to compare against Python dates. Discussion on Python-Dev raised a number of impractical ideas, and the simple one implemented here: when we don't know how to compare against "the other" argument, we raise TypeError *unless* the other object has a timetuple attr. In that case, we return NotImplemented instead, and Python will give the other object a shot at handling the comparison then. Note that comparisons of time and timedelta objects still suffer the original problem, though.
This commit is contained in:
parent
cd63e619b4
commit
8d81a012ef
4 changed files with 75 additions and 1 deletions
|
@ -100,6 +100,14 @@ Extension modules
|
|||
useful behavior when the optional tinzo argument was specified. See
|
||||
also SF bug report <http://www.python.org/sf/660872>.
|
||||
|
||||
date and datetime comparison: In order to prevent comparison from
|
||||
falling back to the default compare-object-addresses strategy, these
|
||||
raised TypeError whenever they didn't understand the other object type.
|
||||
They still do, except when the other object has a "timetuple" attribute,
|
||||
in which case they return NotImplemented now. This gives other
|
||||
datetime objects (e.g., mxDateTime) a chance to intercept the
|
||||
comparison.
|
||||
|
||||
The constructors building a datetime from a timestamp could raise
|
||||
ValueError if the platform C localtime()/gmtime() inserted "leap
|
||||
seconds". Leap seconds are ignored now. On such platforms, it's
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue