Skip to content

Conversation

@scverse-bot
Copy link

@scverse-bot scverse-bot commented Dec 24, 2025

cookiecutter-scverse released v0.7.0.

Changes

Changes

Fixes

Additional remarks

  • unsubscribe: If you don’t want to receive these PRs in the future,
    add skip: true to template-repos.yml using a PR or,
    if you never want to sync from the template again, delete the .cruft.json file in the root of your repository.
  • If there are merge conflicts, you need to resolve them manually.
  • The scverse template works best when the pre-commit.ci, readthedocs and codecov services are enabled.
    Make sure to activate those apps if you haven't already.

Summary by CodeRabbit

  • Improvements
    • Modernized build and test infrastructure with enhanced tooling for faster development cycles
    • Updated documentation build system and improved structure
    • Added VS Code IDE integration with recommended extensions and debug configurations
    • Updated Python requirement to 3.11+
    • Streamlined continuous integration workflows

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Dec 24, 2025

📝 Walkthrough

Walkthrough

This pull request modernizes the project's build and development infrastructure by migrating from traditional Python tooling to UV-based build system, restructuring CI/CD workflows with dynamic environment discovery, updating documentation and IDE configurations, and reorganizing project metadata across multiple configuration files.

Changes

Cohort / File(s) Summary
Project Metadata
cruft.json
Updated template commit reference, added IDE integration flag, renamed project_repo to github_repo, and specified paths to exclude from template updates.
Code Formatting & Editor Config
editorconfig, biome.jsonc
Consolidated YAML/TOML indent settings; added new Biome formatter configuration with EditorConfig integration and VCS support for JSON files.
Issue Templates
.github/ISSUE_TEMPLATE/bug_report.yml, .github/ISSUE_TEMPLATE/feature_request.yml
Changed label fields from "bug" and "enhancement" to "type: Bug" and "type: Enhancement"; updated bug report guidance and version-reporting format.
CI/CD Workflows
.github/workflows/build.yaml, .github/workflows/release.yaml
Upgraded checkout to v5; replaced Python build tooling (setup-python, python -m build) with UV-based build system (astral-sh/setup-uv@v7, uv build).
Test Workflow
.github/workflows/test.yaml
Introduced dynamic environment discovery via new get-environments job; replaced static matrix with Hatch-driven multi-environment testing; integrated codecov-action v5 with OIDC; added check job for test result aggregation.
IDE & Editor Configuration
.vscode/extensions.json, .vscode/launch.json, .vscode/settings.json
Added VSCode workspace settings enforcing format-on-save for Python/JSON with Ruff and Biome formatters; added debug configurations for documentation builds and test debugging; specified recommended extensions.
Git Configuration
.gitignore
Replaced explicit cache ignores with generalized patterns (\*.\cache/, /.coverage\); removed explicit IDE ignores (.idea/, .vscode/).
Pre-Commit Hooks
.pre-commit-config.yaml
Migrated formatting from Prettier to Biome; added pyproject-fmt hook; upgraded ruff to v0.14.10 with hook rename (ruff → ruff-check); bumped pre-commit-hooks to v6.0.0; removed local forbid-to-commit guard.
ReadTheDocs Configuration
.readthedocs.yaml
Upgraded base OS to ubuntu-24.04 and Python to 3.13; removed explicit Sphinx config; added asdf UV installation job; updated build command to use uvx hatch run docs:build.
Sphinx Documentation
docs/conf.py
Renamed project_name to project variable; added dynamic extraction of repository_url and release metadata; extended extensions with sphinxcontrib.katex and sphinx_tabs; updated intersphinx Python target to 3.13 and added scanpy mapping.
Documentation
docs/Makefile, docs/contributing.md
Deleted Makefile (build now via uvx hatch); extensively rewrote contributing guide with tabbed installation/testing workflows for Hatch/uv/Pip, updated CI guidance, and restructured documentation building sections.
Documentation Extensions
docs/extensions/typed_returns.py
Minor quote style adjustment in f-string (cosmetic, semantically equivalent).
Build & Project Configuration
pyproject.toml
Updated requires-python to ≥3.11; reorganized optional dependencies to [dependency-groups] with dev/doc separation; added hatch environment definitions (default, docs) with test matrices; migrated session-info to session-info2; updated maintainers and project URLs; restructured Ruff and pytest configurations; updated cruft ignores.

Sequence Diagram

sequenceDiagram
    autonumber
    participant GA as GitHub Actions
    participant GE as get-environments Job
    participant Hatch
    participant Test as test Job (Matrix)
    participant Codecov
    participant Check as check Job

    GA->>GE: Trigger: get-environments
    activate GE
    GE->>Hatch: Parse pyproject.toml environments
    Hatch-->>GE: Return env list (JSON)
    GE-->>GA: Output: matrix environments
    deactivate GE

    rect rgb(200, 220, 240)
        Note over Test: Dynamic Matrix per Environment
        GA->>Test: Trigger with matrix (for each env)
        activate Test
        Test->>Hatch: Create hatch environment
        Hatch-->>Test: Environment ready
        Test->>Hatch: Run hatch run tests
        Hatch-->>Test: Test results + coverage
        Test->>Codecov: Upload coverage (v5, OIDC)
        Codecov-->>Test: Coverage recorded
        deactivate Test
    end

    GA->>Check: Trigger: check (needs: test)
    activate Check
    Check->>GA: alls-green: aggregate test results
    GA-->>Check: All tests passed?
    deactivate Check
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50 minutes

Poem

🐰 With UV and Hatch we leap ahead,
Old build tools now shed,
Workflows dance in dynamic flow,
CI gardens have begun to grow!

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Update template to v0.7.0' directly and clearly describes the primary change: updating the repository template to a specific version.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 10

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.gitignore (1)

1-21: Add IDE-specific directories to .gitignore.

IDE configuration directories (.idea/ for JetBrains IDEs and .vscode/ for Visual Studio Code) are currently not ignored. Without these entries, developers' IDE-specific settings and cache files will be unintentionally committed to the repository, creating friction across the team and polluting the repository history.

🧹 Nitpick comments (2)
docs/contributing.md (1)

239-239: Consider more concise phrasing for "in brief".

The phrase "in brief" is somewhat wordy. You could replace it with a more direct transition, such as simply "as follows:" or omit it entirely for brevity.

docs/conf.py (1)

29-30: URL parsing assumes specific format with comma-space separator.

The dict comprehension dict(pu.split(", ") for pu in info.get_all("Project-URL")) assumes each Project-URL entry has exactly one ", " separator. If the format differs or a URL contains ", ", this will fail.

This is a standard pattern from the cookiecutter template and should work for typical pyproject.toml URLs, but consider defensive parsing if you anticipate non-standard formats:

urls = {k.strip(): v.strip() for pu in info.get_all("Project-URL") for k, v in [pu.split(", ", 1)]}
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1807c1a and a798ae2.

📒 Files selected for processing (19)
  • .cruft.json
  • .editorconfig
  • .github/ISSUE_TEMPLATE/bug_report.yml
  • .github/ISSUE_TEMPLATE/feature_request.yml
  • .github/workflows/build.yaml
  • .github/workflows/release.yaml
  • .github/workflows/test.yaml
  • .gitignore
  • .pre-commit-config.yaml
  • .readthedocs.yaml
  • .vscode/extensions.json
  • .vscode/launch.json
  • .vscode/settings.json
  • biome.jsonc
  • docs/Makefile
  • docs/conf.py
  • docs/contributing.md
  • docs/extensions/typed_returns.py
  • pyproject.toml
💤 Files with no reviewable changes (1)
  • docs/Makefile
🧰 Additional context used
🪛 LanguageTool
docs/contributing.md

[grammar] ~39-~39: Use a hyphen to join words.
Context: ... interact with hatch through its command line interface (CLI). Running one of the...

(QB_NEW_EN_HYPHEN)


[grammar] ~90-~90: Ensure spelling is correct
Context: ...y3.14-stable ``` In case you are using VScode, now open the command palette (Ctrl+Shi...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~93-~93: Ensure spelling is correct
Context: ... this may become easier through a hatch vscode extension. :::: ::::{group-tab} uv A...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~106-~106: Ensure spelling is correct
Context: ...phinx plugin pins an older version. To initalize a virtual environment in the .venv di...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[style] ~227-~227: Consider using a different verb for a more formal wording.
Context: ...versions early on and gives you time to fix the issue or reach out to the developer...

(FIX_RESOLVE)


[style] ~239-~239: ‘in brief’ might be wordy. Consider a shorter alternative.
Context: ...dhere to [Semantic Versioning][semver], in brief > Given a version number MAJOR.MINOR.P...

(EN_WORDINESS_PREMIUM_IN_BRIEF)


[uncategorized] ~244-~244: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...version when you add functionality in a backwards compatible manner, and > 3. PATCH version when you...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[uncategorized] ~245-~245: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...r, and > 3. PATCH version when you make backwards compatible bug fixes. > > Additional labels for pr...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[uncategorized] ~252-~252: The official name of this software platform is spelled with a capital “H”.
Context: ...atically create a git tag and trigger a Github workflow that creates a release on [PyP...

(GITHUB)

🪛 markdownlint-cli2 (0.18.1)
docs/contributing.md

33-33: Emphasis style
Expected: asterisk; Actual: underscore

(MD049, emphasis-style)


33-33: Emphasis style
Expected: asterisk; Actual: underscore

(MD049, emphasis-style)


34-34: Link fragments should be valid

(MD051, link-fragments)


61-61: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


133-133: Link and image reference definitions should be needed
Unused link or image reference definition: "hatch environments"

(MD053, link-image-reference-definitions)


162-162: Emphasis style
Expected: asterisk; Actual: underscore

(MD049, emphasis-style)


162-162: Emphasis style
Expected: asterisk; Actual: underscore

(MD049, emphasis-style)

🔇 Additional comments (29)
docs/extensions/typed_returns.py (1)

15-15: Quoting adjustment looks good.

The use of dictionary-style access (m['param']) for regex named groups is valid and idiomatic in modern Python. The f-string formatting is correct and produces properly formatted Sphinx reStructuredText markup.

.gitignore (2)

9-9: ✓ Generalized cache pattern is sound.

The pattern .*cache/ correctly replaces explicit cache-directory entries (.mypy_cache/, .ruff_cache/, .pytest_cache/, .cache/) using a single rule. In gitignore glob syntax, * matches zero or more characters, so this covers all dot-prefixed cache directories.


17-17: ✓ Coverage pattern is appropriate.

The pattern /.coverage* properly matches all coverage output files (.coverage, .coverage.xml, .coverage.db, etc.) with a single, concise rule.

docs/contributing.md (4)

14-29: Effective tip section introducing Hatch.

The new introductory section does a good job of explaining Hatch's benefits and clearly noting that alternative tools (uv, pip) are also supported. This sets appropriate expectations upfront.


36-131: Well-structured tabbed setup for multiple package managers.

The reorganization into Hatch, uv, and Pip tabs provides clear guidance for users with different preferences. Each path is concrete and actionable. The decision to document the uv/Pip trade-offs is helpful.


188-214: Clear testing guidance with toolchain-specific commands.

The restructuring of test-running instructions into Hatch, uv, and Pip tabs makes it easy for contributors to follow their preferred workflow. The note about local and CI parity (line 231–232) is valuable for consistency.


300-329: Helpful documentation building guidance with tabs.

The tabbed commands for building docs locally (Hatch, uv, Pip) align well with the earlier environment setup sections and provide clear next steps for contributors.

.github/ISSUE_TEMPLATE/bug_report.yml (3)

12-12: LGTM!

The updated guidance provides clearer instructions for bug reporters about data sharing requirements.


42-93: Placeholder contains a future date.

The placeholder shows "Updated 2025-03-18 15:47", which is approximately 3 months after this PR was created (2025-12-24). While this is just example data, using a future date may confuse users. Consider using a past date or a generic placeholder like "YYYY-MM-DD HH:MM".

🔎 Suggested fix
-        Updated	2025-03-18 15:47
+        Updated	2024-12-01 10:00

Likely an incorrect or invalid review comment.


25-40: session-info2 package is correctly referenced.

The package exists on PyPI (latest v0.2.3) and is the appropriate tool for capturing version information. The API usage in the instructions is accurate: session_info(dependencies=True) is a valid function call, and _repr_mimebundle_()["text/markdown"] correctly retrieves the markdown representation. No changes needed.

.vscode/settings.json (1)

1-18: Well-structured VSCode workspace settings.

The configuration appropriately enables format-on-save with Ruff for Python and Biome for JSON/JSONC, aligning with the recommended extensions and pre-commit hooks in this PR. The pytest integration with verbose output is a nice developer experience improvement.

.editorconfig (1)

11-12: LGTM.

Adding .cruft.json to the 2-space indentation rule is appropriate for consistency with the template tooling.

.vscode/extensions.json (1)

1-18: Comprehensive extension recommendations.

The recommended extensions cover the project's tooling stack well—Ruff and Biome for formatting (matching settings.json), EditorConfig for consistency, and mogami for dependency security scanning.

.vscode/launch.json (1)

1-33: Useful debugging configurations.

Both launch configurations are well-structured. The documentation build config correctly invokes Sphinx as a module, and the test debug config properly integrates with VSCode's test explorer via purpose: ["debug-test"].

.pre-commit-config.yaml (3)

9-13: Biome replaces Prettier for formatting.

The switch to Biome aligns with the new biome.jsonc configuration. The .cruft.json exclusion is appropriately documented.


36-38: Note: Removed .rej file commit guard.

The local forbid-to-commit hook that previously blocked committing .rej files (template rejection files from cruft) has been removed. These files can indicate unresolved template conflicts.

Ensure this is intentional—if .rej files are accidentally committed, they may clutter the repository. Consider whether the check-merge-conflict hook (Line 37) provides sufficient protection, or if the .rej guard should be retained.


18-25: Hook naming and version are correctly configured.

The ruff-check hook follows current ruff-pre-commit naming conventions (with legacy ruff alias support), and v0.14.10 is a recent release version compatible with the configuration.

.cruft.json (1)

1-43: Template metadata updated to v0.7.0.

The cruft configuration correctly tracks the template version and commit. The _exclude_on_template_update list appropriately protects project-specific content (source code, tests, documentation) from being overwritten during future template syncs. The ide_integration: true flag explains the addition of .vscode/ configuration files in this PR.

.readthedocs.yaml (1)

4-16: Modern RTD configuration with UV-based tooling.

The migration to Ubuntu 24.04, Python 3.13, and UV/Hatch-based builds aligns with the broader project modernization. The asdf-based UV installation is RTD's recommended approach for custom build tools. The docs:build script is properly defined in pyproject.toml (line 66) as a Sphinx build command, and the configuration will execute correctly via uvx hatch run docs:build.

pyproject.toml (3)

60-88: Hatch environment configuration with UV installer looks well-structured.

The matrix-based test environment setup correctly:

  • Tests lowest (3.11) and highest (3.14) Python versions with stable deps
  • Tests newest Python with pre-release deps
  • Uses UV_PRERELEASE environment variable conditionally

17-24: Python 3.14 classifier is appropriate and properly configured.

Python 3.14 reached final release on October 7, 2025. Adding the classifier for a released version is standard practice and requires no special handling. The hatch test configuration properly handles pre-release dependencies using the UV_PRERELEASE environment variable for the pre-release test matrix entry.

Likely an incorrect or invalid review comment.


137-142: Remove this comment. The patch option is a valid coverage.py configuration option available in version 7.x, and the TOML syntax patch = [ "subprocess" ] is correct. No changes are needed.

Likely an incorrect or invalid review comment.

docs/conf.py (2)

97-103: TODO comment about Python version in intersphinx mapping.

The TODO correctly notes the workaround for ReadTheDocs not yet supporting Python 3.14. This is appropriate for documentation builds.


130-130: KaTeX prerender check is a good optimization.

Checking for the Node.js binary availability before enabling prerendering avoids build failures when the binary is missing.

.github/workflows/release.yaml (1)

17-25: Clean migration to UV-based build workflow.

The workflow correctly:

  • Uses actions/checkout@v5 with shallow clone options
  • Installs UV via astral-sh/setup-uv@v7
  • Builds with uv build

This aligns with the broader UV adoption in the PR.

.github/workflows/build.yaml (1)

17-26: Build workflow correctly migrated to UV tooling.

The workflow:

  • Uses partial clone (filter: blob:none) for faster checkout
  • Builds with uv build
  • Validates with uvx twine check --strict

Using uvx to run twine in an isolated environment is a good practice.

.github/workflows/test.yaml (3)

21-44: Dynamic environment discovery from hatch is a clean approach.

Deriving test environments from pyproject.toml ensures consistency between local and CI testing. The jq transformation correctly:

  • Filters environments starting with "hatch-test"
  • Adds a label suffix for pre-release environments
  • Extracts the Python version for each environment

78-84: Coverage command fallback handles edge cases.

The conditional test -f .coverage || uvx hatch run ... :cov-combine handles cases where coverage data needs combining before reporting. This is a robust approach.


91-99: Good use of alls-green for unified test status.

The check job with if: always() and alls-green provides a single status check for branch protection, avoiding the need to update required checks when test environments change.

name: Bug report
description: Report something that is broken or incorrect
labels: bug
type: Bug
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🌐 Web query:

GitHub issue template form schema type field documentation

💡 Result:

Short answer — the supported form element types in GitHub issue (form) YAML are:

  • markdown
  • textarea
  • input
  • dropdown
  • checkboxes

Each type has its own attributes and validations (label, description, options, required, etc.). See GitHub's "Syntax for GitHub's form schema" for full attribute/validation details. [1]

References

  • GitHub Docs — Syntax for GitHub's form schema. [1]

🏁 Script executed:

cat .github/ISSUE_TEMPLATE/bug_report.yml

Repository: CSOgroup/torchgmm

Length of output: 2998


Remove the invalid type: Bug field from the root level of the template.

The type field is not valid at the root level of GitHub issue templates. Valid top-level metadata fields include name, description, title, labels, assignees, and projects. To categorize issues, use labels instead. The form element types (markdown, textarea, input, dropdown, checkboxes) are only valid within the body array, not as root-level fields.

🤖 Prompt for AI Agents
In .github/ISSUE_TEMPLATE/bug_report.yml around line 3, remove the invalid
root-level field `type: Bug` and replace its intent by adding an appropriate
`labels:` entry (e.g., labels: ["bug"]) in the root metadata; ensure the root
only contains valid keys like name, description, title, labels, assignees, and
projects, and keep any form element types (markdown, textarea, input, dropdown,
checkboxes) inside the `body:` array only.

name: Feature request
description: Propose a new feature for torchgmm
labels: enhancement
type: Enhancement
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

GitHub issue form template type field schema documentation

💡 Result:

Short answer — the issue form element "type" is the element kind in GitHub's form schema. Valid values and their meaning:

  • markdown — explanatory text (not submitted).
  • textarea — multi-line text field.
  • input — single-line text field.
  • dropdown — single-select list.
  • checkboxes — multi-select checkboxes.

Each element may include id, attributes (label, description, placeholder, options, value, etc.) and validations (required, pattern, min/max length, etc.). See GitHub’s form schema and issue-forms syntax docs for full attribute/validation details. [1][2]

Sources:
[1] Syntax for issue forms (GitHub Docs). [2] Syntax for GitHub’s form schema (GitHub Docs).


🏁 Script executed:

cat -n .github/ISSUE_TEMPLATE/feature_request.yml

Repository: CSOgroup/torchgmm

Length of output: 527


Replace type: Enhancement with labels for issue categorization.

type is not a valid top-level field in GitHub issue templates. Valid top-level fields are: name, description, title, labels, assignees, and body. To categorize this as an enhancement issue, use labels: ["enhancement"] instead.

🤖 Prompt for AI Agents
In .github/ISSUE_TEMPLATE/feature_request.yml around line 3, the file uses an
invalid top-level field "type: Enhancement"; remove that line and replace it
with a valid top-level "labels" field such as labels: ["enhancement"] (use
lowercase or desired label names) so the template uses GitHub-supported keys.

Comment on lines +100 to +103
steps:
- uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Inconsistent indentation in check job steps.

Line 101 has extra leading spaces before - uses:. YAML is indentation-sensitive and this could cause parsing issues.

🔎 Proposed fix
     runs-on: ubuntu-latest
     steps:
-        - uses: re-actors/alls-green@release/v1
-          with:
-            jobs: ${{ toJSON(needs) }}
+      - uses: re-actors/alls-green@release/v1
+        with:
+          jobs: ${{ toJSON(needs) }}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
steps:
- uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}
steps:
- uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}
🤖 Prompt for AI Agents
In .github/workflows/test.yaml around lines 100 to 103 the steps block has
inconsistent indentation (line 101 has extra leading spaces before `- uses:`)
which can break YAML parsing; fix by aligning the `- uses:` line with the other
entries under `steps:` (remove the extra spaces so the dash is at the same
indent level as other step items), ensure nested `with:` is indented one level
under that dash, and validate the workflow YAML after the change.

Comment on lines +1 to +17
{
"$schema": "https://biomejs.dev/schemas/2.2.0/schema.json",
"vcs": { "enabled": true, "clientKind": "git", "useIgnoreFile": true },
"formatter": { "useEditorconfig": true },
"overrides": [
{
"includes": ["./.vscode/*.json", "**/*.jsonc"],
"json": {
"formatter": { "trailingCommas": "all" },
"parser": {
"allowComments": true,
"allowTrailingCommas": true,
},
},
},
],
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🌐 Web query:

latest version of Biome JavaScript formatter

💡 Result:

Latest release: Biome CLI v2.3.8 (released Nov 27, 2025). [1]

Note: the npm package @biomejs/biome currently shows version 2.2.3 on the registry. [2]

Sources:
[1] GitHub releases — biomejs/biome (2.3.8).
[2] npm — @biomejs/biome package page.


Update Biome schema version to 2.2.3 or 2.3.8.

The configuration references schema version 2.2.0, which is outdated. The latest available versions are 2.3.8 (CLI) and 2.2.3 (npm package). Update the schema reference on line 2 to use a current version.

The rest of the configuration correctly enables EditorConfig integration and appropriately overrides JSON settings for VSCode files and JSONC to allow comments and trailing commas, aligning with the pre-commit hook using biome-format.

🤖 Prompt for AI Agents
In biome.jsonc around lines 1 to 17, the $schema currently references
"https://biomejs.dev/schemas/2.2.0/schema.json" which is outdated; update that
URL to a current schema version by replacing "2.2.0" with either "2.2.3" (npm
package) or "2.3.8" (CLI), e.g. "https://biomejs.dev/schemas/2.3.8/schema.json",
and save the file.

Comment on lines +61 to +73
```
+------------+---------+--------------------------+----------+---------------------------------+-------------+
| Name | Type | Envs | Features | Dependencies | Scripts |
+------------+---------+--------------------------+----------+---------------------------------+-------------+
| hatch-test | virtual | hatch-test.py3.11-stable | dev | coverage-enable-subprocess==1.0 | cov-combine |
| | | hatch-test.py3.14-stable | test | coverage[toml]~=7.4 | cov-report |
| | | hatch-test.py3.14-pre | | pytest-mock~=3.12 | run |
| | | | | pytest-randomly~=3.15 | run-cov |
| | | | | pytest-rerunfailures~=14.0 | |
| | | | | pytest-xdist[psutil]~=3.5 | |
| | | | | pytest~=8.1 | |
+------------+---------+--------------------------+----------+---------------------------------+-------------+
```
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Specify language for fenced code block containing ASCII table.

The table is rendered as a bare code block without a language identifier. Specify text or another appropriate language to ensure consistent rendering.

🔎 Proposed fix
- ```
+ ```text
  +------------+---------+--------------------------+----------+---------------------------------+-------------+
  | Name       | Type    | Envs                     | Features | Dependencies                    | Scripts     |
  ...
- ```
+ ```text
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
```
+------------+---------+--------------------------+----------+---------------------------------+-------------+
| Name | Type | Envs | Features | Dependencies | Scripts |
+------------+---------+--------------------------+----------+---------------------------------+-------------+
| hatch-test | virtual | hatch-test.py3.11-stable | dev | coverage-enable-subprocess==1.0 | cov-combine |
| | | hatch-test.py3.14-stable | test | coverage[toml]~=7.4 | cov-report |
| | | hatch-test.py3.14-pre | | pytest-mock~=3.12 | run |
| | | | | pytest-randomly~=3.15 | run-cov |
| | | | | pytest-rerunfailures~=14.0 | |
| | | | | pytest-xdist[psutil]~=3.5 | |
| | | | | pytest~=8.1 | |
+------------+---------+--------------------------+----------+---------------------------------+-------------+
```
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

61-61: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
In docs/contributing.md around lines 61 to 73 the ASCII table fenced code block
has no language identifier; change the opening fence from ``` to ```text so the
block is rendered consistently (leave the closing ``` intact), ensuring the
table is treated as plain text in the renderer.

hatch env find hatch-test.py3.14-stable
```

In case you are using VScode, now open the command palette (Ctrl+Shift+P) and search for `Python: Select Interpreter`.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix capitalization: "VScode" and "vscode" → "VS Code".

The official product name is "VS Code" (Visual Studio Code), not "VScode" or "vscode".

🔎 Proposed fixes
- In case you are using VScode, now open the command palette (Ctrl+Shift+P) and search for `Python: Select Interpreter`.
+ In case you are using VS Code, now open the command palette (Ctrl+Shift+P) and search for `Python: Select Interpreter`.
- In this future, this may become easier through a hatch vscode extension.
+ In this future, this may become easier through a hatch VS Code extension.

Also applies to: 93-93

🧰 Tools
🪛 LanguageTool

[grammar] ~90-~90: Ensure spelling is correct
Context: ...y3.14-stable ``` In case you are using VScode, now open the command palette (Ctrl+Shi...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

🤖 Prompt for AI Agents
In docs/contributing.md around lines 90 and 93, replace the incorrect product
name variants "VScode" and "vscode" with the official "VS Code"; update the
sentence text to read something like: open the command palette (Ctrl+Shift+P)
and search for `Python: Select Interpreter` in VS Code, and then scan the rest
of the document for any other occurrences of "VScode" or "vscode" and
standardize them to "VS Code".

such as requiring to install a lower version of a library your project depends on,
only because an outdated sphinx plugin pins an older version.

To initalize a virtual environment in the `.venv` directory of your project, simply run
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix misspelling: "initalize" → "initialize".

🔎 Proposed fix
- To initalize a virtual environment in the `.venv` directory of your project, simply run
+ To initialize a virtual environment in the `.venv` directory of your project, simply run
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
To initalize a virtual environment in the `.venv` directory of your project, simply run
To initialize a virtual environment in the `.venv` directory of your project, simply run
🧰 Tools
🪛 LanguageTool

[grammar] ~106-~106: Ensure spelling is correct
Context: ...phinx plugin pins an older version. To initalize a virtual environment in the .venv di...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

🤖 Prompt for AI Agents
In docs/contributing.md around line 106, the word "initalize" is misspelled;
update that token to "initialize" so the sentence reads "To initialize a virtual
environment in the `.venv` directory of your project, simply run".

```{note}
Remember to first install the package with `pip install -e '.[dev,test]'`
This package uses [pytest][] for automated testing.
Please write {doc}`scanpy:dev/testing` for every function added to the package.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Incomplete Sphinx cross-reference syntax—please clarify the sentence.

Line 175 reads: "Please write {doc}scanpy:dev/testing for every function added to the package." This appears to be missing context. Did you intend to say something like "Please write tests as described in {doc}scanpy:dev/testing for every function added to the package"?

🤖 Prompt for AI Agents
In docs/contributing.md around line 175, the sentence "Please write
{doc}`scanpy:dev/testing` for every function added to the package." uses
incomplete Sphinx cross-reference syntax and lacks context; change it to a clear
instruction that points readers to the testing documentation and asks them to
write tests for new functions, for example rephrase to "Please write tests as
described in {doc}`scanpy:dev/testing` for every function added to the package."
ensuring the {doc}`...` role is retained and the sentence is grammatically
complete.

Specify `vX.X.X` as a tag name and create a release. For more information, see [managing GitHub releases][]. This will automatically create a git tag and trigger a Github workflow that creates a release on PyPI.
Specify `vX.X.X` as a tag name and create a release.
For more information, see [managing GitHub releases][].
This will automatically create a git tag and trigger a Github workflow that creates a release on [PyPI][].
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix capitalization: "Github" → "GitHub".

The official spelling is "GitHub" (with capital H).

🔎 Proposed fix
- This will automatically create a git tag and trigger a Github workflow that creates a release on [PyPI][].
+ This will automatically create a git tag and trigger a GitHub workflow that creates a release on [PyPI][].
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
This will automatically create a git tag and trigger a Github workflow that creates a release on [PyPI][].
This will automatically create a git tag and trigger a GitHub workflow that creates a release on [PyPI][].
🧰 Tools
🪛 LanguageTool

[uncategorized] ~252-~252: The official name of this software platform is spelled with a capital “H”.
Context: ...atically create a git tag and trigger a Github workflow that creates a release on [PyP...

(GITHUB)

🤖 Prompt for AI Agents
In docs/contributing.md around line 252, the word "Github" is incorrectly
capitalized; change it to the official "GitHub" in the sentence "This will
automatically create a git tag and trigger a GitHub workflow that creates a
release on [PyPI][]."

Comment on lines +130 to +135
[tool.pytest]
strict = true
testpaths = [ "tests" ]
addopts = [
"--import-mode=importlib", # allow using test files with same name
]
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

Incorrect pytest configuration section name.

The section [tool.pytest] should be [tool.pytest.ini_options]. Pytest does not recognize [tool.pytest] directly and will ignore these settings.

🔎 Proposed fix
-[tool.pytest]
-strict = true
-testpaths = [ "tests" ]
-addopts = [
-  "--import-mode=importlib", # allow using test files with same name
-]
+[tool.pytest.ini_options]
+testpaths = [ "tests" ]
+addopts = [
+  "--import-mode=importlib", # allow using test files with same name
+]

Note: strict = true is not a valid pytest ini option. If you intended strict marker mode, use --strict-markers in addopts.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
[tool.pytest]
strict = true
testpaths = [ "tests" ]
addopts = [
"--import-mode=importlib", # allow using test files with same name
]
[tool.pytest.ini_options]
testpaths = [ "tests" ]
addopts = [
"--import-mode=importlib", # allow using test files with same name
]
🤖 Prompt for AI Agents
In pyproject.toml around lines 130 to 135, the pytest config section is
incorrectly named [tool.pytest]; change it to [tool.pytest.ini_options] so
pytest recognizes the settings, move the existing entries under that section,
and remove the invalid strict = true entry (if you meant strict marker checking
add --strict-markers to addopts instead).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant