Releases: ufs-community/uwtools
Releases · ufs-community/uwtools
v2.5.0
What's Changed
- Added a
!bool
YAML tag that converts the tagged node to a Pythonbool
object - Added
!datetime
YAML tag that converts the tagged node to a Pythondatetime
object. - Added
--schema-file
option to internal drivers to support validation using user-provided schemas. - Added
--show-schema
option to drivers to display the driver's official schema. - Added a controller key path to support coupled driver applications where subcomponents defer to a "controller" component's config block for their
execution
and/orrundir
values. - Added a driver for the
UFS_UTILS
orog
pre-processing component. - Added global-domain support to MPAS driver.
- Added a
--leadtime
argument to thechgres_cube
driver. - Added default
output()
method to Driver base class and implemented this method for UPP, which describes the driver's expected output. - Added formatting to
Copier
,Linker
, andMakeDirs
class docstrings for better API docs. - Added series of Jupyter Notebook tutorials for API tools.
- Added UW YAML for Rocoto support for mixed
<cyclestr>
and text content by extending the definition ofcompoundTimeString
. - Disambiguated the term
update_values
by renaming theConfig
methodupdate_from()
. - Corrected regex to permit use of
&&
in Rocoto XML bash commands. - Exposed
schism
andww3
drivers to CLI. - Fixed bug whereby Rocoto
streq
dependencies were invalid against Rocoto RelaxNG schema by adding validation checks. - Fixed bug whereby
uwtools.api.config.realize
would prompt users forstdin_ok=True
flag when writing out from a dictionary config object. - Improved checking for external links in documentation.
- Improved error message for unrecognized file extensions.
- Improved documentation for
make_orog
. - Improved handling of Rocoto
metataskdep
entries in UW YAML. - Moved
execute()
,graph()
, andtasks()
fromuwtools.api.driver
to a newuwtools.api.execute
, to correspond better to the CLI mode name, making it easier for users to find the API docs, and renamedexecute()
inuwtools.utils.processing
toshellcmd()
to help disambiguate the term "execute". - Provided direct access to
Config
subclasses (YAMLConfig
et al.) viauwtools.api.config
. - Relaxed the pin on jsonschema to permit the range 4.18 through 4.23, inclusive.
- Renamed
file
modefs
("filesystem"), and added support foruw fs makedirs
via CLI and API. - Updated dependency packages to latest versions.
- Updated
fv3
diag_table
to be treated as a template instead of a file path and improved logic for lateral boundary conditions. - Updated JSON Schema file names from
execution
toexecution-parallel
for better contrast with the existingexecution-serial
schema. - Updated run command for
orog_gsl
driver. - Updated
uw config compare
, fixing a bug whereby two identical.sh
files could not be compared, and revamped the output with a familiar diff syntax.
Full Changelog: v2.4.2...v2.5.0
v2.4.2
What's Changed
- Fixed a bug whereby
uwtools.api.config.realize()
raised an exception suggesting thatstdin_ok=True
be set whenupdate_values
was not, even when the user's intention was to perform no updates. - Added
<metataskdep>
support touw rocoto
mode and its API equiavlent.
Full Changelog: v2.4.1...v2.4.2
v2.3.4
What's Changed
- Fixed a bug whereby
uwtools.api.template.render()
would raise an exception if values were missing, even withvalues_needed=True
. - Added the
submodelname
key to the UPP namelist schema.
Full Changelog: v2.3.3...v2.3.4
v2.4.1
What's Changed
- Fixed a bug whereby a driver's config YAML's
platform:
block was not correctly schema-validated. - Fixed a bug whereby
uwtools.api.template.render()
would raise an exception if values were missing, even withvalues_needed=True
. - Added the
submodelname
key to the UPP namelist schema.
Full Changelog: v2.4.0...v2.4.1
v2.4.0
What's Changed
- Added support for executing drivers defined outside the
uwtools
package. - Added support for coupled drivers.
- Added CDEPS,
filter_topo
, IODA,orog_gsl
, SCHISM drivers. - Added code to prevent YAML lines from wrapping.
- Added information on troubleshooting in IDEs to developer documentation.
- Added support for Fortran derived-type member references using
%
in YAML configs. - Added support for producing scalar values from YAML-config leaf nodes via
uw config realize
. - Changed
run_dir
, present in all UW YAML driver configs, torundir
. - Exposed driver classes via
uwtools.api
package. - Exposed the
Copier
andLinker
classes viauwtools.api.file
. - Fixed a bug related to provisioning input files for the
chgres_cube
driver. - Fixed a bug related to specification of multi-day durations in MPAS configuration.
- Fixed a bug whereby parent directories for CDEPS, SCHISM, and WaveWatchIII assets were not created as needed.
- Fixed an issue with the output shown when using the
--version
flag onuw
. - Fixed issues with
chgres_cube
schema and related value lookups in driver code. - Fixed JEDI driver to pass YAML config to the executable.
- Improved CLI handling of leadtime values.
- Improved driver schemas to explicitly require the driver's own block.
- Made additional driver-object attributes public.
- Made a number of updates to the User Guide and the Contributor Guide.
- Made
--target-dir
optional inuw file
mode when all destination paths are absolute. - Simplified the specification of
threads
information in driver configs. - Updated code for generating MPAS streams files to use native XML generation instead of templating.
- Updated drivers using the
base_file
YAML key to require existence of the named file. - Updated Rocoto schema to permit specification of
native
in combination withcores
ornodes
.
Full Changelog: v2.3.3...v2.4.0
v2.3.3
What's Changed
- Fixed the date string populating the MPAS namelist
config_run_duration
value. - Reduced constraints in JSON Schema for Rocoto to allow tasks to set
native
flags andnodes
/cores
.
Full Changelog: v2.3.2...v2.3.3
v2.3.2
What's Changed
- Fixed chgres_cube requirements by not requiring all the configuration file definitions, and use the .get() method for the dict entry.
- Fixed leadtime logic when processing 0-hr forecast.
Full Changelog: v2.3.1...v2.3.2
v2.3.1
What's Changed
- Factored out the run script done file name to sync the name of the file created and the file required.
Full Changelog: v2.3.0...v2.3.1
v2.3.0
What's Changed
- Added drivers for components
esg_grid
,global_equiv_resol
,make_hgrid
,make_solo_mosaic
,shave
, andupp
. - Added documentation for the
jedi
driver. - Added a
--key-path
argument touw config realize
that supports selection of an arbitrary subtree of the input config for output. - Added a
--key-path
argument to all drivers that supports selection of an arbitrary subtree to be used to configure the component. - Added optional
--cycle
and--leadtime
flags touw file copy
anduw file link
. User-supplied values are made available as Pythondatetime
andtimedelta
objects, respectively, to Jinja2 expressions in the input config. - Added final validation of namelist files created by drivers (including those provided by users and taken as-is), against their
uwtools
-internal schemas. - Added an
env
Jinja2 filter to make environment-variable values available to Jinja2 expressions in configs and templates. - Updated
uw config realize
, replacing positional supplemental-file positional arguments with a single--update-file
and--update-format
option pair, allowing use of arbitrarily named value-providing files, and provision of either the primary input or update values (but not both concurrently) onstdin
. - Updated
uw rocoto realize
, replacing the--input-file
option with--config-file
, for consistency with other parts of the CLI. - Updated driver schemas to make the
namelist:
config item required for drivers that create namelist files. - Updated the
--values-needed
option ofuw config realize
to no longer report "empty" values, which is not a concept compatible with supported config formats (e.g. an empty YAML value is treated asnull
, and empty INI value is treated as an empty string). - Fixed a bug whereby
file copy
did not correctly create all parent directories needed by a destination file. - Fixed a bug whereby use of
datetime.UTC
would fail for Python < 3.12.
Full Changelog: v2.2.0...v2.3.0
v2.2.0
What's Changed
- Added
chgres_cube
driver. - Added MPAS Init and MPAS Atmosphere drivers.
- Added WPS
ungrib
driver. - Added file copy/link tool.
- Added support for
str
paths in addition toPath
objects in API routines. - Added
!remove
YAML tag to remove key-value pair inuw config realize
mode. - Added
--output-block
touw config realize
mode to select a specific YAML subtree as a config source. - Added
validate
task to all drivers for validation of driver config YAML. - Added
stdin_ok
boolean flag to API routines to prevent unintentional blocking onstdin
reads. - Added documentation for UW custom YAML tags.
- Added CLI
--version
flag. - Added Python 3.12 support.
- Updated
fv3
driver to support global runs. - Updated
uw config realize
mode to not use shell environment as a source of values. - Added recording of execution time via
time
utility for all driver invocations. - Reverted
uw template render
mode's--partial
flag due to insufficient Jinja2 support. - Made path to ready-to-use FV3 field-table file in FV3 driver a requirement.
- Improved schema-validation failure messages.
- Fixed bug related to missing variables in
uw template render
mode.
Full Changelog: v2.1.1...v2.2.0