Skip to content

Releases: ufs-community/uwtools

v2.5.0

27 Nov 16:14
Compare
Choose a tag to compare

What's Changed

  • Added a !bool YAML tag that converts the tagged node to a Python bool object
  • Added !datetime YAML tag that converts the tagged node to a Python datetime 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/or rundir values.
  • Added a driver for the UFS_UTILS orog pre-processing component.
  • Added global-domain support to MPAS driver.
  • Added a --leadtime argument to the chgres_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, and MakeDirs 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 of compoundTimeString.
  • Disambiguated the term update_values by renaming the Config method update_from().
  • Corrected regex to permit use of && in Rocoto XML bash commands.
  • Exposed schism and ww3 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 for stdin_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(), and tasks() from uwtools.api.driver to a new uwtools.api.execute, to correspond better to the CLI mode name, making it easier for users to find the API docs, and renamed execute() in uwtools.utils.processing to shellcmd() to help disambiguate the term "execute".
  • Provided direct access to Config subclasses (YAMLConfig et al.) via uwtools.api.config.
  • Relaxed the pin on jsonschema to permit the range 4.18 through 4.23, inclusive.
  • Renamed file mode fs ("filesystem"), and added support for uw 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 to execution-parallel for better contrast with the existing execution-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

22 Aug 16:56
Compare
Choose a tag to compare

What's Changed

  • Fixed a bug whereby uwtools.api.config.realize() raised an exception suggesting that stdin_ok=True be set when update_values was not, even when the user's intention was to perform no updates.
  • Added <metataskdep> support to uw rocoto mode and its API equiavlent.

Full Changelog: v2.4.1...v2.4.2

v2.3.4

17 Aug 17:36
1bb756f
Compare
Choose a tag to compare

What's Changed

  • Fixed a bug whereby uwtools.api.template.render() would raise an exception if values were missing, even with values_needed=True.
  • Added the submodelname key to the UPP namelist schema.

Full Changelog: v2.3.3...v2.3.4

v2.4.1

17 Aug 17:59
1365b39
Compare
Choose a tag to compare

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 with values_needed=True.
  • Added the submodelname key to the UPP namelist schema.

Full Changelog: v2.4.0...v2.4.1

v2.4.0

09 Aug 18:23
c948f31
Compare
Choose a tag to compare

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, to rundir.
  • Exposed driver classes via uwtools.api package.
  • Exposed the Copier and Linker classes via uwtools.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 on uw.
  • 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 in uw 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 with cores or nodes.

Full Changelog: v2.3.3...v2.4.0

v2.3.3

01 Aug 18:23
b4d37df
Compare
Choose a tag to compare

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 and nodes/cores.

Full Changelog: v2.3.2...v2.3.3

v2.3.2

27 Jun 15:55
b08be17
Compare
Choose a tag to compare

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

05 Jun 14:48
9f272a9
Compare
Choose a tag to compare

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

31 May 15:45
8303d82
Compare
Choose a tag to compare

What's Changed

  • Added drivers for components esg_grid, global_equiv_resol, make_hgrid, make_solo_mosaic, shave, and upp.
  • Added documentation for the jedi driver.
  • Added a --key-path argument to uw 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 to uw file copy and uw file link. User-supplied values are made available as Python datetime and timedelta 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) on stdin.
  • 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 of uw 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 as null, 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

23 Apr 15:53
f21a26e
Compare
Choose a tag to compare

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 to Path objects in API routines.
  • Added !remove YAML tag to remove key-value pair in uw config realize mode.
  • Added --output-block to uw 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 on stdin 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