From 3e3eff9ee639a60052a3fb4ae2e6955d2f85ae92 Mon Sep 17 00:00:00 2001 From: Elena ``of Valhalla'' Grandi Date: Sat, 13 Jul 2019 18:23:51 +0200 Subject: Dates in the remote future could belong to a different release --- debdate | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/debdate b/debdate index bd728b3..ed9542f 100755 --- a/debdate +++ b/debdate @@ -15,6 +15,7 @@ import argparse import csv import datetime from dateutil import relativedelta, parser +import math import unittest RELEASES = [ @@ -35,6 +36,7 @@ RELEASES = [ (datetime.date(1996, 6, 17), 'buzz'), ] MSG = "Today is day {dody} of year {yodr} of the {release}" +FUTURE_MSG = "Today could be day {dody} of year {yodr} of the {release}" ERR_MSG = "Today is {isodate} of the Debianless Age" @@ -71,6 +73,13 @@ class DebDate: def get_release(self, day): data = {} + today = datetime.date.today() + if day > today: + # This is just a fuzzy way to decide whether a date is + # likely to be after a future release. + data['certain'] = math.exp((today - day).days / 365.25 ) + else: + data['certain'] = 1 for r in self.releases: epoch = r[0] data['release'] = r[1] @@ -112,6 +121,7 @@ class TestDebDate(unittest.TestCase): self.assertEqual(data['dody'], 10) self.assertEqual(data['yodr'], 1) self.assertEqual(data['release'], r[1]) + self.assertEqual(data['certain'], 1) def testSecondYearRelease(self): for debdate in self.debdates: @@ -121,6 +131,7 @@ class TestDebDate(unittest.TestCase): self.assertEqual(data['dody'], 227) self.assertEqual(data['yodr'], 2) self.assertEqual(data['release'], r[1]) + self.assertEqual(data['certain'], 1) def testJanuarySecondYearRelease(self): for debdate in self.debdates: @@ -130,6 +141,7 @@ class TestDebDate(unittest.TestCase): self.assertEqual(data['dody'], 1) self.assertEqual(data['yodr'], 2) self.assertEqual(data['release'], r[1]) + self.assertEqual(data['certain'], 1) def testPastLatestRelease(self): for debdate in self.debdates: @@ -140,6 +152,7 @@ class TestDebDate(unittest.TestCase): # release, so we do not check it self.assertEqual(data['yodr'], 6) self.assertEqual(data['release'], r[1]) + self.assertLess(data['certain'], 1) def testBeforeBeginningOfTime(self): for debdate in self.debdates: @@ -194,7 +207,11 @@ class Command: except OutsideTimeError: print(ERR_MSG.format(isodate=date.strftime("%Y-%m-%d"))) else: - print(MSG.format(**data)) + if data['certain'] > 0.14: + print(MSG.format(**data)) + else: + print(FUTURE_MSG.format(**data)) + def main(self): self.setup_parser() -- cgit v1.2.3