I've just updated my implementation to support multiplication and division
of TIMEDELTA_INF, mimicking the behaviour of timedelta and float("inf").

Cheers,
Alex

On Wed, Jun 17, 2020 at 8:26 PM Alexander Hill <a...@hill.net.au> wrote:

> 1. Dates beyond year 9999 aren't a prerequisite for infinite types - I see
> that as a separate issue. The fact that we can't represent dates between
> 9999 and infinity doesn't make infinity less useful :)
>
> 2 & 3. Yeah, string representation is something that needs to be decided
> on - that's a big potential bikeshed. My preference at this stage would be
> for these to be called e.g. date.inf_future and date.inf_past, and the
> string representation to be the same. timedelta could simply
> have timedelta.infinity, and since it supports __neg__, -timedelta.infinity
> would work just fine. I'd like to hear other views though.
>
> 4. In my implementation, `datetime.now() - DATETIME_NEG_INF ==
> TIMEDELTA_POS_INF`. I haven't implemented the division dunder methods yet,
> but by analogy to float, I would say that `TIMEDELTA_POS_INF /
> timedelta(days=1) == float("inf")` and `TIMEDELTA_POS_INF //
> timedelta(days=1)` raises TypeError (the latter returns nan in the case of
> float).
>
> Thanks,
> Alex
>
> On Wed, Jun 17, 2020 at 2:57 PM Serhiy Storchaka <storch...@gmail.com>
> wrote:
>
>> 16.06.20 13:54, Alexander Hill пише:
>> > I’d like to propose support for infinite dates, datetimes and
>> > timedeltas. They're very useful when you need to model ranges with one
>> > or both ends unbounded (e.g. “forever starting from June 15th 2020”).
>> >
>> > Without first-class infinite values, you can use None, or you can use
>> > the `min` and `max` attributes of Python’s datetime types, or some
>> other
>> > arbitrary large values. Using None means you need to implement a path
>> > for None, and a path for everything else, and your various infinite
>> > values are indistinguishable. Using max/min means comparisons just
>> work,
>> > but calculations need special treatment and you’re fundamentally
>> > misrepresenting your meaning.
>> >
>> > Temporal infinities give the best of both worlds: infinite values that
>> > interoperate seamlessly with the built-in types and behave sensibly and
>> > predictably. They’re also supported by Postgres!
>>
>> First we need to solve some problems.
>>
>> 1. Parsing dates with more than 4-digit year. Note that many external
>> implementations do not support such data, so we need a way to restrict
>> the data range when convert them to string representation.
>>
>> 2. String representations and parsing for negative data.
>>
>> 3. String representations and parsing for infinity data (positive and
>> negative).
>>
>> 4. If datetime.min will be the negative infinity, then what will be the
>> result of `datetime.now() - datetime.min`? Or `(datetime.now() -
>> datetime.min) // timedelta(days=1)`?
>> _______________________________________________
>> Python-ideas mailing list -- python-ideas@python.org
>> To unsubscribe send an email to python-ideas-le...@python.org
>> https://mail.python.org/mailman3/lists/python-ideas.python.org/
>> Message archived at
>> https://mail.python.org/archives/list/python-ideas@python.org/message/2GZ5BNIGV43224QWTUCYO57MB7E7BDTB/
>> Code of Conduct: http://python.org/psf/codeofconduct/
>>
>
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/GCTWBMJAH6FIRZF2TOQ3VUORFIKR4TPU/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to