2626from devcycle_python_sdk .models .platform_data import default_platform_data
2727from devcycle_python_sdk .models .user import DevCycleUser
2828from devcycle_python_sdk .models .variable import Variable
29+ from devcycle_python_sdk .models .variable_metadata import VariableMetadata
2930from devcycle_python_sdk .open_feature_provider .provider import DevCycleProvider
3031from openfeature .provider import AbstractProvider
3132
@@ -151,6 +152,7 @@ def variable(self, user: DevCycleUser, key: str, default_value: Any) -> Variable
151152 )
152153
153154 config_metadata = self .local_bucketing .get_config_metadata ()
155+ variable_metadata = None
154156
155157 context = HookContext (key , user , default_value , config_metadata )
156158 variable = Variable .create_default_variable (
@@ -165,9 +167,11 @@ def variable(self, user: DevCycleUser, key: str, default_value: Any) -> Variable
165167 context = changed_context
166168 except BeforeHookError as e :
167169 before_hook_error = e
168- bucketed_variable = self .local_bucketing .get_variable_for_user_protobuf (
170+ bucketed_variable , feature_id = self .local_bucketing .get_variable_for_user_protobuf (
169171 user , key , default_value
170172 )
173+ if feature_id is not None :
174+ variable_metadata = VariableMetadata (feature_id = feature_id )
171175 if bucketed_variable is not None :
172176 variable = bucketed_variable
173177 else :
@@ -177,7 +181,7 @@ def variable(self, user: DevCycleUser, key: str, default_value: Any) -> Variable
177181 )
178182
179183 if before_hook_error is None :
180- self .eval_hooks_manager .run_after (context , variable )
184+ self .eval_hooks_manager .run_after (context , variable , variable_metadata )
181185 else :
182186 raise before_hook_error
183187 except Exception as e :
@@ -194,7 +198,7 @@ def variable(self, user: DevCycleUser, key: str, default_value: Any) -> Variable
194198
195199 return variable
196200 finally :
197- self .eval_hooks_manager .run_finally (context , variable )
201+ self .eval_hooks_manager .run_finally (context , variable , variable_metadata )
198202 return variable
199203
200204 def _generate_bucketed_config (self , user : DevCycleUser ) -> BucketedConfig :
0 commit comments