1
1
import datetime
2
2
import threading
3
3
import time
4
- from http import HTTPStatus
5
- from typing import Optional
6
- from urllib .parse import urljoin
7
-
8
4
import urllib3
9
- from openfeature .flag_evaluation import FlagEvaluationDetails , Reason
10
- from openfeature .hook import Hook , HookContext
11
-
12
5
from gofeatureflag_python_provider .options import GoFeatureFlagOptions
13
6
from gofeatureflag_python_provider .request_data_collector import (
14
7
FeatureEvent ,
15
8
RequestDataCollector ,
16
9
)
10
+ from http import HTTPStatus
11
+ from openfeature .flag_evaluation import FlagEvaluationDetails , Reason
12
+ from openfeature .hook import Hook , HookContext
13
+ from typing import Optional
14
+ from urllib .parse import urljoin
17
15
18
16
default_targeting_key = "undefined-targetingKey"
19
17
@@ -31,6 +29,8 @@ class DataCollectorHook(Hook):
31
29
_http_client : urllib3 .PoolManager = None
32
30
# _data_event_queue is the list of data to collect
33
31
_event_queue : list [FeatureEvent ] = []
32
+ # _exporter_metadata is the metadata we send to the GO Feature Flag relay proxy when we report the evaluation data usage.
33
+ _exporter_metadata : dict = {}
34
34
35
35
def __init__ (self , options : GoFeatureFlagOptions , http_client : urllib3 .PoolManager ):
36
36
self ._http_client = http_client
@@ -39,6 +39,9 @@ def __init__(self, options: GoFeatureFlagOptions, http_client: urllib3.PoolManag
39
39
self ._data_collector_endpoint = urljoin (
40
40
str (self ._options .endpoint ), "/v1/data/collector"
41
41
)
42
+ self ._exporter_metadata = options .exporter_metadata
43
+ self ._exporter_metadata ["provider" ] = "python"
44
+ self ._exporter_metadata ["openfeature" ] = True
42
45
43
46
def after (
44
47
self , hook_context : HookContext , details : FlagEvaluationDetails , hints : dict
@@ -106,7 +109,7 @@ def _collect_data(self):
106
109
if len (self ._event_queue ) > 0 :
107
110
try :
108
111
goff_request = RequestDataCollector (
109
- meta = { "provider" : "open-feature-python-sdk" } ,
112
+ meta = self . _exporter_metadata ,
110
113
events = self ._event_queue ,
111
114
)
112
115
headers = {"Content-Type" : "application/json" }
0 commit comments