config: Assume abbreviated dates are in the past.
This commit is contained in:
parent
419f52abe3
commit
8ab2373ba1
3 changed files with 21 additions and 7 deletions
|
@ -65,7 +65,16 @@ class Configuration:
|
||||||
if (len(numbers) > 3) or (len(seen_seps) > 1):
|
if (len(numbers) > 3) or (len(seen_seps) > 1):
|
||||||
raise ValueError("can't parse date from {!r}".format(s))
|
raise ValueError("can't parse date from {!r}".format(s))
|
||||||
replacements = dict(zip(['day', 'month', 'year'], reversed(numbers)))
|
replacements = dict(zip(['day', 'month', 'year'], reversed(numbers)))
|
||||||
return self.TODAY.replace(**replacements)
|
retval = self.TODAY.replace(**replacements)
|
||||||
|
if retval > self.TODAY:
|
||||||
|
if 'year' in replacements:
|
||||||
|
pass
|
||||||
|
elif 'month' in replacements:
|
||||||
|
retval = retval.replace(year=retval.year - 1)
|
||||||
|
else:
|
||||||
|
retval -= datetime.timedelta(days=replacements['day'])
|
||||||
|
retval = retval.replace(**replacements)
|
||||||
|
return retval
|
||||||
|
|
||||||
def _build_argparser(self):
|
def _build_argparser(self):
|
||||||
prog_parser = argparse.ArgumentParser()
|
prog_parser = argparse.ArgumentParser()
|
||||||
|
|
2
setup.py
2
setup.py
|
@ -5,7 +5,7 @@ from setuptools import setup
|
||||||
setup(
|
setup(
|
||||||
name='oxrlib',
|
name='oxrlib',
|
||||||
description="Library to query the Open Exchange Rates (OXR) API",
|
description="Library to query the Open Exchange Rates (OXR) API",
|
||||||
version='1.5',
|
version='1.6',
|
||||||
author='Brett Smith',
|
author='Brett Smith',
|
||||||
author_email='brettcsmith@brettcsmith.org',
|
author_email='brettcsmith@brettcsmith.org',
|
||||||
license='GNU AGPLv3+',
|
license='GNU AGPLv3+',
|
||||||
|
|
|
@ -89,16 +89,21 @@ def test_historical_argparsing_failure(arglist, any_date):
|
||||||
assert not vars(config.args), "bad arglist succeeded"
|
assert not vars(config.args), "bad arglist succeeded"
|
||||||
|
|
||||||
@pytest.mark.parametrize('date_s,expect_year,expect_month,expect_day', [
|
@pytest.mark.parametrize('date_s,expect_year,expect_month,expect_day', [
|
||||||
('5', 1965, 4, 5),
|
('5', 1965, 7, 5),
|
||||||
('05', 1965, 4, 5),
|
('05', 1965, 7, 5),
|
||||||
|
('14', 1965, 7, 14),
|
||||||
|
('15', 1965, 7, 15),
|
||||||
|
('16', 1965, 6, 16),
|
||||||
('3-6', 1965, 3, 6),
|
('3-6', 1965, 3, 6),
|
||||||
('5.10', 1965, 5, 10),
|
('11.10', 1964, 11, 10),
|
||||||
('06-09', 1965, 6, 9),
|
('07-14', 1965, 7, 14),
|
||||||
|
('07/15', 1965, 7, 15),
|
||||||
|
('7.16', 1964, 7, 16),
|
||||||
('917/12/12', 917, 12, 12),
|
('917/12/12', 917, 12, 12),
|
||||||
('2017-11-1', 2017, 11, 1),
|
('2017-11-1', 2017, 11, 1),
|
||||||
])
|
])
|
||||||
def test_good_date_parsing(date_s, expect_year, expect_month, expect_day):
|
def test_good_date_parsing(date_s, expect_year, expect_month, expect_day):
|
||||||
oxrlib.config.Configuration.TODAY = datetime.date(1965, 4, 3)
|
oxrlib.config.Configuration.TODAY = datetime.date(1965, 7, 15)
|
||||||
config = config_from(os.devnull, ['historical', date_s])
|
config = config_from(os.devnull, ['historical', date_s])
|
||||||
actual_date = config.args.date
|
actual_date = config.args.date
|
||||||
assert actual_date.year == expect_year
|
assert actual_date.year == expect_year
|
||||||
|
|
Loading…
Reference in a new issue