Required checks passing
75%
15 of 20 scored
Failing
4
required checks
Unreadable
0
needs more permissions
Python package to perform enrichment analysis from omics data.
- Default branch
main- PyPI
- decoupler 2.3.1
- Read the Docs
- decoupler
- Template
- up to date with v0.8.0
Template
| Check | Tier | Detail | Fix | |
|---|---|---|---|---|
| ✓ |
Uses cookiecutter-scverse
template/cruft — .cruft.json exists and names the scverse template |
required | Generated from cookiecutter-scverse | open |
| ✓ |
Template up to date
template/up-to-date — .cruft.json commit matches the latest cookiecutter-scverse release |
required | On the latest template release (v0.8.0) | open |
| ✓ |
src layout + hatchling
template/src-layout — Builds with hatchling from a src/ layout |
recommended | hatchling, src layout | open |
| ✗ |
pre-commit.ci enabled
template/pre-commit-ci — pre-commit.ci runs on pull requests |
recommended | No pre-commit.ci check run on the default branch | open |
| ✓ |
codecov configured
template/codecov — A codecov config or a codecov check run exists |
recommended | .codecov.yaml present |
open |
| ✓ |
Default branch is main
template/default-branch — The default branch is called main |
recommended | Default branch is main |
open |
| ✓ |
Listed in packages.json
template/packages-json — Listed in scverse.org's ecosystem index, under a category the dashboard knows |
informational | Listed under core-framework | open |
Documentation
| Check | Tier | Detail | Fix | |
|---|---|---|---|---|
| ✓ |
.readthedocs.yaml present
docs/readthedocs-yaml — A .readthedocs.yaml build config is committed |
required | .readthedocs.yaml present |
open |
| ✓ |
RTD project points here
docs/rtd-linked — The Read the Docs project of the same slug builds *this* repository |
required | RTD decoupler builds scverse/decoupler |
open |
| ✓ |
≥2 core devs on RTD
docs/rtd-core-devs — At least two scverse core devs can administer the RTD project |
required | 2 of 3 maintainers are core devs (flying-sheep, PauBadiaM) | open |
| ! |
Docs on *.scverse.org
docs/scverse-domain — Documentation is served from <package>.scverse.org, not readthedocs.io |
required | decoupler.scverse.org, but decoupler.readthedocs.io is still advertised | open |
| ✓ |
Stable RTD build passed
docs/rtd-build — The most recent build of the stable version succeeded |
recommended | stable built from 27a1be7 on 2026-10-26 |
open |
Packaging
| Check | Tier | Detail | Fix | |
|---|---|---|---|---|
| ✓ |
PyPI project owned by scverse
packaging/pypi-org — ownership.organization on PyPI is the scverse org |
required | Owned by the scverse PyPI organization |
open |
| ✓ |
Trusted publishing
packaging/trusted-publishing — The latest release carries PEP 740 attestations naming this repo's workflow |
required | 2.3.1 published by scverse/decoupler/.github/workflows/release.yaml |
open |
| ✓ |
Release workflow hardened
packaging/release-workflow — Publishes via pypa/gh-action-pypi-publish with id-token: write, no password, in an environment |
required | .github/workflows/release.yaml publishes via OIDC from an environment |
open |
| ✗ |
SPEC 0 minimum Python
packaging/spec0-python — requires-python has dropped the Python versions SPEC 0 has dropped |
required | requires-python = ">=3.12" still allows 3.12; SPEC 0 is at 3.13 |
open |
| ✓ |
Immutable releases enabled
packaging/immutable-releases — The repository has immutable releases turned on |
required | Immutable releases enabled | open |
| ✗ |
Recent releases immutable
packaging/releases-immutable — The last few published releases are actually marked immutable |
recommended | 3 of the last 5 are mutable: v2.2.0, v2.1.6, v2.1.5 | open |
| ! |
`pypi` environment protected
packaging/pypi-environment — A deployment environment named pypi exists and has protection rules |
recommended | pypi environment exists but has no protection rules |
open |
| ✓ |
Tag matches PyPI version
packaging/version-sync — The newest GitHub release tag matches the newest PyPI version |
recommended | GitHub v2.3.1 == PyPI 2.3.1 |
open |
Supply chain
| Check | Tier | Detail | Fix | |
|---|---|---|---|---|
| – |
Integration tests passing
integration/upstream-tests — This package's test suite passes in scverse/integration-testing against upstream core packages |
required | Does not apply to this repository | |
| ✓ |
Actions pinned to SHA
security/actions-pinned — Every uses: names a full 40-character commit SHA |
required | All 14 action references pinned to a SHA | open |
| ✗ |
pre-commit revs pinned
security/precommit-pinned — Every rev: in .pre-commit-config.yaml is a commit SHA |
recommended | 5 of 5 on tags: [email protected], [email protected], [email protected] and 2 more | open |
| ✗ |
zizmor audit is clean
security/zizmor-clean — A zizmor audit of every workflow, action and Dependabot config reports no findings |
required | 1 finding in 5 files, online: known-vulnerable-actions | open |
| ✗ |
Dependabot configured
security/dependabot — .github/dependabot.yml covers both the github-actions and pre-commit ecosystems |
required | Missing ecosystem: pre-commit | open |
| ✓ |
No open Dependabot alerts
security/dependabot-alerts — No unresolved Dependabot security alerts |
recommended | No open Dependabot alerts | open |
| ✓ |
Secret scanning + push protection
security/secret-scanning — Secret scanning and push protection are both enabled |
recommended | Secret scanning and push protection enabled | open |
| ✓ |
Private vulnerability reporting
security/private-vuln-reporting — Researchers can report vulnerabilities privately |
recommended | Private vulnerability reporting enabled | open |
| ✗ |
Minimal workflow permissions
security/workflow-permissions — Every workflow declares a top-level permissions:, and the repo default is read-only |
required | Workflows are fine, but the repo's default GITHUB_TOKEN is read-write | open |
| ✓ |
checkout without credentials
security/persist-credentials — actions/checkout steps set persist-credentials: false (zizmor artipacked) |
recommended | All 5 checkouts set persist-credentials: false |
open |
| ✓ |
No unsafe pull_request_target
security/dangerous-triggers — pull_request_target does not check out untrusted PR code (zizmor dangerous-triggers) |
recommended | No workflow uses pull_request_target |
open |
| ✗ |
SECURITY.md
security/security-md — A security policy exists, in this repo or via the org's .github repo |
recommended | No security policy | open |
Branch protection
| Check | Tier | Detail | Fix | |
|---|---|---|---|---|
| ✓ |
Default branch protected
branch/protected — Neither force-pushes nor deletion are allowed on the default branch |
required | Force-push and deletion blocked (classic) | open |
| ✓ |
Requires a pull request
branch/requires-pr — Changes to the default branch must go through a pull request |
required | Pull request required (classic) | open |
| ✓ |
Requires ≥1 approving review
branch/requires-review — A pull request needs at least one approving review to merge |
required | 1 approving review required | open |
| ✗ |
Requires status checks
branch/status-checks — At least one status check must pass before merging |
recommended | No status checks are required to merge | open |
Governance
| Check | Tier | Detail | Fix | |
|---|---|---|---|---|
| ✓ |
OSI license
governance/license — The repo carries a recognised OSI-approved license |
required | BSD-3-Clause | open |
| ✓ |
GPL-free dependencies
governance/gpl-free — No runtime dependency, direct or transitive, is GPL-licensed, unless the repo is GPL itself |
required | None of 48 runtime dependencies is GPL | open |
| ✓ |
Description, homepage, topic
governance/description-topics — The repo has a description, a homepage and the scverse topic |
recommended | Described, linked and tagged (10 topics) | open |
| ✓ |
Actively maintained
governance/maintained — Pushed to within the last year |
informational | Last push 6 days ago | open |