Netherlands eScience Center Python Template

RSD Appveyor Build Status DOI

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:

The file structure of the generated package looks like:

path/to/package/
├── .editorconfig
└── .github/
    └── workflows
        ├── build.yml
        └── pypi_deploy.yml
├── .gitignore
├── .prospector.yml
├── CHANGELOG.rst
├── CODE_OF_CONDUCT.rst
├── CONTRIBUTING.rst
├── docs
│   ├── conf.py
│   ├── index.rst
│   └── ...
├── LICENSE
├── MANIFEST.in
├── NOTICE
├── package
│   ├── __init__.py
│   ├── __version__.py
│   └── package.py
├── README.rst
├── project_setup.rst
├── requirements.txt
├── setup.cfg
├── setup.py
└── tests
    ├── __init__.py
    ├── test_lint.py
    └── test_package.py

How to use

We recommend developing your software in an isolated Python environment and assume you are familiar with either virtualenv + pip or conda (check the guide if you are not).

Step 1: Install cookiecutter

We recommend installing cookiecutter outside the virtual environment you will be using for developing your software. This way, you don't have to install cookiecutter for every new project.

Step 2: Generate the files and directory structure

To create a new package, type:

cookiecutter https://github.com/nlesc/python-template.git

You will be asked to supply the following information:

Name Default value Explanation
project_name My Python Project Full project/package name.
project_slug my_python_project This will be the name of the directory to be created and the git repository. It is safest not to use dashes (-) or spaces in this name.
project_short_description The information that you enter here will end up in the README, documentation, license, and setup.py, so it may be a good idea to prepare something in advance.
version 0.1.0
github_organization GitHub organization that will contain this project's repository. This can also be your github user name.
open_source_license Apache 2.0 (1) The software license under which the code is made available.
apidoc no (1) 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.
email yourname@esciencecenter.nl Your (work) email address
copyright_holder Name(s) of the organization(s) or person(s) who hold the copyright of the software (e.g., Netherlands eScience Center).
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.

Step 3: Create and activate a Python environment

Continuous integration with Github Actions

The template has two Ci workflows. They can be found in .github/workflows folder.

  1. build.yml

This workflow install the dependencies, builds the package and runs tests.

  1. pypi.yml

This workflow pushes the package to PYPI. This action will require PYPI token to be stored as Github secret. The workflow uses secret with a name of PYPI_TOKEN.

You can learn more about Python packaging at this link.

How to contribute

Suggestions/improvements/edits are most welcome. Please read the contribution guidelines before creating an issue or a pull request.