-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 7e9249c
Showing
20 changed files
with
903 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
node: $Format:%H$ | ||
node-date: $Format:%cI$ | ||
describe-name: $Format:%(describe:tags=true,match=*[0-9]*)$ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
.git_archival.txt export-subst |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
See the [Scientific Python Developer Guide][spc-dev-intro] for a detailed | ||
description of best practices for developing scientific packages. | ||
|
||
[spc-dev-intro]: https://learn.scientific-python.org/development/ | ||
|
||
# Quick development | ||
|
||
The fastest way to start with development is to use nox. If you don't have nox, | ||
you can use `pipx run nox` to run it without installing, or `pipx install nox`. | ||
If you don't have pipx (pip for applications), then you can install with | ||
`pip install pipx` (the only case were installing an application with regular | ||
pip is reasonable). If you use macOS, then pipx and nox are both in brew, use | ||
`brew install pipx nox`. | ||
|
||
To use, run `nox`. This will lint and test using every installed version of | ||
Python on your system, skipping ones that are not installed. You can also run | ||
specific jobs: | ||
|
||
```console | ||
$ nox -s lint # Lint only | ||
$ nox -s tests # Python tests | ||
$ nox -s docs -- --serve # Build and serve the docs | ||
$ nox -s build # Make an SDist and wheel | ||
``` | ||
|
||
Nox handles everything for you, including setting up an temporary virtual | ||
environment for each run. | ||
|
||
# Setting up a development environment manually | ||
|
||
You can set up a development environment by running: | ||
|
||
```bash | ||
python3 -m venv .venv | ||
source ./.venv/bin/activate | ||
pip install -v -e .[dev] | ||
``` | ||
|
||
If you have the | ||
[Python Launcher for Unix](https://github.com/brettcannon/python-launcher), you | ||
can instead do: | ||
|
||
```bash | ||
py -m venv .venv | ||
py -m install -v -e .[dev] | ||
``` | ||
|
||
# Pre-commit | ||
|
||
You should prepare pre-commit, which will help you by checking that commits pass | ||
required checks: | ||
|
||
```bash | ||
pip install pre-commit # or brew install pre-commit on macOS | ||
pre-commit install # Will install a pre-commit hook into the git repo | ||
``` | ||
|
||
You can also/alternatively run `pre-commit run` (changes only) or | ||
`pre-commit run --all-files` to check even without installing the hook. | ||
|
||
# Testing | ||
|
||
Use pytest to run the unit checks: | ||
|
||
```bash | ||
pytest | ||
``` | ||
|
||
# Coverage | ||
|
||
Use pytest-cov to generate coverage reports: | ||
|
||
```bash | ||
pytest --cov=primchem-experiments | ||
``` | ||
|
||
# Building docs | ||
|
||
You can build the docs using: | ||
|
||
```bash | ||
nox -s docs | ||
``` | ||
|
||
You can see a preview with: | ||
|
||
```bash | ||
nox -s docs -- --serve | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
version: 2 | ||
updates: | ||
# Maintain dependencies for GitHub Actions | ||
- package-ecosystem: "github-actions" | ||
directory: "/" | ||
schedule: | ||
interval: "weekly" | ||
groups: | ||
actions: | ||
patterns: | ||
- "*" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
changelog: | ||
exclude: | ||
authors: | ||
- dependabot | ||
- pre-commit-ci |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
name: CD | ||
|
||
on: | ||
workflow_dispatch: | ||
pull_request: | ||
push: | ||
branches: | ||
- main | ||
release: | ||
types: | ||
- published | ||
|
||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.ref }} | ||
cancel-in-progress: true | ||
|
||
env: | ||
# Many color libraries just need this to be set to any value, but at least | ||
# one distinguishes color depth, where "3" -> "256-bit color". | ||
FORCE_COLOR: 3 | ||
|
||
jobs: | ||
dist: | ||
name: Distribution build | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- uses: hynek/build-and-inspect-python-package@v2 | ||
|
||
publish: | ||
needs: [dist] | ||
name: Publish to PyPI | ||
environment: pypi | ||
permissions: | ||
id-token: write | ||
attestations: write | ||
contents: read | ||
runs-on: ubuntu-latest | ||
if: github.event_name == 'release' && github.event.action == 'published' | ||
|
||
steps: | ||
- uses: actions/download-artifact@v4 | ||
with: | ||
name: Packages | ||
path: dist | ||
|
||
- name: Generate artifact attestation for sdist and wheel | ||
uses: actions/[email protected] | ||
with: | ||
subject-path: "dist/*" | ||
|
||
- uses: pypa/gh-action-pypi-publish@release/v1 | ||
with: | ||
# Remember to tell (test-)pypi about this repo before publishing | ||
# Remove this line to publish to PyPI | ||
repository-url: https://test.pypi.org/legacy/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
name: CI | ||
|
||
on: | ||
workflow_dispatch: | ||
pull_request: | ||
push: | ||
branches: | ||
- main | ||
|
||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.ref }} | ||
cancel-in-progress: true | ||
|
||
env: | ||
# Many color libraries just need this to be set to any value, but at least | ||
# one distinguishes color depth, where "3" -> "256-bit color". | ||
FORCE_COLOR: 3 | ||
|
||
jobs: | ||
pre-commit: | ||
name: Format | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
- uses: actions/setup-python@v5 | ||
with: | ||
python-version: "3.x" | ||
- uses: pre-commit/[email protected] | ||
with: | ||
extra_args: --hook-stage manual --all-files | ||
- name: Run PyLint | ||
run: pipx run nox -s pylint -- --output-format=github | ||
|
||
checks: | ||
name: Check Python ${{ matrix.python-version }} on ${{ matrix.runs-on }} | ||
runs-on: ${{ matrix.runs-on }} | ||
needs: [pre-commit] | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
python-version: ["3.8", "3.12"] | ||
runs-on: [ubuntu-latest, windows-latest, macos-14] | ||
|
||
include: | ||
- python-version: "pypy-3.10" | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- uses: actions/setup-python@v5 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
allow-prereleases: true | ||
|
||
- name: Install package | ||
run: python -m pip install .[test] | ||
|
||
- name: Test package | ||
run: >- | ||
python -m pytest -ra --cov --cov-report=xml --cov-report=term | ||
--durations=20 | ||
- name: Upload coverage report | ||
uses: codecov/[email protected] | ||
with: | ||
token: ${{ secrets.CODECOV_TOKEN }} |
Oops, something went wrong.