On Wed, Sep 2, 2015 at 1:20 PM, Tim Peters <[email protected]> wrote:

> [Alex]
> > There are two more cases:
> >
> > (1) datetime.now() will return fold=1 instances during one hour each
> year;
> > (2) datetime.fromtimestamp(s) will return fold=1 instances for some
> values
> > of s.
>
> Sure - but anything reflecting how a local clock actually behaves is
> outside of "naive time".  Clocks in naive time never jump forward or
> backward.  Specifically, .now() and .fromtimestamp() are also
> operations outside of naive time.
>

I agree, but the worst thing we can do to our users is to plant a time bomb
that will go off once a year.  Suppose someone has a program that uses
naive local times and relies on t < prev_t test to detect the fall-back
fold and do something about it.  If we don't ignore fold in naive datetime
comparisons - this program will start producing incorrect results.

Fortunately, we don't need to do anything about naive times.  The hash
invariant is only violated by aware instances.

I think what you are really fighting against is the notion that for regular
times, fold=1 is just an alternative spelling for fold=0 times.  It looks
like you would rather see fold=1 as some different (and invalid) time.

Think of the German A and B hours: are regular hours A or B?  The German
standard say that they are neither, but PEP 495 say that they are both: 2A
is the same as 2B  unless "2" in the fold and that allows you not to
display A/B in those cases.

Folds do not exist in naive time, so all times are regular and therefore
time(h, m, s, us,  fold=0) == time(h, m, s, us,  fold=1) always.
_______________________________________________
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