Comparison with alternatives¶
| Capability | soapbar | zeep | spyne | fastapi-soap |
|---|---|---|---|---|
| SOAP client | ✓ | ✓ | ✗ | ✗ |
| SOAP server | ✓ | ✗ | ✓ | ✓ |
| All 5 binding styles | ✓ | ✓ (client) | ✓ | Partial |
| SOAP 1.1 + 1.2 | ✓ | ✓ | 1.1; 1.2 partial (stub)³ | 1.1 only |
| ASGI frameworks | ✓ | ✗ | ✗ | FastAPI only |
| WSGI frameworks | ✓ | ✗ | ✓ | ✗ |
| Auto WSDL generation | ✓ | ✗ | ✓ | ✓ |
| WSDL-driven client | ✓ | ✓ | ✗ | ✗ |
| XXE hardened by default | ✓ | not evaluated here¹ | not evaluated here¹ | not evaluated here¹ |
| Message size + depth limits | ✓ | not evaluated here¹ | not evaluated here¹ | not evaluated here¹ |
| WS-Security UsernameToken | ✓ | ✓ (client) | ✓ | ✗ |
| XML Signature / Encryption | ✓ ([security]) | ✗ | Partial | ✗ |
| MTOM/XOP | ✓ | ✓ | ✓ | ✗ |
| WS-Addressing 1.0 | ✓ | ✓ | Partial | ✗ |
| One-way MEP (HTTP 202) | ✓ | ✓ | ✓ | ✗ |
| SOAP array attributes | ✓ | ✓ | ✓ | ✗ |
| Internal conformance suite (116 tests) | ✓ | — | — | — |
| Core dependency | lxml | lxml, requests | lxml | fastapi, lxml |
| Async HTTP client | httpx (optional) | httpx (optional) | — | — |
| Python versions | 3.10–3.14 | 3.10–3.14² | ≤3.10; does not import on 3.12+³ | 3.10 only² |
¹ Based on each project's public documentation as of July 2026, not on independent testing — consult each project's documentation for current behaviour.
² Per current PyPI classifiers (accessed 2026-08-11): zeep lists Python 3.10 through 3.14; fastapi-soap (0.2.0) lists only Python 3.10.
³ spyne's PyPI classifiers list Python up to 3.10 and its most recent release is 2.14.0 (2022); it does not import on Python 3.12+ (ModuleNotFoundError: No module named 'spyne.util.six.moves'), tracked in arskom/spyne#700 (closed) and #711 (open) — no fixed release has been published (accessed 2026-08-11). Its SOAP 1.2 protocol is described as a stub implementation in the project changelog.
soapbar combines, in a single library, a SOAP client and server, integration with any ASGI or WSGI framework, SOAP 1.1 and 1.2 support, XXE/DoS hardening enabled by default, and an internal conformance suite of 116 tests covering 46 spec-derived checkpoints (see tests/audit/test_compliance.py).
When not to use soapbar¶
Honesty builds trust, so: soapbar is not always the right choice.
- You only need a SOAP client. zeep is far more mature and widely deployed — prefer it.
- You're on Python ≤ 3.10 and spyne already serves you. There's no urgency to migrate.
- You need a full NF-e document builder. soapbar's NF-e client is the SOAP transport + mutual-TLS + signing layer, not a fiscal-document library — pair it with a domain library such as PyNFe or PySIGNFe.
- You require a 1.0-stable, battle-tested dependency today. soapbar is Beta (pre-1.0); evaluate the server side for your case.
If you do decide to move, Migrating from zeep or spyne maps each construct to its soapbar equivalent — including the places where there is no equivalent.
The wider landscape¶
Beyond the four libraries above, most Python SOAP projects are no longer actively released. Last release on PyPI (accessed 2026-08-11):
| Project | Role | Last PyPI release |
|---|---|---|
| suds-community | client | 2024 |
| suds-py3 | client | 2021 |
| suds-jurko | client | 2014 |
| osa | WSDL client | 2021 |
| pysimplesoap | client + server | 2017 |
| ladon | multi-protocol server (incl. SOAP) | 2020 |
| soaplib | server | 2010 — the project spyne grew out of |
| ZSI | SOAP infrastructure | Python-2 era |
In practice, the actively released options are zeep (client), suds-community (client), spyne (server, but see the Python 3.12 note above), and soapbar (client and server). A years-old last release is a signal, not proof of abandonment — some of these still receive occasional commits.