Skip to content

Commit 0b98bff

Browse files
suppress capex schedule adjustment warning if Print Output to Console is not enabled
1 parent e9a3eb6 commit 0b98bff

File tree

2 files changed

+17
-16
lines changed

2 files changed

+17
-16
lines changed

src/geophires_x/EconomicsSam.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,11 @@
4444
_TOTAL_AFTER_TAX_RETURNS_CASH_FLOW_ROW_NAME,
4545
PreRevenueCostsAndCashflow,
4646
calculate_pre_revenue_costs_and_cashflow,
47-
_calculate_pre_revenue_costs_and_cashflow,
4847
adjust_phased_schedule_to_new_length,
4948
)
5049
from geophires_x.GeoPHIRESUtils import is_float, is_int, sig_figs, quantity
5150
from geophires_x.OptionList import EconomicModel, EndUseOptions
52-
from geophires_x.Parameter import Parameter, OutputParameter, floatParameter
51+
from geophires_x.Parameter import Parameter, OutputParameter, floatParameter, listParameter
5352
from geophires_x.Units import convertible_unit, EnergyCostUnit, CurrencyUnit, Units
5453

5554

@@ -199,7 +198,7 @@ def _inv_msg(param_name: str, invalid_value: Any, supported_description: str) ->
199198
econ.construction_capex_schedule.value = _validate_construction_capex_schedule(
200199
econ.construction_capex_schedule,
201200
model.surfaceplant.construction_years.value,
202-
model.logger,
201+
model,
203202
)
204203

205204
construction_years = model.surfaceplant.construction_years.value
@@ -211,7 +210,7 @@ def _inv_msg(param_name: str, invalid_value: Any, supported_description: str) ->
211210

212211

213212
def _validate_construction_capex_schedule(
214-
econ_capex_schedule: listParameter, construction_years: int, model_logger
213+
econ_capex_schedule: listParameter, construction_years: int, model: Model
215214
) -> list[float]:
216215
capex_schedule: list[float] = econ_capex_schedule.value.copy()
217216

@@ -227,11 +226,16 @@ def _validate_construction_capex_schedule(
227226

228227
if len(adjust_schedule_reasons) > 0:
229228
capex_schedule = adjust_phased_schedule_to_new_length(econ_capex_schedule.value, construction_years)
230-
msg = f'{econ_capex_schedule.Name} ({econ_capex_schedule.value}) '
231-
msg += ' and '.join(adjust_schedule_reasons)
232-
msg += f'. It has been adjusted to: {capex_schedule}'
233229

234-
model_logger.warning(msg)
230+
if model.outputs.printoutput:
231+
# Use printoutput as a proxy for whether the user has requested logging;
232+
# TODO to implement/support logging-specific config
233+
234+
msg = f'{econ_capex_schedule.Name} ({econ_capex_schedule.value}) '
235+
msg += ' and '.join(adjust_schedule_reasons)
236+
msg += f'. It has been adjusted to: {capex_schedule}'
237+
238+
model.logger.warning(msg)
235239

236240
return capex_schedule
237241

tests/geophires_x_tests/test_economics_sam.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,8 @@ def _sum(cf_row_name: str, abs_val: bool = False) -> float:
295295
)
296296

297297
def test_validate_construction_capex_schedule(self):
298-
model_logger = self._new_model(self._egs_test_file_path()).logger
298+
model = self._new_model(self._egs_test_file_path(), {'Print Output to Console': 1})
299+
model_logger = model.logger
299300

300301
def _sched(sched: list[float]) -> listParameter:
301302
construction_capex_schedule_name = 'Construction CAPEX Schedule'
@@ -310,14 +311,12 @@ def _sched(sched: list[float]) -> listParameter:
310311
return schedule_param
311312

312313
half_half = [0.5, 0.5]
313-
self.assertListEqual(half_half, _validate_construction_capex_schedule(_sched(half_half), 2, model_logger))
314+
self.assertListEqual(half_half, _validate_construction_capex_schedule(_sched(half_half), 2, model))
314315

315316
try:
316317
with self.assertLogs(logger=model_logger.name, level='WARNING') as logs:
317318
quarters = [0.25] * 4
318-
self.assertListEqual(
319-
half_half, _validate_construction_capex_schedule(_sched(quarters), 2, model_logger)
320-
)
319+
self.assertListEqual(half_half, _validate_construction_capex_schedule(_sched(quarters), 2, model))
321320
self.assertHasLogRecordWithMessage(
322321
logs, 'has been adjusted to: [0.5, 0.5]', treat_substring_match_as_match=True
323322
)
@@ -327,9 +326,7 @@ def _sched(sched: list[float]) -> listParameter:
327326
try:
328327
with self.assertLogs(logger=model_logger.name, level='WARNING') as logs2:
329328
double_ones = [1.0, 1.0]
330-
self.assertListEqual(
331-
half_half, _validate_construction_capex_schedule(_sched(double_ones), 2, model_logger)
332-
)
329+
self.assertListEqual(half_half, _validate_construction_capex_schedule(_sched(double_ones), 2, model))
333330
self.assertHasLogRecordWithMessage(logs2, 'does not sum to 1.0', treat_substring_match_as_match=True)
334331
except AssertionError as ae:
335332
self._handle_assert_logs_failure(ae)

0 commit comments

Comments
 (0)