From b3260fc7fe9270c55a43d83306c7e2d27b3a1a4d Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Fri, 1 Aug 2025 21:41:40 +0000 Subject: [PATCH] Fix type errors and improve error handling in Zeep library Co-authored-by: tomerazran --- src/zeep/cache.py | 6 ++++-- src/zeep/client.py | 2 ++ src/zeep/helpers.py | 2 ++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/zeep/cache.py b/src/zeep/cache.py index 6dc49612e..01f5f67c7 100644 --- a/src/zeep/cache.py +++ b/src/zeep/cache.py @@ -24,10 +24,10 @@ class Base(object): def add(self, url, content): - raise NotImplemented() + raise NotImplementedError() def get(self, url): - raise NotImplemented() + raise NotImplementedError() class InMemoryCache(Base): @@ -131,6 +131,8 @@ def _decode_data(self, data): data = str(data) if data.startswith(self._version_string): return base64.b64decode(data[len(self._version_string):]) + # Return None for invalid/incompatible cache data + return None @property def _version_string(self): diff --git a/src/zeep/client.py b/src/zeep/client.py index e047ce326..812c567e8 100644 --- a/src/zeep/client.py +++ b/src/zeep/client.py @@ -183,6 +183,8 @@ def _get_port(self, service, name): if not port: raise ValueError("Port not found") else: + if not service.ports: + raise ValueError("No ports available in service") port = list(service.ports.values())[0] return port diff --git a/src/zeep/helpers.py b/src/zeep/helpers.py index 187626dbe..bf163ba35 100644 --- a/src/zeep/helpers.py +++ b/src/zeep/helpers.py @@ -59,12 +59,14 @@ def create_xml_soap_map(values): def guess_xsd_type(obj): """Return the XSD Type for the given object""" + # Check bool before int since bool is a subclass of int in Python if isinstance(obj, bool): return xsd.Boolean() if isinstance(obj, int): return xsd.Integer() if isinstance(obj, float): return xsd.Float() + # Check datetime before date since datetime is a subclass of date if isinstance(obj, datetime.datetime): return xsd.DateTime() if isinstance(obj, datetime.date):