muffin
Muffin is a fast, simple and asyncronous web-framework for Python 3
Science Score: 26.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
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (13.7%) to scientific vocabulary
Keywords
asgi
asyncio
curio
muffin
python
trio
webframework
Keywords from Contributors
distributed
embedded
interactive
transformers
notebook
observability
pytest
autograding
hacking
shellcodes
Last synced: 6 months ago
·
JSON representation
Repository
Muffin is a fast, simple and asyncronous web-framework for Python 3
Basic Info
Statistics
- Stars: 679
- Watchers: 29
- Forks: 24
- Open Issues: 1
- Releases: 0
Topics
asgi
asyncio
curio
muffin
python
trio
webframework
Created about 11 years ago
· Last pushed 7 months ago
Metadata Files
Readme
Changelog
Contributing
Code of conduct
Codeowners
Security
README.rst
.. image:: https://raw.github.com/klen/muffin/develop/docs/static/logo-h200.png
:height: 100px
**Muffin** – fast, lightweight, and asynchronous ASGI_ web framework for Python 3.10+.
.. image:: https://github.com/klen/muffin/workflows/tests/badge.svg
:target: https://github.com/klen/muffin/actions
:alt: Tests Status
.. image:: https://github.com/klen/muffin/workflows/docs/badge.svg
:target: https://klen.github.io/muffin
:alt: Documentation Status
.. image:: https://img.shields.io/pypi/v/muffin
:target: https://pypi.org/project/muffin/
:alt: PYPI Version
.. image:: https://img.shields.io/pypi/pyversions/muffin
:target: https://pypi.org/project/muffin/
:alt: Python Versions
----------
.. _description:
Why Muffin?
-----------
Muffin combines the simplicity of microframeworks with native ASGI_ performance, supporting multiple async libraries (Asyncio_, Trio_, Curio_) out of the box. Its rich plugin ecosystem makes building modern web applications pleasant and efficient.
Key Features
------------
- ASGI_ compatible
- Competitive performance ([Benchmarks](http://klen.github.io/py-frameworks-bench/))
- Supports Asyncio_, Trio_, and Curio_
- Multiple response types: text, HTML, JSON, streams, files, SSE, WebSockets
- First-class plugin system for templating, databases, auth, and more
.. _installation:
Installation
------------
Muffin requires **Python 3.10 or newer**. We recommend using the latest stable Python.
Install via pip:
.. code-block:: console
$ pip install muffin
For the standard installation with `gunicorn`, `uvicorn`, `uvloop`, `httptools`:
.. code-block:: console
$ pip install muffin[standard]
Dependencies
~~~~~~~~~~~~
These packages will be installed automatically:
* `ASGI-Tools`_ – ASGI toolkit
* `Modconfig`_ – hierarchical configuration manager
.. _ASGI-Tools: https://klen.github.io/asgi-tools/
.. _Modconfig: https://pypi.org/project/modconfig/
.. _quickstart:
Quickstart
----------
Create a simple "Hello User" app:
.. code-block:: python
import muffin
app = muffin.Application()
@app.route('/', '/hello/{name}')
async def hello(request):
name = request.path_params.get('name', 'world')
return f'Hello, {name.title()}!'
Save this as `example.py` and run:
.. code-block:: console
$ uvicorn example:app
Visit http://localhost:8000 or http://localhost:8000/hello/username in your browser.
.. _plugins:
Plugins
-------
Muffin has a rich ecosystem of plugins:
- [`muffin-jinja2`](https://github.com/klen/muffin-jinja2) – Jinja2 templates (asyncio/trio/curio)
- [`muffin-session`](https://github.com/klen/muffin-session) – Signed cookie-based HTTP sessions
- [`muffin-oauth`](https://github.com/klen/muffin-oauth) – OAuth integration
- [`muffin-sentry`](https://github.com/klen/muffin-sentry) – Sentry error tracking
- [`muffin-peewee`](https://github.com/klen/muffin-peewee-aio) – Peewee ORM integration
- [`muffin-babel`](https://github.com/klen/muffin-babel) – i18n support
- [`muffin-databases`](https://github.com/klen/muffin-databases) – SQL database support
- [`muffin-mongo`](https://github.com/klen/muffin-mongo) – MongoDB integration
- [`muffin-rest`](https://github.com/klen/muffin-rest) – REST API utilities
- [`muffin-redis`](https://github.com/klen/muffin-redis) – Redis integration
- [`muffin-admin`](https://github.com/klen/muffin-admin) – Auto-generated admin UI
- [`muffin-prometheus`](https://github.com/klen/muffin-prometheus) – Prometheus metrics exporter
See each repo for usage and installation instructions.
.. _benchmarks:
Benchmarks
----------
Performance comparisons are available at: http://klen.github.io/py-frameworks-bench/
.. _links:
Bug tracker
-----------
Found a bug or have a feature request? Please open an issue at:
https://github.com/klen/muffin/issues
Contributing
------------
Contributions are welcome! Please see [CONTRIBUTING.md](https://github.com/klen/muffin/blob/develop/CONTRIBUTING.md) for guidelines.
License
-------
Muffin is licensed under the MIT license.
----------
Credits
-------
**Muffin > 0.40 (completely rewritten on ASGI)**
* `Kirill Klenov `_
**Muffin < 0.40 (based on AIOHTTP_)**
* `Kirill Klenov `_
* `Andrew Grigorev `_
* `Diego Garcia `_
.. _AIOHTTP: https://docs.aiohttp.org/en/stable/
.. _ASGI: https://asgi.readthedocs.io/en/latest/
.. _Asyncio: https://docs.python.org/3/library/asyncio.html
.. _Curio: https://curio.readthedocs.io/en/latest/
.. _Python: http://python.org
.. _Trio: https://trio.readthedocs.io/en/stable/index.html
.. _MIT license: http://opensource.org/licenses/MIT
Owner
- Name: Kirill Klenov
- Login: klen
- Kind: user
- Location: Russia, Moscow
- Company: home
- Website: https://klen.github.io
- Twitter: horneds
- Repositories: 138
- Profile: https://github.com/klen
More than 10 years of experience in software engineering. Working with different programming languages and in multiple fields of IT for more than 15 years.
GitHub Events
Total
- Watch event: 13
- Push event: 11
- Create event: 3
Last Year
- Watch event: 13
- Push event: 11
- Create event: 3
Committers
Last synced: 8 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Kirill Klenov | h****s@g****m | 980 |
| Dmitry | w****e@m****u | 19 |
| Diego Garcia | d****6@g****m | 15 |
| Andrew Grigorev | a****w@e****u | 9 |
| Semyon Maryasin | s****n@m****e | 8 |
| dependabot[bot] | 4****] | 5 |
| Dmitry Veselov | d****v@y****u | 4 |
| Krukov | g****u@g****m | 3 |
| Abner Campanha | a****c@g****m | 2 |
| Marc Abramowitz | m****c@m****m | 1 |
| Nosterx Tot | n****x@g****m | 1 |
| Michael Coelho | m****o@g****m | 1 |
| Daniel Bacci | d****i@g****m | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 8 months ago
All Time
- Total issues: 35
- Total pull requests: 41
- Average time to close issues: over 1 year
- Average time to close pull requests: 26 days
- Total issue authors: 22
- Total pull request authors: 13
- Average comments per issue: 2.74
- Average comments per pull request: 1.17
- Merged pull requests: 29
- Bot issues: 0
- Bot pull requests: 7
Past Year
- Issues: 0
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- MarSoft (9)
- ei-grad (3)
- klinkin (3)
- ghost (2)
- peterbe (1)
- drgarcia1986 (1)
- scherrey (1)
- mr-mogul (1)
- nhumrich (1)
- ly0 (1)
- sugizo (1)
- rlam3 (1)
- 0nkery (1)
- pyahmed (1)
- IlyaSemenov (1)
Pull Request Authors
- drgarcia1986 (10)
- dependabot[bot] (6)
- pyup-bot (6)
- ei-grad (5)
- MarSoft (3)
- Krukov (2)
- abnerpc (2)
- dveselov (1)
- DanielBacci (1)
- Nosterx (1)
- michaeltcoelho (1)
- 0nkery (1)
- msabramo (1)
Top Labels
Issue Labels
Pull Request Labels
dependencies (5)
github_actions (5)
Packages
- Total packages: 1
-
Total downloads:
- pypi 3,922 last-month
- Total docker downloads: 210
- Total dependent packages: 18
- Total dependent repositories: 90
- Total versions: 376
- Total maintainers: 1
pypi.org: muffin
Muffin is a fast, simple and asyncronous web-framework for Python 3 (asyncio, trio, curio)
- Homepage: https://github.com/klen/muffin
- Documentation: https://klen.github.io/muffin
- License: MIT
-
Latest release: 1.1.4
published 7 months ago
Rankings
Dependent packages count: 0.6%
Dependent repos count: 1.6%
Stargazers count: 2.4%
Docker downloads count: 2.9%
Average: 3.4%
Downloads: 5.5%
Forks count: 7.7%
Maintainers (1)
Last synced:
6 months ago
Dependencies
docs/requirements.txt
pypi
- pydata-sphinx-theme *
- sphinx-copybutton *
.github/workflows/docs.yml
actions
- seanzhengw/sphinx-pages master composite
.github/workflows/release.yml
actions
- actions/checkout main composite
- actions/download-artifact main composite
- actions/setup-python main composite
- actions/upload-artifact main composite
- archive/github-actions-slack master composite
- pypa/gh-action-pypi-publish master composite
.github/workflows/tests.yml
actions
- actions/checkout main composite
- actions/setup-python main composite
- archive/github-actions-slack master composite
poetry.lock
pypi
- accessible-pygments 0.0.4
- aiofile 3.8.8
- alabaster 0.7.13
- anyio 4.0.0
- asgi-tools 0.76.0
- attrs 23.1.0
- babel 2.13.0
- beautifulsoup4 4.12.2
- caio 0.9.13
- certifi 2023.7.22
- cffi 1.16.0
- cfgv 3.4.0
- charset-normalizer 3.3.0
- click 8.1.7
- colorama 0.4.6
- curio 1.6
- distlib 0.3.7
- docutils 0.20.1
- exceptiongroup 1.1.3
- filelock 3.12.4
- gunicorn 20.1.0
- h11 0.14.0
- http-router 4.0.0
- httptools 0.6.0
- identify 2.5.30
- idna 3.4
- imagesize 1.4.1
- importlib-metadata 6.8.0
- iniconfig 2.0.0
- jinja2 3.1.2
- markupsafe 2.1.3
- modconfig 1.2.1
- multidict 6.0.4
- mypy 1.6.0
- mypy-extensions 1.0.0
- nodeenv 1.8.0
- outcome 1.2.0
- packaging 23.2
- platformdirs 3.11.0
- pluggy 1.3.0
- pre-commit 3.4.0
- pycparser 2.21
- pydata-sphinx-theme 0.14.1
- pygments 2.16.1
- pytest 7.4.2
- pytest-aio 1.5.0
- pytest-mypy 0.10.3
- python-dotenv 1.0.0
- pytz 2023.3.post1
- pyyaml 6.0.1
- requests 2.31.0
- ruff 0.0.292
- setuptools 68.2.2
- sniffio 1.3.0
- snowballstemmer 2.2.0
- sortedcontainers 2.4.0
- soupsieve 2.5
- sphinx 7.1.2
- sphinx-copybutton 0.5.2
- sphinxcontrib-applehelp 1.0.4
- sphinxcontrib-devhelp 1.0.2
- sphinxcontrib-htmlhelp 2.0.1
- sphinxcontrib-jsmath 1.0.1
- sphinxcontrib-qthelp 1.0.3
- sphinxcontrib-serializinghtml 1.1.5
- tomli 2.0.1
- trio 0.22.2
- typing-extensions 4.8.0
- ujson 5.8.0
- urllib3 2.0.6
- uvicorn 0.21.1
- uvloop 0.17.0
- virtualenv 20.24.5
- watchfiles 0.20.0
- websockets 11.0.3
- yarl 1.9.2
- zipp 3.17.0
pyproject.toml
pypi
- aiofile * develop
- pre-commit * develop
- pytest * develop
- pytest-aio * develop
- pytest-mypy * develop
- ruff * develop
- pydata-sphinx-theme * docs
- sphinx * docs
- sphinx-copybutton * docs
- asgi-tools ^0
- gunicorn ^20.1.0
- modconfig ^1
- python ^3.8
- ujson *
- uvicorn ^0.21.1