zope.component
Zope Component Architecture
What it is and what it does
zope.component is the core implementation of the Zope Component Architecture, a design pattern for building loosely-coupled systems through interface-based component registration and lookup. It works with zope.interface to let you define interfaces, register implementations as adapters or utilities, and query them at runtime without direct dependencies between components.
The package provides a global component registry and site manager for organizing components hierarchically, supporting both in-memory and persistent storage. It's used primarily in Zope-based web frameworks and applications that need flexible, runtime-configurable component composition, though it's designed to be independently reusable in any Python project.
Use it for:
- Building plugin architectures where implementations can be registered and swapped without modifying core code.
- Implementing adapter patterns to convert between incompatible interfaces at runtime.
- Creating utility registries for application-wide singleton-like services accessed by interface.
- Organizing large applications with hierarchical local site managers for component isolation.
- Enabling ZCML (Zope Configuration Markup Language) declarative component configuration in web frameworks.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Implements the core Zope Component Architecture for defining, registering, and looking up components through interfaces, enabling loose coupling in Python applications.
Yes, if you are working within the Zope ecosystem or building a system that requires interface-based component registration and loose coupling. The package is stable, actively maintained, and has no known vulnerabilities. However, the aging maintenance status (192 days since last release) and unclear license treatment warrant verification before adoption in new projects outside the Zope community.
Install
zope-component on PyPI
pip
pip install zope-componentuv
uv add zope-componentpoetry
poetry add zope-componentInstalling zope.component
Before you install
Low install friction with a pure-Python wheel. Maintenance status is aging—last release was 192 days ago—but the package remains actively maintained by the Zope Toolkit project and supports current Python versions through 3.14.
License in practice
Licensed under ZPL-2.1 (Zope Public License 2.1), but license treatment is marked unclear in the metadata. Verify the license terms before use in proprietary or restrictively-licensed projects.
Quickstart
pip install zope.component
from zope.interface import Interface, implementer
from zope.component import adapter, provideAdapter, queryAdapter
class IFoo(Interface):
pass
@implementer(IFoo)
class Foo:
pass
provideAdapter(Foo, IFoo)
foo = queryAdapter(Foo(), IFoo)
Requires Python 3.10 or later; earlier Python versions are not supported.
Verify before relying
- Whether the unclear license treatment affects commercial or proprietary use cases.
- Performance characteristics when managing large numbers of registered components.
- Compatibility with frameworks beyond Zope 3 and Zope 5 (listed in classifiers).
Package facts
| License | ZPL-2.1 (unclear) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 3 — zope.event, zope.hookable, zope.interface |
| Maintenance | aging — 192 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 1,014,317/month — #4,503 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: zope_component-7.1-py3-none-any.whl
Keywords: interface, component, coupling, loose, utility, adapter
Tags
More Python Modules packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
PyYAMLPyYAML parses and emits YAML 1.1 data format,…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
annotated-typesProvides reusable metadata objects for use with…
permissive · top 100 on PyPI
typing-inspectionProvides runtime tools to inspect and…
permissive · top 100 on PyPI
zope.interfaceProvides a Python implementation of object…
unclear · top 1,000 on PyPI
zope.siteProvides a local and persistent site manager…
unclear · top 15,000 on PyPI
zope.sizeProvides a standard interface and adapter for…
unclear · top 15,000 on PyPI
zope.proxyzope.proxy provides transparent wrapper objects…
unclear · top 15,000 on PyPI
zope.containerProvides container interfaces and…
unclear · top 15,000 on PyPI
zope.hookablezope.hookable provides a mechanism to create…
unclear · top 5,000 on PyPI
zope.annotationStores additional metadata on objects without…
unclear · top 15,000 on PyPI
mypy-zopeA mypy plugin that treats zope.interface…
permissive · top 15,000 on PyPI
zope.browserpageProvides ZCML directives (browser:page,…
unclear · top 15,000 on PyPI
zope.configurationZope.configuration provides an extensible…
unclear · top 5,000 on PyPI