Skip to content

Commit

Permalink
Fix TimeDelta cast error. Closes #656.
Browse files Browse the repository at this point in the history
  • Loading branch information
onyxfish committed Dec 29, 2016
1 parent ab460ed commit 8865ddf
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 2 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
1.5.5
-----


* Fixed :code:`'NoneType' object has no attribute 'groupdict'` in :meth:`.TimeDelta.cast`. (#656)

1.5.4 - December 27, 2016
-------------------------
Expand Down
5 changes: 4 additions & 1 deletion agate/data_types/time_delta.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,10 @@ def cast(self, d):
else:
raise CastError('Can not parse value "%s" as timedelta.' % d)

seconds = pytimeparse.parse(d)
try:
seconds = pytimeparse.parse(d)
except AttributeError:
seconds = None

if seconds is None:
raise CastError('Can not parse value "%s" to as timedelta.' % d)
Expand Down
12 changes: 12 additions & 0 deletions tests/test_data_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ def test_test(self):
self.assertEqual(self.type.test('4:10'), True)
self.assertEqual(self.type.test(datetime.timedelta(hours=4, minutes=10)), True)
self.assertEqual(self.type.test('a'), True)
self.assertEqual(self.type.test('A\nB'), True)
self.assertEqual(self.type.test(u'👍'), True)

def test_cast(self):
values = ('a', 1, None, Decimal('2.7'), 'n/a', u'👍')
Expand Down Expand Up @@ -82,6 +84,8 @@ def test_test(self):
self.assertEqual(self.type.test('4:10'), False)
self.assertEqual(self.type.test(datetime.timedelta(hours=4, minutes=10)), False)
self.assertEqual(self.type.test('a'), False)
self.assertEqual(self.type.test('A\nB'), False)
self.assertEqual(self.type.test(u'👍'), False)

def test_cast(self):
values = (True, 'yes', None, False, 'no', 'n/a', '1', 0)
Expand Down Expand Up @@ -124,6 +128,8 @@ def test_test(self):
self.assertEqual(self.type.test('4:10'), False)
self.assertEqual(self.type.test(datetime.timedelta(hours=4, minutes=10)), False)
self.assertEqual(self.type.test('a'), False)
self.assertEqual(self.type.test('A\nB'), False)
self.assertEqual(self.type.test(u'👍'), False)

def test_cast(self):
values = (2, 1, None, Decimal('2.7'), 'n/a', '2.7', '200,000,000')
Expand Down Expand Up @@ -179,6 +185,8 @@ def test_test(self):
self.assertEqual(self.type.test('4:10'), False)
self.assertEqual(self.type.test(datetime.timedelta(hours=4, minutes=10)), False)
self.assertEqual(self.type.test('a'), False)
self.assertEqual(self.type.test('A\nB'), False)
self.assertEqual(self.type.test(u'👍'), False)

def test_test_format(self):
date_type = Date(date_format='%m-%d-%Y')
Expand Down Expand Up @@ -250,6 +258,8 @@ def test_test(self):
self.assertEqual(self.type.test('4:10'), False)
self.assertEqual(self.type.test(datetime.timedelta(hours=4, minutes=10)), False)
self.assertEqual(self.type.test('a'), False)
self.assertEqual(self.type.test('A\nB'), False)
self.assertEqual(self.type.test(u'👍'), False)

def test_test_format(self):
datetime_type = DateTime(datetime_format='%m-%d-%Y %I:%M %p')
Expand Down Expand Up @@ -338,6 +348,8 @@ def test_test(self):
self.assertEqual(self.type.test('4:10'), True)
self.assertEqual(self.type.test(datetime.timedelta(hours=4, minutes=10)), True)
self.assertEqual(self.type.test('a'), False)
self.assertEqual(self.type.test('A\nB'), False)
self.assertEqual(self.type.test(u'👍'), False)

def test_cast_parser(self):
values = ('4:10', '1.2m', '172 hours', '5 weeks, 2 days', 'n/a')
Expand Down

0 comments on commit 8865ddf

Please sign in to comment.