Skip to content

Commit 7a0993e

Browse files
committed
feat: add track method to base FeatureProvider class
Signed-off-by: Danju Visvanathan <danju.visvanathan@gmail.com>
1 parent 48ecabb commit 7a0993e

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

openfeature/client.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -964,16 +964,17 @@ def track(self, tracking_event_name: str, evaluation_context: EvaluationContext
964964
:param evaluation_context: the evaluation context
965965
:param tracking_event_details: Optional data relevant to the tracking event
966966
"""
967-
provider = self.provider
968-
if not hasattr(provider, "track"):
969-
return
967+
968+
if evaluation_context is None:
969+
evaluation_context = EvaluationContext()
970+
970971
merged_eval_context = (
971972
get_evaluation_context()
972973
.merge(get_transaction_context())
973974
.merge(self.context)
974975
.merge(evaluation_context)
975976
)
976-
provider.track(tracking_event_name, merged_eval_context, tracking_event_details)
977+
self.provider.track(tracking_event_name, merged_eval_context, tracking_event_details)
977978

978979
def _typecheck_flag_value(
979980
value: typing.Any, flag_type: FlagType

openfeature/provider/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from openfeature.event import ProviderEvent, ProviderEventDetails
1010
from openfeature.flag_evaluation import FlagResolutionDetails
1111
from openfeature.hook import Hook
12+
from openfeature.track import TrackingEventDetails
1213

1314
from .metadata import Metadata
1415

@@ -116,6 +117,8 @@ async def resolve_object_details_async(
116117
Sequence[FlagValueType] | Mapping[str, FlagValueType]
117118
]: ...
118119

120+
def track(self, tracking_event_name: str, evaluation_context: EvaluationContext | None = None, tracking_event_details: TrackingEventDetails | None = None) -> None: ...
121+
119122

120123
class AbstractProvider(FeatureProvider):
121124
def __init__(self, *args: typing.Any, **kwargs: typing.Any) -> None:
@@ -138,6 +141,9 @@ def initialize(self, evaluation_context: EvaluationContext) -> None:
138141
def shutdown(self) -> None:
139142
pass
140143

144+
def track(self, tracking_event_name: str, evaluation_context: EvaluationContext | None = None, tracking_event_details: TrackingEventDetails | None = None) -> None:
145+
pass
146+
141147
@abstractmethod
142148
def get_metadata(self) -> Metadata:
143149
pass

0 commit comments

Comments
 (0)