|
12 | 12 | from openfeature.provider import FeatureProvider |
13 | 13 | from openfeature.provider._registry import provider_registry |
14 | 14 | from openfeature.provider.metadata import Metadata |
| 15 | +from openfeature.transaction_context import ( |
| 16 | + NoopTransactionContextPropagator, |
| 17 | + TransactionContextPropagator, |
| 18 | +) |
15 | 19 |
|
16 | 20 | __all__ = [ |
17 | 21 | "get_client", |
|
26 | 30 | "shutdown", |
27 | 31 | "add_handler", |
28 | 32 | "remove_handler", |
| 33 | + "set_transaction_context_propagator", |
| 34 | + "set_transaction_context", |
| 35 | + "get_transaction_context", |
29 | 36 | ] |
30 | 37 |
|
31 | 38 | _evaluation_context = EvaluationContext() |
32 | 39 |
|
33 | 40 | _hooks: typing.List[Hook] = [] |
34 | 41 |
|
| 42 | +_transaction_context_propagator: TransactionContextPropagator = ( |
| 43 | + NoopTransactionContextPropagator() |
| 44 | +) |
| 45 | + |
35 | 46 |
|
36 | 47 | def get_client( |
37 | 48 | domain: typing.Optional[str] = None, version: typing.Optional[str] = None |
@@ -94,3 +105,17 @@ def add_handler(event: ProviderEvent, handler: EventHandler) -> None: |
94 | 105 |
|
95 | 106 | def remove_handler(event: ProviderEvent, handler: EventHandler) -> None: |
96 | 107 | _event_support.remove_global_handler(event, handler) |
| 108 | + |
| 109 | + |
| 110 | +def set_transaction_context_propagator( |
| 111 | + propagator: TransactionContextPropagator, |
| 112 | +) -> None: |
| 113 | + _transaction_context_propagator = propagator |
| 114 | + |
| 115 | + |
| 116 | +def set_transaction_context(context: EvaluationContext) -> None: |
| 117 | + _transaction_context_propagator.set_transaction_context(context) |
| 118 | + |
| 119 | + |
| 120 | +def get_transaction_context() -> EvaluationContext: |
| 121 | + return _transaction_context_propagator.get_transaction_context() |
0 commit comments