Skip to content

feat: Add data system builders for the async client - #566

Open
keelerm84 wants to merge 1 commit into
feat/10.xfrom
mk/SDK-3478/async-datasystem-builders
Open

keelerm84 wants to merge 1 commit into
feat/10.xfrom
mk/SDK-3478/async-datasystem-builders

Conversation

@keelerm84

@keelerm84 keelerm84 commented Nov 5, 2026 •

Copy link
Copy Markdown
Member

Summary

The sync client has ldclient.datasystem to build its data system configuration. The async client had no public counterpart: its data source builders live under ldclient.impl.datasourcev2, so an async user had to assemble an AsyncDataSystemConfig from internal classes.

This adds ldclient.async_datasystem, which mirrors ldclient.datasystem for AsyncDataSystemConfig:

  • AsyncConfigBuilder, with initializers, synchronizers, fdv1_compatible_synchronizer and data_store.
  • The default, streaming, polling, custom, daemon and persistent_store strategies, with the same data sources as their sync equivalents.
  • polling_ds_builder, streaming_ds_builder and fdv1_fallback_ds_builder.

There is no file data source builder, because the SDK has no async file data source yet. The module is in the API docs and is marked experimental, as AsyncDataSystemConfig is.

This is a step toward removing the FDv1 data system, after which async users need a public way to pick polling, daemon mode or a persistent store.


Note

Overview
Adds ldclient.async_datasystem, a public async counterpart to ldclient.datasystem, so AsyncLDClient users can build AsyncDataSystemConfig without importing internal datasourcev2 builders.

The module exposes AsyncConfigBuilder (initializers, synchronizers, FDv1 fallback, async persistent store) plus preset strategies default, streaming, polling, custom, daemon, and persistent_store, along with polling_ds_builder, streaming_ds_builder, and fdv1_fallback_ds_builder. There is no async file data source helper yet. The module is documented as experimental and is included in the API reference.

Tests cover builder output for each strategy, session wiring for the default config, and end-to-end flag evaluation with a custom data system.

Reviewed by Cursor Bugbot for commit 1e97180. Bugbot is set up for automated code reviews on this repo. Configure here.

ldclient.async_datasystem is the async counterpart of ldclient.datasystem.
It builds an AsyncDataSystemConfig with the same strategies: default,
streaming, polling, custom, daemon and persistent store. Before this, an
async user had to assemble AsyncDataSystemConfig from internal builders.
@keelerm84
keelerm84 requested a review from a team as a code owner November 5, 2026 18:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant