zope.publisher
The Zope publisher publishes Python objects on the web.
What it is and what it does
zope.publisher is a web request/response handler that sits between HTTP clients and Python application objects. It parses incoming HTTP requests (including multipart form data and file uploads) into request objects and manages response serialization, supporting multiple client types—browsers, XML-RPC clients, WebDAV, and FTP—through a unified WSGI-compatible interface. The package is part of the Zope ecosystem and provides the foundational request/response machinery for web frameworks built on Zope.
The package has been actively maintained since 2007, with recent updates focused on Python 3 compatibility and modern standards compliance. It handles character encoding, file uploads via the multipart library, and request/response lifecycle management. Its 12 runtime dependencies are all from the zope namespace, making it tightly integrated with the Zope component architecture. The recent version 8.1 dropped Python 3.9 support and added Python 3.14 support, reflecting active alignment with current Python releases.
Use it for:
- Build a Zope-based web application that needs to parse HTTP requests and manage responses for browser clients.
- Handle multipart form data and file uploads in a web framework that integrates with the Zope component architecture.
- Expose Python objects via XML-RPC or WebDAV protocols alongside standard HTTP/browser access.
- Implement custom request/response handling by subclassing BrowserRequest or BaseRequest for specialized encoding or security policies.
- Migrate a legacy Zope application to modern Python (3.10+) while preserving request/response semantics.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
zope.publisher handles HTTP request and response objects for publishing Python objects on the web, with support for HTTP/WebDAV, browsers, XML-RPC, and FTP clients via a WSGI-compatible interface.
Yes, if you are building or maintaining a Zope-based web application or framework. The package is actively maintained, has no known vulnerabilities, and supports current Python versions. The unclear license treatment warrants a quick verification, but the ZPL-2.1 license itself is permissive. Install friction is low. Not recommended for new projects outside the Zope ecosystem—modern alternatives like Werkzeug or Starlette are more widely adopted.
Install
zope-publisher on PyPI
pip
pip install zope-publisheruv
uv add zope-publisherpoetry
poetry add zope-publisherInstalling zope.publisher
Before you install
Low install friction with a pure-Python wheel. Active maintenance with recent release (51 days old); supports current Python versions (3.10–3.14) and drops older versions regularly. Depends on 12 zope ecosystem packages, all part of a mature, coordinated namespace.
License in practice
Licensed under ZPL-2.1 (Zope Public License 2.1), a permissive open-source license. License treatment is marked unclear in the metadata, so verify compatibility with your project's licensing requirements before use.
Quickstart
pip install zope.publisher
from zope.publisher.http import HTTPRequest
from io import BytesIO
request = HTTPRequest(BytesIO(), {})
Requires Python 3.10 or later; depends on multipart library for form data parsing.
Verify before relying
- Whether the unclear license treatment reflects actual ambiguity or is a metadata artifact.
- Real-world performance and stability with the multipart 1.0.0+ strict line-ending requirements.
- Compatibility of the PEP 420 namespace migration (version 8.0) with existing deployments.
Package facts
| License | ZPL-2.1 (unclear) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 12 — multipart, zope.browser, zope.component, zope.configuration, zope.contenttype, zope.event, zope.exceptions, zope.i18n, zope.interface, zope.location, zope.proxy, zope.security |
| Maintenance | actively maintained — 51 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 182,340/month — #10,103 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: zope_publisher-8.1-py3-none-any.whl
Tags
More WWW/HTTP packages
urllib3 is an HTTP client library that provides…
permissive · top 100 on PyPI
requestsRequests is a Python HTTP library that…
permissive · top 100 on PyPI
h11h11 is a pure-Python HTTP/1.1 protocol…
permissive · top 100 on PyPI
httpxHTTPX is a fully featured HTTP client library…
permissive · top 100 on PyPI
httpcoreA minimal low-level HTTP client library that…
permissive · top 100 on PyPI
aiohttpaiohttp is an async HTTP client and server…
permissive · top 100 on PyPI
ZopeZope is an open-source web application server…
unclear · top 15,000 on PyPI
zope.filerepresentationDefines interfaces for representing objects as…
unclear · top 15,000 on PyPI
zope.contenttypeGuesses MIME types from filenames and body…
unclear · top 15,000 on PyPI
zope.testbrowserzope.testbrowser provides a programmable web…
unclear · top 15,000 on PyPI
zope.browserpageProvides ZCML directives (browser:page,…
unclear · top 15,000 on PyPI
zope.eventProvides a simple synchronous event publishing…
unclear · top 1,000 on PyPI
zope.proxyzope.proxy provides transparent wrapper objects…
unclear · top 15,000 on PyPI
zope.viewletzope.viewlet provides a pluggable framework for…
unclear · top 15,000 on PyPI
zope.exceptionsProvides general-purpose exception classes and…
unclear · top 15,000 on PyPI
zope.configurationZope.configuration provides an extensible…
unclear · top 5,000 on PyPI