Skip to content

Release 1.0.4 - #59

Merged
jpjarnoux merged 93 commits into
mainfrom
dev
Jul 23, 2026
Merged

Release 1.0.4#59
jpjarnoux merged 93 commits into
mainfrom
dev

Conversation

@jpjarnoux

@jpjarnoux jpjarnoux commented Jul 23, 2026

Copy link
Copy Markdown
Member

Description

Release PR merging dev into main, bringing main from 1.0.0 up to 1.0.4. This covers several bug fixes (annotation timing, path resolution, CLI argument names), a dependency floor bump for pyhmmer (0.12.0, required for compatibility with its bytesstr API change), removal of unsupported/dead CLI options, a large documentation overhaul (developer guide, API reference, citation guide, quick-start), and CI workflow cleanup.

What changed

  • Fixes:
  • Dependencies:
    • Pinned pyhmmer>=0.12.0 in pyproject.toml and panorama.yml; updated genInput.py, macsymodel_translator.py, and hmm_search.py to use plain str access on HMM/Hit/Sequence/Alignment attributes now that pyhmmer 0.12+ returns str instead of bytes (Fix CI #58).
  • Removed:
  • Utilities:
    • Added a resolve_path utility, integrated into check_tsv_sanity for robust pangenome path resolution.
  • CI:
    • Scoped the Ruff format/lint workflow to panorama/tests only (src input), so it no longer lints unrelated paths like .github/scripts/.
    • Skipped test/Ruff workflow runs on doc/* branches and fixed duplicate doc-check workflow runs.
  • Documentation:
    • Added a "How to cite" guide and citation .bib files (Add How to cite guide #55).
    • Added a pull request template for contributions (Add pull request template for contributions #51).
    • Large developer-guide and API-documentation restructuring: new I/O layer and detection-workflow pages, cleaned-up autosummary/API structure, removed several outdated developer docs.
    • Numerous formatting/typo/link fixes across user and modeler documentation; added PANORAMA logo and citation/paper badges to the README.

Testing

Test environment:

Results:

  • All constituent PRs passed CI (Ruff + pytest, Ubuntu/macOS, Python 3.12) individually before merging into dev.
  • Recommend a final CI run on this PR against main before merging.

Documentation

  • Added/updated code comments
  • Added/updated docstring
  • Updated README or docs if needed
  • Added example usage (if relevant)

Checklist

  • My code follows the project guidelines
  • Complex logic is commented
  • No unnecessary files or debug code included
  • My PR is targeting the dev branch (this PR targets main, as a release merge)

Additional notes

VERSION is already at 1.0.4 on dev (bumped incrementally across the merged PRs); no further manual bump should be needed for this release. Anyone with an existing panorama conda env built before pyhmmer>=0.12.0 was pinned should recreate/update it to match the new floor.

jpjarnoux and others added 30 commits October 7, 2025 16:07
CI, launched with Python 3.10, is producing an error. We were unable to
reproduce the error locally.

For the time being, we have decided to launch the CI only with Python
3.12, as this error does not seem to occur with this version.
Annotation monitoring was cumulating between pangenomes rather than
giving the time of the step for each one.
Removed outdated PR template and example content.
Added a review checklist template for PR validation.
Enhanced path resolution by adding the `resolve_path` function to handle both absolute and relative paths robustly. Updated `check_tsv_sanity` to utilize this function for improved error handling and path validation.
## Description

This PR adds a pull request template and a saved reply template for code
reviews to improve contribution workflow and maintain code quality
standards across the project.

## Type of change

- [x] New feature or analysis

## Related issue

N/A - Process improvement

## What changed

- Added `.github/pull_request_template.md` with a flexible structure for
contributors
- Created a saved reply template for reviewers to ensure consistent code
review process
- Template includes sections relevant to bioinformatics projects
(datasets, scientific accuracy, reproducibility)

## Testing

N/A - Process improvement

## Documentation
- [x] Updated README or docs if needed

Instructions for using the saved reply template are included in the PR
description.

## Checklist

- [x] My code follows the project style
- [x] I've reviewed my own code
- [x] Complex logic is commented
- [x] No unnecessary files or debug code included

## Additional notes

- Template will be visible on the next PR opened after this one is
merged in main.

**For contributors:** The PR template includes a disclaimer making it
clear that it's a guide, not a strict requirement. This should encourage
contributions without creating barriers.


**For reviewers**: To use the saved reply template:

1. Go to **your** GitHub Settings → Saved replies
2. Click "Add a saved reply"
3. Name it (e.g., "PR Review Checklist")
4. Copy the template from the PR description
5. Use it during reviews by clicking the saved replies icon in the
comment box
<!-- This template is here to help you structure your PR, but feel free
to adapt it to your needs. Not all sections may be relevant for your
contribution. -->

## Description

This PR removes the automatic update of the version. The workflow was
not working correctly and after discussion with mainteners, it seems
like an unecessary add.

## Type of change

- [x] Bug fix

N/A - Process improvement

## What changed

- The automatic update workflow of the VERSION file has been removed. 

## Testing

N/A - Process improvement

## Documentation

N/A - Process improvement

## Checklist

- [x] My code follows the project style
- [x] I've reviewed my own code
- [x] Complex logic is commented
- [x] No unnecessary files or debug code included
<!-- This template is here to help you structure your PR, but feel free
to adapt it to your needs. Not all sections may be relevant for your
contribution. -->

## Description

This PR add a guide to PANORAMA citation. 

## What changed

- The preprint is now integrate in the documentation as a badge and in
the text
- README include a How to cite section
- A new page in user documentation detail how to cite PANORAMA and its
environment

## Testing

N/A - Process improvement

## Documentation

N/A - Process improvement

## Checklist

- [x] My code follows the project style
- [x] I've reviewed my own code
- [x] Complex logic is commented
- [x] No unnecessary files or debug code included
jpjarnoux and others added 29 commits July 21, 2026 10:11
- Enable `sphinx.ext.autosummary` in documentation configuration.
- Configure auto-generation of stub pages for classes listed in `autosummary` blocks.
- Add `exclude-members` to refine class documentation.
- Introduce `_templates/summary.rst` to generate consistent navigation entries for API reference.
## Description

Comprehensive documentation audit and fix pass. Corrects broken CLI
examples, dead cross-references, and internal
contradictions across the docs, adds a new "Codebase Internals" section
to the developer guide,
fixes a documentation build that was failing on GitHub Actions, and
cleans up a number of stale/dead files and
Sphinx configuration issues found along the way.

No changes to `panorama/` source code or tests — this PR is docs, Sphinx
config, and CI workflow only.

## What changed

### Fixed broken/inconsistent content
- Corrected wrong CLI flags and drifted examples in the README and
`pansystems.md` (`--threads` → `--cpus`, `-s`/`--association all` →
matching the real CLI)
- Replaced stale `Black`/`Flake8` instructions in `tipsandtricks.md`
with the actual `ruff format`/`ruff check` commands the project uses
- Fixed dozens of broken internal cross-references (wrong anchors,
typo'd slugs, stale `#anchor` links across files) by enabling
`myst_heading_anchors` and converting cross-file anchor links to MyST
`{ref}` roles where needed
- Fixed a real heading-hierarchy bug in `align.md` (H1 → H3 skip) and a
wrong H1/H2 start level
- Fixed duplicate `autosectionlabel` collisions in new dev docs by
scoping the suppression narrowly instead of blanket-suppressing all
`myst.xref_missing`/`myst.header` warnings (which had been masking these
real issues)

### New "Codebase Internals" developer documentation
- Added `architecture.md`, `detection_workflow.md`,
`compare_workflow.md`, `io_layer.md`, `add_subcommand.md`
- Split the developer guide toctree into "Contributing & Guidelines" vs.
"Codebase Internals"

### Citation support
- Added downloadable `.bib` files under `docs/user/_static/citations/`
with "Download BibTeX" buttons (opening in a new tab)
- Updated README badges/citation to point at the published PLOS
Computational Biology paper

### Sphinx/docs infrastructure
- Added `sphinx-copybutton` (copy-to-clipboard on code blocks) and
`sphinx-autodoc-typehints` (replacing the long-dead, incompatible
`sphinx-autodoc-napoleon-typehints`)
- Added `sphinx.ext.autosummary` so classes (e.g. `GeneFamily`, `Model`,
`System`, `Pangenome`) get their own generated page and now appear in
the left sidebar, not just their parent module
- Added a MyST + Sphinx version line to the footer, `colon_fence`
support, and a fix for the sphinx-design "announcement" banner link

### CI / workflow
- **Fixed a documentation build failure**:
`docs/api/panorama.systems.md` referenced two `.py` files that are
gitignored (present locally, never committed); removed those sections so
`sphinx-build` no longer tries to import nonexistent modules on a fresh
checkout
- Added `.github/scripts/check_common_arguments_docs.py`, a lint that
fails CI if the duplicated common-argument tables across
`projection.md`/`association.md`/`partition.md`/`pansystems.md` drift
out of sync, wired into `check_doc.yml`
- `main.yml`/`ruff.yml` now skip on `doc/*` branches; `check_doc.yml`
gained a `pull_request` trigger scoped to `doc/*` branches only,
avoiding duplicate runs
- Consolidated documentation dependencies into `pyproject.toml`'s
`[doc]` extra only, deleted the redundant `docs/sphinx_requirements.txt`

### Cleanup
- Deleted 8 orphaned/stub developer doc pages (`workflows.md`,
`write.md`, and 6 script-doc pages already excluded from the Sphinx
build) and the confirmed-unused `docs/api/modules.md` and
`docs/_templates/summary.rst`'s old dead state
- Removed all emoji from user-facing documentation headings for a
consistent style
- Removed unused `docs/_static/css/custom.css` and two unreferenced
images
- Fixed the leaky file handle in `conf.py`'s `VERSION` read
(`open().read()` → `Path.read_text()`)

## Testing

### Test environment

- N/A — documentation, Sphinx configuration, and CI workflow changes
only; no `panorama/` source or test changes
- Validated with full clean Sphinx builds (`sphinx-build -E -a -b html .
build`) after every change
- Validated on ReadTheDoc build before merge

### Results

- Final local build: 0 warnings (down from 40 once the blanket
`myst.xref_missing`/`myst.header` suppressions were removed and every
surfaced issue was fixed individually)
- Reproduced the exact GitHub Actions failure (`Failed to import
panorama.systems.dictionary_validation_utils`/`parameter_validation_utils`)
in a clean conda env with a fresh `pip install .[doc]`, confirmed the
fix resolves it
- Dry-ran `.github/scripts/check_common_arguments_docs.py` against both
the consistent state (passes) and a deliberately introduced mismatch
(correctly fails with a clear diff)

## Documentation

- [ ] Added/updated code comments
- [ ] Added/updated docstring
- [x] Updated README or docs if needed
- [x] Added example usage (if relevant)

## Checklist

- [x] My code follows the project guidelines
- [x] Complex logic is commented
- [x] No unnecessary files or debug code included
- [x] My PR is targeting the `dev` branch

## Additional notes

<!-- Any other context, dependencies, or things reviewers should know
-->

- Two pre-existing, unrelated `[myst.duplicate_def]` warnings remain in
`compare_spots.md`/`compare_systems.md`
<!-- This template is here to help you structure your PR, but feel free
to adapt it to your needs. Not all sections may be relevant for your
contribution. -->

## Description

Write_flat does not support to write conserved_spot anymore. This has
been moved directly to the compare_spot command. This PR remove the
argument from the command.

## What changed
 
- `conserved_spot` argument is not checked anymore 

## Documentation
<!-- Mark the relevant option with an "x" -->

- [ ] Added/updated code comments
- [ ] Added/updated docstring
- [ ] Updated README or docs if needed
- [ ] Added example usage (if relevant)

## Checklist
<!-- Mark the relevant option with an "x" -->

- [x] My code follows the project guidelines
- [x] Complex logic is commented
- [x] No unnecessary files or debug code included
- [x] My PR is targeting the `dev` branch
<!-- This template is here to help you structure your PR, but feel free
to adapt it to your needs. Not all sections may be relevant for your
contribution. -->

## Description

The current behavior is to use the absolute path or the working
directory relative path to find pangenome file. This is not the expected
behavior describe in the documentation.

Example:
- file tree
├── pangenome1.h5
├── pangenome2.h5
├── pangenomes
│   ├── pangenome3.h5
│   └── pangenome4.h5
└── pangenomes.tsv

- pangenomes.tsv
pangenome1	/home/user/absolute/path/pangenome1.h5
pangenome2	pangenome2.h5
pangenome3	pangenomes/pangenome3.h5
pangenome4	/home/user/absolute/path/pangenome4.h5

This work if panorama is executed where pangenomes.tsv exist. 

I add a new function to solve the path in the TSV.

## Related issue

#53 

## What changed

- Enhanced path resolution by adding the `resolve_path` function to
handle both absolute and relative paths robustly.
- Updated `check_tsv_sanity` to utilize this function for improved error
handling and path validation.

## Documentation
<!-- Mark the relevant option with an "x" -->

- [ ] Added/updated code comments
- [ ] Added/updated docstring
- [ ] Updated README or docs if needed
- [ ] Added example usage (if relevant)

## Checklist
<!-- Mark the relevant option with an "x" -->

- [ ] My code follows the project guidelines
- [ ] Complex logic is commented
- [ ] No unnecessary files or debug code included
- [ ] My PR is targeting the `dev` branch

## Additional notes

<!-- Any other context, dependencies, or things reviewers should know
-->
@jpjarnoux
jpjarnoux merged commit 22b1dca into main Jul 23, 2026
4 checks passed
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.

3 participants