|
1 | 1 | import json
|
2 |
| -from http import HTTPStatus |
3 |
| -from threading import Thread |
4 |
| -from typing import List, Optional, Type, Union |
5 |
| -from urllib.parse import urljoin |
6 |
| - |
7 | 2 | import pylru
|
8 | 3 | import urllib3
|
9 | 4 | import websocket
|
| 5 | +from gofeatureflag_python_provider.data_collector_hook import DataCollectorHook |
| 6 | +from gofeatureflag_python_provider.metadata import GoFeatureFlagMetadata |
| 7 | +from gofeatureflag_python_provider.options import BaseModel, GoFeatureFlagOptions |
| 8 | +from gofeatureflag_python_provider.request_flag_evaluation import ( |
| 9 | + RequestFlagEvaluation, |
| 10 | + convert_evaluation_context, |
| 11 | +) |
| 12 | +from gofeatureflag_python_provider.response_flag_evaluation import ( |
| 13 | + JsonType, |
| 14 | + ResponseFlagEvaluation, |
| 15 | +) |
| 16 | +from http import HTTPStatus |
10 | 17 | from openfeature.evaluation_context import EvaluationContext
|
11 | 18 | from openfeature.exception import (
|
12 | 19 | ErrorCode,
|
|
17 | 24 | )
|
18 | 25 | from openfeature.flag_evaluation import FlagResolutionDetails, Reason
|
19 | 26 | from openfeature.hook import Hook
|
20 |
| -from openfeature.provider.metadata import Metadata |
21 | 27 | from openfeature.provider import AbstractProvider
|
| 28 | +from openfeature.provider.metadata import Metadata |
22 | 29 | from pydantic import PrivateAttr, ValidationError
|
23 |
| - |
24 |
| -from gofeatureflag_python_provider.data_collector_hook import DataCollectorHook |
25 |
| -from gofeatureflag_python_provider.metadata import GoFeatureFlagMetadata |
26 |
| -from gofeatureflag_python_provider.options import BaseModel, GoFeatureFlagOptions |
27 |
| -from gofeatureflag_python_provider.request_flag_evaluation import ( |
28 |
| - RequestFlagEvaluation, |
29 |
| - convert_evaluation_context, |
30 |
| -) |
31 |
| -from gofeatureflag_python_provider.response_flag_evaluation import ( |
32 |
| - JsonType, |
33 |
| - ResponseFlagEvaluation, |
34 |
| -) |
| 30 | +from threading import Thread |
| 31 | +from typing import List, Optional, Type, Union |
35 | 32 |
|
36 | 33 | AbstractProviderMetaclass = type(AbstractProvider)
|
37 | 34 | BaseModelMetaclass = type(BaseModel)
|
@@ -196,6 +193,16 @@ def generic_go_feature_flag_resolver(
|
196 | 193 | "/v1/feature/{}/eval".format(flag_key),
|
197 | 194 | )
|
198 | 195 |
|
| 196 | + # add exporter metadata to the context if it exists |
| 197 | + if self.options.exporter_metadata: |
| 198 | + goff_request.gofeatureflag[ |
| 199 | + "exporterMetadata" |
| 200 | + ] = self.options.exporter_metadata |
| 201 | + goff_request.gofeatureflag["exporterMetadata"]["openfeature"] = True |
| 202 | + goff_request.gofeatureflag["exporterMetadata"][ |
| 203 | + "provider" |
| 204 | + ] = "python" |
| 205 | + |
199 | 206 | response = self._http_client.request(
|
200 | 207 | method="POST",
|
201 | 208 | url=url,
|
|
0 commit comments