diff options
author | Paul Ganssle <paul@ganssle.io> | 2017-10-09 21:31:45 -0400 |
---|---|---|
committer | Paul Ganssle <paul@ganssle.io> | 2017-10-09 21:31:45 -0400 |
commit | b5b544e361615f5f972fc1aed7d7ec6a2369e9f4 (patch) | |
tree | 4b9e3e60206d8d8d72117c60d20bcd672c77baa2 | |
parent | c8c38c7475a7ba17d7e1a63c85749f6650aeab80 (diff) | |
download | dateutil-b5b544e361615f5f972fc1aed7d7ec6a2369e9f4.tar.gz |
Add __abs__ to relativedelta
-rw-r--r-- | dateutil/relativedelta.py | 18 | ||||
-rw-r--r-- | dateutil/test/test_relativedelta.py | 14 |
2 files changed, 32 insertions, 0 deletions
diff --git a/dateutil/relativedelta.py b/dateutil/relativedelta.py index 64405bb..067b5a5 100644 --- a/dateutil/relativedelta.py +++ b/dateutil/relativedelta.py @@ -422,6 +422,24 @@ class relativedelta(object): is not None else other.microsecond)) + def __abs__(self): + return self.__class__(years=abs(self.years), + months=abs(self.months), + days=abs(self.days), + hours=abs(self.hours), + minutes=abs(self.minutes), + seconds=abs(self.seconds), + microseconds=abs(self.microseconds), + leapdays=self.leapdays, + year=self.year, + month=self.month, + day=self.day, + weekday=self.weekday, + hour=self.hour, + minute=self.minute, + second=self.second, + microsecond=self.microsecond) + def __neg__(self): return self.__class__(years=-self.years, months=-self.months, diff --git a/dateutil/test/test_relativedelta.py b/dateutil/test/test_relativedelta.py index ed048bf..9891357 100644 --- a/dateutil/test/test_relativedelta.py +++ b/dateutil/test/test_relativedelta.py @@ -245,6 +245,20 @@ class RelativeDeltaTest(WarningTestMixin, unittest.TestCase): self.assertFalse(relativedelta(days=0)) self.assertTrue(relativedelta(days=1)) + def testAbsoluteValueNegative(self): + rd_base = relativedelta(years=-1, months=-5, days=-2, hours=-3, + minutes=-5, seconds=-2, microseconds=-12) + rd_expected = relativedelta(years=1, months=5, days=2, hours=3, + minutes=5, seconds=2, microseconds=12) + self.assertEqual(abs(rd_base), rd_expected) + + def testAbsoluteValuePositive(self): + rd_base = relativedelta(years=1, months=5, days=2, hours=3, + minutes=5, seconds=2, microseconds=12) + rd_expected = rd_base + + self.assertEqual(abs(rd_base), rd_expected) + def testComparison(self): d1 = relativedelta(years=1, months=1, days=1, leapdays=0, hours=1, minutes=1, seconds=1, microseconds=1) |