werkzeug

The comprehensive WSGI web application library.

https://github.com/pallets/werkzeug

Science Score: 36.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    11 of 497 committers (2.2%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.5%) to scientific vocabulary

Keywords

http pallets python werkzeug wsgi

Keywords from Contributors

jinja templates template-engine jinja2 sqlalchemy requests closember humans python-requests forhumans
Last synced: 6 months ago · JSON representation

Repository

The comprehensive WSGI web application library.

Basic Info
Statistics
  • Stars: 6,776
  • Watchers: 215
  • Forks: 1,748
  • Open Issues: 18
  • Releases: 49
Topics
http pallets python werkzeug wsgi
Created over 15 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog License

README.md

Werkzeug

werkzeug German noun: "tool". Etymology: werk ("work"), zeug ("stuff")

Werkzeug is a comprehensive WSGI web application library. It began as a simple collection of various utilities for WSGI applications and has become one of the most advanced WSGI utility libraries.

It includes:

  • An interactive debugger that allows inspecting stack traces and source code in the browser with an interactive interpreter for any frame in the stack.
  • A full-featured request object with objects to interact with headers, query args, form data, files, and cookies.
  • A response object that can wrap other WSGI applications and handle streaming data.
  • A routing system for matching URLs to endpoints and generating URLs for endpoints, with an extensible system for capturing variables from URLs.
  • HTTP utilities to handle entity tags, cache control, dates, user agents, cookies, files, and more.
  • A threaded WSGI server for use while developing applications locally.
  • A test client for simulating HTTP requests during testing without requiring running a server.

Werkzeug doesn't enforce any dependencies. It is up to the developer to choose a template engine, database adapter, and even how to handle requests. It can be used to build all sorts of end user applications such as blogs, wikis, or bulletin boards.

Flask wraps Werkzeug, using it to handle the details of WSGI while providing more structure and patterns for defining powerful applications.

A Simple Example

```python

save this as app.py

from werkzeug.wrappers import Request, Response

@Request.application def application(request: Request) -> Response: return Response("Hello, World!")

if name == "main": from werkzeug.serving import runsimple runsimple("127.0.0.1", 5000, application) ```

$ python -m app * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Donate

The Pallets organization develops and supports Werkzeug and other popular packages. In order to grow the community of contributors and users, and allow the maintainers to devote more time to the projects, please donate today.

Contributing

See our detailed contributing documentation for many ways to contribute, including reporting issues, requesting features, asking or answering questions, and making PRs.

Owner

  • Name: Pallets
  • Login: pallets
  • Kind: organization
  • Email: contact@palletsprojects.com

GitHub Events

Total
  • Create event: 34
  • Release event: 6
  • Issues event: 76
  • Watch event: 169
  • Delete event: 33
  • Issue comment event: 141
  • Push event: 75
  • Pull request review comment event: 14
  • Pull request event: 98
  • Pull request review event: 15
  • Fork event: 44
Last Year
  • Create event: 34
  • Release event: 6
  • Issues event: 76
  • Watch event: 169
  • Delete event: 33
  • Issue comment event: 141
  • Push event: 75
  • Pull request review comment event: 14
  • Pull request event: 98
  • Pull request review event: 15
  • Fork event: 44

Committers

Last synced: 6 months ago

All Time
  • Total Commits: 4,276
  • Total Committers: 497
  • Avg Commits per committer: 8.604
  • Development Distribution Score (DDS): 0.637
Past Year
  • Commits: 77
  • Committers: 11
  • Avg Commits per committer: 7.0
  • Development Distribution Score (DDS): 0.143
Top Committers
Name Email Commits
Armin Ronacher a****r@a****m 1,554
David Lord d****m@g****m 714
Markus Unterwaditzer m****s@u****t 478
Daniel Neuhäuser d****h@g****m 174
pgjones p****s@g****m 120
dependabot-preview[bot] 2****] 68
dependabot[bot] 4****] 65
Ronny Pfannschmidt R****t@g****e 47
Georg Brandl g****g@p****g 42
pre-commit-ci[bot] 6****] 36
ThiefMaster a****n@p****t 28
Christopher Grebs cg@w****g 27
Hsiaoming Yang me@l****m 17
Joshua Bronson j****b 16
Puzzlet Chung p****t@g****m 15
Teymour Aldridge t****e@i****m 14
Thomas Waldmann tw@w****e 12
Antonio Ossa a****a@u****l 11
Pascal Hartig p****g@r****t 11
northernSage g****e@g****m 11
Illia Volochii i****i@g****m 10
Timothée Boucher t****e@g****m 10
Alex Kahan a****x@z****m 10
Stephen Compall s****l@n****m 9
Adam Englander a****r@y****m 8
Anthony Sottile a****e@u****u 8
Jess Austin j****n@g****m 8
Brian Cristante 3****a 8
Tuukka Mustonen t****n@f****m 7
Kenneth Reitz me@k****m 7
and 467 more...

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 182
  • Total pull requests: 348
  • Average time to close issues: 3 months
  • Average time to close pull requests: 18 days
  • Total issue authors: 154
  • Total pull request authors: 76
  • Average comments per issue: 2.4
  • Average comments per pull request: 0.64
  • Merged pull requests: 247
  • Bot issues: 0
  • Bot pull requests: 80
Past Year
  • Issues: 51
  • Pull requests: 103
  • Average time to close issues: 5 days
  • Average time to close pull requests: 10 days
  • Issue authors: 39
  • Pull request authors: 24
  • Average comments per issue: 1.55
  • Average comments per pull request: 0.59
  • Merged pull requests: 58
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • davidism (18)
  • wieczorek1990 (2)
  • killershotpy (2)
  • homeworkprod (2)
  • Habeeb556 (2)
  • RazerM (2)
  • decarmona (2)
  • tobias-urdin (2)
  • mgorny (2)
  • n1ngu (2)
  • ckoehn (2)
  • afdy (2)
  • LittleLightLittleFire (1)
  • bruce007lee (1)
  • mmreza79 (1)
Pull Request Authors
  • davidism (120)
  • dependabot[bot] (63)
  • pgjones (28)
  • pre-commit-ci[bot] (17)
  • gqwtb (4)
  • Grezzo (4)
  • lociii (4)
  • alynn-coefficient (4)
  • jdimmerman (3)
  • bohmiiidd (3)
  • alex (2)
  • charan-kumar-137 (2)
  • Sympatron (2)
  • kevinji (2)
  • jace (2)
Top Labels
Issue Labels
typing (3) docs (2) server (2) debugger (1)
Pull Request Labels
dependencies (63) python (22) github_actions (19) docs (8) server (3) reloader (3) typing (2) routing (1) bug (1)

Packages

  • Total packages: 4
  • Total downloads:
    • pypi 158,500,629 last-month
  • Total docker downloads: 1,155,085,746
  • Total dependent packages: 805
    (may contain duplicates)
  • Total dependent repositories: 65,392
    (may contain duplicates)
  • Total versions: 146
  • Total maintainers: 2
  • Total advisories: 10
pypi.org: werkzeug

The comprehensive WSGI web application library.

  • Versions: 101
  • Dependent Packages: 711
  • Dependent Repositories: 63,618
  • Downloads: 158,500,587 Last month
  • Docker Downloads: 1,155,085,746
Rankings
Downloads: 0.0%
Dependent repos count: 0.0%
Dependent packages count: 0.0%
Docker downloads count: 0.3%
Average: 0.3%
Stargazers count: 0.7%
Forks count: 0.7%
Maintainers (1)
Last synced: 6 months ago
conda-forge.org: werkzeug

**_werkzeug_** German noun: "tool". Etymology: *werk* ("work"), *zeug* ("stuff") Werkzeug is a comprehensive [WSGI](https://wsgi.readthedocs.io/en/latest/) web application library. It began as a simple collection of various utilities for WSGI applications and has become one of the most advanced WSGI utility libraries. It includes: - An interactive debugger that allows inspecting stack traces and source code in the browser with an interactive interpreter for any frame in the stack. - A full-featured request object with objects to interact with headers, query args, form data, files, and cookies. - A response object that can wrap other WSGI applications and handle streaming data. - A routing system for matching URLs to endpoints and generating URLs for endpoints, with an extensible system for capturing variables from URLs. - HTTP utilities to handle entity tags, cache control, dates, user agents, cookies, files, and more. - A threaded WSGI server for use while developing applications locally. - A test client for simulating HTTP requests during testing without requiring running a server. Werkzeug doesn't enforce any dependencies. It is up to the developer to choose a template engine, database adapter, and even how to handle requests. It can be used to build all sorts of end user applications such as blogs, wikis, or bulletin boards. [Flask](https://www.palletsprojects.com/p/flask/) wraps Werkzeug, using it to handle the details of WSGI while providing more structure and patterns for defining powerful applications.

  • Versions: 25
  • Dependent Packages: 76
  • Dependent Repositories: 887
Rankings
Dependent repos count: 0.8%
Dependent packages count: 1.0%
Average: 2.3%
Forks count: 3.1%
Stargazers count: 4.3%
Last synced: 6 months ago
anaconda.org: werkzeug

Werkzeug is a WSGI utility library for Python. It's widely used and BSD licensed.

  • Versions: 18
  • Dependent Packages: 18
  • Dependent Repositories: 887
Rankings
Dependent packages count: 1.5%
Dependent repos count: 5.0%
Average: 6.3%
Forks count: 8.4%
Stargazers count: 10.2%
Last synced: 6 months ago
pypi.org: werkzeug-patched

The comprehensive WSGI web application library.

  • Versions: 2
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 42 Last month
Rankings
Dependent packages count: 9.5%
Average: 31.4%
Dependent repos count: 53.3%
Maintainers (1)
Last synced: 6 months ago

Dependencies

.github/workflows/lock.yaml actions
  • dessant/lock-threads v4 composite
.github/workflows/tests.yaml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
requirements/dev.in pypi
  • pip-compile-multi * development
  • pre-commit * development
  • tox * development
requirements/dev.txt pypi
  • build ==0.9.0 development
  • cachetools ==5.2.0 development
  • cfgv ==3.3.1 development
  • chardet ==5.1.0 development
  • click ==8.1.3 development
  • colorama ==0.4.6 development
  • distlib ==0.3.6 development
  • filelock ==3.9.0 development
  • identify ==2.5.12 development
  • nodeenv ==1.7.0 development
  • pep517 ==0.13.0 development
  • pip-compile-multi ==2.6.1 development
  • pip-tools ==6.12.1 development
  • platformdirs ==2.6.2 development
  • pre-commit ==2.21.0 development
  • pyproject-api ==1.4.0 development
  • pyyaml ==6.0 development
  • toposort ==1.7 development
  • tox ==4.2.3 development
  • virtualenv ==20.17.1 development
  • wheel ==0.38.4 development
requirements/docs.in pypi
  • Pallets-Sphinx-Themes *
  • Sphinx *
  • sphinx-issues *
  • sphinxcontrib-log-cabinet *
requirements/docs.txt pypi
  • alabaster ==0.7.12
  • babel ==2.11.0
  • certifi ==2022.12.7
  • charset-normalizer ==2.1.1
  • docutils ==0.19
  • idna ==3.4
  • imagesize ==1.4.1
  • jinja2 ==3.1.2
  • markupsafe ==2.1.1
  • packaging ==22.0
  • pallets-sphinx-themes ==2.0.3
  • pygments ==2.14.0
  • pytz ==2022.7
  • requests ==2.28.1
  • snowballstemmer ==2.2.0
  • sphinx ==6.1.1
  • sphinx-issues ==3.0.1
  • sphinxcontrib-applehelp ==1.0.2
  • sphinxcontrib-devhelp ==1.0.2
  • sphinxcontrib-htmlhelp ==2.0.0
  • sphinxcontrib-jsmath ==1.0.1
  • sphinxcontrib-log-cabinet ==1.0.1
  • sphinxcontrib-qthelp ==1.0.3
  • sphinxcontrib-serializinghtml ==1.1.5
  • urllib3 ==1.26.13
requirements/tests.in pypi
  • cryptography * test
  • ephemeral-port-reserve * test
  • greenlet * test
  • pytest * test
  • pytest-timeout * test
  • pytest-xprocess * test
  • watchdog * test
requirements/tests.txt pypi
  • attrs ==22.2.0 test
  • cffi ==1.15.1 test
  • cryptography ==39.0.0 test
  • ephemeral-port-reserve ==1.1.4 test
  • exceptiongroup ==1.1.0 test
  • greenlet ==2.0.1 test
  • iniconfig ==1.1.1 test
  • packaging ==22.0 test
  • pluggy ==1.0.0 test
  • psutil ==5.9.4 test
  • py ==1.11.0 test
  • pycparser ==2.21 test
  • pytest ==7.2.0 test
  • pytest-timeout ==2.1.0 test
  • pytest-xprocess ==0.22.2 test
  • tomli ==2.0.1 test
  • watchdog ==2.2.1 test
requirements/typing.in pypi
  • mypy *
  • types-contextvars *
  • types-dataclasses *
  • types-setuptools *
  • watchdog *
requirements/typing.txt pypi
  • mypy ==0.991
  • mypy-extensions ==0.4.3
  • tomli ==2.0.1
  • types-contextvars ==2.4.7
  • types-dataclasses ==0.6.6
  • types-docutils ==0.19.1.1
  • types-setuptools ==65.6.0.3
  • typing-extensions ==4.4.0
  • watchdog ==2.2.1
.github/workflows/publish.yaml actions
  • actions/checkout c85c95e3d7251135ab7dc9ce3241c5835cc595a9 composite
  • actions/download-artifact 9bc31d5ccc31df68ecc42ccf4149144866c47d8a composite
  • actions/setup-python bd6b4b6205c4dbad673328db7b31b7fab9e241c0 composite
  • actions/upload-artifact 0b7f8abb1508181956e8e162db84b466c27e18ce composite
  • pypa/gh-action-pypi-publish f5622bde02b04381239da3573277701ceca8f6a0 composite
pyproject.toml pypi
  • MarkupSafe >=2.1.1
requirements/build.in pypi
  • build *
requirements/build.txt pypi
  • build ==0.10.0
  • packaging ==23.1
  • pyproject-hooks ==1.0.0