Skip to content

Commit 266ecd5

Browse files
committed
refactor(api): delegate module-level functions to default API instance
1 parent 6901a76 commit 266ecd5

File tree

4 files changed

+34
-39
lines changed

4 files changed

+34
-39
lines changed

openfeature/api.py

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from openfeature import _event_support
1+
from openfeature._api import _default_api
22
from openfeature.client import OpenFeatureClient
33
from openfeature.evaluation_context import (
44
get_evaluation_context,
@@ -10,7 +10,6 @@
1010
)
1111
from openfeature.hook import add_hooks, clear_hooks, get_hooks
1212
from openfeature.provider import FeatureProvider
13-
from openfeature.provider._registry import provider_registry
1413
from openfeature.provider.metadata import Metadata
1514
from openfeature.transaction_context import (
1615
get_transaction_context,
@@ -40,32 +39,28 @@
4039
def get_client(
4140
domain: str | None = None, version: str | None = None
4241
) -> OpenFeatureClient:
43-
return OpenFeatureClient(domain=domain, version=version)
42+
return _default_api.get_client(domain=domain, version=version)
4443

4544

4645
def set_provider(provider: FeatureProvider, domain: str | None = None) -> None:
47-
if domain is None:
48-
provider_registry.set_default_provider(provider)
49-
else:
50-
provider_registry.set_provider(domain, provider)
46+
_default_api.set_provider(provider, domain)
5147

5248

5349
def clear_providers() -> None:
54-
provider_registry.clear_providers()
55-
_event_support.clear()
50+
_default_api.clear_providers()
5651

5752

5853
def get_provider_metadata(domain: str | None = None) -> Metadata:
59-
return provider_registry.get_provider(domain).get_metadata()
54+
return _default_api.get_provider_metadata(domain)
6055

6156

6257
def shutdown() -> None:
63-
provider_registry.shutdown()
58+
_default_api.shutdown()
6459

6560

6661
def add_handler(event: ProviderEvent, handler: EventHandler) -> None:
67-
_event_support.add_global_handler(event, handler)
62+
_default_api.add_handler(event, handler)
6863

6964

7065
def remove_handler(event: ProviderEvent, handler: EventHandler) -> None:
71-
_event_support.remove_global_handler(event, handler)
66+
_default_api.remove_handler(event, handler)

openfeature/evaluation_context/__init__.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
from dataclasses import dataclass, field
66
from datetime import datetime
77

8-
from openfeature.exception import GeneralError
9-
108
__all__ = ["EvaluationContext", "get_evaluation_context", "set_evaluation_context"]
119

1210
# https://openfeature.dev/specification/sections/evaluation-context#requirement-312
@@ -37,15 +35,16 @@ def merge(self, ctx2: EvaluationContext) -> EvaluationContext:
3735

3836

3937
def get_evaluation_context() -> EvaluationContext:
40-
return _evaluation_context
38+
from openfeature._api import _default_api # noqa: PLC0415
39+
40+
return _default_api.get_evaluation_context()
4141

4242

4343
def set_evaluation_context(evaluation_context: EvaluationContext) -> None:
44-
global _evaluation_context
45-
if evaluation_context is None:
46-
raise GeneralError(error_message="No api level evaluation context")
47-
_evaluation_context = evaluation_context
44+
from openfeature._api import _default_api # noqa: PLC0415
45+
46+
_default_api.set_evaluation_context(evaluation_context)
4847

4948

50-
# need to be at the bottom, because of the definition order
49+
# Kept for backward compatibility but no longer used; state lives in _default_api.
5150
_evaluation_context = EvaluationContext()

openfeature/hook/__init__.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@
2323
"get_hooks",
2424
]
2525

26-
_hooks: list[Hook] = []
27-
2826

2927
# https://openfeature.dev/specification/sections/hooks/#requirement-461
3028
HookData = MutableMapping[str, typing.Any]
@@ -152,14 +150,18 @@ def supports_flag_value_type(self, flag_type: FlagType) -> bool:
152150

153151

154152
def add_hooks(hooks: list[Hook]) -> None:
155-
global _hooks
156-
_hooks = _hooks + hooks
153+
from openfeature._api import _default_api # noqa: PLC0415
154+
155+
_default_api.add_hooks(hooks)
157156

158157

159158
def clear_hooks() -> None:
160-
global _hooks
161-
_hooks = []
159+
from openfeature._api import _default_api # noqa: PLC0415
160+
161+
_default_api.clear_hooks()
162162

163163

164164
def get_hooks() -> list[Hook]:
165-
return _hooks
165+
from openfeature._api import _default_api # noqa: PLC0415
166+
167+
return _default_api.get_hooks()

openfeature/transaction_context/__init__.py

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,30 +11,29 @@
1111

1212
__all__ = [
1313
"ContextVarsTransactionContextPropagator",
14+
"NoOpTransactionContextPropagator",
1415
"TransactionContextPropagator",
1516
"get_transaction_context",
1617
"set_transaction_context",
1718
"set_transaction_context_propagator",
1819
]
1920

20-
_evaluation_transaction_context_propagator: TransactionContextPropagator = (
21-
NoOpTransactionContextPropagator()
22-
)
23-
2421

2522
def set_transaction_context_propagator(
2623
transaction_context_propagator: TransactionContextPropagator,
2724
) -> None:
28-
global _evaluation_transaction_context_propagator
29-
_evaluation_transaction_context_propagator = transaction_context_propagator
25+
from openfeature._api import _default_api # noqa: PLC0415
26+
27+
_default_api.set_transaction_context_propagator(transaction_context_propagator)
3028

3129

3230
def get_transaction_context() -> EvaluationContext:
33-
return _evaluation_transaction_context_propagator.get_transaction_context()
31+
from openfeature._api import _default_api # noqa: PLC0415
32+
33+
return _default_api.get_transaction_context()
3434

3535

3636
def set_transaction_context(evaluation_context: EvaluationContext) -> None:
37-
global _evaluation_transaction_context_propagator
38-
_evaluation_transaction_context_propagator.set_transaction_context(
39-
evaluation_context
40-
)
37+
from openfeature._api import _default_api # noqa: PLC0415
38+
39+
_default_api.set_transaction_context(evaluation_context)

0 commit comments

Comments
 (0)