diff --git a/src/zeep/xsd/types/builtins.py b/src/zeep/xsd/types/builtins.py index 8c5c6ba1..8f6f185f 100644 --- a/src/zeep/xsd/types/builtins.py +++ b/src/zeep/xsd/types/builtins.py @@ -136,7 +136,7 @@ def pythonvalue(self, value): if value.startswith("PT-"): value = value.replace("PT-", "PT") result = isodate.parse_duration(value) - return datetime.timedelta(0 - result.total_seconds()) + return datetime.timedelta(seconds=0 - result.total_seconds()) else: return isodate.parse_duration(value) diff --git a/tests/test_xsd_builtins.py b/tests/test_xsd_builtins.py index 4f055da9..41137e01 100644 --- a/tests/test_xsd_builtins.py +++ b/tests/test_xsd_builtins.py @@ -153,6 +153,11 @@ def test_pythonvalue(self): value = "\r \nP0Y1347M0D\t " assert instance.pythonvalue(value) == expected + def test_pythonvalue_negative(self): + instance = builtins.Duration() + assert instance.pythonvalue("PT-30S") == datetime.timedelta(seconds=-30) + assert instance.pythonvalue("PT-1M") == datetime.timedelta(minutes=-1) + class TestDateTime: def test_xmlvalue(self):