Skip to content

Commit 3d68a24

Browse files
Fix holdout initialization for missing includedFlags/excludedFlags
CRITICAL FIX: Make includedFlags and excludedFlags optional parameters in Holdout entity to match Swift SDK behavior and fix fullstack compatibility suite failures. Root Cause: - Global holdouts in datafiles may omit includedFlags/excludedFlags fields - Python SDK required these as mandatory parameters - Missing fields caused TypeError during ProjectConfig initialization - This caused config to return None, resulting in "SDK not configured" error - Swift SDK handles missing fields by defaulting to empty arrays Changes: - Changed includedFlags and excludedFlags from required to Optional[list[str]] - Set default value to None, which gets converted to [] in __init__ - Matches Swift SDK behavior for handling missing fields in datafile Impact: - Fixes fullstack compatibility suite decide_holdouts.feature tests - Global holdouts can now be parsed from datafiles without these fields - All 47 holdout unit tests passing - Backward compatible with existing datafiles that include these fields Aligned with Swift SDK implementation.
1 parent 9d18379 commit 3d68a24

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

optimizely/entities.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -220,8 +220,8 @@ def __init__(
220220
variations: list[VariationDict],
221221
trafficAllocation: list[TrafficAllocation],
222222
audienceIds: list[str],
223-
includedFlags: list[str],
224-
excludedFlags: list[str],
223+
includedFlags: Optional[list[str]] = None,
224+
excludedFlags: Optional[list[str]] = None,
225225
audienceConditions: Optional[Sequence[str | list[str]]] = None,
226226
**kwargs: Any
227227
):

0 commit comments

Comments
 (0)