Skip to content

Changelog#

Versions follow Semantic Versioning (<major>.<minor>.<patch>).

Backward incompatible (breaking) changes will only be introduced in major versions with advance notice in the Deprecations section of releases.

Input4MIPs validation v0.20.1 (2025-10-01)#

🐛 Bug Fixes#

  • Fixed inference of daily time steps (previously this would fail if data was lazy loaded as subtraction of cftime with xarray doesn't work properly if the data is a dask array) (#121)

🔧 Trivial/Internal Changes#

Input4MIPs validation v0.20.0 (2025-09-04)#

🆕 Features#

🎉 Improvements#

🐛 Bug Fixes#

  • Fixed the validate-tree CLI (and associated functionality) so that it handles climatology files correctly (#119)

🔧 Trivial/Internal Changes#

Input4MIPs validation v0.19.1 (2025-02-08)#

🎉 Improvements#

  • Added the ability to handle data sets with string variables, like region. The key logic improvement is in XRVariableProcessorLike.get_ds_variables, which now excludes any non-number variables from the dataset's variables. (#113)

Input4MIPs validation v0.19.0 (2024-12-26)#

⚠️ Breaking Changes#

  • Removed input4mips_validation.database.creation.create_db_file_entry_with_logging, this function was never meant to be released. (#111)

Input4MIPs validation v0.18.0 (2024-12-23)#

⚠️ Breaking Changes#

  • Changed the interface to input4mips_validation.database.creation.create_db_file_entry_with_logging. Both of these functions were intended for internal use, hence this should hopefully cause minor issues for users. (#106)
  • Removed (the mostly internal interfaces) input4mips_validation.logging_config.serialise_logging_config and input4mips_validation.logging_config.deserialise_logging_config. We don't think these are in general need, although it is still being figured out (see #108). (#107)

🆕 Features#

🎉 Improvements#

Input4MIPs validation v0.17.1 (2024-12-22)#

🐛 Bug Fixes#

  • Fixed up addition of bounds when using climatology data (time bounds are no longer added). (#104)

Input4MIPs validation v0.17.0 (2024-12-22)#

⚠️ Breaking Changes#

(#103)

🆕 Features#

🎉 Improvements#

🐛 Bug Fixes#

🔧 Trivial/Internal Changes#

Input4MIPs validation v0.16.0 (2024-12-16)#

⚠️ Breaking Changes#

(#89)

🆕 Features#

(#89) - Added Python-equivalent APIs for our CLI commands, see [validate_file][input4mips_validation.cli.validate_file], [validate_tree][input4mips_validation.cli.validate_tree], [db_create][input4mips_validation.cli.db.db_create], [db_add_tree][input4mips_validation.cli.db.db_add_tree] and [db_validate][input4mips_validation.cli.db.db_validate]. (#90) - Added validation of the "Conventions" attribute via input4mips_validation.validation.Conventions (#91) - Added input4mips_validation.cvs.Input4MIPsCVs.validate_activity_id and input4mips_validation.cvs.exceptions. (#92) - Added input4mips_validation.cvs.Input4MIPsCVs.validate_source_version and input4mips_validation.cvs.exceptions.ValueInconsistentWithCVsError. (#93) - Added input4mips_validation.cvs.Input4MIPsCVs.validate_contact. (#94) - Added input4mips_validation.validation.comment.validate_comment. (#95)

🎉 Improvements#

  • Added headers to the default pooch downloader to workaround https://github.com/readthedocs/readthedocs.org/issues/11763. The downloader is injectable, so this behaviour can be overridden if desired. (#84)
  • If a required attribute is missing during validation, we now raise the more explicit MissingAttributeError, rather than a KeyError. (#86)

📚 Improved Documentation#

  • Updated the docs to use v6.6.0 of the CVs rather than a specific SHA. (#84)

🔧 Trivial/Internal Changes#

Input4MIPs validation v0.15.0 (2024-11-11)#

⚠️ Breaking Changes#

  • Updated to better be in line with the DRS description. The DRS makes no comment on the values in the directory names, hence we now make no assumptions and put no requirements on characters used in directory names. The restriction to only a-z, A-Z, 0-9 and the hyphen plus special use of the underscore is now only applied to file names. As a result, files with variables that have underscores in their names are now written with underscores in their directories, but not in their file name. For example, .../mon/mole-fraction-of-methane-in-air/gn/.../mole-fraction-of-methane-in-air_input4MIPs_GHGConcentrations_CMIP_CR-CMIP-0-2-0_gn_200001-201012.nc is now written as .../mon/mole_fraction_of_methane_in_air/gn/.../mole-fraction-of-methane-in-air_input4MIPs_GHGConcentrations_CMIP_CR-CMIP-0-2-0_gn_200001-201012.nc. (#83)

🐛 Bug Fixes#

🔧 Trivial/Internal Changes#

Input4MIPs validation v0.14.0 (2024-11-05)#

⚠️ Breaking Changes#

(#80)

🆕 Features#

(#80)

🐛 Bug Fixes#

🔧 Trivial/Internal Changes#

Input4MIPs validation v0.13.2 (2024-10-16)#

🎉 Improvements#

  • Improved the error message if regexp parsing of paths fails for a given DRS. (#74)

🔧 Trivial/Internal Changes#

Input4MIPs validation v0.13.0 (2024-09-30)#

🆕 Features#

🐛 Bug Fixes#

  • Fixed total failure of validation if an expected attribute wasn't in the file being validated. (#70)

🔧 Trivial/Internal Changes#

Input4MIPs validation v0.12.0 (2024-08-29)#

🗑️ Deprecations#

  • Deprecated [validate_database_file_entry], [validate_ds_to_write_to_disk], [validate_file] and [validate_tree]. See the docs for each function and deprecation warnings for recommended alternatives. (#66)

🆕 Features#

  • Added the --output-html flag to input4mips-validation validate-tree. This allows you to output the results of the validation as HTML, which provides easier exploration of the failures. (#66)

📚 Improved Documentation#

  • Improved documentation of our command-line interface, particularly how to configure logging. (#65)

🔧 Trivial/Internal Changes#

Input4MIPs validation v0.11.4 (2024-08-23)#

🆕 Features#

  • Add "doi" to the list of fields tracked by our database entries. (#64)

🔧 Trivial/Internal Changes#

Input4MIPs validation v0.11.3 (2024-08-06)#

🎉 Improvements#

🐛 Bug Fixes#

  • Fixed up the writing of the creation_time attribute and datetime metadata inference to use the expected time format (#60)

🔧 Trivial/Internal Changes#

Input4MIPs validation v0.11.2 (2024-08-05)#

🔧 Trivial/Internal Changes#

Input4MIPs validation v0.11.1 (2024-08-03)#

🎉 Improvements#

🐛 Bug Fixes#

  • Fixed the type hint for datetime_end, datetime_start and time_range. These fields will now serialise and de-serialise correctly. Previously, if these fields were None, they were serialised and de-serialised as strings. (#56)

🔧 Trivial/Internal Changes#

Input4MIPs validation v0.11.0 (2024-08-02)#

⚠️ Breaking Changes#

    • Removed the --create-db-entry flag from the validate-file command. Use the newly added input4mips-validation db commands to control the database instead.
  • Our databases our now multi-file, one file per file entry. This makes it much easier to track changes to the database. To load a database from a directory of files, use load_database_file_entries
  • Changed the function signature of input4mips_validation.cvs.loading.load_cvs. Now it simply expects the cv_source rather than requiring a RawCVLoader as input.

(#55)

🆕 Features#

  • Added the --allow-cf-checker-warnings flag to the validate-file and validate-tree commands. This allows the validation to pass, even if the CF-checker raises a warning. This was added because the CF-checker's warnings are sometimes overly strict. (#52)
    • Added input4mips-validation db command group for handling database creation and manipulation. This includes:

    • input4mips-validation db create for creating new databases

    • input4mips-validation db add-tree for adding files from a tree to an existing databases
    • input4mips-validation db validate for updating the validation status of the entries in a database
  • Added input4mips_validation.validation.database for database validation

  • Added input4mips_validation.logging_config to support passing of logging configuration between parallel processes. We're not sure if this is a great solution. If you have another solution, PRs welcome!

(#55)

🎉 Improvements#

(#55)

🐛 Bug Fixes#

  • Fixed a missing f-string marker in validate-tree's logging. (#52)
    • Set use_cftime=True whenever we call xr.open_dataset to avoid spurious warnings
  • Only pass the directory to extract_metadata_from_path in DRS.validate_file_written_according_to_drs. This helps reduce the chance of incorrecetly parsing the metadata.

(#55)

📚 Improved Documentation#

  • Clarified the meaning of the timestamp and version fields in our database entries (#54)
  • Added documentation for how to manage a database (#55)

🔧 Trivial/Internal Changes#

Input4MIPs validation v0.10.2 (2024-07-28)#

🐛 Bug Fixes#

🔧 Trivial/Internal Changes#

Input4MIPs validation v0.10.1 (2024-07-28)#

🎉 Improvements#

  • Clarify handling of dry run in upload_ftp (#45)
  • loguru-config is now an optional dependency. This makes it possible to install the package from conda without things exploding, as loguru-config is not available on conda. This may be changed in future, if loguru-config is released on conda (relevant MR here: https://github.com/conda-forge/staged-recipes/pull/27110) (#48)

🔧 Trivial/Internal Changes#

Input4MIPs validation v0.10.0 (2024-07-27)#

⚠️ Breaking Changes#

    • Removed --verbose option from the input4mips-validation command
  • Moved logging to input4mips_validation.logging

(#40)

🆕 Features#

    • Added --version flag to the input4mips-validation command
  • Added --no-logging to the input4mips-validation command to disable logging

  • Added --logging-config to the input4mips-validation command to allow the user to specify the path to the logging configuration file
  • Added --logging-level to the input4mips-validation command to allow the user to simply specify the logging level to use. Note that --logging-config takes precedence over this flag.

  • Fixed up the logging levels throughout the CLI and associated commands

  • Added the Input4MIPsDataset.non_input4mips_metadata attribute to handle metadata that is not part of the known input4MIPs keys

  • Added Input4MIPsDataset.from_ds to allow easy creation from a loaded xarray.Dataset

  • Added the --rglob-input option to better control files of interest. This appplies to both input4mips-validation validate-tree and input4mips-validation create-db

  • Added input4mips_validation.hashing

  • Added DataReferenceSyntax.get_esgf_dataset_master_id

(#40) - - Added the input4mips-validation upload-ftp command - Added input4mips_validation.upload_ftp

(#43)

🎉 Improvements#

    • Added support for fields used by input4MIPs database:
    • comment
    • comment_post_publication
    • data_node
    • esgf_dataset_master_id
    • filepath
    • latest
    • publication_status
    • replica
    • sha256
    • timestamp
    • validated_input4mips
    • xlink
  • Made all metadata-related classes frozen so they can be hashed, which makes sorting and comparison easier (and has almost no downsides as these classes do not generally need to be changed once created, and if they do need to be changed, that can be done with attrs.evolve).

  • Made commit 52841b0117474efd2705a083c21b3760531974f3 a known registry for the raw CVs.

(#40)

🐛 Bug Fixes#

    • Fixed a bug in the behaviour of input4mips-validation validate-file's --write-in-drs flag. If this flag is used, this command now fixes file names too and will update the tracking ID and creation ID if anything about the file (including its name) is changed. The command now also raises an error if you try overwrite an existing file.
  • Removed the product and region properties from the minimum dataset producer metadata related classes
  • Replaced all uses of xarray.load_dataset with xarray.open_dataset. The latter doesn't load the file's data into memory, hence is much faster (especially for large files).
  • Fixed the behaviour of Input4MIPsDatabaseEntryFile.from_file. Now, if there is a clash between metadata, a warning is logged but the existing value is used (i.e. the value from higher-priority sources is used) rather than an error being raised.

(#40)

📚 Improved Documentation#

(#40) - Added documentation about how to upload to an FTP server, and cross-linked these with the rest of the docs (#43)

🔧 Trivial/Internal Changes#

Input4MIPs validation v0.9.0 (2024-07-24)#

🆕 Features#

  • Added the validate-tree and create-db commands.

These allow you to validate a tree of files and create a database of the files in the tree.

Use the following commands to get help:

  • input4mips-validation validate-tree --help
  • input4mips-validation create-db --help

(#36)

📚 Improved Documentation#

    • Updated the installation instructions now that we have a conda package.
  • Generally cleaned up the docs

(#36)

🔧 Trivial/Internal Changes#

Input4MIPs validation v0.8.1 (2024-07-22)#

🔧 Trivial/Internal Changes#

Input4MIPs validation v0.8.0 (2024-07-22)#

⚠️ Breaking Changes#

  • Completely re-wrote the package.

The APIs are similar, but not identical. Given there are no users, we don't provide a migration guide.

Key changes:

  • cleaned up the API to make clearer the different elements
  • changed dev tooling to supporting conda packages, because we needed iris

(#31)

📚 Improved Documentation#

  • Updated README badges (#28)
  • Updated conda install workflow README badge (#29)
  • Updated licence badge and tweaked badge layout (#30)

🔧 Trivial/Internal Changes#

Input4MIPs validation v0.7.0 (2024-07-19)#

Features#

  • Added configuration so that a locked version of the package will be built too.

The instructions in the README for installation from PyPI should now be valid. The instructions for installation from conda are still waiting on https://github.com/conda-forge/staged-recipes/pull/26986. (#25)

Bug Fixes#

  • Fixed up version number, putting it back in line with PyPI (#27)

Trivial/Internal Changes#

Input4MIPs validation v0.5.2 (2024-07-19)#

Trivial/Internal Changes#

Input4MIPs validation v0.5.1 (2024-07-19)#

Trivial/Internal Changes#

Input4MIPs validation v0.6.0 (2024-07-18)#

Breaking Changes#

  • Re-named {py:attr}input5mips_validation.cvs_handling.input4MIPs.activity_id.ActivityIDValues.url to {py:attr}input4mips_validation.cvs_handling.input4MIPs.activity_id.ActivityIDValues.URL i.e. "url" --> "URL" (#17)
  • Loosened dependency pins (#21)

Features#

  • Added handling of the institution ID controlled vocabulary (#16)
  • Added handling of the futher_info_url within the context of the controlled vocabulary (#18)

Input4MIPs validation v0.5.0 (2024-06-25)#

Breaking Changes#

  • Completely re-wrote the package in an attempt to better handle the controlled vocabularies (CVs).

The key module is still {py:mod}input4mips_validation.dataset.

However, we now also have {py:mod}input4mips_validation.cvs_handling, which we use for sanely handling the CVs. This package may be split out into a separate package in future. (#15)

Input4MIPs validation v0.4.0 (2024-06-20)#

Bug Fixes#

    • Pinned input4MIPs CVs source files to avoid unexpected breaking changes
  • Pinned numpy < 2 to fix up install

(#13)

Input4MIPs validation v0.3.4 (2024-05-24)#

Trivial/Internal Changes#

Input4MIPs validation v0.3.3 (2024-05-23)#

Trivial/Internal Changes#

Input4MIPs validation v0.3.2 (2024-05-22)#

Trivial/Internal Changes#

Input4MIPs validation v0.3.1 (2024-04-23)#

Improvements#

  • Disabled grid validation while we wait to work out what it means (#9)

Input4MIPs validation v0.3.0 (2024-04-23)#

Breaking Changes#

  • Switched to using typer for our CLI.

This did not change the CLI, but it did include re-arranging a number of internal modules, hence this is a breaking change. (#7)

Features#

  • Add support for yearly time bounds to {py:func}input4mips_validation.xarray_helpers.add_time_bounds (#6)

Bug Fixes#

  • Fixed {py:func}input4mips_validation.controlled_vocabularies.inference.infer_frequency so it can handle the switch from Julian to Gregorian calendars (which affects the number of days in October 1582). (#6)

Trivial/Internal Changes#

Input4MIPs validation v0.2.1 (2024-02-15)#

Bug Fixes#

  • Loosened dependencies (#5)

Input4MIPs validation v0.2.0 (2024-02-09)#

Features#

  • Add structure required to support basic command-line interface.

The command-line interface provides the command input4mips-validation validate-file. (#2)

Bug Fixes#

  • Added LICENCE to the project (#3)

Input4MIPs validation v0.1.1 (2024-02-06)#

No significant changes.