Spend less time setting up and configuring your new Python packages and comply with the Netherlands eScience Center Software Development Guide from the start.
Use this Cookiecutter template to generate an empty Python package. Features include:
- Boilerplate tests and documentation,
- Python setup configuration,
- Open source software license,
- Default Github actions for building, testing and deployment
- Code style checking,
- Editorconfig,
- Miscellaneous files, such as Change log, Code of Conduct, and Contributing guidelines,
- A README and a separate document with extensive documentation about project setup.
- Continuous code quality and code coverage reporting using Sonarcloud
We recommend installing cookiecutter in user space as per cookiecutter's instructions. This way, you don't have to
install cookiecutter for every new project.
python3 -m pip install --user --upgrade cookiecutterRun cookiecutter with the template:
# Notes:
# 1. See table below for explanation of each question
# 2. The files will be generated in a new directory
cookiecutter https://github.com/nlesc/python-template.git| Name | Default value | Explanation |
|---|---|---|
| package_name | my_python_package | Name of the package. Avoid using spaces, dashes, or uppercase letters for the best experience across operating systems. |
| project_name | my-python-project | Name of the project that contains the package. Avoid using spaces or uppercase letters for the best experience across operating systems. |
| package_short_description | The information that you enter here will end up in the README, documentation, license, and setup.cfg, so it may be a good idea to prepare something in advance. | |
| version | 0.1.0 | |
| github_organization | <my-github-organization> | GitHub organization that will contain this project's repository. This can also be your GitHub user name. |
| license | Apache Software License 2.0 | The software license under which the code is made available. |
| apidoc | no | Add support for automatically generating a module index from the docstrings in your Python package (look at the scriptcwl package for an example). |
| full_name | John Smith | Your full name, e.g. John Smith. |
| yourname@esciencecenter.nl | Your (work) email address. | |
| copyright_holder | Netherlands eScience Center | Name(s) of the organization(s) or person(s) who hold the copyright of the software. |
| code_of_conduct_email | yourname@esciencecenter.nl | Email address of the person who should be contacted in case of violations of the Code of Conduct. |
Good job! You have now generated the skeleton for your package:
my-python-project/
├── CHANGELOG.md
├── CITATION.cff
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── docs
│ ├── conf.py
│ ├── index.rst
│ ├── make.bat
│ ├── Makefile
│ ├── _static
│ │ └── theme_overrides.css
│ └── _templates
├── LICENSE
├── MANIFEST.in
├── my_python_package
│ ├── __init__.py
│ ├── my_module.py
│ └── __version__.py
├── NOTICE
├── project_setup.md
├── README.md
├── setup.cfg
├── setup.py
└── tests
├── __init__.py
└── test_my_module.py
For an explanation of what's there, read on in the project_setup.md file.
Many developers have gone before you in using this template to get started quickly. Check out their projects in the list below:
- Cerise: https://github.com/MD-Studio/cerise
- cerulean: https://github.com/MD-Studio/cerulean
- cffconvert: https://github.com/citation-file-format/cff-converter-python
- fairtally: https://github.com/fair-software/fairtally
- howfairis: https://github.com/fair-software/howfairis
- matchms: https://github.com/matchms/matchms
- MUSCLE 3: https://github.com/multiscale/muscle3
- pycff: https://github.com/citation-file-format/pycff
- spec2vec: https://github.com/iomega/spec2vec
- yatiml: https://github.com/yatiml/yatiml
- ... And many more. Make a PR to add your project here!
Suggestions/improvements/edits are most welcome. Please read the contribution guidelines before creating an issue or a pull request.