[Datetime-SIG] Another round on error-checking
Carl Meyer
carl at oddbird.net
Thu Sep 3 05:36:21 CEST 2015
[Tim]
>>> There are still questions, like, e.g., what
>>>
>>> fold_aware_datetime + timedelta
>>>
>>> should do when fold=1, but only in my variation of what you proposed.
>>> You proposed mixing "pay attention to fold" with "timeline
>>> arithmetic", which leaves no choice. Alex and I seem to disagree
>>> about what to do when "only pay attention to fold" is meant instead.
[Alex]
>> This is one of those cases where I don't have a strong opinion.
[Tim]
> I do: it should ignore fold=1. Precisely the opposite of what you
> _thought_ I've been saying ;-)
[Alex]
>> Unlike the datetime - datetime case where we have a strong argument
>> to do timeline arithmetic in the presence of fold=1 (namely to preserve
>> the hash invariant),
>
> And total ordering, and equivalence between comparison outcomes and
> subtraction results. There are any number of "common sense"
> invariants that rely on this.
IIUC, choosing this combination of behavior means that it is possible to
have a datetime `dt1` (with fold=1) such that:
dt1 - dt2 => delta
where `fold` is respected in this case, but
dt2 + delta != dt1
because fold is ignored for timedelta arithmetic (but is respected for
equality-checking, because that's necessary to maintain the hashing
invariant).
Are we really so wedded to maintaining an unpredictable hybrid
naive/aware model for timezone-annotated datetimes that we're willing to
break basic invariants of arithmetic and equality to preserve it?
>> any choice here will lead to surprises.
>
> Indeed so. So screw it ;-)
An alternative to "so screw it" in the face of this puzzle would be to
choose the option that preserves all the invariants and behaves
predictably in all cases. But I suppose that would make things too easy...
Carl
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: OpenPGP digital signature
URL: <http://mail.python.org/pipermail/datetime-sig/attachments/20150902/2c290dc9/attachment.sig>
More information about the Datetime-SIG
mailing list