scikit-package documentation
Welcome to Billinge Group’s Python scikit-package documentation!
Statement of need
Your research impact can be amplified by distributing your contributions through well-documented software packages. However, creating these packages requires time dedicated to software infrastructure and ongoing maintenance. scikit-package
is a Python package standard and generator that helps you launch new scientific code or migrate existing ones.
scikit-package
provides research-quality documents suitable for open-source development and supports Python versions compatible with the SPEC0 proposal through automated workflows. Additionally, it offers a streamlined process for building and distributing your scientific software, ensuring reproducibility across all major operating systems. With scikit-package
, you can focus on developing your scientific code while ensuring it reaches a broader audience.
What are the useful features?
To help increase your research impact, scikit-package
offers the following features:
Automated PyPI/GitHub release, testing, documentation, and CHANGELOG updates.
Streamlined package release workflow with a checklist.
Latest Python version support compatible with SPEC0.
Rich README template containing badges, installation, support, and contribution guide.
Automatic spelling check, linting for .json, .yml, and .md files.
For more technical details, it includes:
Pull requests with coverage reports using
Codecov
and checks withpre-commit CI
.Namespace package support, e.g.,
import diffpy.utils
.conda-package
meta.yaml
generation with a template.Support for non-pure Python package releases with
cibuildwheel
.Support for headless GitHub CI testing for GUI applications.
Reusable GitHub Actions workflows located in Billingegroup/release-scripts.
How do I get started?
Please visit the Getting started page to learn how to navigate the documentation!
How do I receive support?
If you have any questions or have trouble, please read the Frequently asked questions (FAQ) section to see if your questions have already been answered. If there aren’t answers available, please create an issue. The team will reach out.
How can I contribute?
Do you have any new features? Please make an issue via the GitHub issue tracker for further discussions. For a minor typo or grammatically incorrect sentence, please make a pull request. Before making a PR, please run pre-commit run --all-files
to ensure the code is formatted.
Who are using scikit-package
?
The full list of packages is as follows:
Acknowledgements
The Billinge Group’s scikit-package has been modified from the NSLS-II scientific cookiecutter: https://github.com/nsls-ii/scientific-python-cookiecutter
Table of contents
- Getting started
- How to standarlize your Python project with scikit-package
- Installation
- Overview
- Tips and how to receive support
- 1. Pre-commit workflow
- 2. scikit-package main workflow
- 3. API documentation workflow
- 4. Final sign-off
- Appendix 1. How to test your package locally
- Appendix 2. How to build documentation locally
- Appendix 3. How to write
<branch-name>.rst
news file - Appendix 4. Codecov token setup for the repository
- Appendix 5. How to configure pre-commit CI via GitHub Apps
- Appendix 6. How to setup GitHub Pages for your package
- How to release Python package
- How to release conda-forge package
- I already have a conda-forge feedstock. I want to release a new package version. How do I do that?
- I am new to conda-forge. How do I create a conda package?
- Use the conda-forge feedstock to release a new version
- Appendix 1. How do I do pre-release?
- Appendix 2. Add a new admin to the conda-forge feedstock
- Appendix 3. Background info on
meta.yml
- Frequently asked questions (FAQ)
- License
- Release Notes