File xsd-date.patch of Package python-softlayer-zeep
From d1b0257eb7b8f41bc74c0fa178e820c2d739cf30 Mon Sep 17 00:00:00 2001
From: Michael van Tellingen <m.vantellingen@labdigital.nl>
Date: Wed, 16 Oct 2024 07:21:21 +0200
Subject: [PATCH] Fix regression in parsing xsd:Date with negative timezone
---
CHANGES | 4 ++++
src/zeep/xsd/types/builtins.py | 12 +++++-------
tests/test_xsd_builtins.py | 2 ++
3 files changed, 11 insertions(+), 7 deletions(-)
Index: softlayer-zeep-5.0.0/src/zeep/xsd/types/builtins.py
===================================================================
--- softlayer-zeep-5.0.0.orig/src/zeep/xsd/types/builtins.py
+++ softlayer-zeep-5.0.0/src/zeep/xsd/types/builtins.py
@@ -201,6 +201,7 @@ class Time(BuiltinType):
class Date(BuiltinType):
_default_qname = xsd_ns("date")
accepted_types = [datetime.date, str]
+ _pattern = re.compile(r"(\d{4})-(\d{2})-(\d{2})")
@check_no_collection
def xmlvalue(self, value):
@@ -210,6 +211,9 @@ class Date(BuiltinType):
@treat_whitespace("collapse")
def pythonvalue(self, value):
+ m = self._pattern.match(value)
+ if m:
+ return datetime.date(*map(int, m.groups()))
return isodate.parse_date(value)
Index: softlayer-zeep-5.0.0/tests/test_xsd_builtins.py
===================================================================
--- softlayer-zeep-5.0.0.orig/tests/test_xsd_builtins.py
+++ softlayer-zeep-5.0.0/tests/test_xsd_builtins.py
@@ -242,6 +242,8 @@ class TestDate:
instance = builtins.Date()
assert instance.pythonvalue("2016-03-04") == datetime.date(2016, 3, 4)
assert instance.pythonvalue("2001-10-26+02:00") == datetime.date(2001, 10, 26)
+ assert instance.pythonvalue("2001-10-26-02:00") == datetime.date(2001, 10, 26)
+ assert instance.pythonvalue("2024-08-21-10:00") == datetime.date(2024, 8, 21)
assert instance.pythonvalue("2001-10-26Z") == datetime.date(2001, 10, 26)
assert instance.pythonvalue("2001-10-26+00:00") == datetime.date(2001, 10, 26)
assert instance.pythonvalue("\r\n\t 2016-03-04 ") == datetime.date(2016, 3, 4)