Skip to content

Latest commit

 

History

History
159 lines (116 loc) · 7.97 KB

project_setup.md

File metadata and controls

159 lines (116 loc) · 7.97 KB

Project Setup

Here we provide some details about the project setup. Most of the choices are explained in the guide. Links to the relevant sections are included below. Feel free to remove this text when the development of the software package takes off.

For a quick reference on software development, we refer to the software guide checklist.

Version control

Once your Python package is created, put it under version control! We recommend using git and github.

cd notebooks
git init
git add --all
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/puregome/notebooks

Go to https://github.com/puregome?tab=repositories and create a new repository named notebooks as an empty repository, then:

git push --set-upstream origin main

Python versions

This repository is set up with Python versions:

  • 3.6
  • 3.7
  • 3.8
  • 3.9

Add or remove Python versions based on project requirements. See the guide for more information about Python versions.

Package management and dependencies

You can use either pip or conda for installing dependencies and package management. This repository does not force you to use one or the other, as project requirements differ. For advice on what to use, please check the relevant section of the guide.

  • Runtime dependencies should be added to setup.cfg in the install_requires list under [options].
  • Development dependencies should be added to setup.cfg in one of the lists under [options.extras_require].

Packaging/One command install

You can distribute your code using PyPI. The guide can help you decide which tool to use for packaging.

Testing and code coverage

  • Tests should be put in the tests folder.
  • The tests folder contains:
    • Example tests that you should replace with your own meaningful tests (file: test_my_module.py)
  • The testing framework used is PyTest
    • PyTest introduction
    • PyTest is listed as a development dependency, and can thus be installed with pip3 install --editable .[dev]
  • Tests can be run with pytest
    • This is configured in setup.cfg
  • The project uses GitHub action workflows to automatically run tests on GitHub infrastructure against multiple Python versions
  • Relevant section in the guide

Documentation

Coding style conventions and code quality

  • Check your code style with prospector
  • You may need run pip install --editable .[dev] first, to install the required dependencies
  • You can use yapf to fix the readability of your code style and isort to format and group your imports
  • Relevant section in the guide

Continuous code quality

Package version number

  • We recommend using semantic versioning.
  • For convenience, the package version is stored in a single place: notebooks/.bumpversion.cfg. For updating the version number, make sure the dev dependencies are installed and run bumpversion patch, bumpversion minor, or bumpversion major as appropriate.
  • Don't forget to update the version number before making a release!

Publish on Python Package Index (PyPI)

To publish your package on PyPI, you need to create a PyPI API token and save it as a secret called PYPI_TOKEN on Settings page

Creating a release on GitHub will trigger a GitHub action workflow to publish the release on PyPI for you.

Logging

  • We recommend using the logging module for getting useful information from your module (instead of using print).
  • The project is set up with a logging example.
  • Relevant section in the guide

CHANGELOG.md

CITATION.cff

  • To allow others to cite your software, add a CITATION.cff file
  • It only makes sense to do this once there is something to cite (e.g., a software release with a DOI).
  • Follow the making software citable section in the guide.

CODE_OF_CONDUCT.md

CONTRIBUTING.md

MANIFEST.in

NOTICE