Skip to content

Publish reproducible PharmaPy documentation#131

Open
bernalde wants to merge 2 commits into
masterfrom
docs/issue-130-readthedocs
Open

Publish reproducible PharmaPy documentation#131
bernalde wants to merge 2 commits into
masterfrom
docs/issue-130-readthedocs

Conversation

@bernalde

@bernalde bernalde commented Jul 22, 2026

Copy link
Copy Markdown

Summary

  • define a reusable docs dependency extra and install it from Read the Docs and GitHub Actions
  • make the complete Sphinx site build reproducibly with warnings treated as errors, including notebooks and their Pandoc/image requirements
  • preserve the original PharmaPy credits while adding the current developers, maintainers, and joint-project partners
  • update package metadata, installation links, and the CI badge for PharmaPy-org/PharmaPy

Verification

  • sphinx-build -E -a -W --keep-going -b html doc/online_docs /tmp/pharmapy-docs-131-site
  • actionlint .github/workflows/docs.yml .github/workflows/ci.yml
  • python -m pip check in a fresh Python 3.11 docs environment installed with .[docs]
  • python -m compileall -q PharmaPy
  • python -m pytest tests/ -m "not assimulo" (56 passed, 4 skipped, 6 deselected)

Read the Docs follow-up

This PR makes the repository build-ready, but it intentionally does not close
the issue. After merge, the preferred publication path is a separate Read the
Docs project connected to PharmaPy-org/PharmaPy, leaving the legacy
pharmapy.readthedocs.io site untouched. Issue #130 remains open until that
external project is registered and its live site, push builds, and pull-request
previews are verified.

Refs #130

@bernalde
bernalde marked this pull request as ready for review July 22, 2026 22:20
@bernalde

Copy link
Copy Markdown
Author

Review requested from the full current team. GitHub has formally notified the active non-author members.

@ZacharyHillman18 @Piyush1698 @QHuckaba — your PharmaPy-org and repository invitations are still pending, so GitHub cannot add you as formal requested reviewers yet. Please accept those invitations and review this PR; after acceptance, you can also be added to the formal reviewer list.

@bernalde bernalde left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Maintainer review of the documentation-publishing PR (17 files: docs infra, Sphinx config, [docs] extra, RTD/CI workflows, attribution, metadata). I authored this PR, so it is posted as a COMMENT — GitHub does not accept an author APPROVE/REQUEST_CHANGES. No blocking findings.

What I verified

  • File set matches gh pr diff (17 files); merge-base diff confirmed.
  • Python changes are docstring-only and accurate. Verified against the live signatures at head:
    • RxnKinetics: rename to stoich_matrix matches the real parameter (Kinetics.py:214); the old docstring's stoiciometric_matrix/stoichiometric_matrix spellings were wrong.
    • BatchReactor.solve_unit: removed timesim_limit (not a parameter — confirmed absent) and documented the real params_control/sundials_opts; converted to NumPy-style Parameters/Returns.
    • Evaporator/ContinuousEvaporator: **fig_kwargsfig_kwargs is a numpydoc rendering fix; signatures unchanged.
  • Assets referenced by conf.py are tracked (images/PharmaPy_logo.jpeg, images/purdue_logo.png, images/fda_logo.png, references.bib), so the broad .gitignore *.png/*.jpg rule does not strand them (git ignore does not affect already-tracked files).
  • Workflow docs.yml uses least-privilege permissions: contents: read, concurrency with cancel-in-progress, builds to site/ (which the PR adds to .gitignore), and does not deploy — consistent with RTD owning publication. No generated HTML committed.
  • .readthedocs.yaml installs .[docs], fail_on_warning: true matches the CI -W build.
  • Attribution (doc/online_docs/index.rst) preserves Original developers, adds Current developers and maintainers, and the joint-project acknowledgement (CryPTSys, SECQUOIA, Can Li, Eli Lilly) — matches #130's requirement.
  • Metadata URLs/maintainers moved to PharmaPy-org.

Linked issue (#130)

Correctly Refs #130, not Closes — the RTD reconnection/live-site verification is an external admin step the PR intentionally leaves open. All repository-side acceptance criteria (docs extra, RTD config, warning-as-error CI, attribution, metadata/URLs, README badge, no committed HTML) are satisfied.

Nonblocking

  • Incomplete stoich_matrix rename in the same docstring. See inline.
  • README downloads badge still points to CryPTSys/PharmaPy while the CI badge and all URLs moved to PharmaPy-org. If historical download counts on the upstream repo are intended, fine; otherwise it is inconsistent with the rest of the metadata move.
  • Docs Python version differs between environments: .readthedocs.yaml builds on 3.10, .github/workflows/docs.yml on 3.11. Both build the same docs and CI is green; aligning them (or documenting the intent) would make the "reproducible build" claim tighter.
  • .gitignore image foot-gun: the broad *.png/*.jpg ignore required the manual !doc/online_docs/examples/img/pfd_flowsheet.png exception, and every future committed doc image will need another. Consider un-ignoring the doc image directories (e.g. !doc/online_docs/**) instead of per-file exceptions. Not breaking today since existing assets are tracked.

Merge-readiness

No blocking findings. Live state at review time: state=OPEN, mergeStateStatus=CLEAN, reviewDecision empty. CI at head 41304fd: Core tests SUCCESS, Sphinx docs SUCCESS, Assimulo integration tests SUCCESS. Posting this review adds inline threads; since mergeStateStatus is CLEAN, required_conversation_resolution is not enforced, so they are not a merge gate. This author account cannot supply a formal APPROVE — GitHub currently reports no approval gate, but if branch protection requires one, another eligible maintainer must approve. Per #130, the issue should remain open until the external RTD connection and live-site check are done.

Comment thread PharmaPy/Kinetics.py
``stoich_matrix`` and ``partic_species`` have to be passed
(see below). The default is None.
stoiciometric_matrix : numpy array, optional
stoich_matrix : numpy array, optional

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Nonblocking: this rename to stoich_matrix is correct (it matches the real __init__ parameter), but the pass is incomplete — the partic_species description a few lines below still refers to the old name: "the order of the names in 'partic_species' is that of the columns of 'stoichiometric_matrix'." Since the parameter is now stoich_matrix, update that prose reference too. While here, the keq_params entry is still the autogenerated TYPE, optional / DESCRIPTION. placeholder — worth filling in given this docstring is already being cleaned up. Neither blocks merge.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Addressed in 9129d81: the participating-species prose now references stoich_matrix, and keq_params is documented as the dimensionless per-reaction equilibrium constant at tref_hrxn that enables reverse rates. The warning-as-error Sphinx build and all current-head CI jobs pass.

@bernalde

Copy link
Copy Markdown
Author

Addressed the review feedback on head 9129d8142238bbec6c566c8437b0e0d23f5029c0.

  • Commit pushed: 9129d81 (docs: address publishing review feedback).
  • Inline finding kinetics-stale-stoich-name: completed the stoich_matrix rename and documented keq_params as dimensionless equilibrium constants at tref_hrxn.
  • Body findings: aligned RTD with docs CI on Python 3.11; generalized the documentation PNG/JPG ignore exceptions; retained the only existing CryPTSys release count but labeled and linked it explicitly as historical.
  • Verification: warning-as-error Sphinx build passed in a fresh Python 3.11 environment; python -m pip check reported no broken requirements; python -m compileall -q PharmaPy passed; core pytest passed with 56 passed, 4 skipped, and 6 deselected; actionlint passed; post-push Core, Sphinx docs, and Assimulo CI all passed.
  • Intentionally not addressed: none.
  • Remaining state: reviewDecision is empty. The inline thread remains for a maintainer to resolve. The parallel Read the Docs project remains an authorized post-merge external step tracked by Publish PharmaPy-org documentation and refresh developer attribution #130.

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