From 029892fae2d058c98ab02b0562a44cba2a15c7df Mon Sep 17 00:00:00 2001 From: Zach Smith Date: Wed, 12 Apr 2023 16:31:21 +0200 Subject: [PATCH] Refactored CLI layout to be more intuitive in terms of naming, and also the module logic is no longer imported into weird places before executing (#30) --- toolkit/__main__.py | 77 +++++++++++-------- toolkit/cli/__init__.py | 4 +- toolkit/cli/applications/__init__.py | 3 + toolkit/cli/applications/kerchunk/__init__.py | 3 + .../kerchunk/run/__init__.py | 0 .../lacce/__init__.py | 0 toolkit/cli/applications/mhw/__init__.py | 4 + .../mhw/start/__init__.py | 3 +- .../mhw/thresholds/__init__.py | 6 +- .../mhw/thresholds/catalogue/__init__.py | 3 + .../mhw/thresholds/catalogue/update_cache.py | 0 .../mhw/thresholds/climatology/__init__.py | 4 + .../mhw/thresholds/climatology/daily.py | 0 .../mhw/thresholds/climatology/define_mhw.py | 0 toolkit/cli/applications/ops/__init__.py | 5 ++ .../ops/download/__init__.py | 4 +- .../ops/download/gfs/__init__.py | 2 +- .../ops/download/gfs/functions.py | 0 .../ops/download/mercator/__init__.py | 0 .../ops/load/__init__.py | 9 ++- .../ops/load/coordinates/__init__.py | 0 .../ops/load/coordinates/coordinates.sql | 0 .../ops/load/finalize/__init__.py | 0 .../ops/load/models.yml | 0 .../ops/load/raster2pgsql/__init__.py | 0 .../raster2pgsql/update-raster_xref_run.sql | 0 .../ops/load/values/__init__.py | 2 +- .../ops/load/values/load_band.py | 0 .../ops/transform/__init__.py | 4 +- .../ops/transform/depth_functions.py | 0 .../ops/transform/functions.py | 0 .../update/__init__.py | 0 .../update/update_bashrc.py | 0 toolkit/cli/commands/__init__.py | 3 - toolkit/cli/define/__init__.py | 3 + .../{commands => define}/kerchunk/__init__.py | 0 .../{commands => define}/lacce/__init__.py | 0 .../cli/{commands => define}/mhw/__init__.py | 0 .../cli/{commands => define}/ops/__init__.py | 0 .../{commands => define}/update/__init__.py | 0 toolkit/cli/exe/kerchunk/__init__.py | 7 -- toolkit/cli/exe/mhw/__init__.py | 7 -- toolkit/cli/modules/__init__.py | 3 - toolkit/cli/modules/kerchunk/__init__.py | 3 - toolkit/cli/modules/mhw/__init__.py | 4 - .../mhw/thresholds/catalogue/__init__.py | 3 - .../mhw/thresholds/climatology/__init__.py | 4 - toolkit/cli/modules/ops/__init__.py | 5 -- toolkit/cli/{exe => parse}/__init__.py | 2 +- toolkit/cli/parse/kerchunk/__init__.py | 5 ++ toolkit/cli/{exe => parse}/lacce/__init__.py | 4 +- toolkit/cli/parse/mhw/__init__.py | 5 ++ toolkit/cli/{exe => parse}/ops/__init__.py | 11 +-- toolkit/cli/{exe => parse}/update/__init__.py | 9 +-- 54 files changed, 108 insertions(+), 103 deletions(-) create mode 100644 toolkit/cli/applications/__init__.py create mode 100644 toolkit/cli/applications/kerchunk/__init__.py rename toolkit/cli/{modules => applications}/kerchunk/run/__init__.py (100%) rename toolkit/cli/{modules => applications}/lacce/__init__.py (100%) create mode 100644 toolkit/cli/applications/mhw/__init__.py rename toolkit/cli/{modules => applications}/mhw/start/__init__.py (52%) rename toolkit/cli/{modules => applications}/mhw/thresholds/__init__.py (87%) create mode 100644 toolkit/cli/applications/mhw/thresholds/catalogue/__init__.py rename toolkit/cli/{modules => applications}/mhw/thresholds/catalogue/update_cache.py (100%) create mode 100644 toolkit/cli/applications/mhw/thresholds/climatology/__init__.py rename toolkit/cli/{modules => applications}/mhw/thresholds/climatology/daily.py (100%) rename toolkit/cli/{modules => applications}/mhw/thresholds/climatology/define_mhw.py (100%) create mode 100644 toolkit/cli/applications/ops/__init__.py rename toolkit/cli/{modules => applications}/ops/download/__init__.py (91%) rename toolkit/cli/{modules => applications}/ops/download/gfs/__init__.py (98%) rename toolkit/cli/{modules => applications}/ops/download/gfs/functions.py (100%) rename toolkit/cli/{modules => applications}/ops/download/mercator/__init__.py (100%) rename toolkit/cli/{modules => applications}/ops/load/__init__.py (94%) rename toolkit/cli/{modules => applications}/ops/load/coordinates/__init__.py (100%) rename toolkit/cli/{modules => applications}/ops/load/coordinates/coordinates.sql (100%) rename toolkit/cli/{modules => applications}/ops/load/finalize/__init__.py (100%) rename toolkit/cli/{modules => applications}/ops/load/models.yml (100%) rename toolkit/cli/{modules => applications}/ops/load/raster2pgsql/__init__.py (100%) rename toolkit/cli/{modules => applications}/ops/load/raster2pgsql/update-raster_xref_run.sql (100%) rename toolkit/cli/{modules => applications}/ops/load/values/__init__.py (83%) rename toolkit/cli/{modules => applications}/ops/load/values/load_band.py (100%) rename toolkit/cli/{modules => applications}/ops/transform/__init__.py (98%) rename toolkit/cli/{modules => applications}/ops/transform/depth_functions.py (100%) rename toolkit/cli/{modules => applications}/ops/transform/functions.py (100%) rename toolkit/cli/{modules => applications}/update/__init__.py (100%) rename toolkit/cli/{modules => applications}/update/update_bashrc.py (100%) delete mode 100644 toolkit/cli/commands/__init__.py create mode 100644 toolkit/cli/define/__init__.py rename toolkit/cli/{commands => define}/kerchunk/__init__.py (100%) rename toolkit/cli/{commands => define}/lacce/__init__.py (100%) rename toolkit/cli/{commands => define}/mhw/__init__.py (100%) rename toolkit/cli/{commands => define}/ops/__init__.py (100%) rename toolkit/cli/{commands => define}/update/__init__.py (100%) delete mode 100644 toolkit/cli/exe/kerchunk/__init__.py delete mode 100644 toolkit/cli/exe/mhw/__init__.py delete mode 100644 toolkit/cli/modules/__init__.py delete mode 100644 toolkit/cli/modules/kerchunk/__init__.py delete mode 100644 toolkit/cli/modules/mhw/__init__.py delete mode 100644 toolkit/cli/modules/mhw/thresholds/catalogue/__init__.py delete mode 100644 toolkit/cli/modules/mhw/thresholds/climatology/__init__.py delete mode 100644 toolkit/cli/modules/ops/__init__.py rename toolkit/cli/{exe => parse}/__init__.py (50%) create mode 100644 toolkit/cli/parse/kerchunk/__init__.py rename toolkit/cli/{exe => parse}/lacce/__init__.py (64%) create mode 100644 toolkit/cli/parse/mhw/__init__.py rename toolkit/cli/{exe => parse}/ops/__init__.py (53%) rename toolkit/cli/{exe => parse}/update/__init__.py (61%) diff --git a/toolkit/__main__.py b/toolkit/__main__.py index 191add07..142a2714 100644 --- a/toolkit/__main__.py +++ b/toolkit/__main__.py @@ -1,18 +1,25 @@ import argparse import os -from cli.commands import ( - lacce as lacce_cmd, - mhw as mhw_cmd, - ops as ops_cmd, - kerchunk as kerchunk_cmd, - update as update_cmd, +from cli.define import ( + lacce as define_lacce, + mhw as define_mhw, + ops as define_ops, + kerchunk as define_kerchunk, + update as define_update, ) -from cli.exe import ( - lacce as lacce_exe, - mhw as mhw_exe, - ops as ops_exe, - kerchunk as kerchunk_exe, - update as update_exe, +from cli.parse import ( + lacce as parse_lacce, + mhw as parse_mhw, + ops as parse_ops, + kerchunk as parse_kerchunk, + update as parse_update, +) +from cli.applications import ( + lacce, + mhw, + ops, + kerchunk, + update, ) prog = "somisana" @@ -30,29 +37,37 @@ def main(): metavar="Applications", ) - # Build commands - mhw = mhw_cmd.build(module_parser) - ops = ops_cmd.build(module_parser) - lacce = lacce_cmd.build(module_parser) - kerchunk = kerchunk_cmd.build(module_parser) - update = update_cmd.build(module_parser) + # (1) Build commands + mhw_app = define_mhw.build(module_parser) + ops_app = define_ops.build(module_parser) + lacce_app = define_lacce.build(module_parser) + kerchunk_app = define_kerchunk.build(module_parser) + update_app = define_update.build(module_parser) - # Parse args + # (2) Parse command string args = parser.parse_args() - # Run the CLI - if args.command == "ops": - ops_exe.run(ops, args) - elif args.command == "mhw": - mhw_exe.run(mhw, args) - elif args.command == "lacce": - lacce_exe.run(lacce, args) - elif args.command == "kerchunk": - kerchunk_exe.run(kerchunk, args) - elif args.command == "update": - update_exe.run(update, args) - else: + # (3) Select the application by parsing flag options + exe = ( + parse_ops.parse(ops_app, args, ops) + if args.command == "ops" + else parse_mhw.parse(mhw_app, args, mhw) + if args.command == "mhw" + else parse_lacce.parse(lacce_app, args, lacce) + if args.command == "lacce" + else parse_kerchunk.parse(kerchunk_app, args, kerchunk) + if args.command == "kerchunk" + else parse_update.run(update_app, args, update) + if args.command == "update" + else None + ) + + # (4) Execute the application + if not exe: parser.print_help() + return + else: + exe(args) if __name__ == "__main__": diff --git a/toolkit/cli/__init__.py b/toolkit/cli/__init__.py index 1a91c534..caefeae6 100644 --- a/toolkit/cli/__init__.py +++ b/toolkit/cli/__init__.py @@ -1,3 +1,3 @@ -from cli import commands, modules, exe +from cli import define, applications, parse -__all__ = ["commands", "modules", "exe"] +__all__ = ["define", "applications", "parse"] diff --git a/toolkit/cli/applications/__init__.py b/toolkit/cli/applications/__init__.py new file mode 100644 index 00000000..cf9a880f --- /dev/null +++ b/toolkit/cli/applications/__init__.py @@ -0,0 +1,3 @@ +from cli.applications import lacce, mhw, ops, kerchunk, update + +__all__ = ["lacce", "mhw", "ops", "kerchunk", "update"] diff --git a/toolkit/cli/applications/kerchunk/__init__.py b/toolkit/cli/applications/kerchunk/__init__.py new file mode 100644 index 00000000..61749244 --- /dev/null +++ b/toolkit/cli/applications/kerchunk/__init__.py @@ -0,0 +1,3 @@ +from cli.applications.kerchunk.run import run + +__all__ = ["run"] diff --git a/toolkit/cli/modules/kerchunk/run/__init__.py b/toolkit/cli/applications/kerchunk/run/__init__.py similarity index 100% rename from toolkit/cli/modules/kerchunk/run/__init__.py rename to toolkit/cli/applications/kerchunk/run/__init__.py diff --git a/toolkit/cli/modules/lacce/__init__.py b/toolkit/cli/applications/lacce/__init__.py similarity index 100% rename from toolkit/cli/modules/lacce/__init__.py rename to toolkit/cli/applications/lacce/__init__.py diff --git a/toolkit/cli/applications/mhw/__init__.py b/toolkit/cli/applications/mhw/__init__.py new file mode 100644 index 00000000..645e902f --- /dev/null +++ b/toolkit/cli/applications/mhw/__init__.py @@ -0,0 +1,4 @@ +from cli.applications.mhw.start import start +from cli.applications.mhw.thresholds import create_thresholds + +__all__ = ["start", "create_thresholds"] diff --git a/toolkit/cli/modules/mhw/start/__init__.py b/toolkit/cli/applications/mhw/start/__init__.py similarity index 52% rename from toolkit/cli/modules/mhw/start/__init__.py rename to toolkit/cli/applications/mhw/start/__init__.py index 20ee3966..8147320f 100644 --- a/toolkit/cli/modules/mhw/start/__init__.py +++ b/toolkit/cli/applications/mhw/start/__init__.py @@ -1,4 +1,5 @@ -from cli.modules.mhw.thresholds import create_thresholds +from cli.applications.mhw.thresholds import create_thresholds + def start(args): create_thresholds(args) diff --git a/toolkit/cli/modules/mhw/thresholds/__init__.py b/toolkit/cli/applications/mhw/thresholds/__init__.py similarity index 87% rename from toolkit/cli/modules/mhw/thresholds/__init__.py rename to toolkit/cli/applications/mhw/thresholds/__init__.py index 7e25a643..af42ad74 100644 --- a/toolkit/cli/modules/mhw/thresholds/__init__.py +++ b/toolkit/cli/applications/mhw/thresholds/__init__.py @@ -1,9 +1,9 @@ import os from os.path import join from config import CACHDIR -from cli.modules.mhw.thresholds.catalogue import update_cache -from cli.modules.mhw.thresholds.climatology import calculate_daily_clim -from cli.modules.mhw.thresholds.climatology import calculate_mhw +from cli.applications.mhw.thresholds.catalogue import update_cache +from cli.applications.mhw.thresholds.climatology import calculate_daily_clim +from cli.applications.mhw.thresholds.climatology import calculate_mhw from oisst import Catalogue MHW_BULK_CACHE = join(CACHDIR, "ohw", "thresholds", "bulk") diff --git a/toolkit/cli/applications/mhw/thresholds/catalogue/__init__.py b/toolkit/cli/applications/mhw/thresholds/catalogue/__init__.py new file mode 100644 index 00000000..af8db17d --- /dev/null +++ b/toolkit/cli/applications/mhw/thresholds/catalogue/__init__.py @@ -0,0 +1,3 @@ +from cli.applications.mhw.thresholds.catalogue.update_cache import update_cache + +__all__ = ["update_cache"] diff --git a/toolkit/cli/modules/mhw/thresholds/catalogue/update_cache.py b/toolkit/cli/applications/mhw/thresholds/catalogue/update_cache.py similarity index 100% rename from toolkit/cli/modules/mhw/thresholds/catalogue/update_cache.py rename to toolkit/cli/applications/mhw/thresholds/catalogue/update_cache.py diff --git a/toolkit/cli/applications/mhw/thresholds/climatology/__init__.py b/toolkit/cli/applications/mhw/thresholds/climatology/__init__.py new file mode 100644 index 00000000..735f3264 --- /dev/null +++ b/toolkit/cli/applications/mhw/thresholds/climatology/__init__.py @@ -0,0 +1,4 @@ +from cli.applications.mhw.thresholds.climatology.daily import calculate_daily_clim +from cli.applications.mhw.thresholds.climatology.define_mhw import calculate_mhw + +__all__ = ["calculate_daily_clim", "calculate_mhw"] diff --git a/toolkit/cli/modules/mhw/thresholds/climatology/daily.py b/toolkit/cli/applications/mhw/thresholds/climatology/daily.py similarity index 100% rename from toolkit/cli/modules/mhw/thresholds/climatology/daily.py rename to toolkit/cli/applications/mhw/thresholds/climatology/daily.py diff --git a/toolkit/cli/modules/mhw/thresholds/climatology/define_mhw.py b/toolkit/cli/applications/mhw/thresholds/climatology/define_mhw.py similarity index 100% rename from toolkit/cli/modules/mhw/thresholds/climatology/define_mhw.py rename to toolkit/cli/applications/mhw/thresholds/climatology/define_mhw.py diff --git a/toolkit/cli/applications/ops/__init__.py b/toolkit/cli/applications/ops/__init__.py new file mode 100644 index 00000000..13bb383b --- /dev/null +++ b/toolkit/cli/applications/ops/__init__.py @@ -0,0 +1,5 @@ +from cli.applications.ops.download import download +from cli.applications.ops.transform import transform +from cli.applications.ops.load import load + +__all__ = ["download", "transform", "load"] diff --git a/toolkit/cli/modules/ops/download/__init__.py b/toolkit/cli/applications/ops/download/__init__.py similarity index 91% rename from toolkit/cli/modules/ops/download/__init__.py rename to toolkit/cli/applications/ops/download/__init__.py index 9123e787..4c4a8765 100644 --- a/toolkit/cli/modules/ops/download/__init__.py +++ b/toolkit/cli/applications/ops/download/__init__.py @@ -1,8 +1,8 @@ import os from datetime import datetime, timedelta from pathlib import Path -from cli.modules.ops.download.mercator import download as mercator_download -from cli.modules.ops.download.gfs import download as gfs_download +from cli.applications.ops.download.mercator import download as mercator_download +from cli.applications.ops.download.gfs import download as gfs_download def download(args): diff --git a/toolkit/cli/modules/ops/download/gfs/__init__.py b/toolkit/cli/applications/ops/download/gfs/__init__.py similarity index 98% rename from toolkit/cli/modules/ops/download/gfs/__init__.py rename to toolkit/cli/applications/ops/download/gfs/__init__.py index 15eac392..e8dd0df9 100644 --- a/toolkit/cli/modules/ops/download/gfs/__init__.py +++ b/toolkit/cli/applications/ops/download/gfs/__init__.py @@ -1,6 +1,6 @@ import asyncio from datetime import datetime, timedelta, time -from cli.modules.ops.download.gfs.functions import ( +from cli.applications.ops.download.gfs.functions import ( download_file, get_latest_available_dt, set_params, diff --git a/toolkit/cli/modules/ops/download/gfs/functions.py b/toolkit/cli/applications/ops/download/gfs/functions.py similarity index 100% rename from toolkit/cli/modules/ops/download/gfs/functions.py rename to toolkit/cli/applications/ops/download/gfs/functions.py diff --git a/toolkit/cli/modules/ops/download/mercator/__init__.py b/toolkit/cli/applications/ops/download/mercator/__init__.py similarity index 100% rename from toolkit/cli/modules/ops/download/mercator/__init__.py rename to toolkit/cli/applications/ops/download/mercator/__init__.py diff --git a/toolkit/cli/modules/ops/load/__init__.py b/toolkit/cli/applications/ops/load/__init__.py similarity index 94% rename from toolkit/cli/modules/ops/load/__init__.py rename to toolkit/cli/applications/ops/load/__init__.py index 23647077..83a06d31 100644 --- a/toolkit/cli/modules/ops/load/__init__.py +++ b/toolkit/cli/applications/ops/load/__init__.py @@ -3,10 +3,11 @@ from datetime import datetime from postgis import setup as installDb, drop as dropSchema, pool from config import PY_ENV -from cli.modules.ops.load.raster2pgsql import register as refresh_rasters -from cli.modules.ops.load.coordinates import upsert as refresh_coordinates -from cli.modules.ops.load.values import upsert as refresh_values -from cli.modules.ops.load.finalize import run as finalize +from cli.applications.ops.load.raster2pgsql import register as refresh_rasters +from cli.applications.ops.load.coordinates import upsert as refresh_coordinates +from cli.applications.ops.load.values import upsert as refresh_values +from cli.applications.ops.load.finalize import run as finalize + def load(args): start_time = datetime.now() diff --git a/toolkit/cli/modules/ops/load/coordinates/__init__.py b/toolkit/cli/applications/ops/load/coordinates/__init__.py similarity index 100% rename from toolkit/cli/modules/ops/load/coordinates/__init__.py rename to toolkit/cli/applications/ops/load/coordinates/__init__.py diff --git a/toolkit/cli/modules/ops/load/coordinates/coordinates.sql b/toolkit/cli/applications/ops/load/coordinates/coordinates.sql similarity index 100% rename from toolkit/cli/modules/ops/load/coordinates/coordinates.sql rename to toolkit/cli/applications/ops/load/coordinates/coordinates.sql diff --git a/toolkit/cli/modules/ops/load/finalize/__init__.py b/toolkit/cli/applications/ops/load/finalize/__init__.py similarity index 100% rename from toolkit/cli/modules/ops/load/finalize/__init__.py rename to toolkit/cli/applications/ops/load/finalize/__init__.py diff --git a/toolkit/cli/modules/ops/load/models.yml b/toolkit/cli/applications/ops/load/models.yml similarity index 100% rename from toolkit/cli/modules/ops/load/models.yml rename to toolkit/cli/applications/ops/load/models.yml diff --git a/toolkit/cli/modules/ops/load/raster2pgsql/__init__.py b/toolkit/cli/applications/ops/load/raster2pgsql/__init__.py similarity index 100% rename from toolkit/cli/modules/ops/load/raster2pgsql/__init__.py rename to toolkit/cli/applications/ops/load/raster2pgsql/__init__.py diff --git a/toolkit/cli/modules/ops/load/raster2pgsql/update-raster_xref_run.sql b/toolkit/cli/applications/ops/load/raster2pgsql/update-raster_xref_run.sql similarity index 100% rename from toolkit/cli/modules/ops/load/raster2pgsql/update-raster_xref_run.sql rename to toolkit/cli/applications/ops/load/raster2pgsql/update-raster_xref_run.sql diff --git a/toolkit/cli/modules/ops/load/values/__init__.py b/toolkit/cli/applications/ops/load/values/__init__.py similarity index 83% rename from toolkit/cli/modules/ops/load/values/__init__.py rename to toolkit/cli/applications/ops/load/values/__init__.py index 491c162d..6b16e5a2 100644 --- a/toolkit/cli/modules/ops/load/values/__init__.py +++ b/toolkit/cli/applications/ops/load/values/__init__.py @@ -1,4 +1,4 @@ -from cli.modules.ops.load.values.load_band import load +from cli.applications.ops.load.values.load_band import load def upsert(runid, start_time, depths, datetimes, total_depth_levels): diff --git a/toolkit/cli/modules/ops/load/values/load_band.py b/toolkit/cli/applications/ops/load/values/load_band.py similarity index 100% rename from toolkit/cli/modules/ops/load/values/load_band.py rename to toolkit/cli/applications/ops/load/values/load_band.py diff --git a/toolkit/cli/modules/ops/transform/__init__.py b/toolkit/cli/applications/ops/transform/__init__.py similarity index 98% rename from toolkit/cli/modules/ops/transform/__init__.py rename to toolkit/cli/applications/ops/transform/__init__.py index 598b8c2a..13cf5a49 100644 --- a/toolkit/cli/modules/ops/transform/__init__.py +++ b/toolkit/cli/applications/ops/transform/__init__.py @@ -2,8 +2,8 @@ import numpy as np import os from datetime import timedelta, datetime -from cli.modules.ops.transform.depth_functions import z_levels -from cli.modules.ops.transform.functions import hour_rounder, u2rho_4d, v2rho_4d +from cli.applications.ops.transform.depth_functions import z_levels +from cli.applications.ops.transform.functions import hour_rounder, u2rho_4d, v2rho_4d import subprocess # All dates in the CROCO output are represented diff --git a/toolkit/cli/modules/ops/transform/depth_functions.py b/toolkit/cli/applications/ops/transform/depth_functions.py similarity index 100% rename from toolkit/cli/modules/ops/transform/depth_functions.py rename to toolkit/cli/applications/ops/transform/depth_functions.py diff --git a/toolkit/cli/modules/ops/transform/functions.py b/toolkit/cli/applications/ops/transform/functions.py similarity index 100% rename from toolkit/cli/modules/ops/transform/functions.py rename to toolkit/cli/applications/ops/transform/functions.py diff --git a/toolkit/cli/modules/update/__init__.py b/toolkit/cli/applications/update/__init__.py similarity index 100% rename from toolkit/cli/modules/update/__init__.py rename to toolkit/cli/applications/update/__init__.py diff --git a/toolkit/cli/modules/update/update_bashrc.py b/toolkit/cli/applications/update/update_bashrc.py similarity index 100% rename from toolkit/cli/modules/update/update_bashrc.py rename to toolkit/cli/applications/update/update_bashrc.py diff --git a/toolkit/cli/commands/__init__.py b/toolkit/cli/commands/__init__.py deleted file mode 100644 index 29fc1cee..00000000 --- a/toolkit/cli/commands/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from cli.commands import lacce, mhw, ops, kerchunk, update - -__all__ = ["lacce", "mhw", "ops", "kerchunk", "update"] diff --git a/toolkit/cli/define/__init__.py b/toolkit/cli/define/__init__.py new file mode 100644 index 00000000..45902bf7 --- /dev/null +++ b/toolkit/cli/define/__init__.py @@ -0,0 +1,3 @@ +from cli.define import lacce, mhw, ops, kerchunk, update + +__all__ = ["lacce", "mhw", "ops", "kerchunk", "update"] diff --git a/toolkit/cli/commands/kerchunk/__init__.py b/toolkit/cli/define/kerchunk/__init__.py similarity index 100% rename from toolkit/cli/commands/kerchunk/__init__.py rename to toolkit/cli/define/kerchunk/__init__.py diff --git a/toolkit/cli/commands/lacce/__init__.py b/toolkit/cli/define/lacce/__init__.py similarity index 100% rename from toolkit/cli/commands/lacce/__init__.py rename to toolkit/cli/define/lacce/__init__.py diff --git a/toolkit/cli/commands/mhw/__init__.py b/toolkit/cli/define/mhw/__init__.py similarity index 100% rename from toolkit/cli/commands/mhw/__init__.py rename to toolkit/cli/define/mhw/__init__.py diff --git a/toolkit/cli/commands/ops/__init__.py b/toolkit/cli/define/ops/__init__.py similarity index 100% rename from toolkit/cli/commands/ops/__init__.py rename to toolkit/cli/define/ops/__init__.py diff --git a/toolkit/cli/commands/update/__init__.py b/toolkit/cli/define/update/__init__.py similarity index 100% rename from toolkit/cli/commands/update/__init__.py rename to toolkit/cli/define/update/__init__.py diff --git a/toolkit/cli/exe/kerchunk/__init__.py b/toolkit/cli/exe/kerchunk/__init__.py deleted file mode 100644 index 858423fe..00000000 --- a/toolkit/cli/exe/kerchunk/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -from cli.modules.kerchunk import run as run_kerchunker - -def run(cmd, args): - if args.kerchunk_command == "run": - run_kerchunker(args) - else: - print(cmd.format_help()) \ No newline at end of file diff --git a/toolkit/cli/exe/mhw/__init__.py b/toolkit/cli/exe/mhw/__init__.py deleted file mode 100644 index cb5059b0..00000000 --- a/toolkit/cli/exe/mhw/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -from cli.modules.mhw import start - -def run(cmd, args): - if args.mhw_command == "start": - start(args) - else: - print(cmd.format_help()) \ No newline at end of file diff --git a/toolkit/cli/modules/__init__.py b/toolkit/cli/modules/__init__.py deleted file mode 100644 index 50f2fad7..00000000 --- a/toolkit/cli/modules/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from cli.modules import lacce, mhw, ops, kerchunk, update - -__all__ = ["lacce", "mhw", "ops", "kerchunk", "update"] diff --git a/toolkit/cli/modules/kerchunk/__init__.py b/toolkit/cli/modules/kerchunk/__init__.py deleted file mode 100644 index af24bc3d..00000000 --- a/toolkit/cli/modules/kerchunk/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from cli.modules.kerchunk.run import run - -__all__ = ['run'] \ No newline at end of file diff --git a/toolkit/cli/modules/mhw/__init__.py b/toolkit/cli/modules/mhw/__init__.py deleted file mode 100644 index 55d6640b..00000000 --- a/toolkit/cli/modules/mhw/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from cli.modules.mhw.start import start -from cli.modules.mhw.thresholds import create_thresholds - -__all__ = ['start', 'create_thresholds'] \ No newline at end of file diff --git a/toolkit/cli/modules/mhw/thresholds/catalogue/__init__.py b/toolkit/cli/modules/mhw/thresholds/catalogue/__init__.py deleted file mode 100644 index eb6ab4c6..00000000 --- a/toolkit/cli/modules/mhw/thresholds/catalogue/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from cli.modules.mhw.thresholds.catalogue.update_cache import update_cache - -__all__ = ['update_cache'] \ No newline at end of file diff --git a/toolkit/cli/modules/mhw/thresholds/climatology/__init__.py b/toolkit/cli/modules/mhw/thresholds/climatology/__init__.py deleted file mode 100644 index f1fa3b0e..00000000 --- a/toolkit/cli/modules/mhw/thresholds/climatology/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from cli.modules.mhw.thresholds.climatology.daily import calculate_daily_clim -from cli.modules.mhw.thresholds.climatology.define_mhw import calculate_mhw - -__all__ = ['calculate_daily_clim','calculate_mhw'] \ No newline at end of file diff --git a/toolkit/cli/modules/ops/__init__.py b/toolkit/cli/modules/ops/__init__.py deleted file mode 100644 index 1361bb6b..00000000 --- a/toolkit/cli/modules/ops/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from cli.modules.ops.download import download -from cli.modules.ops.transform import transform -from cli.modules.ops.load import load - -__all__ = ["download", "transform", "load"] diff --git a/toolkit/cli/exe/__init__.py b/toolkit/cli/parse/__init__.py similarity index 50% rename from toolkit/cli/exe/__init__.py rename to toolkit/cli/parse/__init__.py index 5328588b..f1e7c22d 100644 --- a/toolkit/cli/exe/__init__.py +++ b/toolkit/cli/parse/__init__.py @@ -1,3 +1,3 @@ -from cli.exe import lacce, mhw, ops, kerchunk, update +from cli.parse import lacce, mhw, ops, kerchunk, update __all__ = ["lacce", "mhw", "ops", "kerchunk", "update"] diff --git a/toolkit/cli/parse/kerchunk/__init__.py b/toolkit/cli/parse/kerchunk/__init__.py new file mode 100644 index 00000000..1d3234ad --- /dev/null +++ b/toolkit/cli/parse/kerchunk/__init__.py @@ -0,0 +1,5 @@ +def parse(cmd, args, module): + if args.kerchunk_command == "run": + return module.run + else: + print(cmd.format_help()) diff --git a/toolkit/cli/exe/lacce/__init__.py b/toolkit/cli/parse/lacce/__init__.py similarity index 64% rename from toolkit/cli/exe/lacce/__init__.py rename to toolkit/cli/parse/lacce/__init__.py index 79983218..739257fd 100644 --- a/toolkit/cli/exe/lacce/__init__.py +++ b/toolkit/cli/parse/lacce/__init__.py @@ -1,7 +1,7 @@ -def run(cmd, args): +def parse(cmd, args, module): input = args.input output = args.output if input and output: print("LACCE", input, output) - return + return lambda: print("Not implemented") print(cmd.format_help()) diff --git a/toolkit/cli/parse/mhw/__init__.py b/toolkit/cli/parse/mhw/__init__.py new file mode 100644 index 00000000..6526e97a --- /dev/null +++ b/toolkit/cli/parse/mhw/__init__.py @@ -0,0 +1,5 @@ +def parse(cmd, args, module): + if args.mhw_command == "start": + return module.start + else: + print(cmd.format_help()) diff --git a/toolkit/cli/exe/ops/__init__.py b/toolkit/cli/parse/ops/__init__.py similarity index 53% rename from toolkit/cli/exe/ops/__init__.py rename to toolkit/cli/parse/ops/__init__.py index 188b3a54..0d3e854f 100644 --- a/toolkit/cli/exe/ops/__init__.py +++ b/toolkit/cli/parse/ops/__init__.py @@ -1,12 +1,9 @@ -from cli.modules.ops import download, load, transform - - -def run(cmd, args): +def parse(cmd, args, module): if args.ops_command == "download": - download(args) + return module.download elif args.ops_command == "transform": - transform(args) + return module.transform elif args.ops_command == "load": - load(args) + return module.load else: print(cmd.format_help()) diff --git a/toolkit/cli/exe/update/__init__.py b/toolkit/cli/parse/update/__init__.py similarity index 61% rename from toolkit/cli/exe/update/__init__.py rename to toolkit/cli/parse/update/__init__.py index 6384f102..553f1b16 100644 --- a/toolkit/cli/exe/update/__init__.py +++ b/toolkit/cli/parse/update/__init__.py @@ -1,13 +1,8 @@ -from cli.modules.update.update_bashrc import update_bashrc - - -def run(cmd, args): +def run(cmd, args, module): version = args.version reset = args.reset if reset and version: raise Exception("Please specify either reset or version flags") - if version or reset: - update_bashrc(args) - return + return module.update_bashrc print(cmd.format_help())