diff --git a/pyaerocom/aeroval/__init__.py b/pyaerocom/aeroval/__init__.py index 51c45611b..695782280 100644 --- a/pyaerocom/aeroval/__init__.py +++ b/pyaerocom/aeroval/__init__.py @@ -1,3 +1,3 @@ # isort:skip_file -from .setupclasses import EvalSetup +from .setup_classes import EvalSetup from .experiment_processor import ExperimentProcessor diff --git a/pyaerocom/aeroval/experiment_output.py b/pyaerocom/aeroval/experiment_output.py index f157549a3..758c5aa2d 100644 --- a/pyaerocom/aeroval/experiment_output.py +++ b/pyaerocom/aeroval/experiment_output.py @@ -27,7 +27,7 @@ ) from pyaerocom.aeroval.json_utils import round_floats from pyaerocom.aeroval.modelentry import ModelEntry -from pyaerocom.aeroval.setupclasses import EvalSetup +from pyaerocom.aeroval.setup_classes import EvalSetup from pyaerocom.aeroval.varinfo_web import VarinfoWeb from pyaerocom.colocation.colocated_data import ColocatedData from pyaerocom.exceptions import EntryNotAvailable, VariableDefinitionError diff --git a/pyaerocom/aeroval/setupclasses.py b/pyaerocom/aeroval/setup_classes.py similarity index 99% rename from pyaerocom/aeroval/setupclasses.py rename to pyaerocom/aeroval/setup_classes.py index c9663b10c..49644f612 100644 --- a/pyaerocom/aeroval/setupclasses.py +++ b/pyaerocom/aeroval/setup_classes.py @@ -6,6 +6,7 @@ from getpass import getuser from pathlib import Path from typing import Annotated, Literal +from datetime import datetime from pyaerocom.aeroval.glob_defaults import VarWebInfo, VarWebScaleAndColormap @@ -297,6 +298,7 @@ class ExperimentInfo(BaseModel): public: bool = False exp_pi: str = getuser() pyaerocom_version: str = __version__ + creation_date: str = datetime.today().strftime("%Y-%m-%d") class EvalSetup(BaseModel): diff --git a/tests/aeroval/test_aeroval_HIGHLEV.py b/tests/aeroval/test_aeroval_HIGHLEV.py index d6cacc704..8fbba4299 100644 --- a/tests/aeroval/test_aeroval_HIGHLEV.py +++ b/tests/aeroval/test_aeroval_HIGHLEV.py @@ -6,13 +6,17 @@ from pyaerocom.aeroval import ExperimentProcessor from pyaerocom.aeroval.experiment_output import ExperimentOutput -from pyaerocom.aeroval.setupclasses import EvalSetup +from pyaerocom.aeroval.setup_classes import EvalSetup from tests.conftest import geojson_unavail CHK_CFG1 = { "map": ["AERONET-Sun-od550aer_Column_TM5-AP3-CTRL-od550aer_2010.json"], "contour": 1, - "hm": ["glob_stats_daily.json", "glob_stats_monthly.json", "glob_stats_yearly.json"], + "hm": [ + "glob_stats_daily.json", + "glob_stats_monthly.json", + "glob_stats_yearly.json", + ], "hm/ts": 10, # number of .json files in sub dir "scat": ["AERONET-Sun-od550aer_Column_TM5-AP3-CTRL-od550aer_2010.json"], "ts": 11, # number of .json files in subdir diff --git a/tests/aeroval/test_experiment_output.py b/tests/aeroval/test_experiment_output.py index a90b1f682..cd78d157e 100644 --- a/tests/aeroval/test_experiment_output.py +++ b/tests/aeroval/test_experiment_output.py @@ -9,7 +9,7 @@ from pyaerocom.aeroval import ExperimentProcessor from pyaerocom.aeroval.experiment_output import ExperimentOutput, ProjectOutput from pyaerocom.aeroval.json_utils import read_json, write_json -from pyaerocom.aeroval.setupclasses import EvalSetup +from pyaerocom.aeroval.setup_classes import EvalSetup from tests.conftest import geojson_unavail BASEDIR_DEFAULT = Path(const.OUTPUTDIR) / "aeroval" / "data" @@ -171,7 +171,14 @@ def test_ExperimentOutput__info_from_map_file(): "EBAS-2010-ac550aer_Surface_ECHAM-HAM-ac550dryaer_2010.json" ) - assert output == ("EBAS-2010", "ac550aer", "Surface", "ECHAM-HAM", "ac550dryaer", "2010") + assert output == ( + "EBAS-2010", + "ac550aer", + "Surface", + "ECHAM-HAM", + "ac550dryaer", + "2010", + ) @pytest.mark.parametrize( @@ -243,7 +250,10 @@ def test_ExperimentOutput_delete_experiment_data(tmp_path: Path, also_coldata: b ), ( "concprcpso4", - {"colmap": "coolwarm", "scale": [0, 1.25, 2.5, 3.75, 5, 6.25, 7.5, 8.75, 10]}, + { + "colmap": "coolwarm", + "scale": [0, 1.25, 2.5, 3.75, 5, 6.25, 7.5, 8.75, 10], + }, ), ], ) @@ -339,7 +349,10 @@ def test_ExperimentOutput_reorder_experiments_error(dummy_expout: ExperimentOutp def test_Experiment_Output_drop_stats_and_decimals( eval_config: dict, drop_stats, stats_decimals: int ): - eval_config["drop_stats"], eval_config["stats_decimals"] = drop_stats, stats_decimals + eval_config["drop_stats"], eval_config["stats_decimals"] = ( + drop_stats, + stats_decimals, + ) cfg = EvalSetup(**eval_config) cfg.model_cfg["mod1"] = cfg.model_cfg["TM5-AP3-CTRL"] proc = ExperimentProcessor(cfg) diff --git a/tests/aeroval/test_experiment_processor.py b/tests/aeroval/test_experiment_processor.py index 29f0732f2..ee3d418db 100644 --- a/tests/aeroval/test_experiment_processor.py +++ b/tests/aeroval/test_experiment_processor.py @@ -4,7 +4,7 @@ from pyaerocom.aeroval.experiment_output import ExperimentOutput from pyaerocom.aeroval.experiment_processor import ExperimentProcessor -from pyaerocom.aeroval.setupclasses import EvalSetup +from pyaerocom.aeroval.setup_classes import EvalSetup from tests.conftest import geojson_unavail @@ -35,8 +35,16 @@ def test_ExperimentProcessor_run(processor: ExperimentProcessor): @pytest.mark.parametrize( "cfg,kwargs,error", [ - ("cfgexp2", dict(model_name="BLA"), "'No matches could be found that match input BLA'"), - ("cfgexp2", dict(obs_name="BLUB"), "'No matches could be found that match input BLUB'"), + ( + "cfgexp2", + dict(model_name="BLA"), + "'No matches could be found that match input BLA'", + ), + ( + "cfgexp2", + dict(obs_name="BLUB"), + "'No matches could be found that match input BLUB'", + ), ], ) def test_ExperimentProcessor_run_error(processor: ExperimentProcessor, kwargs: dict, error: str): diff --git a/tests/aeroval/test_helpers.py b/tests/aeroval/test_helpers.py index 55dbe4d14..b88b6770d 100644 --- a/tests/aeroval/test_helpers.py +++ b/tests/aeroval/test_helpers.py @@ -10,7 +10,7 @@ check_if_year, make_dummy_model, ) -from pyaerocom.aeroval.setupclasses import EvalSetup +from pyaerocom.aeroval.setup_classes import EvalSetup @pytest.mark.parametrize( diff --git a/tests/aeroval/test_modelmaps_engine.py b/tests/aeroval/test_modelmaps_engine.py index 58f5ce2e5..19c6394c9 100644 --- a/tests/aeroval/test_modelmaps_engine.py +++ b/tests/aeroval/test_modelmaps_engine.py @@ -1,7 +1,7 @@ import pytest from pyaerocom.aeroval.modelmaps_engine import ModelMapsEngine -from pyaerocom.aeroval.setupclasses import EvalSetup +from pyaerocom.aeroval.setup_classes import EvalSetup from pyaerocom.exceptions import ModelVarNotAvailable from tests.fixtures.aeroval.cfg_test_exp1 import CFG diff --git a/tests/aeroval/test_setupclasses.py b/tests/aeroval/test_setupclasses.py index accad16d7..cb489e620 100644 --- a/tests/aeroval/test_setupclasses.py +++ b/tests/aeroval/test_setupclasses.py @@ -4,7 +4,7 @@ import pytest -from pyaerocom.aeroval.setupclasses import EvalSetup +from pyaerocom.aeroval.setup_classes import EvalSetup from pyaerocom.exceptions import EvalEntryNameError from tests.fixtures.aeroval.cfg_test_exp1 import CFG, MODELS, OBS_GROUNDBASED @@ -62,7 +62,11 @@ def test_EvalSetup_INVALID_ENTRY_NAMES(cfg_exp1: dict, error: str): @pytest.mark.parametrize( - "update", (pytest.param(None, id="defaults"), pytest.param(dict(proj_id="blah"), id="custom")) + "update", + ( + pytest.param(None, id="defaults"), + pytest.param(dict(proj_id="blah"), id="custom"), + ), ) def test_EvalSetup_ProjectInfo(eval_setup: EvalSetup, cfg_exp1: dict): assert eval_setup.proj_info.proj_id == cfg_exp1["proj_id"] @@ -73,12 +77,20 @@ def test_EvalSetup_ProjectInfo(eval_setup: EvalSetup, cfg_exp1: dict): ( pytest.param(None, id="defaults"), pytest.param( - dict(exp_id="exp42", exp_descr="Hello world!", exp_name="Lorem Ipsum...", public=True), + dict( + exp_id="exp42", + exp_descr="Hello world!", + exp_name="Lorem Ipsum...", + public=True, + ), id="custom1", ), pytest.param( dict( - exp_id="exp54", exp_descr="Hello world!", exp_name="Lorem Ipsum...", public=False + exp_id="exp54", + exp_descr="Hello world!", + exp_name="Lorem Ipsum...", + public=False, ), id="custom2", ), @@ -97,7 +109,8 @@ def test_EvalSetup_ExperimentInfo(eval_setup: EvalSetup, cfg_exp1: dict): ( pytest.param(None, id="defaults"), pytest.param( - dict(freqs=["yearly", "monthly"], main_freq="yearly", periods=[]), id="custom1" + dict(freqs=["yearly", "monthly"], main_freq="yearly", periods=[]), + id="custom1", ), pytest.param( dict(freqs=["monthly"], main_freq="monthly", periods=["2010", "2011", "2016"]),