From f3155913f966cb192fb88b721d1f3e5b88c35468 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 21 Jul 2025 04:50:48 +0000 Subject: [PATCH] Update tutorials from cylc-flow --- .../bin/consolidate-observations | 1 + .../cylc-forecasting-workflow/bin/forecast | 1 + .../bin/get-observations | 3 ++ .../bin/get-rainfall | 1 + .../bin/post-process | 1 + .../cylc-forecasting-workflow/flow.cylc | 2 -- .../lib/python/util.py | 30 ++++++++++++++----- 7 files changed, 30 insertions(+), 9 deletions(-) diff --git a/metomi/rose/etc/tutorial/cylc-forecasting-workflow/bin/consolidate-observations b/metomi/rose/etc/tutorial/cylc-forecasting-workflow/bin/consolidate-observations index 0a25a2e53e..2f3b8abc4e 100755 --- a/metomi/rose/etc/tutorial/cylc-forecasting-workflow/bin/consolidate-observations +++ b/metomi/rose/etc/tutorial/cylc-forecasting-workflow/bin/consolidate-observations @@ -115,4 +115,5 @@ def main(): if __name__ == '__main__': + util.sleep() main() diff --git a/metomi/rose/etc/tutorial/cylc-forecasting-workflow/bin/forecast b/metomi/rose/etc/tutorial/cylc-forecasting-workflow/bin/forecast index a3f73c1edd..3cdccff3a6 100755 --- a/metomi/rose/etc/tutorial/cylc-forecasting-workflow/bin/forecast +++ b/metomi/rose/etc/tutorial/cylc-forecasting-workflow/bin/forecast @@ -242,6 +242,7 @@ def main(forecast_interval, forecast_iterations): if __name__ == '__main__': + util.sleep() try: args = [int(sys.argv[1]), int(sys.argv[2])] except IndexError: diff --git a/metomi/rose/etc/tutorial/cylc-forecasting-workflow/bin/get-observations b/metomi/rose/etc/tutorial/cylc-forecasting-workflow/bin/get-observations index 394add6012..e090f3afab 100755 --- a/metomi/rose/etc/tutorial/cylc-forecasting-workflow/bin/get-observations +++ b/metomi/rose/etc/tutorial/cylc-forecasting-workflow/bin/get-observations @@ -40,6 +40,8 @@ import re import requests +import util + BASE_URL = ('http://datapoint.metoffice.gov.uk/public/data/' 'val/wxobs/all/json/{site_id}' @@ -215,5 +217,6 @@ def main(site_id, api_key=None): if __name__ == '__main__': + util.sleep() main(os.environ['SITE_ID'], os.environ.get('API_KEY')) diff --git a/metomi/rose/etc/tutorial/cylc-forecasting-workflow/bin/get-rainfall b/metomi/rose/etc/tutorial/cylc-forecasting-workflow/bin/get-rainfall index 481b203765..f2b602cfbd 100755 --- a/metomi/rose/etc/tutorial/cylc-forecasting-workflow/bin/get-rainfall +++ b/metomi/rose/etc/tutorial/cylc-forecasting-workflow/bin/get-rainfall @@ -195,4 +195,5 @@ def main(): if __name__ == '__main__': + util.sleep(2) # make the tutorial run a little slower main() diff --git a/metomi/rose/etc/tutorial/cylc-forecasting-workflow/bin/post-process b/metomi/rose/etc/tutorial/cylc-forecasting-workflow/bin/post-process index 3316152e8e..c834d644cf 100755 --- a/metomi/rose/etc/tutorial/cylc-forecasting-workflow/bin/post-process +++ b/metomi/rose/etc/tutorial/cylc-forecasting-workflow/bin/post-process @@ -101,6 +101,7 @@ def main(site_name, time): if __name__ == '__main__': + util.sleep() try: args = (sys.argv[1].lower(), int(sys.argv[2])) except IndexError: diff --git a/metomi/rose/etc/tutorial/cylc-forecasting-workflow/flow.cylc b/metomi/rose/etc/tutorial/cylc-forecasting-workflow/flow.cylc index 20c95cb34b..f18f16008b 100644 --- a/metomi/rose/etc/tutorial/cylc-forecasting-workflow/flow.cylc +++ b/metomi/rose/etc/tutorial/cylc-forecasting-workflow/flow.cylc @@ -1,6 +1,4 @@ #!jinja2 -[scheduler] - UTC mode = True [task parameters] # A list of the weather stations we will be fetching observations from. station = camborne, heathrow, shetland, aldergrove diff --git a/metomi/rose/etc/tutorial/cylc-forecasting-workflow/lib/python/util.py b/metomi/rose/etc/tutorial/cylc-forecasting-workflow/lib/python/util.py index 2addf5c5f2..6450bbc161 100644 --- a/metomi/rose/etc/tutorial/cylc-forecasting-workflow/lib/python/util.py +++ b/metomi/rose/etc/tutorial/cylc-forecasting-workflow/lib/python/util.py @@ -21,9 +21,11 @@ from copy import copy from contextlib import suppress import math -import jinja2 +import os import sys +import time +import jinja2 R_0 = 6371. # Radius of the Earth (km). @@ -280,13 +282,18 @@ def __call__(self, grid_x, grid_y): return z_val -def parse_domain(domain): - bbox = list(map(float, domain.split(','))) +def parse_domain(domain: str): + lng1, lat1, lng2, lat2 = list(map(float, domain.split(','))) + msg = "Invalid domain '{}' ({} {} >= {})" + if lng1 >= lng2: + raise ValueError(msg.format(domain, 'longitude', lng1, lng2)) + if lat1 >= lat2: + raise ValueError(msg.format(domain, 'latitude', lat1, lat2)) return { - 'lng1': bbox[0], - 'lat1': bbox[1], - 'lng2': bbox[2], - 'lat2': bbox[3] + 'lng1': lng1, + 'lat1': lat1, + 'lng2': lng2, + 'lat2': lat2, } @@ -301,3 +308,12 @@ def generate_html_map(filename, template_file, data, domain, resolution): lat2=domain['lat2'], data=data )) + + +def sleep(secs=4): + """Make the tutorials run a little slower so users can follow along. + + (Only if not running in CI). + """ + if 'CI' not in os.environ: + time.sleep(secs)