Releases: Climate-REF/climate-ref
Release list
v0.16.2
Changelog
Breaking Changes
- Split the
ilambdataset registry: it now holds only the 3 ILAMB reference products without an obs4REF equivalent (mrsol/WangMao,tas/CRU4.02,evspsbl/GLEAMv3.3a), and the two region masks moved to a newilamb-regionsregistry.
Theiombregistry has been removed entirely as all diagnostics have been migrated to obs4REF.
The ILAMB and IOMB diagnostic configuration files (configure/ilamb.yaml,configure/iomb.yaml) now declarerealm: land/realm: oceanand, where relevant,region_masks: ilamb-regionsin place of the oldregistry:key.
Thegpp-WECANNdiagnostic'sprrelationship now reads GPCP from obs4REF (NOAA-NCEI/GPCP-2-3/mon) instead of the retiredilamb/pr/GPCPv2.3/pr.nc(sha1e1b942863ec76a75aa972b6d75e2e08646741259).
This is a different processing of the same underlying product, so if it moves an ILAMB regression baseline the baseline will be re-minted separately. (#815)
Features
-
Added dataset retraction.
ref datasets retract <slug>marks a dataset ineligible for future solve-time selection
without deleting its row or its execution provenance links,
andref datasets unretract <slug>reverses it.
Retracting an already-retracted dataset (or unretracting an already-active one) is a no-op.
ref datasets listnow surfaces retraction state via aretracted_atcolumn.
Retracted datasets are excluded by default, matching what the solver selects,
and can be shown with the new--include-retractedflag,
which also lists every version of a dataset instead of only the latest.
"Retract" follows the term ESGF uses for pulling a published dataset from recommended use. (#802) -
Added two new source dataset types,
obs4REFandESMValToolReference, together with their database tables.obs4REFis REF-curated observational data that follows the obs4MIPs metadata conventions that has not yet been published to the obs4MIPs ESGF archive.
ESMValToolReferenceis ESMValTool's own reference data, which is not CMOR compliant and so carries a smaller set of metadata.
The shared obs4MIPs-style column block used byobs4MIPs,PMPClimatologyand nowobs4REFwas extracted into aReferenceDatasetMixin. (#805) -
Adds dataset adapters for the obs4REF and ESMValTool reference dataset types, so both can now be ingested with
ref datasets ingest --source-type obs4refandref datasets ingest --source-type esmvaltool-reference. obs4REF datasets also participate in solving, while ESMValTool reference datasets are ingest-only for now. (#814) -
Reworked the ILAMB provider to draw its reference observations from the ingested obs4MIPs and obs4REF datasets rather than its own bundled registry.
The few observations not yet published there (currently WangMao, GLEAMv3 and CRU4.02) are still fetched from the provider registry at execute time. ILAMB region masks moved to their own support registry.Each dataset registry now declares which source type its files map to, if any, and whether it holds reference or support data. This is what lets the solver provision reference observations from the database. (#815)
-
Added a
--exclude-diagnosticoption toref solve.
Diagnostics can be excluded by slug or byprovider/diagnosticpair, matched exactly and case-insensitively.
This uses the same token format as theREF_TEST_CASES_SKIPenvironment variable. (#820)
Improvements
- Reworked the cloud radiative effects diagnostic so it runs on CMIP7.
Both source types now use theref/recipe_ref_cre_cmip7.ymlrecipe,
with the time range rewritten per source type: 2002-2014 for CMIP6 and 2002-2021 for CMIP7. (#683) - Adds CMIP7 support to the ozone diagnostics.
All five now build from the newref/recipe_ref_ozone_cmip7.ymlrecipe.
The lat-time, SH October, NH March and annual-cycle diagnostics run on both CMIP6 and CMIP7, and the stratospheric zonal-mean profile stays on CMIP6 with its reference switched to the ESACCI-OZONEL3-SAGE-OMPSproduct. (#704) - Switched the PMP extratropical modes-of-variability diagnostics that use sea-level pressure
(NAO, NAM, PNA, NPO, SAM) to the obs4MIPs20CR-V2reference, fetched from ESGF,
in place of the obs4REF20CRcopy.
Their regression baselines were re-minted against the new reference.
The sharedExtratropicalModesOfVariabilityversion bumps from 2 to 3.
The surface-temperature modes (PDO, NPGO) share that class, so their baselines were
re-minted under the new version too. Their reference is unchanged and only the
last few significant figures move. (#801) - ESMValTool reference data (the OBS, OBS6, native6 and obs4MIPs files in the provider's
data.txtregistry) is now ingested as theesmvaltool-referencesource type, so it is recorded in the database. Selecting it at solve time is a separate follow-up. This also adds the CMIP5-eraOImonsea-ice table to the MIP-table to frequency mapping, which the OSI-450 sea-ice references use. (#815) - Reduced the
climate-refunit test runtime by reusing migrated database templates, parallelising pull request checks, and moving full archive solver regressions to the main slow test suite. (#825)
Bug Fixes
-
Made the transient climate response to cumulative CO2 emissions (TCRE) diagnostic compatible with CMIP7 data. (#702)
-
Moved the test-case
catalog.paths.yamlsidecar out of the provider packages and into the dataset cache,
at$REF_DATASET_CACHE_DIR/test-case-paths/{provider}/{diagnostic}/{test_case}/. (#806) -
Fixed
ref test-cases fetchaborting the whole fetch loop when the solver found no
matching datasets for a single test case.
The failure is now logged and the remaining test cases are still fetched,
so one broken case no longer leaves later diagnostics without catalogs and paths sidecars.Fixed the
global-sst-biasexample diagnostic to accumulate its global means in float64.
The float32 reduction differed by ~1e-6 between platforms,
which tripped the regression gate when baselines were minted on a different machine.
Its regression baselines were re-minted and the diagnostic version bumps from 1 to 2.Loosened the regression comparison's default relative tolerance from 1e-6 to 1e-5,
so platform-level floating-point noise no longer trips the gate.
Committed bundles keep their 7 significant figures,
which is now two digits finer than the tolerance. (#810) -
Handles an ESGF search that returns no results by raising
DatasetResolutionError.
This letsref test-cases fetchlog and skip a test case whose dataset has been de-indexed,
instead of crashing the whole prefetch. (#811) -
Enables the CEDA Solr index as an additional ESGF search index when fetching data.
The obs4MIPs ozone reference C3S-GTO-ECV-9-0 is currently missing from the default
ESGF2-US-1.5-Catalog index but is still served by CEDA,
so this letsref test-cases fetchandscripts/fetch-esgf.pyresolve it again. (#812) -
Fixed the PMP regression baselines drifting on CI.
The annual-cycle climatology version stamp is now derived from the diagnostic version instead of the run date,
the conda platform in CMEC provenance is redacted to a placeholder,
and the affected baselines were re-minted on linux-64 to match the CI platform. (#816) -
Fixed the
ozone-zonaldiagnostic by shipping the ESACCI-OZONEL3-SAGE-OMPSozone profile file
that the updated ESMValTool recipe references in the dataset registry.
Also re-minted the ESMValTool regression baselines that drifted after the ESMValTool version update
and improved the error message for catalogs built from unfinalised CMIP7 datasets. (#817) -
Fixes the ILAMB
lai-avh15c1test case running the CI runner out of memory and getting killed with no logs.- Coarsens the very fine AVHRR LAI reference one time block at a time instead of loading the whole ~0.05 degree cube into memory at once
- Caches the coarsened reference to disk, keyed on the source data and target resolution, because every model comparison in a solve reuses the same coarsened field. The first execution computes it, later ones read the cached file. Set
REF_ILAMB_COARSEN_NO_CACHEto disable. - Logs wall clock, CPU time, and peak memory after each test case in
ref test-cases runand the per-provider drift tests. - Re-mints the
lai-avh15c1baselines against the chunked coarsening, and thegpp-fluxnet2015baselines to adopt the CFlong_namea newer ILAMB now sets on the region traces.
(#818)
-
Fixed the GitHub release listing a stray
default.gitignorealongside the wheels and sdists.
uv buildwrites a.gitignoreinto the build output directory,
and the release workflow'sdist/*glob was uploading it as a release asset.
The upload is now restricted to the built wheels and source distributions. ([#8...
v0.16.1
Announcements
Changelog
Bug Fixes
default_ignore_datasets.yamlis now shipped inside theclimate_refpackage and resolved withimportlib.resources.
Theconfigandsolve_configpytest fixtures previously located it relative to the monorepo source tree, so they raisedValueErrorfor any project that installsclimate-reffrom a wheel. (#800)
Changes
v0.16.0
Changelog
Features
-
Metric values now carry a first-class
kindof eithermodelorreference,
so model and reference (observation) values can be distinguished and filtered directly
rather than inferred from provider-specific conventions.
Reference series additionally record a stablereference_idcontent hash,
so an identical observation produced by different executions is recognised as the same value.
Series can also carry typed presentation metadata (value_units,value_long_name,index_units, andcalendar). (#772) -
Every PMP scalar metric value now keys its reference identity on
reference_source_id
and declares its role with the first-classkindofmodel.
The ENSO diagnostics previously keyed reference identity onreference_datasets,
so a consumer now reads reference identity the same way for every PMP diagnostic.
ENSO references that the metrics package scores against two observation datasets jointly
(for exampleHadISST_GPCP-Monthly-3-2) are kept as a single combinedreference_source_idvalue,
because the score is one value that depends on both references and cannot be split per reference. (#775) -
ESMValTool series now carry an explicit
kindof eithermodelorreference,
so an observation curve can be distinguished from a model curve directly
rather than inferred from the presence of a reference source. (#776) -
ILAMB metric values now carry the shared
kindfield, distinguishing reference (observation) series from model series without the previous"Reference"sentinel.
Series units are presented in a clean CF form so a model series and its reference agree, the typed presentation fields (value_units,value_long_name,index_units,calendar) are populated, and comparison scalars record the reference they were scored against so they can be grouped by it. (#777) -
The obs4REF reference-data registry gained 33 new files covering 12 CEDA
obs_for_ref_v2observational datasets,
including cloud and radiation observations (ESACCI-CLOUD),
burnt-area (GFED-5-0), ozone (SAGE-CCI-OMPS), FLUXNET site fluxes,
soil carbon (HWSD-2-0), CALIPSO ice cloud, WOA-23 ocean biogeochemistry,
RAPID AMOC transport, snow cover (CCI-CryoClim), and ocean carbon fluxes (Hoffman).
Older WECANN and WOA2023 entries were replaced by their newer versions. (#778) -
Ten ILAMB standard diagnostics now evaluate models against the obs4REF reference datasets rather than the bundled ILAMB files.
This updates the version of:
- gross primary productivity (WECANN, FLUXNET2015)
- runoff (LORA)
- soil carbon (HWSD-2-0)
- net biome productivity (Hoffman)
- snow cover (CCI-CryoClim),
- burnt area (GFED-5-0)
- sea-surface temperature and salinity (WOA-23),
- RAPID Atlantic overturning transport.
(#779)
-
Added
climate_ref.results, a typed read layer for querying results from notebooks and other tools.
A singleReaderexposes per-domain readers for metric values, executions, datasets, diagnostics, and output artifacts, each returning frozen objects that remain usable after the database session closes and can be turned into a pandas DataFrame.Added a
ref diagnostics listcommand that lists the registered diagnostics with their promoted version and per-diagnostic successful, in-flight, and total execution-group counts.
Metric values now expose a first-classkind(model or reference) field, andref datasets listreturns only the latest version of each dataset. (#780) -
Added
REF_TEST_CASES_SKIP,
a comma-separated list ofdiagnosticslugs orprovider/diagnosticpairs
that are excluded from bothref test-cases fetchand the per-provider no-drift test.
This keeps diagnostics whose full-resolution ESGF input cannot be fetched within CI limits
(for exampleilamb/thetao-woa2023-surface, a 3D ocean field)
from being downloaded or executed.
ESGF fetching is now confined to thepopulate-cacheCI job. (#797) -
The ESGF fetch script can now retrieve the obs4MIPs reference datasets used by the PMP diagnostics,
namelyGPCP-Monthly-3-2,TropFlux-1-0,CERES-EBAF-4-2,HadISST-1-1and20CR-V2.
Previously these were only available through the obs4REF registry.Note that the psl modes of variability diagnostics request
20CR,
which ESGF publishes as20CR-V2,
so those diagnostics continue to source their reference data from the obs4REF registry. (#799)
Improvements
-
Added a
registerargument toProviderRegistry.build_from_config.
Registration is the only step that writes to the database, so read-only consumers such as the API can now build the registry withregister=Falseand serve a database mounted read-only. (#791) -
Removed the ERA-20C and ERA-Interim reference datasets from the obs4REF and sample data registries,
reducing the volume of data fetched byref datasets fetch-data --registry obs4ref.
No diagnostic used either dataset,
and neither is available from obs4MIPs.
The unrelated ERA-5 dataset is unaffected.If you have already fetched the sample data,
re-fetch it withfetch_sample_data(force_cleanup=True)so that the removed files are cleared from your local copy. (#799)
Bug Fixes
- Made ECS diagnostic work with CMIP7 data. (#671)
- Made TCR diagnostic work with CMIP7 data. (#686)
- Widened the contiguous-timerange tolerance so monthly datasets split across multiple files are no longer dropped as false-positive gaps. (#774)
- Committed regression baselines no longer embed the machine-specific source-checkout path or the
host operating system in provider command-line provenance.
Both are now redacted to portable<SOURCE_DIR>and<OS>placeholders,
so a baseline minted on one platform (for example macOS) reproduces one re-derived on another
(for example Linux in CI) instead of drifting. (#775) - Fixed execution listings duplicating an execution group when two of its executions shared the same timestamp; each group now resolves to exactly one latest execution. (#786)
- Decoupled fetching of the ignore datasets file from configuration loading;
the file is now fetched lazily at solve time rather than while the configuration is loaded,
so read-only commands no longer perform network I/O.
Added anignore_datasets_urlsetting (envREF_IGNORE_DATASETS_URL)
whose empty-string value disables fetching entirely for offline and air-gapped deployments.
A failed download no longer creates an empty placeholder file;
an existing cached copy is reused unchanged,
and a solve with no cached copy fails loudly rather than running without ignore-dataset protections. (#792) - Fixed the
LocalExecutorper-task timeout counting time spent waiting in the process-pool queue as execution time. The budget is now measured from when a worker actually starts a task, so a large backlog of executions queued behind other work is no longer culled en masse once it ages past the timeout. (#795) - Fixed
ref datasets ingest --n-jobsgreater than 1 crashing (SIGSEGV/SIGBUS) with the defaultcompleteCMIP6 parser.
Parsing previously fanned out across threads, but the netCDF4/HDF5 wheels published on PyPI are not thread-safe.
Parsing now runs using a process pool. (#796) - Fixed three integration-test failures caused by the self-hosted runner's shared cache
and stable output directory leaking into tests that assumed a clean, default environment. (#797) - The ESGF fetch script now exits with a non-zero status if any request failed,
rather than reporting0 datasetsand exiting successfully.
Transient ESGF access errors are retried with an exponential backoff,
configurable via--max-attemptsand--retry-delay.
A request that matches no datasets is reported but is not treated as a failure. (#799)
Trivial/Internal Changes
Changes
- 59e5311 Bump version: 0.15.0 → 0.16.0
- c166238 test(core): update obs4ref registry expectations after ERA removal
- a460a86 fix(scripts): fail the ESGF fetch when a request could not be retrieved
- ce7d63c docs: add changelog entries for #799
- 963589d chore(datasets): drop unused ERA-20C and ERA-Interim reference data
- fa1ceef feat(scripts): fetch PMP obs4MIPs reference data from ESGF
- 72994b8 chore: docs
- 03e2ee7 docs: add changelog fragments for #797
- 3a09276 feat(test-cases): confine ESGF fetching to populate-cache and allo...
v0.15.0
Changelog
Breaking Changes
-
The hash that identifies a diagnostic's input datasets is now computed deterministically across pandas versions and platforms.
It previously relied onpandas.util.hash_pandas_object, whose output changes between pandas releases and platforms.Because the underlying hash values change, the committed regression
catalog_hashvalues have been regenerated,
and existing databases will re-run each execution once on first use after upgrading. (#741) -
The minimum supported Python version is now 3.12; Python 3.11 is no longer supported.
Update your environment to Python 3.12 or newer before upgrading. (#745) -
Removed the legacy central regression-testing framework in favour of the native baselines managed by
ref test-cases.
TheDiagnosticValidatorandExecutionRegressionhelpers, thediagnostic_validation,execution_regression, andregression_data_dirpytest fixtures (fromclimate_ref.conftest_plugin), the centraltests/test-data/regression/baseline tree, and the per-providertest_diagnostics/test_build_resultstests have all been removed.Provider regression baselines are now recorded and verified entirely through the
ref test-casesCLI and the per-package committed bundles (see Regression baselines). (#757)
Features
-
Added
ref test-cases mint,replay, andsynccommands for managing native regression baselines.
mintrecords a test case's native outputs into the baseline store,
replayregenerates a bundle from the stored outputs and checks it against the committed copy,
andsyncdownloads the native outputs referenced by committed baselines into the local cache. (#724) -
Added the
ref test-cases ci-gatecommand, which decides how CI should verify each
test case's regression baseline against the base branch: skip it, replay the cached
native baseline, re-run the diagnostic in full, or fail an unauthorised change.
Baselines are now coupled to their input catalogs, so changing a test case's inputs
without regenerating its baseline is reported as a failure rather than passing silently. (#727) -
Added a Cloudflare R2 object-store backend for diagnostic regression baselines, so
ref test-cases mintcan publish a test case's native outputs to the shared baseline store rather than only a local directory.
The store endpoint and bucket are configured through theREF_NATIVE_STORE_*settings (defaulting to the project's public baseline bucket), and write credentials are supplied via the environment or a named AWS/R2 profile, never the persisted configuration.Minting is also easier to get right.
ref test-cases mintnow checks the store credentials and bucket up front and stops with a clear message when they are misconfigured, the newref test-cases check-storecommand verifies store connectivity without minting,ref test-cases mint --dry-runpreviews what would be minted, andref test-cases fetchrestores a missing local paths file on its own so a fresh checkout no longer needs--force. (#732) -
Regression baselines are now verified automatically in CI.
Every pull request runs the coupling gate and replays each test case's cached native baseline, a nightly job re-checks every baseline for silent drift, and a manually gated workflow mints new baselines to the shared object store behind required reviewers — so write credentials never run on untrusted pull-request code.The diagnostic testing guide also gained a "pull request workflow" section explaining what the gate decides for each change and how to publish a new baseline. (#733)
-
ILAMB regression baselines are migrated to the per-package Framework B layout, starting with the
mrsos-wangmao,gpp-fluxnet2015andlai-avh15c1cmip6 test cases. Each carries a committed CMEC bundle and a manifest; native blobs are published separately through the gated mint workflow. ILAMB executions now also declare their scalar CSV and netCDF outputs in the CMEC output bundle so they are persisted with the results and can be replayed. (#738) -
Extended the ILAMB cmip6 regression-baseline migration to the per-package Framework B layout with nine more test cases:
gpp-wecann,mrro-lora,csoil-hwsd2,nbp-hoffman,snc-esacci,burntfractionall-gfed,emp-gleamgpcp2.3,thetao-woa2023-surfaceandso-woa2023-surface. (#743) -
ref test-casesruns now materialise their outputs into an inspectable, gitignored output slot
(<case>/output/<label>/) holding the curated native files, the rebuilt committed bundle, and a source stamp,
so you can see and diff exactly what a run produced.
Added abuildverb that rebuilds the committed bundle from an existing slot without re-executing the diagnostic,
amint --from-replayoption that re-authors a baseline from the stored native instead of re-running it,
and a--labeloption that keeps several runs side by side for comparison. (#748) -
Added a
--format jsonoption toref datasets list,ref providers list,ref executions list-groups, andref config listfor machine-readable output with full, untruncated identifiers and paths. (#765) -
Added
ref config init,get,set,unset,edit, andvalidatecommands to make configuration onboarding and management easier from the CLI. (#768) -
Added a five-minute Quick Start guide
and a new model-vs-observation diagnostic to the example provider,
global-sst-bias,
which compares modelled global-mean sea surface temperature (tos, area-weighted byareacello)
against the HadISST-1-1 observations and emits scalar metrics, the model/reference/bias time series, and figures.
A curatedquickstartdata registry provides the single reference dataset it needs,
avoiding the multi-gigabyte obs4REF download. (#769) -
The CI coupling gate now couples each regression baseline to its diagnostic's
Diagnostic.version.
A test case fails the gate when the diagnostic's in-code version no longer matches the version recorded
when its baseline was minted, so an execution-affecting change can no longer slip through as a green replay
against a stale committed bundle.
The new author-declareddiagnostic_versionfield lives in the test casemanifest.json(schema version 2),
and the newref test-cases migrate-manifestscommand backfills it across existing baselines.
A legitimate revert is still permitted: lower the diagnostic version and re-mint the baseline. (#770)
Improvements
- ILAMB reference (observational) series are now tagged with their source via the existing
reference_source_iddimension (for examplereference_source_id="WangMao"),
so a reference series is self-identifying without adding a new schema field. (#743) - Committed regression baseline bundles (
series.jsonanddiagnostic.json) now round floating-point values to seven significant figures when written, giving stable, reviewable bytes that no longer churn between local and CI runs while staying well within the regression comparison tolerance. (#744) - Reduced database size by deduplicating the index of series metric values into a shared
index_axistable, referenced by each series rather than stored inline on every row.
A database migration backfills existing data losslessly; on SQLite, runVACUUMafterwards to release the freed space on disk. (#747) - Sped up
ref executions reingestby eager-loading datasets and batching the database writes, so bulk reingests now scale with the number of executions rather than the number of data files. (#750)
Bug Fixes
- Regression
series.jsonbaselines are now written with a stable, dimension-sorted order. Previously a diagnostic could emit its series in a platform-dependent order, causing a committed bundle minted on one platform to falsely fail the regression gate on another even when every value matched within tolerance. (#738) - Selecting the latest dataset version now compares version numbers numerically, so versions like v10 are correctly preferred over v2 (previously the older version could be chosen). (#739)
- Fixed a bug where a diagnostic whose results failed to ingest was incorrectly recorded as successful with no metric values; such executions are now marked failed and retried on the next solve. (#740)
- ILAMB regression
output.jsonbundles are now written with a stable, sorted block order
(the plot and data sections are sorted by filename),
so a baseline regenerated on one machine reproduces byte-for-byte on another
instead of reordering and producing a spurious diff. (#743) - Fixed
ref executions reingestreporting a reingest as...
v0.14.7
Changelog
Bug Fixes
- Fixed
ref solve --timeout 0discarding completed work instead of waiting for it.
A timeout of0(or any non-positive value) now means "wait with no time limit",
so executions are collected, copied to the results directory, and ingested as expected;
previously they ran but their outputs were left in the scratch directory.
Use--no-waitto queue executions and exit immediately,
and recover any orphaned scratch outputs from an earlier run withref executions reingest --include-failed. (#735) - Fixed
ref executions reingestfailing for ESMValTool diagnostics.
Reingest copies an execution's outputs to a new directory, but the absolute paths recorded in ESMValTool's provenance files still pointed at the original location,
which caused an error that silently rolled back the reingest.
These embedded paths are now re-pointed at the new output directory so the results are reingested as expected. (#736)
Changes
- 5b239c3 Bump version: 0.14.6 → 0.14.7
- 12be1fa refactor(reingest): reuse core rewrite_tree for path rewriting
- 3807459 docs: add changelog for #736
- 6f35062 fix(reingest): rewrite embedded absolute paths when copying execution outputs
- 6eba410 chore: clean up docs
- 08a55e0 docs: add changelog for #735
- e4ada47 fix(solve): wait and collect results when --timeout 0
- 66acade chore(deps): bump bleach from 6.3.0 to 6.4.0
- d04fb98 chore(deps): bump cryptography from 46.0.7 to 48.0.1
- 0f8f00d chore(deps): bump pyjwt from 2.12.0 to 2.13.0
v0.14.6
Changelog
Bug Fixes
- Fixed loading the default configuration in environments where the user cache directory cannot be written (for example, read-only or restricted HPC systems).
Previously, running arefcommand without an existing configuration file could fail withError loading configurationbecause the default ignore-datasets file could not be cached.
The REF now degrades gracefully and continues without the cached ignore-datasets file. (#734)
Changes
v0.14.5
Changelog
Bug Fixes
- Made ESMValTool regression baselines deterministic by giving each captured run a stable execution directory instead of a timestamped one, so re-running a test case no longer churns the committed output. (#714)
- Fixed fetching datasets from ESGF failing with
Must have equal len keys and value when setting with an iterableunder pandas 3.0,
by running the intake-esgf catalogue build with the legacy object-string dtype. (#726)
Trivial/Internal Changes
Changes
- da4461c Bump version: 0.14.4 → 0.14.5
- 27cdeb4 docs: cleanup
- 31eca3d ci: stop per-job coverage xml from enforcing the fail_under gate
- 8633217 docs: update changelog for #725
- 999ff88 ci: split integration tests into a parallel job and cap PR concurrency
- 250d55d fix(esgf): build intake-esgf catalogue with legacy object-string dtype
- a9f3df2 docs: add changelog entry for #725
- da3f60c ci: parallelise tests-providers into a per-provider matrix
- f2be958 chore: cleanup
- cfea48b docs: add changelog entry for #723
- 48bd0b5 test: silence deprecation warnings and speed up the climate-ref suite
- a75c835 fix(core): address PR review comments on regression primitives
- 468f823 chore: remove unneeded annotations
- d2e336c chore: remove unneeded annotations
- 1bd11e3 chore: pull out the extra layer of tolerance redirection
- 0733172 chore(deps): bump tornado from 6.5.5 to 6.5.6
- 6a66af6 fix(core): apply review fixes to regression-baseline primitives
- 9455f7b test(core): expand output-file coverage and apply review fixes
- c83e316 chore(deps): bump codecov/codecov-action in the github-actions group
- c2a7ccc docs(changelog): add fragment for native regression-baseline primitives
- 9cabe73 feat(core): add native regression-baseline primitives (RFC 0005)
- 3a0ebd4 docs(changelog): add fragment for output-file operations refactor
- 6936a27 refactor(core): extract shared output-file operations into climate_ref_core.output_files
- 4765fcf chore: clean ups
- 835a371 docs(changelog): add fragment for #714
- cacd200 fix(esmvaltool): stabilise execution dir for regression capture
- 6ddfa89 chore(deps): bump gitpython from 3.1.47 to 3.1.50
- 8065f73 chore(deps): bump astral-sh/setup-uv in the github-actions group
v0.14.4
Changelog
Improvements
- Added GPCP dataset version to 3.3 for the PMP precipitation climatology reference dataset. (#672)
- Updated GPCP dataset version to 3.3 for the PMP precipitation climatology reference dataset. (#684)
- Removed the pandas upper bound and fixed pandas 3 compatibility in catalog and ILAMB result handling. (#708)
Bug Fixes
- Updates the PMP provider data directory (#685)
- Fixed a
KeyError: 'branded_variable'when solving diagnostics against CMIP7 datasets.
Thebranded_variablefacet is now reconstructed when a data catalog is loaded from the database,
so it is available to data requirement filters. (#712)
Improved Documentation
- Added a Zenodo DOI badge to the README and documentation landing page so users can easily find how to cite the REF. (#634)
- Added a getting-started guide for modelling centres that explains how to evaluate local or pre-publication CMOR-compliant model output with Climate-REF, including deployment options, accessing results, and a suggested first run. (#709)
Trivial/Internal Changes
Changes
- d26bdce Bump version: 0.14.3 → 0.14.4
- dfee0e3 refactor: declare derived catalog columns on the adapter
- b191910 docs: add changelog fragment for PR 712
- 9d43fee fix: derive branded_variable when loading CMIP7 catalog from DB
- baa358b docs: add Zenodo DOI badge to README and docs landing page
- 673b6fa docs: add changelog fragment for modelling centre guide
- 5206586 docs: add modelling centre onboarding guide
- cf96a14 test: Add tests for the helper
- 42cea87 chore: rename changelog fragment to PR 708
- 182f088 chore: remove pandas upper bound and fix pandas 3 compatibility
- 3b9973c docs(changelog): add fragment for series regression check
- 4995b17 test(core): add series.json regression comparison
- ef7ab30 chore: update the regression.
- aebe346 chore: increment version and fix test
- 22dfaeb feat: add example package to deployment
- b2e1a76 fix: tests
- 7b76f57 fix: test
- 2f41764 docs: Changelog
- 1d17468 fix: correct the data path for the new pmp cache
- 9ab3365 Update GPCP dataset version in changelog
- a69c4c0 Update reference dataset from GPCP-Monthly-3-2 to GPCP-3-3
- 3b6d2e1 chore(deps): bump pymdown-extensions from 10.21 to 10.21.3
- 368334f chore(deps): bump idna from 3.11 to 3.15
- 5734953 Update 672.improvement.md
- 5a5812a add changelog
- 1f72461 Add new climatology dataset entry
- cbbd022 chore(deps-dev): bump the python-dependencies group with 4 updates
v0.14.3
Changelog
Bug Fixes
- Fixed a race condition when trying to create the same
ExecutionGroupconcurrently.
Database.get_or_createandDatabase.update_or_createnow wrap the INSERT in a SAVEPOINT
and re-fetch the winning row on conflict instead of aborting the transaction. (#679)
Changes
v0.14.2
Changelog
Bug Fixes
- Changed the behaviour for
register_datasettreatment of files absent from the current ingest slice as kept-in-place with a warning, instead of raising NotImplementedError. (#677)