[Datetime-SIG] Another round on error-checking

Tim Peters tim.peters at gmail.com
Thu Sep 3 17:05:40 CEST 2015


[Alex]
>> The only "basic arithmetic identities" that are being violated here are
>> the ones that are already violated by aware datetimes.  For example
>> (t1 - u) - (t2 - u) is not equal to t1 - t2
>> if u is a tzinfo=UTC instance and t1 and t2 are two tzinfo=Eastern
>> instances on the different sides of the gap.

[Alex]
> s/gap/fold/

What you said is true either way (fold or gap); the sign of the hour
difference (between the two expressions) just differs.  Although
_sometimes_ the expressions can be equal, if you move t1 and/or t2 far
enough away from the gap/fold to encompass some number of _additional_
gaps/folds, so as to just cancel out overall. As an obvious example,
pick d1 = 2000-01-01 and d2 = 2001-01-01.  They're on different sides
of one gap, but also on different sides of one fold.  Then you get 366
days (2000 is a leap year) via either way of computing the difference.

The conceptual muddying here is that this kind of stuff wasn't
possible before when sticking within a _single_ zone.  We are
introducing oddball cases of timeline arithmetic into what used to be
"surprise-free" classic arithmetic.  I don't like that, but I'm not
scared to death of it either.  Yet ;-)


More information about the Datetime-SIG mailing list