I think I recall that discussion -- but don't recall how it ended. Did it
just peter out?

Anyway, +1 form me -- I've actually got my own implementation as well. So
it certainly has a use case, and it's really better to have one version in
the stdlib.

I haven't had a chance to review your implementation, but if it looks like
you're getting support, I'll be sure to do so.

-CHB



On Tue, Jun 16, 2020 at 5:45 AM Alexander Hill <a...@hill.net.au> wrote:

> Hi all,
>
> 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!
>
> Usage examples:
>
> >>> from temporal_infinities import *
> >>> from datetime import *
> >>> DATETIME_POS_INF - datetime(2020, 6, 15)
> TIMEDELTA_POS_INF
> >>> DATETIME_NEG_INF < date(2020, 6, 15)
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> TypeError: '<' not supported between instances of 'DatetimeInfinity' and
> 'datetime.date'
> >>> DATE_NEG_INF < date(2020, 6, 15)
> True
> >>> date(2020, 6, 15) + TIMEDELTA_POS_INF
> DATE_POS_INF
> >>> TIMEDELTA_NEG_INF == TIMEDELTA_NEG_INF
> True
>
> My implementation is at
> https://github.com/AlexHillAlexHill/temporal-infinities
> <https://github.com/AlexHill/temporal-infinities> and is designed to be
> as consistent with the behaviour of floating-point infinities as possible.
> The expected behaviour of the various types is captured in test_matrix.csv,
> which is used to produce test cases. Blank cells indicate that a TypeError
> should be raised. It's tested back to Python 3.4.
>
> Previous discussion:
> https://mail.python.org/pipermail/python-ideas/2015-January/031414.html
>
> Thanks for your time!
>
> Alex
> _______________________________________________
> 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/S4H553FNZPX62RJLHVKCF4JFXBWQWXS6/
> Code of Conduct: http://python.org/psf/codeofconduct/
>


-- 
Christopher Barker, PhD

Python Language Consulting
  - Teaching
  - Scientific Software Development
  - Desktop GUI and Web Development
  - wxPython, numpy, scipy, Cython
_______________________________________________
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/QLVIZN7P3ZHM2EMTADCYNEV3TKWYNP4Y/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to