From 50f6fde1024ee58d0a244303130e13254d9c076e Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 30 Jan 2025 11:57:12 +0100 Subject: [PATCH] TEMPORARY Debug test_plot_simulated on macOS --- .github/workflows/pytest.yaml | 2 +- message_ix_models/model/transport/config.py | 3 +++ message_ix_models/model/transport/testing.py | 21 ++++++++++++++++++- message_ix_models/report/__init__.py | 2 ++ message_ix_models/testing/__init__.py | 3 +++ .../tests/model/transport/test_report.py | 1 + 6 files changed, 30 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pytest.yaml b/.github/workflows/pytest.yaml index 4af17160d2..467e8bb599 100644 --- a/.github/workflows/pytest.yaml +++ b/.github/workflows/pytest.yaml @@ -167,7 +167,7 @@ jobs: run: | pytest message_ix_models \ -m "not (ece_db or snapshot)" \ - --color=yes --durations=20 -rA --verbose \ + --color=yes --durations=20 -rA --verbose --exitfirst \ --cov-report=term-missing --cov-report=xml \ --numprocesses=auto \ --local-cache --jvmargs="-Xmx6G" diff --git a/message_ix_models/model/transport/config.py b/message_ix_models/model/transport/config.py index 6970585bfc..92ee2ce220 100644 --- a/message_ix_models/model/transport/config.py +++ b/message_ix_models/model/transport/config.py @@ -341,12 +341,15 @@ def from_context( # Handle arguments options = options or dict() + log.debug(f".transport.Config.from_context: {context.model.regions = }") try: # Identify the node codelist used in `scenario` regions = identify_nodes(scenario) if scenario else context.model.regions except (AttributeError, ValueError): pass else: + if scenario: + log.debug(f".transport.Config.from_context: {scenario.set('node') = }") if context.model.regions != regions: log.info( f"Override Context.model.regions={context.model.regions!r} with " diff --git a/message_ix_models/model/transport/testing.py b/message_ix_models/model/transport/testing.py index 230985c426..1e082bffba 100644 --- a/message_ix_models/model/transport/testing.py +++ b/message_ix_models/model/transport/testing.py @@ -113,13 +113,17 @@ def built_transport( options = options or dict() # Retrieve (maybe generate) the bare RES with the same settings + log.info(f"built_transport: {context.regions = }") res = bare_res(request, context, solved) + log.info(f"built_transport: {res.set('node') = }") + log.info(f"built_transport: {res.url = }") # Derive the name for the transport scenario model_name = res.model.replace("-GLOBIOM", "-Transport") try: scenario = Scenario(context.get_platform(), model_name, "baseline") + log.info(f"built_transport: {scenario.url = }") except ValueError: log.info(f"Create '{model_name}/baseline' for testing") @@ -132,6 +136,7 @@ def built_transport( with log_cm: scenario = res.clone(model=model_name) + log.info(f"built_transport: {scenario.url = }") build.main(context, scenario, options, fast=True) else: # Loaded existing Scenario; ensure config files are loaded on `context` @@ -142,7 +147,16 @@ def built_transport( scenario.solve(solve_options=dict(lpmethod=4)) log.info(f"Clone to '{model_name}/{request.node.name}'") - return scenario.clone(scenario=request.node.name, keep_solution=solved) + log.info(f"built_transport: {scenario.url = }") + result = scenario.clone(scenario=request.node.name, keep_solution=solved) + log.info(f"built_transport: {result.url = }") + log.info(f"built_transport: {result.set('node') = }") + result2 = scenario.clone( + model=model_name, scenario=request.node.name, keep_solution=solved + ) + log.info(f"built_transport: {result2.url = }") + log.info(f"built_transport: {result2.set('node') = }") + return result def simulated_solution(request, context) -> Reporter: @@ -154,7 +168,10 @@ def simulated_solution(request, context) -> Reporter: from .report import callback # Build the base model + log.debug(f"simulated_solution: {context.regions = }") scenario = built_transport(request, context, solved=False) + log.debug(f"simulated_solution: {scenario.url = }") + log.debug(f"simulated_solution: {scenario.set('node') = }") # Info about the built model info = ScenarioInfo(scenario) @@ -194,4 +211,6 @@ def simulated_solution(request, context) -> Reporter: with silence_log("genno", logging.CRITICAL): message_ix_models.report.prepare_reporter(context, reporter=rep) + log.debug(f"simulated_solution: {context.regions = }") + return rep diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index de2d0d78f8..66d1e0786c 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -281,6 +281,8 @@ def prepare_reporter( """ log.info("Prepare reporter") + log.debug(f".report.prepare_reporter: {context.regions = }") + if reporter: # Existing `Reporter` provided rep = reporter diff --git a/message_ix_models/testing/__init__.py b/message_ix_models/testing/__init__.py index 8b08f3f421..0df9665316 100644 --- a/message_ix_models/testing/__init__.py +++ b/message_ix_models/testing/__init__.py @@ -202,6 +202,7 @@ def bare_res(request, context: Context, solved: bool = False) -> message_ix.Scen from message_ix_models.model import bare # Model name: standard "MESSAGEix-GLOBIOM R12 YB" plus a suffix + log.info(f"bare_res: {context.model.regions = }") model_name = bare.name(context, unique=True) mp = context.get_platform() @@ -213,6 +214,8 @@ def bare_res(request, context: Context, solved: bool = False) -> message_ix.Scen context.scenario_info.update(model=model_name, scenario="baseline") base = bare.create_res(context) + log.info(f"bare_res: {base.set('node') = }") + if solved and not base.has_solution(): log.info("Solve") base.solve(solve_options=dict(lpmethod=4), quiet=True) diff --git a/message_ix_models/tests/model/transport/test_report.py b/message_ix_models/tests/model/transport/test_report.py index 34ec6b8a45..f2be57ab8a 100644 --- a/message_ix_models/tests/model/transport/test_report.py +++ b/message_ix_models/tests/model/transport/test_report.py @@ -141,6 +141,7 @@ def test_simulated_solution(request, test_context, regions="R12", years="B"): def test_plot_simulated(request, test_context, plot_name, regions="R12", years="B"): """Plots are generated correctly using simulated data.""" test_context.update(regions=regions, years=years) + log.debug(f"test_plot_simulated: {test_context.regions = }") rep = simulated_solution(request, test_context) # print(rep.describe(f"plot {plot_name}")) # DEBUG