MCPcopy Create free account
hub / github.com/Flagsmith/flagsmith / get_edge_overrides_data

Function get_edge_overrides_data

api/features/features_service.py:76–114  ·  view source on GitHub ↗

Get the number of identity / segment overrides in a given environment for each feature in the project. Retrieve identity override data from DynamoDB. :param environment: the environment to get the overrides data for :return OverridesData: dictionary of {feature_id: EnvironmentF

(environment: "Environment")

Source from the content-addressed store, hash-verified

74
75
76def get_edge_overrides_data(environment: "Environment") -> OverridesData:
77 """
78 Get the number of identity / segment overrides in a given environment for each feature in the
79 project.
80 Retrieve identity override data from DynamoDB.
81
82 :param environment: the environment to get the overrides data for
83 :return OverridesData: dictionary of {feature_id: EnvironmentFeatureOverridesData}
84 """
85
86 with ThreadPoolExecutor() as executor:
87 # Note: We intentionally let the get_environment_flags_list
88 # call happen on the main thread to simplify testing.
89 # The call to dynamo happens on a separate thread, which
90 # still gives us the parallelism we need without needing
91 # an extra thread. This does mean that the order of execution
92 # is important here.
93 get_overrides_data_future = executor.submit(
94 get_edge_identity_override_keys,
95 environment_id=environment.id,
96 )
97 flags_list = get_environment_flags_list(environment)
98 all_overrides_data: OverridesData = {}
99
100 for feature_state in flags_list:
101 env_feature_overrides_data = all_overrides_data.setdefault(
102 feature_state.feature_id, EnvironmentFeatureOverridesData()
103 )
104 if feature_state.feature_segment_id:
105 env_feature_overrides_data.num_segment_overrides += 1
106 for identity_override_key in get_overrides_data_future.result():
107 feature_id = get_feature_id_from_identity_override_document_key(
108 identity_override_key
109 )
110 # Only override features that exists in core
111 if feature_id in all_overrides_data:
112 all_overrides_data[feature_id].add_identity_override() # type: ignore[no-untyped-call]
113
114 return all_overrides_data

Used in the wild real call sites across dependent graphs

searching dependent graphs…