diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..2d2f692 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,53 @@ +name: Bug report +description: Report incorrect behavior or a crash in scoringrules +labels: ["bug"] +body: + - type: markdown + attributes: + value: | + Thanks for reporting! scoringrules runs the same scoring code across + multiple array backends, so the backend and versions below are essential. + - type: textarea + id: what-happened + attributes: + label: What happened? + description: What did you observe, and what did you expect instead? + placeholder: "crps_ensemble returns NaN where a finite score is expected…" + validations: + required: true + - type: textarea + id: reproducer + attributes: + label: Minimal reproducer + description: A self-contained snippet that triggers the bug. + render: python + validations: + required: true + - type: dropdown + id: backend + attributes: + label: Backend + description: Which array backend exhibits the bug? + multiple: true + options: + - numpy + - numba + - jax + - torch + validations: + required: true + - type: input + id: python-version + attributes: + label: Python version + placeholder: "3.13" + validations: + required: true + - type: input + id: sr-version + attributes: + label: scoringrules version + description: "Output of `python -c 'import scoringrules; print(scoringrules.__version__)'`" + placeholder: "0.10.0" + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..3ba13e0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1 @@ +blank_issues_enabled: false diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..751e651 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,24 @@ +name: Feature request +description: Suggest a new score, backend, or capability +labels: ["enhancement"] +body: + - type: textarea + id: problem + attributes: + label: Problem / motivation + description: What are you trying to do that scoringrules doesn't support today? + validations: + required: true + - type: textarea + id: proposal + attributes: + label: Proposed solution + description: What would the API or behavior look like? Cite a reference if it's a known scoring rule. + validations: + required: false + - type: textarea + id: alternatives + attributes: + label: Alternatives considered + validations: + required: false diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..79dc1e0 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,10 @@ +## Summary + + + +## Checklist + +- [ ] Tests pass across all backends — `uv sync --all-extras --dev` then `uv run pytest tests/` (exercises every installed backend: numpy, numba, jax, torch) +- [ ] New/changed numerics touch both the array-API and numba paths where applicable +- [ ] Docs / docstrings updated if public behavior changed +- [ ] A release-note label is applied (`breaking`, `feature`, `fix`, `backend`, `docs`, or `ci`) diff --git a/.github/labeler.yml b/.github/labeler.yml new file mode 100644 index 0000000..03994b2 --- /dev/null +++ b/.github/labeler.yml @@ -0,0 +1,26 @@ +core: + - changed-files: + - any-glob-to-any-file: + - "scoringrules/_*.py" + - "scoringrules/core/**" + +docs: + - changed-files: + - any-glob-to-any-file: + - "docs/**" + - "**/*.md" + +"backend:jax": + - changed-files: + - any-glob-to-any-file: + - "scoringrules/backend/jax.py" + +"backend:torch": + - changed-files: + - any-glob-to-any-file: + - "scoringrules/backend/torch.py" + +ci: + - changed-files: + - any-glob-to-any-file: + - ".github/**" diff --git a/.github/release.yml b/.github/release.yml new file mode 100644 index 0000000..1fe9176 --- /dev/null +++ b/.github/release.yml @@ -0,0 +1,27 @@ +changelog: + categories: + - title: Breaking changes + labels: + - breaking + - title: New features + labels: + - feature + - enhancement + - title: Bug fixes + labels: + - fix + - bug + - title: Backend-specific + labels: + - backend + - "backend:jax" + - "backend:torch" + - title: Documentation + labels: + - docs + - title: CI / tooling + labels: + - ci + - title: Other changes + labels: + - "*" diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml new file mode 100644 index 0000000..4711abd --- /dev/null +++ b/.github/workflows/labeler.yml @@ -0,0 +1,13 @@ +name: Labeler + +on: [pull_request_target] + +permissions: + contents: read + pull-requests: write + +jobs: + label: + runs-on: ubuntu-latest + steps: + - uses: actions/labeler@v5