diff --git a/mslib/autoplot/CLAUDE.md b/mslib/autoplot/CLAUDE.md new file mode 100644 index 000000000..e0578b617 --- /dev/null +++ b/mslib/autoplot/CLAUDE.md @@ -0,0 +1,21 @@ +# mslib.autoplot — headless batch plotting + +Purpose: the `mssautoplot` CLI: renders top/side view plots from a JSON config +without showing the GUI, by driving the msui plotting stack headlessly. +Global map: ../../ARCHITECTURE.md + +## Layout + +- `__init__.py` — the whole CLI (click-based `main`, `load_from_ftml`, + TopView/SideView plotting drivers) + +## May import + +`mslib.utils` and `mslib.msui` (this package exists precisely so that the +GUI dependency does not sit inside the base layer mslib.utils). +Never `mslib.mscolab` or `mslib.mswms` (enforced in setup.cfg). + +## Verify + +`pixi run -e dev env QT_QPA_PLATFORM=offscreen pytest tests/_test_utils/test_mssautoplot.py -q` +and `mssautoplot --help` inside the dev env. diff --git a/mslib/utils/mssautoplot.py b/mslib/autoplot/__init__.py similarity index 99% rename from mslib/utils/mssautoplot.py rename to mslib/autoplot/__init__.py index e663a5707..ed99d4b68 100644 --- a/mslib/utils/mssautoplot.py +++ b/mslib/autoplot/__init__.py @@ -1,7 +1,7 @@ """ - mslib.utils.mssautoplot - ~~~~~~~~~~~~~~~~~~~~~~~ + mslib.autoplot + ~~~~~~~~~~~~~~ A CLI tool to create for instance a number of the same plots for several flights or several forecast steps diff --git a/mslib/msui/autoplot_dockwidget.py b/mslib/msui/autoplot_dockwidget.py index 430c42441..a3315fbe3 100644 --- a/mslib/msui/autoplot_dockwidget.py +++ b/mslib/msui/autoplot_dockwidget.py @@ -36,7 +36,7 @@ from PyQt5.QtWidgets import QWidget, QFileDialog, QTreeWidgetItem, QMessageBox from PyQt5 import QtCore -from mslib.utils.mssautoplot import main as cli_tool +from mslib.autoplot import main as cli_tool from mslib.msui.qt5.ui_mss_autoplot import Ui_AutoplotDockWidget from mslib.utils import constants as const diff --git a/pyproject.toml b/pyproject.toml index 51bbc2582..5b508ddd1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,7 +22,7 @@ Repository = "https://github.com/Open-MSS/MSS" [project.scripts] mscolab = "mslib.mscolab.mscolab:main" msidp = "mslib.msidp.idp:main" -mssautoplot = "mslib.utils.mssautoplot:main" +mssautoplot = "mslib.autoplot:main" mss = "mslib.msui.mss:main" mswms = "mslib.mswms.mswms:main" diff --git a/setup.cfg b/setup.cfg index 049caa7b3..8df0ca921 100644 --- a/setup.cfg +++ b/setup.cfg @@ -62,12 +62,6 @@ source_modules = forbidden_modules = mslib.msui ignore_imports = - mslib.utils.mssautoplot -> mslib.msui - mslib.utils.mssautoplot -> mslib.msui.mpl_map - mslib.utils.mssautoplot -> mslib.msui.wms_control - mslib.utils.mssautoplot -> mslib.msui.viewplotter - mslib.utils.mssautoplot -> mslib.msui.mpl_pathinteractor - mslib.utils.mssautoplot -> mslib.msui.flighttrack mslib.plugins.io.csv -> mslib.msui.flighttrack mslib.plugins.io.text -> mslib.msui.flighttrack mslib.plugins.io.flitestar -> mslib.msui.flighttrack @@ -82,6 +76,7 @@ source_modules = mslib.plugins mslib.msidp mslib.support + mslib.autoplot forbidden_modules = mslib.mscolab ignore_imports = @@ -98,5 +93,6 @@ source_modules = mslib.plugins mslib.msidp mslib.support + mslib.autoplot forbidden_modules = mslib.mswms diff --git a/tests/_test_utils/test_mssautoplot.py b/tests/_test_utils/test_mssautoplot.py index 545e6373d..c8e90c0f2 100644 --- a/tests/_test_utils/test_mssautoplot.py +++ b/tests/_test_utils/test_mssautoplot.py @@ -4,7 +4,7 @@ tests._test_utils.test_mssautoplot ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - This module provides pytest functions to tests mslib.utils.mssautoplot + This module provides pytest functions to tests mslib.autoplot This file is part of MSS. @@ -28,7 +28,7 @@ import os -from mslib.utils.mssautoplot import load_from_ftml +from mslib.autoplot import load_from_ftml def test_load_from_ftml():