Skip to content

Make finish_website app self-contained#2168

Open
James Frost (jfrost-mo) wants to merge 4 commits into
mainfrom
seperate_finish_website
Open

Make finish_website app self-contained#2168
James Frost (jfrost-mo) wants to merge 4 commits into
mainfrom
seperate_finish_website

Conversation

@jfrost-mo

@jfrost-mo James Frost (jfrost-mo) commented Jun 2, 2026

Copy link
Copy Markdown
Member

Also allows for more general diagnostic layouts, so you don't need a plots directory.

A command line interface is added to allow for use outside of a cylc workflow.

Contribution checklist

Aim to have all relevant checks ticked off before merging. See the developer's guide for more detail.

  • Documentation has been updated to reflect change.
  • New code has tests, and affected old tests have been updated.
  • All tests and CI checks pass.
  • Ensured the pull request title is descriptive.
  • Ensure rose-suite.conf.example has been updated if new diagnostic added.
  • Conda lock files have been updated if dependencies have changed.
  • Attributed any Generative AI, such as GitHub Copilot, used in this PR.
  • Marked the PR as ready to review.

@jfrost-mo James Frost (jfrost-mo) added the cleanup Non-functional improvement label Jun 2, 2026
@github-actions

github-actions Bot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor
Total coverage: 91% (HTML report)
Name                                                              Stmts   Miss Branch BrPart  Cover
---------------------------------------------------------------------------------------------------
src/CSET/__init__.py                                                 93      2     12      0    98%
src/CSET/_common.py                                                 149      0     52      0   100%
src/CSET/cset_workflow/app/fetch_fcst/bin/fetch_data.py             115     27     24      0    79%
src/CSET/cset_workflow/app/finish_website/bin/finish_website.py      79      2      8      2    95%
src/CSET/cset_workflow/app/parbake_recipes/bin/parbake.py            29      0      8      0   100%
src/CSET/cset_workflow/app/send_email/bin/send_email.py              25      0      4      0   100%
src/CSET/cset_workflow/lib/python/jinja_utils.py                     17      0      6      0   100%
src/CSET/extract_workflow.py                                         47      0     16      0   100%
src/CSET/graph.py                                                    43      0     14      0   100%
src/CSET/operators/__init__.py                                       89      0     26      0   100%
src/CSET/operators/_atmospheric_constants.py                          9      0      0      0   100%
src/CSET/operators/_colormaps.py                                    205      4     54      4    97%
src/CSET/operators/_stash_to_lfric.py                                 3      0      0      0   100%
src/CSET/operators/_utils.py                                        183      9     74      7    94%
src/CSET/operators/ageofair.py                                      141      7     64      5    94%
src/CSET/operators/aggregate.py                                      76      1     22      1    98%
src/CSET/operators/aviation.py                                       60      0     18      0   100%
src/CSET/operators/collapse.py                                      154     12     72      5    91%
src/CSET/operators/constraints.py                                   105      7     44      2    93%
src/CSET/operators/convection.py                                     37      4     10      2    87%
src/CSET/operators/ensembles.py                                      27      0     14      0   100%
src/CSET/operators/filters.py                                        66      2     30      0    98%
src/CSET/operators/humidity.py                                       89      0     32      0   100%
src/CSET/operators/imageprocessing.py                                56      0     16      0   100%
src/CSET/operators/mesoscale.py                                      17      0      2      0   100%
src/CSET/operators/misc.py                                          146      0     54      1    99%
src/CSET/operators/plot.py                                          927    167    316     59    78%
src/CSET/operators/power_spectrum.py                                 97      3     30      3    95%
src/CSET/operators/precipitation.py                                  93      0     50      0   100%
src/CSET/operators/pressure.py                                       41      0     12      0   100%
src/CSET/operators/read.py                                          403     33    174     14    91%
src/CSET/operators/regrid.py                                        122     18     64      1    83%
src/CSET/operators/scoreswrappers.py                                 47      6     12      3    85%
src/CSET/operators/temperature.py                                   121      0     32      0   100%
src/CSET/operators/transect.py                                       62      0     24      0   100%
src/CSET/operators/wind.py                                           17      0      4      0   100%
src/CSET/operators/write.py                                          15      0      6      0   100%
src/CSET/recipes/__init__.py                                        101      0     28      0   100%
---------------------------------------------------------------------------------------------------
TOTAL                                                              4106    304   1428    109    91%

Comment thread src/CSET/cset_workflow/app/finish_website/bin/finish_website.py Outdated
Comment thread src/CSET/cset_workflow/app/finish_website/file/html/script.js Outdated
Also allows for more general diagnostic layouts, so you don't need a
plots directory.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

This PR refactors the finish_website workflow app to be usable more generally (outside a Cylc workflow) by making the website generation less dependent on a fixed plots/ layout and by adding a CLI for configuring inputs/outputs.

Changes:

  • Add an argparse-based CLI and update the Rose app command to pass explicit content/link paths.
  • Change website indexing/caching assumptions: write index.jsonl to the web root, use root-relative diagnostic paths, and stop renaming the plots directory for cache busting.
  • Update unit tests and front-end JS to match the new index.jsonl location and diagnostic path semantics.

Reviewed changes

Copilot reviewed 4 out of 5 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
tests/workflow_utils/test_finish_website.py Updates tests for new CLI and new index/path behavior.
src/CSET/cset_workflow/app/finish_website/rose-app.conf Updates the Cylc/Rose command invocation to use the new CLI arguments.
src/CSET/cset_workflow/app/finish_website/file/html/script.js Fetches index.jsonl from web root and uses record paths directly.
src/CSET/cset_workflow/app/finish_website/file/html/index.html Removes the PLOTS_PATH global now that plot URLs are no longer rewritten.
src/CSET/cset_workflow/app/finish_website/bin/finish_website.py Adds CLI parsing; adjusts skeleton install/index construction/cache busting for the new layout.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread tests/workflow_utils/test_finish_website.py
Comment thread src/CSET/cset_workflow/app/finish_website/file/html/script.js Outdated
Comment thread tests/workflow_utils/test_finish_website.py
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cleanup Non-functional improvement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants