11from __future__ import annotations
22
3- import typing
4-
53from openfeature ._event_support import EventSupport
4+ from openfeature .client import OpenFeatureClient
65from openfeature .evaluation_context import EvaluationContext
76from openfeature .event import EventHandler , ProviderEvent
87from openfeature .exception import GeneralError
98from openfeature .hook import Hook
109from openfeature .provider import FeatureProvider , ProviderStatus
1110from openfeature .provider ._registry import ProviderRegistry
1211from openfeature .provider .metadata import Metadata
13- from openfeature .transaction_context import (
12+ from openfeature .transaction_context import TransactionContextPropagator
13+ from openfeature .transaction_context .no_op_transaction_context_propagator import (
1414 NoOpTransactionContextPropagator ,
15- TransactionContextPropagator ,
1615)
1716
18- if typing .TYPE_CHECKING :
19- from openfeature .client import OpenFeatureClient
20-
2117
2218class OpenFeatureAPI :
2319 """An independent OpenFeature API instance with its own isolated state.
2420
2521 Each instance maintains its own providers, evaluation context, hooks,
26- event handlers, and transaction context propagator — fully separate from
22+ event handlers, and transaction context propagator; fully separate from
2723 the global singleton and from other instances.
2824 """
2925
@@ -44,8 +40,6 @@ def __init__(self) -> None:
4440 def get_client (
4541 self , domain : str | None = None , version : str | None = None
4642 ) -> OpenFeatureClient :
47- from openfeature .client import OpenFeatureClient # noqa: PLC0415
48-
4943 return OpenFeatureClient (domain = domain , version = version , api = self )
5044
5145 # --- Provider management ---
@@ -132,28 +126,4 @@ def remove_handler(self, event: ProviderEvent, handler: EventHandler) -> None:
132126 self ._event_support .remove_global_handler (event , handler )
133127
134128
135- def _create_default_api () -> OpenFeatureAPI :
136- """Create the default global API instance, wired to legacy module-level singletons.
137-
138- The default API reuses the module-level ``_default_event_support`` and
139- ``provider_registry`` so that backward-compatible module-level functions
140- continue to work against the same state.
141- """
142- from openfeature ._event_support import _default_event_support # noqa: PLC0415
143- from openfeature .provider ._registry import provider_registry # noqa: PLC0415
144-
145- api = OpenFeatureAPI .__new__ (OpenFeatureAPI )
146- api ._hooks = []
147- api ._evaluation_context = EvaluationContext ()
148- api ._transaction_context_propagator = NoOpTransactionContextPropagator ()
149- api ._event_support = _default_event_support
150- api ._provider_registry = provider_registry
151-
152- # Wire the registry to this API's event support and context getter
153- provider_registry ._event_support = _default_event_support
154- provider_registry ._evaluation_context_getter = api .get_evaluation_context
155-
156- return api
157-
158-
159- _default_api = _create_default_api ()
129+ _default_api = OpenFeatureAPI ()
0 commit comments