web framework based on Asyncio stack
Project description
The Muffin – A web framework based on Asyncio stack. (early alpha)
Requirements
python >= 3.3
Installation
The Muffin should be installed using pip:
pip install muffin
Usage
See sources of example application.
Run example server:
$ make run
Configuration
Muffin gets configuration options from python files. By default the package tries to load a configuration from config module (config.py).
There are few ways to redifine configuration module:
Set configuration module in your app initialization:
app = muffin.Application('myapp', CONFIG='config.debug')
Set environment variable MUFFIN_CONFIG:
$ MUFFIN_CONFIG=settings_local python -m example.app runserver
Also you can define any options while initializing your application:
app = muffin.Application('myapp', DEBUG=True, ANY_OPTION='Here', ONE_MORE='Yes')
When using gmuffin (see bellow):
$ gmuffin -c example.config.debug example.app:app
Base application options
Base Muffin options and default values:
# Configuration module 'CONFIG': 'config', # Enable debug mode 'DEBUG': False, # List of enabled plugins 'PLUGINS': ( 'muffin.plugins.manage:ManagePlugin', 'muffin.plugins.jade:JadePlugin', 'muffin.plugins.peewee:PeeweePlugin', 'muffin.plugins.session:SessionPlugin', ), # Setup static files in development 'STATIC_PREFIX': '/static', 'STATIC_ROOT': 'static',
CLI integration
Add the next lines to end of your application file:
if __name__ == '__main__': app.plugins.manage()
Run in your shell:
$ python -m path.to.your.app.module --help
Write a custom command
@app.plugins.manage.command def hello_world(option=None, boolean_options=False): print('Hello world!')
Templates (Jade)
Use jade.render in your handlers:
@app.view('/') def hello(request): return (yield from app.plugins.jade.render( 'index.jade', user=request.session.get('user', 'anonimous')))
The syntax is:
jade.render(TEMPLATE_NAME, **CUSTOM_CONTEXT)
Add default context provider:
@jade.ctx_provider def my_context(): """ Could be a coroutine. """ return { ... }
Sessions
SQL (Peewee)
Migrations
Create migrations:
$ python -m path.to.your.app create [NAME]
Run migrations:
$ python -m path.to.your.app migrate [NAME]
Testing
Set module path to your Muffin Application in pytest configuration file or use command line option --muffin-app.
Example:
$ py.test -xs --muffin-app example.app:app
Deployment
Use gmuffin command. By example:
$ gmuffin --reload -w 4 example.app:app
See gmuffin --help for more info.
Bug tracker
If you have any suggestions, bug reports or annoyances please report them to the issue tracker at https://github.com/klen/muffin/issues
Contributing
Development of The Muffin happens at: https://github.com/klen/muffin
Contributors
klen (Kirill Klenov)
License
Licensed under a MIT license (See LICENSE)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for muffin-0.0.10-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f816ff27e0ae650383bed809fabb2fa0fe5d695502ab8515e2bc8381f18651b0 |
|
MD5 | 5391e381500175c6a81f4edaae789af0 |
|
BLAKE2b-256 | 6448128a3a82381647e2a1b5ca3fcfb929410184bff578eaa745703b9cd237ae |