Major features and improvements
- Added dataset validation: datasets can declare a
validatorin their catalog entry, and theDataCatalogenforces it on everyloadandsave.- Failures raise
DataValidationError(aDatasetErrorsubclass), reporting every failed check at once. - Pandera is the built-in adapter, installed with the new
kedro[pandera-pandas]orkedro[pandera-polars]extras; custom validator classes and functions also work. - The
DATASET_VALIDATIONsetting and theKEDRO_DATASET_VALIDATIONenvironment variable switch validation off. validate_datasetandvalidate_catalogvalidate on demand, reporting structuredValidationResultoutcomes instead of raising.
- Failures raise
- Added
--runner-paramstokedro run, allowing runner constructor keyword arguments such asmax_workersto be passed from the CLI. - Added the node function name to project inspection snapshots as
NodeSnapshot.func_name. - Added node source location metadata (
NodeSnapshot.source) to inspection snapshots for displaying node code. - Added optional
runtime_paramstoget_project_snapshot().
Bug fixes and other changes
- Fixed a thread-safety issue in
_ProjectPipelineswhere concurrent access could trigger duplicate pipeline loading or operate on a cleared cache; all shared state mutations are now protected by a reentrant lock. - Fixed a thread-safety issue in the Kedro HTTP server by adding a
serving_modeargument toKedroServiceSession.create()that preloads all pipelines upfront. - Fixed a
RecursionErrorwhen initialising a session with dynaconf-backed settings by convertingsettings.SESSION_STORE_ARGSto a plaindictbefore deepcopying it. - Excluded
kedro_benchmarksfrom the built wheel so benchmark tests are no longer shipped with the package. - Fixed
get_close_matchesreturning duplicate suggestions when several inputs matched the same target, and being able to exhaust a one-shot iterable passed astargets. - Fixed docs generated with
kedro new --tools=docsso the Sphinx HTML build runssphinx-apidocand creates API docs. - Deprecated
--asyncflag forkedro runin favour of--runner-params=is_async=True. - Added a warning in
ParallelRunnercatalog validation that identifies cloud-backed datasets (e.g. S3, GCS, Azure Data Lake) failing to pickle and suggests usingThreadRunnerorSequentialRunnerinstead. - Redacted credentials, signed-URL query parameters and fragments from dataset filepaths in
AbstractDataset.__repr__,DatasetErrormessages, and HTTP server/snapshotand/runresponses.
Documentation changes
- Added a documentation page for dataset validation.
- Documented the HTTP server's restriction on
runtime_params-resolved catalogtypefields, in the templating guide and the HTTP server guide. - Added a new "Vibe coding with skills" page documenting the
kedro-skillsplugin. - Added
mdformatas a Markdown autoformatter, run viamake lintand as a pre-commit hook, and reformatted the existing Markdown. Fixed several step-by-step guides where numbered lists were rendering as repeated "1." instead of counting up, because their content wasn't indented under the right list item. - Fixed the
DaskRunnerexample on the Dask deployment page. - Fixed the
open_args_loadexamples in the data catalog documentation to use text mode so theencodingoption applies. - Added a cheatsheet with Kedro concepts and CLI commands to the documentation.
Breaking changes to the API
- Security fix: A catalog
typefield resolved withruntime_paramssupplied through the HTTP server'sPOST /runno longer accepts anAbstractDatasetclass chosen by the request.runtime_params-driventypeselection through other, trusted callers (for example,kedro run --params) is unaffected. - The
settings.pyentryRUNNER_MODULES_WHITELISThas been renamed toRUNNER_MODULE_ALLOWLIST, following the<COMPONENT>_ALLOWLISTnaming convention for Kedro allowlists. Projects that set the old name must rename it, otherwise the entries are ignored and the HTTP server rejects those runner modules.
Community contributions
Many thanks to the following Kedroids for contributing PRs to this release: