Я вважаю, що те, що ви описуєте, було б заміною datetimeмодуля, який реалізує datetime.datetimeатрибути (рік, місяць тощо) як значення з вимірюванням невизначеності (а не просто значення).
Пакети Python існують, щоб допомогти з невизначеними числами (наприклад, пакунок невизначеності ), і, можливо, було б не надто важко зробити вилку, datetimeяка використовує невизначеність для кожного атрибута. Я теж хотів би побачити його і, можливо, навіть використати його. Безумовно, можна навести аргумент щодо включення програми udatetimeдо вищезазначеного пакету невизначеностей.
Ваші приклади були б на кшталт:
bob_bday = udatetime(2000, (6,6)) # 2000-06 +/- 6mo
>>> 2000-??-?? T??:??:??
bil_bday = udatetime((1970, 50), 3, 7) # assume bill is ~40 +/- 40
>>> [1970+/-40]-03-07 T??:??:??
"Значення сигналу" мають багато питань, але крім того, ви можете представляти речі з невизначеністю, що значення сигналу не можуть:
# ali was born in spring
ali_bday = udatetime((), (4.5, 1.5))
>>> [1970+/-40]-[4.5+/-1.5]-?? T??:??:??
Ще одне врахування полягає в тому, що якщо бути точнішим, то тут невизначеності повинні насправді носити тип timedelta. Я залишаю це як вправу для читача розібратися у стислій та завершеній конструкції udatetimeвикористання timedeltaневизначеностей.
Тому в кінцевому підсумку я б сказав, що те, що ви описуєте, "легко" моделюється з невизначеностями, але реалізація програми udatetimeпрактично досить складна. Більшість вирушить по "простому" маршруту і розбить дату на компоненти та відстежують невизначеність щодо них самостійно, але якщо ви відчуваєте себе амбітним, uncertaintiesпакет (чи інший) може зацікавити запит на тягу udatetime.