Skip to content

feat: Update ChangeSet to always require a Selector#405

Merged
jsonbailey merged 9 commits intomainfrom
jb/sdk-1748/always-require-selector
Feb 4, 2026
Merged

feat: Update ChangeSet to always require a Selector#405
jsonbailey merged 9 commits intomainfrom
jb/sdk-1748/always-require-selector

Conversation

@jsonbailey
Copy link
Contributor

@jsonbailey jsonbailey commented Feb 3, 2026

Note

Medium Risk
This is a type/contract change that affects how FDv2 updates are applied and when data is considered ready/persistable; downstream code assuming selector can be None may break or change behavior.

Overview
ChangeSet now always carries a Selector (non-optional). This removes None handling throughout the FDv2 path and standardizes on Selector.no_selector() for “no selector” cases.

Initializer/store logic is simplified accordingly: persistence and readiness gating now use change_set.selector.is_defined() directly (no selector is not None checks), and Store._set_basis/_apply_delta signatures are tightened to require a Selector. Tests are updated to reflect the new invariant (selectors are always present; assertions now check is_defined() instead of is not None).

Written by Cursor Bugbot for commit 57f5d00. This will update automatically on new commits. Configure here.

@jsonbailey jsonbailey requested a review from a team as a code owner February 3, 2026 22:27
Base automatically changed from jb/sdk-1748/minor-changes to main February 4, 2026 16:26
@jsonbailey jsonbailey merged commit 5dc4f81 into main Feb 4, 2026
15 checks passed
@jsonbailey jsonbailey deleted the jb/sdk-1748/always-require-selector branch February 4, 2026 17:04
jsonbailey added a commit that referenced this pull request Feb 10, 2026
🤖 I have created a release *beep* *boop*
---


##
[9.15.0](9.14.1...9.15.0)
(2026-02-10)


### Features

* Drop support for python 3.9
([#393](#393))
([5b761bd](5b761bd))
* Update ChangeSet to always require a Selector
([#405](#405))
([5dc4f81](5dc4f81))


### Bug Fixes

* Add context manager for clearer, safer locks
([#396](#396))
([beca0fa](beca0fa))
* Address potential race condition in FeatureStore update_availability
([#391](#391))
([31cf487](31cf487))
* Allow modifying fdv2 data source options independent of main config
([#403](#403))
([d78079e](d78079e))
* Mark copy_with_new_sdk_key method as deprecated
([#353](#353))
([e471ccc](e471ccc))
* Prevent immediate polling on recoverable error
([#399](#399))
([da565a2](da565a2))
* Redis store is considered initialized when `$inited` key is written
([e99a27d](e99a27d))
* Stop FeatureStoreClientWrapper poller on close
([#397](#397))
([468afdf](468afdf))
* Update DataSystemConfig to accept list of synchronizers
([#404](#404))
([c73ad14](c73ad14))
* Update reason documentation with inExperiment value
([#401](#401))
([cbfc3dd](cbfc3dd))
* Update Redis to write missing `$inited` key
([e99a27d](e99a27d))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Release-only changes (version strings and documentation) with no
functional code modifications in this diff.
> 
> **Overview**
> Bumps the SDK release from `9.14.1` to `9.15.0` across version sources
(`pyproject.toml`, `ldclient/version.py`, release-please manifest) and
updates `PROVENANCE.md` to reference the new version.
> 
> Updates `CHANGELOG.md` with the `9.15.0` release notes, including FDv2
EAP breaking API adjustments (e.g., `ChangeSetBuilder.finish()` now
requires a `Selector`, and `DataSystemConfig.synchronizers` supports
multiple synchronizers), Python 3.9 support drop, and a set of bug-fix
entries.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
71a9224. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: jsonbailey <jbailey@launchdarkly.com>
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.

2 participants

Comments