werkzeug
The comprehensive WSGI web application library.
Werkzeug is a Python library that handles the low-level plumbing of web applications. The name comes from the German word for "tool." It sits between your Python code and the web server, managing how HTTP requests arrive and how responses get sent back. The technical standard it follows is called WSGI, which is the agreed-upon way Python web applications communicate with web servers.
The library provides a collection of tools that cover most of what a web application needs at the HTTP layer. This includes objects for reading incoming request data such as form submissions, file uploads, query strings, headers, and cookies. It also includes a system for matching URL patterns to specific functions in your code and for generating URLs from those patterns. There is a built-in development server for testing locally, and a test client that simulates HTTP requests without needing a live server running.
One feature the README highlights is an interactive browser-based debugger. When an error occurs during development, you can inspect the error and run Python code directly in the browser to understand what went wrong, which is more informative than a plain error page.
Werkzeug does not come with a built-in template system, database layer, or opinion about how you structure your application. It provides the HTTP toolkit and leaves those decisions to the developer. Flask, a very popular Python web framework, is built on top of Werkzeug and uses it to handle the HTTP details while adding its own structure around routing and application organization.
The project is maintained by the Pallets organization, which also maintains Flask and several related packages. The README links to contribution guidelines and a donation page to support ongoing maintenance.