Skip to content

Commit

Permalink
2.3.4 prep (#577)
Browse files Browse the repository at this point in the history
  • Loading branch information
maddenp-noaa authored Aug 17, 2024
1 parent b4d37df commit 1bb756f
Show file tree
Hide file tree
Showing 8 changed files with 36 additions and 6 deletions.
2 changes: 1 addition & 1 deletion docs/sections/user_guide/yaml/components/upp.rst
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ The following namelists and variables can be customized:
* - Namelist
- Variables
* - ``model_inputs``
- ``datestr``, ``filename``, ``filenameflat``, ``filenameflux``, ``grib``, ``ioform``, ``modelname``
- ``datestr``, ``filename``, ``filenameflat``, ``filenameflux``, ``grib``, ``ioform``, ``modelname``, ``submodelname``
* - ``nampgb``
- ``aqf_on``, ``d2d_chem``, ``d3d_on``, ``filenameaer``, ``gccpp_on``, ``gocart_on``, ``gtg_on``, ``hyb_sigp``, ``kpo``, ``kpv``, ``kth``, ``method_blsn``, ``nasa_on``, ``numx``, ``po``, ``popascal``, ``pv``, ``rdaod``, ``slrutah_on``, ``th``, ``vtimeunits``, ``write_ifi_debug_files``

Expand Down
1 change: 1 addition & 0 deletions docs/shared/upp.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ upp:
grib: grib2
ioform: netcdf
modelname: FV3R
submodelname: RTMA
nampgb:
kpo: 3
numx: 1
Expand Down
2 changes: 1 addition & 1 deletion recipe/meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,5 @@
"pyyaml =6.0.*"
]
},
"version": "2.3.3"
"version": "2.3.4"
}
6 changes: 3 additions & 3 deletions src/uwtools/config/jinja2.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ def render(
:param searchpath: Paths to search for extra templates.
:param values_needed: Just report variables needed to render the template?
:param dry_run: Run in dry-run mode?
:return: The rendered template, or None.
:return: The unrendered template if values_needed is True, the rendered template, or None.
"""
_report(locals())
values = _supplement_values(
Expand All @@ -180,11 +180,11 @@ def render(
undeclared_variables = template.undeclared_variables

# If a report of variables required to render the template was requested, make that report and
# then return.
# then return the unrendered template.

if values_needed:
_values_needed(undeclared_variables)
return None
return str(template)

# Render the template. If there are missing values, report them and return an error to the
# caller.
Expand Down
2 changes: 1 addition & 1 deletion src/uwtools/resources/info.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"version": "2.3.3",
"version": "2.3.4",
"buildnum": "0"
}
7 changes: 7 additions & 0 deletions src/uwtools/resources/jsonschema/upp.jsonschema
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,13 @@
"NMM"
],
"type": "string"
},
"submodelname": {
"enum": [
"MPAS",
"RTMA"
],
"type": "string"
}
},
"type": "object"
Expand Down
18 changes: 18 additions & 0 deletions src/uwtools/tests/api/test_template.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# pylint: disable=missing-function-docstring,redefined-outer-name

import logging
import os
from pathlib import Path
from unittest.mock import patch
Expand All @@ -8,6 +9,8 @@

from uwtools.api import template
from uwtools.exceptions import UWTemplateRenderError
from uwtools.logging import log
from uwtools.tests.support import logged


@fixture
Expand All @@ -25,6 +28,14 @@ def kwargs():
}


@fixture
def template_file(tmp_path):
path = tmp_path / "template.jinja2"
with open(path, "w", encoding="utf-8") as f:
f.write("roses are {{roses_color}}, violets are {{violets_color}}")
return path


def test_render(kwargs):
with patch.object(template, "_render") as _render:
template.render(**kwargs)
Expand All @@ -51,6 +62,13 @@ def test_render_to_str(kwargs):
render.assert_called_once_with(**{**kwargs, "output_file": Path(os.devnull)})


def test_render_values_needed(caplog, template_file):
log.setLevel(logging.INFO)
template.render(input_file=template_file, values_needed=True)
for var in ("roses_color", "violets_color"):
assert logged(caplog, f" {var}")


def test_translate():
kwargs: dict = {
"input_file": "path1",
Expand Down
4 changes: 4 additions & 0 deletions src/uwtools/tests/test_schemas.py
Original file line number Diff line number Diff line change
Expand Up @@ -1248,6 +1248,10 @@ def test_schema_upp_namelist(upp_prop):
assert "not one of ['FV3R', '3DRTMA', 'GFS', 'RAPR', 'NMM']" in errors(
{"update_values": {"model_inputs": {"modelname": "foo"}}}
)
# model_inputs: Only certain submodelname values are supported:
assert "not one of ['MPAS', 'RTMA']" in errors(
{"update_values": {"model_inputs": {"submodelname": "foo"}}}
)
# model_inputs: No other keys are supported:
assert "Additional properties are not allowed" in errors(
{"update_values": {"model_inputs": {"something": "else"}}}
Expand Down

0 comments on commit 1bb756f

Please sign in to comment.