####### .. |title| replace:: scikit-package documentation | Software version |release|. | Last updated |today|. 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. Who are using ``scikit-package``? ---------------------------------- The full list of packages is as follows: - `diffpy.pdffit2 `_ - `diffpy.fourigui `_ - `diffpy.pdfgui `_ - `diffpy.utils `_ - `diffpy.structure `_ - `diffpy.labpdfproc `_ - `diffpy.pdfmorph `_ - `diffpy.snmf `_ - `diffpy.srmise `_ - `regolith `_ - `bg-mpl-stylesheets `_ What are the useful features? ----------------------------- To help increase your research impact, ``scikit-package`` offers the following features: - Automated `PEP8 `_ and `PEP256 `_ standard checks. - 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 with ``pre-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 :ref:`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 :ref:`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. ======= Authors ======= - Sangjoon Lee (sl5400@columbia.edu) - Andrew Yang (ay2546@columbia.edu) - Simon Billinge (sb2896@columbia.edu) scikit-package is developed by Billinge Group and its community contributors. For a detailed list of contributors, see https://github.com/Billingegroup/scikit-package/graphs/contributors. ================ 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 ================= .. toctree:: :maxdepth: 2 getting-started migration-guide new-project-guide release-guide conda-forge-guide frequently-asked-questions license release ======= Indices ======= * :ref:`genindex` * :ref:`search`