From 4fe3788e5931cf3db3cf165c95b33d64bc612662 Mon Sep 17 00:00:00 2001 From: Leonardo Schwarz Date: Wed, 26 Nov 2025 17:23:23 +0100 Subject: [PATCH] mostly optional zeep --- bfabric/pyproject.toml | 3 +-- bfabric/src/bfabric/bfabric.py | 4 +++- bfabric/src/bfabric/results/response_delete.py | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/bfabric/pyproject.toml b/bfabric/pyproject.toml index e6be25bce..67c81f40e 100644 --- a/bfabric/pyproject.toml +++ b/bfabric/pyproject.toml @@ -21,18 +21,17 @@ dependencies = [ "suds>=1.2.0,<2.0.0", "PyYAML>=6.0.2,<7.0", "rich>=14.0.0,<15.0.0", - "zeep>=4.3.2,<5.0", "polars-lts-cpu>=1.30,<2.0; platform_machine == 'x86_64' and platform_system == 'Darwin'", "polars>=1.30,<2.0; platform_machine != 'x86_64' or platform_system != 'Darwin'", "loguru>=0.7,<0.8", "pydantic>=2.9.2,<3.0", - "eval_type_backport; python_version < '3.10'", "python-dateutil>=2.9.0,<3.0", "requests>=2.27.0,<3.0", "httpx>=0.28.1,<0.29", ] [project.optional-dependencies] +zeep = ["zeep>=4.3.2,<5.0"] dev = [ "bfabric[doc,test]", "black", diff --git a/bfabric/src/bfabric/bfabric.py b/bfabric/src/bfabric/bfabric.py index cade214b8..1e63b6242 100644 --- a/bfabric/src/bfabric/bfabric.py +++ b/bfabric/src/bfabric/bfabric.py @@ -33,7 +33,6 @@ from bfabric.config.config_data import ConfigData, load_config_data from bfabric.config.config_file import read_config_file from bfabric.engine.engine_suds import EngineSUDS -from bfabric.engine.engine_zeep import EngineZeep from bfabric.rest.token_data import TokenData, get_token_data from bfabric.results.result_container import ResultContainer from bfabric.utils.cli_integration import DEFAULT_THEME, HostnameHighlighter @@ -42,6 +41,7 @@ if TYPE_CHECKING: from collections.abc import Generator from bfabric.entities.core.entity_reader import EntityReader + from bfabric.engine.engine_zeep import EngineZeep class Bfabric: @@ -62,6 +62,8 @@ def _engine(self) -> EngineSUDS | EngineZeep: if self.config.engine == BfabricAPIEngineType.SUDS: return EngineSUDS(base_url=self._config.base_url) elif self.config.engine == BfabricAPIEngineType.ZEEP: + from bfabric.engine.engine_zeep import EngineZeep + return EngineZeep(base_url=self._config.base_url) else: raise ValueError(f"Unexpected engine type: {self.config.engine}") diff --git a/bfabric/src/bfabric/results/response_delete.py b/bfabric/src/bfabric/results/response_delete.py index 03339e15e..be48e86a3 100644 --- a/bfabric/src/bfabric/results/response_delete.py +++ b/bfabric/src/bfabric/results/response_delete.py @@ -4,7 +4,6 @@ from typing import Any from loguru import logger -from zeep.helpers import serialize_object from bfabric.engine.response_format_suds import suds_asdict_recursive from bfabric.errors import BfabricRequestError @@ -37,6 +36,8 @@ def from_suds(cls, suds_response: Any, endpoint: str) -> ResponseDelete: @classmethod def from_zeep(cls, zeep_response: Any, endpoint: str) -> ResponseDelete: """Creates a `ResponseDelete` from a ZEEP response.""" + from zeep.helpers import serialize_object + result_parsed = [dict(serialize_object(result, target_cls=dict)) for result in zeep_response[endpoint]] results, errors = cls.__convert_parsed_response(result_parsed) return cls(results=results, errors=errors, total_pages_api=None)