# System map — pallets/werkzeug

> Canonical page: https://codevetter.com/unpack/werkzeug/system-map

# System map — pallets/werkzeug

Scanned commit 594452f6a4fe4de38a544962fbf04bfc9d37fbc2 (2026-10-01). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

The main runtime boundary is the WSGI application callable, with separate adapters for request input and response output. Routing and HTTP utilities can operate independently of an application framework. Durable storage and rendering integrations are selected by consuming applications, as illustrated by the Redis-backed Shortly example. Packaging, CI, and documentation are configured through Flit, uv/tox, GitHub Actions, and Sphinx.
- The package-level API re-exports run_simple, Client, Request, and Response; README demonstrates a Request.application-decorated callable served by run_simple. — [src/werkzeug/__init__.py#L1-L4](https://github.com/pallets/werkzeug/blob/594452f6a4fe4de38a544962fbf04bfc9d37fbc2/src/werkzeug/__init__.py#L1-L4) [README.md#L44-L62](https://github.com/pallets/werkzeug/blob/594452f6a4fe4de38a544962fbf04bfc9d37fbc2/README.md#L44-L62)
- Version 3.2.0.dev requires Python >=3.11 and MarkupSafe >=3.0.3; watchdog >=6 is an optional extra. — [pyproject.toml#L1-L4](https://github.com/pallets/werkzeug/blob/594452f6a4fe4de38a544962fbf04bfc9d37fbc2/pyproject.toml#L1-L4) [pyproject.toml#L22-L35](https://github.com/pallets/werkzeug/blob/594452f6a4fe4de38a544962fbf04bfc9d37fbc2/pyproject.toml#L22-L35)
- Sans-I/O Request represents method, URL, and headers; the WSGI Request constructor derives those values from environ and retains the original environment. — [src/werkzeug/sansio/request.py#L34-L54](https://github.com/pallets/werkzeug/blob/594452f6a4fe4de38a544962fbf04bfc9d37fbc2/src/werkzeug/sansio/request.py#L34-L54) [src/werkzeug/wrappers/request.py#L133-L150](https://github.com/pallets/werkzeug/blob/594452f6a4fe4de38a544962fbf04bfc9d37fbc2/src/werkzeug/wrappers/request.py#L133-L150)
- Map owns the state-machine matcher, endpoint-indexed rules, converter registry, and remapping lock; MapAdapter.match translates matcher outcomes into HTTP routing exceptions. — [src/werkzeug/routing/map.py#L127-L147](https://github.com/pallets/werkzeug/blob/594452f6a4fe4de38a544962fbf04bfc9d37fbc2/src/werkzeug/routing/map.py#L127-L147) [src/werkzeug/routing/map.py#L636-L683](https://github.com/pallets/werkzeug/blob/594452f6a4fe4de38a544962fbf04bfc9d37fbc2/src/werkzeug/routing/map.py#L636-L683)
- Request-local resources include cached body bytes and parsed upload streams; Local separately stores context-scoped dictionaries in ContextVar. — [src/werkzeug/wrappers/request.py#L484-L493](https://github.com/pallets/werkzeug/blob/594452f6a4fe4de38a544962fbf04bfc9d37fbc2/src/werkzeug/wrappers/request.py#L484-L493) [src/werkzeug/wrappers/request.py#L619-L626](https://github.com/pallets/werkzeug/blob/594452f6a4fe4de38a544962fbf04bfc9d37fbc2/src/werkzeug/wrappers/request.py#L619-L626) [src/werkzeug/local.py#L35-L62](https://github.com/pallets/werkzeug/blob/594452f6a4fe4de38a544962fbf04bfc9d37fbc2/src/werkzeug/local.py#L35-L62)
- Shortly supplies its own Redis client, autoescaping Jinja environment, and route map; Redis keys hold URL targets, reverse mappings, identifiers, and click counts. — [examples/shortly/shortly.py#L38-L55](https://github.com/pallets/werkzeug/blob/594452f6a4fe4de38a544962fbf04bfc9d37fbc2/examples/shortly/shortly.py#L38-L55) [examples/shortly/shortly.py#L69-L100](https://github.com/pallets/werkzeug/blob/594452f6a4fe4de38a544962fbf04bfc9d37fbc2/examples/shortly/shortly.py#L69-L100)
- Flit builds the package, while tox uses a uv lock runner to build a wheel and invoke pytest; dedicated tox environments run mypy, pre-commit, and Sphinx. — [pyproject.toml#L71-L88](https://github.com/pallets/werkzeug/blob/594452f6a4fe4de38a544962fbf04bfc9d37fbc2/pyproject.toml#L71-L88) [pyproject.toml#L160-L172](https://github.com/pallets/werkzeug/blob/594452f6a4fe4de38a544962fbf04bfc9d37fbc2/pyproject.toml#L160-L172) [pyproject.toml#L181-L197](https://github.com/pallets/werkzeug/blob/594452f6a4fe4de38a544962fbf04bfc9d37fbc2/pyproject.toml#L181-L197)
- Tag pushes trigger uv build, artifact upload, draft GitHub release creation, and PyPI publication using an id-token-enabled publish environment; deployment docs direct applications to dedicated production WSGI servers. — [.github/workflows/publish.yaml#L1-L4](https://github.com/pallets/werkzeug/blob/594452f6a4fe4de38a544962fbf04bfc9d37fbc2/.github/workflows/publish.yaml#L1-L4) [.github/workflows/publish.yaml#L25-L62](https://github.com/pallets/werkzeug/blob/594452f6a4fe4de38a544962fbf04bfc9d37fbc2/.github/workflows/publish.yaml#L25-L62) [docs/deployment/index.rst#L4-L27](https://github.com/pallets/werkzeug/blob/594452f6a4fe4de38a544962fbf04bfc9d37fbc2/docs/deployment/index.rst#L4-L27)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
