@@ -233,11 +233,8 @@ def __init__(
233233 self .trafficAllocation = trafficAllocation
234234 self .audienceIds = audienceIds
235235 self .audienceConditions = audienceConditions
236- # Per-rule targeting list for local holdouts. Scope is NOT determined by this
237- # field — it is determined by which datafile section the entity was parsed
238- # from ('holdouts' = global, 'localHoldouts' = local). ProjectConfig strips
239- # this field on entries parsed from the 'holdouts' section so that entities
240- # built from that section always satisfy is_global. See FSSDK-12760.
236+ # Per-rule targeting for local holdouts. Scope comes from the datafile
237+ # section, not this field; ProjectConfig strips it on 'holdouts' entries.
241238 self .included_rules : Optional [list [str ]] = includedRules
242239
243240 def get_audience_conditions_or_ids (self ) -> Sequence [str | list [str ]]:
@@ -250,22 +247,11 @@ def get_audience_conditions_or_ids(self) -> Sequence[str | list[str]]:
250247
251248 @property
252249 def is_global (self ) -> bool :
253- """Check if this is a global holdout (applies to all rules across all flags) .
250+ """True if this is a global holdout.
254251
255- Authoritative scope is the datafile section the entity came from:
256- the top-level 'holdouts' section is global, 'localHoldouts' is local.
257- ProjectConfig enforces this by stripping 'includedRules' from entries
258- parsed out of the 'holdouts' section before constructing the entity,
259- so for entities built via ProjectConfig this property is consistent
260- with section membership.
261-
262- At the entity level the property is still computed from
263- ``included_rules`` for code holding entity references directly:
264- None → global, [] or non-empty list → local. An empty list is a
265- local holdout that targets no rules (distinct from None/global).
266-
267- Returns:
268- True if included_rules is None (global), False otherwise (local).
252+ Scope is set by the datafile section ('holdouts' vs 'localHoldouts').
253+ ProjectConfig strips 'includedRules' on 'holdouts' entries, so this
254+ property stays consistent with section membership.
269255 """
270256 return self .included_rules is None
271257
0 commit comments