python_ml_template
First actions:
When setting up the repo (and potentially also the venv) from scratch, a few one-time actions are needed:
- install pip dependencies
pre-commit install --install-hooks -t pre-commit -t commit-msg
git config branch.master.mergeOptions "--squash
- Activate gh-pages web (otherwise the CI release will error here).
Features:
The following things are already integrated via CI, but can be run manually:
-
Utest: python -m unittest
-
utest with py coverage: coverage run -m unittest
-
flake8
-
all
-
using pre-commit, added commitizen to pre-commit (remember to
pre-commit install --install-hooks -t pre-commit -t commit-msg
). This enforces "conventional commits" style: https://www.conventionalcommits.org/en/v1.0.0/#summary To commit, reecommended topip install commitizen
and then commit using:cz c
(orcz c --retry
if the last one failed). -
docs from scratch:
- Add docs folder and requirements.txt with
sphinx
andsphinx-rtd-theme
- Add docs folder and requirements.txt with
-
Centralized version and metadata. Setup works with very few parameters
-
To enforce squash merging to master, issue
git config branch.master.mergeOptions "--squash"
(info: https://stackoverflow.com/a/37828622) -
GH pages action. Make sure that the repo server has publishing enabled, otherwise it will error.
-
PyPI: need a regular and a test account. Create a token for GH actions (if global only need to do this once). Then, in the GH repo, add that token under secrets->pypi. https://pypi.org/manage/account/token/
Further feature ideas/TODOs:
- TUT init check_installation
- autoimports in each init
- dcase test tools
- pylintrc?
- custom "asteroid" sphinx theme
- mypy (not needed in research code)
- gitignore.io
- dependabot https://dependabot.com/github-actions/
- Ignore commits in changelog: https://github.com/conventional-changelog/conventional-changelog/issues/342
- Deploy to conda-forge
- change docstring style to napoleon
- add doctest
- Add changelog to autodocs
- Integrate wiki. Add wiki to autodocs
- Autocomment: https://github.com/marketplace/actions/label-commenter
TODO:
- CML+ Complete ML project
- Generalize runner to GPU, home and GitLab