Forty linked examples make this a reference shelf, not a framework
The README links 40 entries across creational, structural, behavioral, testability, fundamental, and other patterns. Each link goes to a Python module rather than an application install. Python Patterns works best when a name such as Adapter or Memento appears in a discussion and you want a compact implementation. It does not impose an API, service, or project layout on your own code.
Our measured checkout had 123 files and roughly 5,051 lines of source, so the catalog is easy to browse. Most modules keep the explanation beside the example as a docstring, then use a main() doctest to show output. You can read one file, run it, and leave. The repository feels more like a sample drawer than a course arranged in a deliberate order.
Three anti-pattern notes make the Python advice more useful
The README names 3 anti-patterns: explicit Singleton classes, God Objects, and inheritance overuse. A direct translation from another language can make Python code worse. The Singleton note says modules already behave as single instances, while the inheritance warning favors composition and delegation. These cautions give readers permission to reject a named pattern when Python has a simpler answer.
The Facade example compares its entry point with os.path.isdir; Factory uses English and Greek localizers and points to Django formsets. Strategy models discounts as callables and checks them through a descriptor. These 3 modules are concrete enough to discuss in a code review, though their depth varies. Facade supplies practical context and references, while smaller files may offer little beyond a definition and doctest.
What happened when we ran it
Our sandbox installed 69 packages in 24 seconds and used 138 MB on disk. The build completed successfully in 0 seconds. This was commit 3cfc8e6 in a fresh Debian container with 3 CPUs and 8 GB of RAM. Pip-audit reported 0 known vulnerabilities. The checkout contained a tests directory and 1 CI workflow, while no Dockerfile was present.
The test command did not collect or execute tests. It exited with code 4 after 1 second, and the log said pytest did not recognize --randomly-seed=1234. It identified pyproject.toml as the configuration file and /work/repo as the root. The log gives no test count or reason the configured argument was unavailable, so we will not invent either.
A failed 1-second test step changes how we would use the code. The examples remain readable, and the 0-second build shows that packaging completed, but neither result substitutes for executed tests. If you copy an implementation, run its doctest and add a test around your use. Small pattern code can look convincing before real inputs and failure paths reach it.
Development starts at Python 3.10 and uses a Bash script
The manifest requires Python 3.10 or newer, and CI lists 3.10 through 3.14. There are no declared runtime dependencies. Contributor setup is heavier: ./lint.sh creates a virtual environment, installs Pipenv, syncs the locked development set, installs the package in editable mode, then checks spelling, formatting, types, and tests. That suits a collection whose documentation lives inside code.
Our install pulled 69 packages because the development path needs pytest, mypy, Black, isort, and coverage. Zero runtime dependencies and 138 MB of development packages describe different jobs. Reading one pattern takes little operational work. Reproducing the full contributor path needs Bash, a supported Python version, and the locked toolchain. No account, API key, database, or background service is documented.
An open license issue blocks casual code reuse
GitHub reported no license, and our tree check at commit 3cfc8e6 found no LICENSE, COPYING, or NOTICE file. Issue 143 has requested a copyright or license statement since 2016 and remained open after a July 2025 update. Reading public code is straightforward. Copying it into a distributed or commercial product without clear permission creates a question that an engineering team should not answer by inference.
GitHub showed 42,993 stars and 12 combined open issues and pull requests, which our API check separated into 9 issues and 3 pull requests. The last push was September 18, 2026. Recent commits include automated dependency bumps, a maintainer's July test and project restructure, and contributor work on documentation, coverage, and type annotations. Maintenance continues, although old requests such as the license file remain unresolved.
No GitHub release means the source is the product
The latest-release endpoint returned no GitHub release, and the tag list exposed 1 tag named legacy for Python 2 versions. The manifest says version 0.1.0, but there is no release history promising a stable public interface. That suits a catalog better than a dependency. Link to an exact commit for teaching, and resolve the license question before copying code instead of pinning the project like an ordinary library.
Choose the catalog for lookup and a book for sustained guidance
The 3 closest alternatives answer different needs. Refactoring.Guru pairs Python examples with a uniform visual explanation. cosmicpython/book follows patterns through service construction, making the cost of repositories, units of work, and message buses easier to judge. Brandon Rhodes's Python Design Patterns Guide connects program structure across prose chapters. Python Patterns wins when you know the term and want a small file quickly.
The choice turns on the gap between a 40-entry index and a test process that stopped before collection. That is acceptable for a reference you read critically. It is poor support for blind reuse, especially with 0 executed tests in our run and no declared license. Open the relevant module, compare its approach, then take the idea into code you own only after you can explain the fit and prove the behavior.

