muffin

Muffin is a fast, simple and asyncronous web-framework for Python 3

https://github.com/klen/muffin

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
  • Host: GitHub
  • Owner: klen
  • Language: Python
  • Default Branch: develop
  • Homepage:
  • Size: 9.33 MB
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

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

All Time
  • Total Commits: 1,049
  • Total Committers: 13
  • Avg Commits per committer: 80.692
  • Development Distribution Score (DDS): 0.066
Past Year
  • Commits: 9
  • Committers: 1
  • Avg Commits per committer: 9.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email 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)

  • Versions: 376
  • Dependent Packages: 18
  • Dependent Repositories: 90
  • Downloads: 3,922 Last month
  • Docker Downloads: 210
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