Skip to content

Commit 561dc06

Browse files
authored
Update _client_manager_base.py (#38019)
1 parent 5c0ca90 commit 561dc06

File tree

1 file changed

+40
-36
lines changed

1 file changed

+40
-36
lines changed

sdk/appconfiguration/azure-appconfiguration-provider/azure/appconfiguration/provider/_client_manager_base.py

+40-36
Original file line numberDiff line numberDiff line change
@@ -55,37 +55,37 @@ def _generate_allocation_id(feature_flag_value: Dict[str, JSON]) -> Optional[str
5555

5656
allocation: Optional[JSON] = feature_flag_value.get("allocation")
5757

58-
if allocation:
59-
# Seed
60-
allocation_id = f"seed={allocation.get('seed', '')}"
58+
if not allocation:
59+
return None
6160

62-
# DefaultWhenEnabled
63-
if "default_when_enabled" in allocation:
64-
allocated_variants.append(allocation.get("default_when_enabled"))
61+
# Seed
62+
allocation_id = f"seed={allocation.get('seed', '')}"
6563

66-
allocation_id += f"\ndefault_when_enabled={allocation.get('default_when_enabled', '')}"
64+
# DefaultWhenEnabled
65+
if "default_when_enabled" in allocation:
66+
allocated_variants.append(allocation.get("default_when_enabled"))
6767

68-
# Percentile
69-
allocation_id += "\npercentiles="
68+
allocation_id += f"\ndefault_when_enabled={allocation.get('default_when_enabled', '')}"
7069

71-
percentile = allocation.get("percentile")
70+
# Percentile
71+
allocation_id += "\npercentiles="
7272

73-
if percentile:
74-
percentile_allocations = sorted(
75-
(x for x in percentile if x.get("from") != x.get("to")),
76-
key=lambda x: x.get("from"),
77-
)
73+
percentile = allocation.get("percentile")
7874

79-
for percentile_allocation in percentile_allocations:
80-
if "variant" in percentile_allocation:
81-
allocated_variants.append(percentile_allocation.get("variant"))
75+
if percentile:
76+
percentile_allocations = sorted(
77+
(x for x in percentile if x.get("from") != x.get("to")),
78+
key=lambda x: x.get("from"),
79+
)
8280

83-
allocation_id += ";".join(
84-
f"{pa.get('from')}," f"{base64.b64encode(pa.get('variant').encode()).decode()}," f"{pa.get('to')}"
85-
for pa in percentile_allocations
86-
)
87-
else:
88-
allocation_id = "seed=\ndefault_when_enabled=\npercentiles="
81+
for percentile_allocation in percentile_allocations:
82+
if "variant" in percentile_allocation:
83+
allocated_variants.append(percentile_allocation.get("variant"))
84+
85+
allocation_id += ";".join(
86+
f"{pa.get('from')}," f"{base64.b64encode(pa.get('variant').encode()).decode()}," f"{pa.get('to')}"
87+
for pa in percentile_allocations
88+
)
8989

9090
if not allocated_variants and (not allocation or not allocation.get("seed")):
9191
return None
@@ -95,18 +95,22 @@ def _generate_allocation_id(feature_flag_value: Dict[str, JSON]) -> Optional[str
9595

9696
variants_value = feature_flag_value.get("variants")
9797
if variants_value and (isinstance(variants_value, list) or all(isinstance(v, dict) for v in variants_value)):
98-
if allocated_variants:
99-
if isinstance(variants_value, list) and all(isinstance(v, dict) for v in variants_value):
100-
sorted_variants: List[Dict[str, Any]] = sorted(
101-
(v for v in variants_value if v.get("name") in allocated_variants),
102-
key=lambda v: v.get("name"),
103-
)
104-
105-
for v in sorted_variants:
106-
allocation_id += f"{base64.b64encode(v.get('name', '').encode()).decode()},"
107-
if "configuration_value" in v:
108-
allocation_id += f"{json.dumps(v.get('configuration_value', ''), separators=(',', ':'))}"
109-
allocation_id += ";"
98+
if (
99+
allocated_variants
100+
and isinstance(variants_value, list)
101+
and all(isinstance(v, dict) for v in variants_value)
102+
):
103+
sorted_variants: List[Dict[str, Any]] = sorted(
104+
(v for v in variants_value if v.get("name") in allocated_variants),
105+
key=lambda v: v.get("name"),
106+
)
107+
108+
for v in sorted_variants:
109+
allocation_id += f"{base64.b64encode(v.get('name', '').encode()).decode()},"
110+
if "configuration_value" in v:
111+
allocation_id += f"{json.dumps(v.get('configuration_value', ''), separators=(',', ':'))}"
112+
allocation_id += ";"
113+
if sorted_variants:
110114
allocation_id = allocation_id[:-1]
111115

112116
# Create a sha256 hash of the allocation_id

0 commit comments

Comments
 (0)