This lesson is being piloted (Beta version)

Packaging: Glossary

Key Points

Environments and task runners
  • Virtual environments isolate software

  • Virtual environments solve the update problem

  • A task runner makes it easier to contribute to software

Python to package
  • Use a pyproject.toml file to describe a Python package

Other files that belong with your package
  • In addition to the source code and project specification, packages should include a README, LICENSE, and changelog.

  • Do not create a custom software license or modify an existing license; instead, choose from the list of available licenses.

  • You can also include .gitignore to avoid from committing non-source files and .pre-commit-config.yaml to automatically check simple issues with your code before committing it.

Metadata
  • There are a variety of useful bits of metadata you should add.

Versioning
  • SemVer is an abbreviated changelog

  • SemVer is not the solution to all problems

  • Packages should have a version attribute

  • You can single source your version

Documentation
  • Sphinx is used for documentation

Checks and tests
  • Run tests and static checks on your codebase.

CI with GitHub Actions
  • Set up GitHub Actions on your project

Publishing package and citation
  • CI can publish Python packages

  • Tagging and GitHub Releases are used to publish versions

  • Zenodo and CITATION.cff are useful for citations

Glossary

FIXME