The Zen of Zope, by Jeffrey 'Alex' Clark
A crash course on the Zope Component Architecture (ZCA), told through the 19 aphorisms of The Zen of Python.
Background
Python has import this, which prints The Zen of Python by Tim Peters.
Daniel Greenfeld answered it with that,
The Anti-Zen of Python. And so, naturally, there is import other.
Each line of the Zen is rewritten around a ZCA concept and then
demonstrated with working zope.interface and zope.component code:
interfaces and the objects that implement or provide them, invariants,
tagged values, adapters and multi-adapters, subscribers, adapter hooks,
verification and utilities. Read src/other/__init__.py in the
repository from top to bottom to see
how each line is produced.
It was written in 2012, based on the zope.interface and zope.component
documentation, and updated for Python 3 in 2026.
Installation
other requires Python 3.10 or later. Install it from PyPI:
$ pip install other
This also installs zope.component and zope.interface.
Usage
Run it from the command line (import other prints the same thing):
$ python -m other
The Zen of Zope, by Jeffrey 'Alex' Clark
Beautiful is an attribute of person.
Explicit is implemented by implicit.
Simple is provided by complex.
Complex is directly provided by complicated.
Flat only implements nested.
Sparse has tagged value dense.
Readability count is not in range.
Special cases could not adapt the rules.
Practicality implements purity.
Errors should never require a specification that doesn’t extend the specification of silence.
Unless explicit is a multi-adapter.
In subscribing to ambiguity, return all the objects that refuse the temptation to guess.
There should be none-- and preferably only zero --output from a handler.
Although that way may not be obvious at first unless you've registered an adapter hook.
Now is verified by never.
Although never is not implemented by *right* now.
If the implementation is hard to explain, it queries the bad idea utility.
If the implementation is easy to explain, it may query the good idea utility.
Implicit namespace packages are one honking great idea -- let's do more of those!
Development
Clone the repository and install it in editable mode, along with the dev
dependency group (pip 25.1 or later):
$ git clone https://github.com/aclark4life/other.git
$ cd other
$ pip install -e . --group dev
Run the tests with pytest from the root of the clone:
$ pytest
Linting and formatting use ruff, run through prek pre-commit hooks. Install the hooks once per clone, and they run on every commit:
$ prek install
To run every hook against every file (this may fix and reformat files):
$ prek run --all-files
License
MIT. See LICENSE.
Changelog
2.1.0 (2026/10/23)
- Declare
zope.interfaceas a direct dependency [aclark] - Add a
devdependency group withprek[aclark] - License under MIT [aclark]
- Drop the
thatdependency; it was never imported [aclark] - Use the full author name, Jeffrey 'Alex' Clark [aclark]
- Convert the README to Markdown and rename
CHANGES.txttoCHANGELOG.md[aclark] - Run the tests with pytest; add a
testdependency group [aclark] - Make
othera package in asrclayout, with tests intests/[aclark] - Reorganize the tutorial so each section defines what it uses [aclark]
- Trim boilerplate from the tutorial: dataclasses instead of assign-only
__init__methods, one-line docstrings,size()instead ofgetSize()[aclark] - Explain in each section's banner how its line of the Zen becomes ZCA code [aclark]
- Make section 3 literally true:
ISimpleis provided by aComplexinstance [aclark] - Drop
MANIFEST.inandrequirements.txt; add Python version classifiers, keywords and project URLs [aclark] - Add background, installation and development sections to the README [aclark]
- Fix the adapter hook breaking failed adaptation process-wide after import [aclark]
- Make sections 1, 10, 11 and 13 demonstrate what their lines describe [aclark]
- Test the full output against the README, and the adapter hook fix [aclark]
2.0.1 (2026/10/22)
- Replace Gittip URL with GitHub Sponsors
FundingURL in project metadata [aclark]
2.0.0 (2026/10/22)
- Drop Python 2; require Python 3.10+ [aclark]
- Use
@implementerclass decorators instead ofimplements()[aclark] - Move packaging to
pyproject.toml[aclark] - Publish to PyPI with trusted publishing via GitHub Actions [aclark]
- Add tests [aclark]
1.0.0 (2012/12/8)
- First release [aclark]
Metadata
Release files for other 2.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| other-2.1.0.tar.gz | 11.2 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| other-2.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.5 kB
Release files / other-2.1.0.tar.gz
| Download URL | other-2.1.0.tar.gz |
|---|---|
| Size | 11.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d805693f422fb2df29f7f8db0a2525ad5327b6e2e9f506ba5b11c920f5664d6a
|
|
BLAKE2b-256 checksum How to use checksums |
739897d6304bfc0b29aa8f72e56a5186a463c7db01b5bf6a72ad392f2d66b600
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.
Transparency logRelease files / other-2.1.0-py3-none-any.whl
| Download URL | other-2.1.0-py3-none-any.whl |
|---|---|
| Size | 9.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8d47868cde6297d0c8925a80899490529cea931bc0cf98c96274715a2a78d83f
|
|
BLAKE2b-256 checksum How to use checksums |
cb2596ceb660c97be5f8e9a452d0f07ffa5c91bca7bd3a5c270fc3fda9da7ba4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.
Transparency logSecurity for other 2.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for other-2.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.