skip to navigation
skip to content

sushi 0.2.7

Python package bundler

Latest Version: 0.3.5


Sushi is Python package builder. Enough to create same package structure everytime. Create custom recipes for Flask, Django, etc...

- Deploy the same everytime
- Make specific recipe for Flask, Django, ...
- Use helpers to not waste time
- Auto ``virtualenv`` for best dev
- Auto ``git init`` your package
- And more !

Sushi support helper(extensions) and there are easy to create. There are already some extension, like ``git``, ``license``.

Quick start



pip install sushi

Meet the cookchef

If it's the first time your run Sushi, your cookbook is certainly empty. You
can easily learn a basic recipe like that:


sushi learn http+
:: Learn given recipe
-> Download file
-> Clean
:: Done

First sushi


sushi craft My-Package
:: Craft your project
-> Recipe: advanced
:: Call helpers
-> license
-> git
Initialized empty Git repository in /Users/socketubs/My-Package/.git/
-> virtualenv
:: Done


Take a look at your configuration file: ``~/.sushi/sushi.conf``.

Create your own recipe


Recipes are simple ``.tar.gz`` archives with a basic python package
structure but with ``Jinja2`` code inside your files.

How to

This is a tree sample of my `advanced <https:"" socketubs="" sushi-recipes="" tree="" master="" advanced="">`_ recipe:


tree advanced
├── .gitignore
├── __app__
│ ├──
│ ├──
│ ├──
│ └──
├── bin
│ └── __app__

Take a quicklook of this `recipes <https:"" socketubs="" sushi-recipes="" tree="" master="" advanced="">`_ files.

There is just one keyword to know for filename: ``__app__`` will be
replace by your formatted module name.

And for file rendering:

===================== =============
Keyword Value
--------------------- -------------
{{ name }} Your app name
{{ module }} Your app name formated to be a valid module
{{ license }} Your favorite license (according to `OpenDefinition <http:"" licenses="" groups="" all.json="">`_)
{{ license_content }} Url to favorite license
{{ username }} Operating system username
{{ firstname }} Your firstname
{{ lastname }} Your lastname
{{ year }} Year
{{ day }} Day
{{ month }} Month
{{ hour }} Hour
{{ minute }} Minute
{{ second }} Second
{{ date }} Date (2012-09-01 16:55)
===================== =============

And every values you can add to your configuration file under
``settings`` section.

By the way, Sushi use `Jinja2 <http:"">`_ for rendering.

Create your own helpers


Helpers are Sushi extensions, they will be run **after** complete
rendering of your recipes.

How to

You module name must be ``sushi_ext_name`` and it will be call like that
````, wich ``dst`` is the path where recipe will
be renderer.

Your helper can use ``sushi.core`` api like that:


>>> from sushi.core import conf
>>> conf.get('settings', 'license')
>>> conf.get('paths', 'sushi_recipes')
>>> from sushi.env import get_env
>>> get_env('my_package')
{'username': 'socketubs',
'license_content': u''
'hour': 21, 'day': 2, 'minute': 0, 'month': 9, 'second': 4, 'year': 2012,
'firstname': '## Set firstname',
'lastname': '## Set lastname',
'module': 'my_package',
'date': '2012-09-02 21:00',
'name': 'my_package',
'license': 'agpl-v3',
'email': '## Set email'}

And of course ``conf`` object is ``ConfigParser``, so you can ask your
helper users to set variables in their configuration file.


There is one sushi recipe for helper that you can found `here <https:"" socketubs="" sushi-recipes="" raw="" master="" helper.tar.gz="">`_.

You can find two examples on Github.

- `Sushi-git <https:"" socketubs="" sushi-git="">`_
- `Sushi-license <https:"" socketubs="" sushi-license="">`_


License is `AGPL3`_. See `LICENSE`_.

.. _recipes:
.. _helpers:
.. _AGPL3:



- Starter if no template detected
- Confirm on del
- Add –template option on init
- Add default and advanced examples in templates dir
- Released on pypi
- New extension system


- Initial release
- Add/Del/List templates
- Init packages  
File Type Py Version Uploaded on Size
sushi-0.2.7.tar.gz (md5) Source 2012-09-22 10KB
  • Author: Geoffrey Lehee
  • Home Page:
  • Keywords: sushi package python linux
  • License:
    Copyright (C) 2012 Geoffrey Lehée []
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License as
    published by the Free Software Foundation, either version 3 of the
    License, or (at your option) any later version.
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    GNU Affero General Public License for more details.
    You should have received a copy of the GNU Affero General Public License
    along with this program.  If not, see <>.
  • Package Index Owner: socketubs
  • DOAP record: sushi-0.2.7.xml