github kedro-org/kedro 1.8.0

one hour ago

Major features and improvements

  • Added support for passing keyword arguments such as use_cache or replace to OmegaConf.register_new_resolver() when registering custom resolvers with OmegaConfigLoader: a resolver in CONFIG_LOADER_ARGS["custom_resolvers"] can now be given as a (callable, kwargs) tuple. A resolver that is already registered is skipped unless replace=True is passed.
  • Added the option to allow data to be injected at run time when using the KedroServiceSession.
  • Added pre-loading of raw configuration in serving mode to improve request handling performance.
  • Added node groups to the project snapshot. Each PipelineSnapshot has a groups list of GroupSnapshot entries with the group's nodes, dependencies, inputs and outputs, also returned by GET /snapshot. get_project_snapshot takes a group_by argument to choose the grouping strategy, GET /snapshot takes it as a query parameter, and each PipelineSnapshot records it in group_by.
  • Added kedro.inspection.validate_deployment_grouping to check a node grouping before deployment. It reports datasets kept in memory that are passed between groups, cycles between groups, and datasets passed between groups on local disk.

Bug fixes and other changes

  • Fixed the project snapshot (kedro inspect and GET /snapshot) listing parameter inputs such as params:model_options.test_size and parameters as datasets when a dataset factory pattern, for example a catch-all {default}, matches their names.
  • Fixed MemoryDataset losing its empty sentinel identity after pickle/unpickle, which could cause load() to return the sentinel instead of raising DatasetError.
  • Fixed AttributeError when naming a node built from a callable object, such as a class instance with __call__, and no explicit name. The node name now falls back to the class name.
  • Fixed typed parameter validation binding a params: input to the wrong function argument when a node declared with a dict of inputs leaves an earlier argument to its default. The typed requirement was taken from an argument the node never receives, so a run could fail on a type the user never asked for.
  • Fixed --load-versions (and DataCatalog.from_config(load_versions=...)) rejecting a dataset name that the catalog resolves through a user catch-all pattern, even though the name is in the catalog and returns a versioned dataset.
  • Fixed Pipeline.only_nodes_with_namespaces (and kedro run --namespaces) raising ValueError: Pipeline nodes must have unique names when a namespace is selected together with one it already covers, such as --namespaces a,a.b.
  • Stream outputs from generator nodes decorated with functools.wraps, and reject these nodes when asynchronous loading and saving is enabled. A decorator that consumes the generator, for example with list(), still has its result saved once.
  • Fixed the runner entry in the run_params passed to hooks: it now carries the runner name, instead of 'None' for a default run or the repr of the runner instance, which included a memory address. Applies to both KedroSession and KedroServiceSession.
  • Fixed az:// and abfs://container@account paths losing the container name.
  • Fixed OmegaConfigLoader ignoring config_loader["globals"] set after a ${globals:} interpolation was resolved.
  • Added @experimental tag to KedroServiceSession and the HTTP server (create_http_server) to clarify their experimental status.
  • Fixed CLI error messages being replaced by NoneType: None and the "Kedro project not found" hint being skipped with Click 8.5.

Security hardening

  • Logging configuration now applies KEDRO_LOGGING_MODULE_ALLOWLIST to class, ext://, and QueueHandler listener references. Bare names, private objects, attribute chains, and cfg:// are no longer supported. A QueueHandler queue factory must be queue.Queue or queue.SimpleQueue, and a listener must be a QueueListener subclass. Use fully qualified names and allowlist trusted custom modules; sys.stdout and sys.stderr remain allowed by default. These checks reduce risk, but logging configuration must still come from a trusted source. See the logging documentation for migration guidance.

Thanks to leetomo2528, and to Hongwei Li, Junmin Zhu, Zhun Wang, Jiacheng Zhong, Han Dai, Suyue Guo, Songyang Peng and Ziyue Pan, for independently and responsibly reporting this issue.

Community contributions

Many thanks to the following Kedroids for contributing PRs to this release:

Don't miss a new kedro release

NewReleases is sending notifications on new releases.