[Alex]
> ...
> The question is what is easier to understand: (a) t1 and t2 are equal if and
> only if t1 - t1.replace(fold=f1).utcoffset() ==  t2 -
> t2.replace(fold=f2).utcoffset() for all four possible pairs (f1, f2);

Infinite recursion again ;-) , but this time because interzone
equality is being defined in terms of 4 more interzone equalities.

> or (b)
> t1 and t2 are equal if and only if they are unambiguous and valid in their
> respective zones and convert to the same UTC instant.

The docs generally do both, when feasible:  an English description,
followed by a Python expression to resolve the inherent imprecision of
English.  The intent is for the English to give the high-order bits,
and for the Python expression to leave no possible misunderstanding.

For this case, the clearest Python I can think of is:

    def toutc(t, fold):
        return (t - t.replace(fold=fold).utcoffset()).replace(tzinfo=None)

Then t1 == t2, when t1 and t2 are aware datetimes in different zones,
if and only if:

    toutc(t1, 0) == toutc(t1, 1) == toutc(t2, 0) == toutc(t2, 1)

Then there's no English remaining to be misread.  As a side benefit,
the correctness of short-circuiting if t1 is a problem case becomes
dead obvious on the face of it ;-)
_______________________________________________
Datetime-SIG mailing list
[email protected]
https://mail.python.org/mailman/listinfo/datetime-sig
The PSF Code of Conduct applies to this mailing list: 
https://www.python.org/psf/codeofconduct/

Reply via email to