From ba324df0d1f17e4ffb7de97a580a0fe33610097b Mon Sep 17 00:00:00 2001 From: discopatrick Date: Tue, 25 Apr 2017 01:37:57 +0100 Subject: [PATCH] =?UTF-8?q?Add=20a=20date=20query=20precision=20of=20?= =?UTF-8?q?=E2=80=98minute=E2=80=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- beets/dbcore/query.py | 6 ++++-- test/test_datequery.py | 12 ++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/beets/dbcore/query.py b/beets/dbcore/query.py index 764ed0402..da466a6ba 100644 --- a/beets/dbcore/query.py +++ b/beets/dbcore/query.py @@ -533,8 +533,8 @@ class Period(object): instants of time during January 2014. """ - precisions = ('year', 'month', 'day', 'hour') - date_formats = ('%Y', '%Y-%m', '%Y-%m-%d', '%Y-%m-%dT%H') + precisions = ('year', 'month', 'day', 'hour', 'minute') + date_formats = ('%Y', '%Y-%m', '%Y-%m-%d', '%Y-%m-%dT%H', '%Y-%m-%dT%H:%M') def __init__(self, date, precision): """Create a period with the given date (a `datetime` object) and @@ -584,6 +584,8 @@ class Period(object): return date + timedelta(days=1) elif 'hour' == precision: return date + timedelta(hours=1) + elif 'minute' == precision: + return date + timedelta(minutes=1) else: raise ValueError(u'unhandled precision {0}'.format(precision)) diff --git a/test/test_datequery.py b/test/test_datequery.py index 12ce224c4..ea1974c41 100644 --- a/test/test_datequery.py +++ b/test/test_datequery.py @@ -74,6 +74,18 @@ class DateIntervalTest(unittest.TestCase): self.assertExcludes('2000-01-01T12..2000-01-01T13', '2000-01-01T14:30:00') + def test_minute_precision_intervals(self): + self.assertExcludes('2000-01-01T12:30..2000-01-01T12:31', + '2000-01-01T12:29:59') + self.assertContains('2000-01-01T12:30..2000-01-01T12:31', + '2000-01-01T12:30:00') + self.assertContains('2000-01-01T12:30..2000-01-01T12:31', + '2000-01-01T12:30:30') + self.assertContains('2000-01-01T12:30..2000-01-01T12:31', + '2000-01-01T12:30:59') + self.assertExcludes('2000-01-01T12:30..2000-01-01T12:31', + '2000-01-01T12:31:00') + def test_unbounded_endpoints(self): self.assertContains('..', date=datetime.max) self.assertContains('..', date=datetime.min)