Package: bouillon
Bouillon contains; a) a project structure, b) a Command Line Interface (CLI)
for building, testing, etc., that are easy to adapt and, c) a module that
provides helper functionality when writing your cli.The idea is that you together with your project ship a program that assist the
developers to setup a development environment, run tests, release the project,
and other tedious tasks, helping you to;Reduce time spent on repetetive tasks.Guareentee a well defined development environement, reducing human error.Simplify setup of CI/CD, as the same commands locally and remotely.FeaturesThe cli provides various useful functionality using various projects, e.g.:Pep8 syntax enforcement.Static Code Analysis.Verification of installed dependencies against requirements.Verification of licenses in included modules.Execution of unit tests.Coverage of unit tests.API documentation.Updating of dependencies.Getting Startedgit clone git@github.com:janusheide/bouillon.git
cd bouillon

python boil --helpWill pip install packages, a venv is recommended:python boil setup
python boil testStart A New ProjectYou can usethisrepository as a template,use repository as a template guide.Alternatively a more manual approach could be something like the following,
where new_project is a empty git repository.Clone the repository and remove the history:git clone git@github.com:janusheide/bouillon.git
cd bouillon
rm -rf .gitCopy the project structure into your existing (empty) git repository:cp -r * ../new_project
cd ../new_project/
git add .
git commit -m 'Initial commit'
git pushYou should now have a project with the following structure, and should modify
as indicated below:├── boil -> cicd/boil.py
├── cicd (modify)
│   ├── boil.py
│   ├── licenses.ini
│   ├── mypy.ini
│   └── requirements.txt
├── LICENSE.txt (replace)
├── NEWS.rst (replace)
├── README.rst (replace)
├── setup.py (modify)
├── src (replace)
│   ├── bouillon
│   │   ├── bouillon.py
│   │   ├── __init__.py
│   │   └── requirements.txt
└── test (replace)
    ├── cicd
    │   └── test_boil_cli.py
    ├── requirements.txt
    └── src
        ├── test_bouillon.py
        └── test___init__.pyAt some point it might be convenient to forkthisrepository, make any changes
you need and use that as your template repository.Ways of InclusionYou can include the bouillon module in a number of ways in your script, below
are some options prioritized options.Pip Install During Setup StepInstall the module using Pip. This requires that the initial setup step can be
executed without importing the module.Pip Install Prior to Executing ScriptInstall the module prior to running any script commands, this adds an extra
step and consequently the scriptsetup steponly partly setup the environment.Copy Module FileCopy the module implementation (bouillon.py) into your project and import it
from the local file in your script. Consequently you will have to manually
update the module or implement a way to push a new module version into your
repository.Copy Module Source Into CLI fileCopy the module implementation or the functionality you need into your cli file.
While it is simple but even more inconvenient to keep the module functionality
up to date.LoggingSupports standard log levels; DEBUG, INFO, WARING, ERROR, CRITICAL, and writing
log to a file.Set the log level todebug:python boil --log-level=DEBUG testSet the log level todebugand redirect output from executed commands tobar.log:python boil --log-level=DEBUG test >> bar.logSet the log level todebugand redirect output from executed commands tobar.logand log information tofoo.log:python boil --log-level=DEBUG --log-file=foo.log test >> bar.logSet the log level todebugand redirect output from executed commands and
log information tofoo.log:python boil --log-level=DEBUG --log-file=foo.log test >> foo.logGoalsThe primary use is intended for, but not limited to, projects with frequently
releases, e.g. ML models and services.
The goal is to make it quick and easy to set up a new project with the basic
testing and releasing functionality.User FriendlinessMake the life of the user easier.Use plain Python and modules that many are familiar with.Quick and easy to setup and run repetitive tasks.All tasks should be equally easy to rin locally as in a CI/CD environement.ReproducibilityResults and builds should be easy to reproduce.All dependencies must be hard (versioned).The master should always be green.SimplicitySimplicity over features.Components should be easy to replace.AutomationReduce maintenance, repetitive tasks, and human errors.Easy to upgrade dependencies.Use merge policies and triggered and scheduled events.