From 27eb4b1b7a0b21cb5bf36094bd56c34ee2a73112 Mon Sep 17 00:00:00 2001 From: Gerhard Weis Date: Thu, 24 Jan 2013 15:55:42 +1000 Subject: - raise Exception for unsupported operations with duration and date/datetime objects - store year and month as Decimal in Duration object. - added test cases to support changes closes #2 --- src/isodate/isoduration.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/isodate/isoduration.py') diff --git a/src/isodate/isoduration.py b/src/isodate/isoduration.py index 3554b1f..97affdc 100644 --- a/src/isodate/isoduration.py +++ b/src/isodate/isoduration.py @@ -31,6 +31,7 @@ It also provides a wrapper to strftime. This wrapper makes it easier to format timedelta or Duration instances as ISO conforming strings. ''' from datetime import timedelta +from decimal import Decimal import re from isodate.duration import Duration @@ -103,7 +104,11 @@ def parse_duration(datestring): if val is None: groups[key] = "0n" #print groups[key] - groups[key] = float(groups[key][:-1].replace(',', '.')) + if key in ('years', 'months'): + groups[key] = Decimal(groups[key][:-1].replace(',', '.')) + else: + # these values are passed into a timedelta object, which works with floats. + groups[key] = float(groups[key][:-1].replace(',', '.')) if groups["years"] == 0 and groups["months"] == 0: ret = timedelta(days=groups["days"], hours=groups["hours"], minutes=groups["minutes"], seconds=groups["seconds"], -- cgit v1.2.1