aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Ganssle <paul@ganssle.io>2017-10-09 21:31:45 -0400
committerPaul Ganssle <paul@ganssle.io>2017-10-09 21:31:45 -0400
commitb5b544e361615f5f972fc1aed7d7ec6a2369e9f4 (patch)
tree4b9e3e60206d8d8d72117c60d20bcd672c77baa2
parentc8c38c7475a7ba17d7e1a63c85749f6650aeab80 (diff)
downloaddateutil-b5b544e361615f5f972fc1aed7d7ec6a2369e9f4.tar.gz
Add __abs__ to relativedelta
-rw-r--r--dateutil/relativedelta.py18
-rw-r--r--dateutil/test/test_relativedelta.py14
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)