|
1 | 1 | from __future__ import annotations
|
2 | 2 |
|
3 |
| -from collections import defaultdict |
4 | 3 | from dataclasses import dataclass, field
|
5 | 4 | from enum import Enum
|
6 |
| -from typing import TYPE_CHECKING, Callable, ClassVar, Dict, List, Optional, Union |
| 5 | +from typing import Callable, ClassVar, Dict, List, Optional, Union |
7 | 6 |
|
8 | 7 | from openfeature.exception import ErrorCode
|
9 |
| -from openfeature.provider import FeatureProvider, ProviderStatus |
10 |
| - |
11 |
| -if TYPE_CHECKING: |
12 |
| - from openfeature.client import OpenFeatureClient |
| 8 | +from openfeature.provider import ProviderStatus |
13 | 9 |
|
14 | 10 |
|
15 | 11 | class ProviderEvent(Enum):
|
@@ -62,74 +58,3 @@ def from_provider_event_details(
|
62 | 58 |
|
63 | 59 |
|
64 | 60 | EventHandler = Callable[[EventDetails], None]
|
65 |
| - |
66 |
| - |
67 |
| -class EventSupport: |
68 |
| - _global_handlers: Dict[ProviderEvent, List[EventHandler]] |
69 |
| - _client_handlers: Dict[OpenFeatureClient, Dict[ProviderEvent, List[EventHandler]]] |
70 |
| - |
71 |
| - def __init__(self) -> None: |
72 |
| - self._global_handlers = defaultdict(list) |
73 |
| - self._client_handlers = defaultdict(lambda: defaultdict(list)) |
74 |
| - |
75 |
| - def run_client_handlers( |
76 |
| - self, client: OpenFeatureClient, event: ProviderEvent, details: EventDetails |
77 |
| - ) -> None: |
78 |
| - for handler in self._client_handlers[client][event]: |
79 |
| - handler(details) |
80 |
| - |
81 |
| - def run_global_handlers(self, event: ProviderEvent, details: EventDetails) -> None: |
82 |
| - for handler in self._global_handlers[event]: |
83 |
| - handler(details) |
84 |
| - |
85 |
| - def add_client_handler( |
86 |
| - self, client: OpenFeatureClient, event: ProviderEvent, handler: EventHandler |
87 |
| - ) -> None: |
88 |
| - handlers = self._client_handlers[client][event] |
89 |
| - handlers.append(handler) |
90 |
| - |
91 |
| - self._run_immediate_handler(client, event, handler) |
92 |
| - |
93 |
| - def remove_client_handler( |
94 |
| - self, client: OpenFeatureClient, event: ProviderEvent, handler: EventHandler |
95 |
| - ) -> None: |
96 |
| - handlers = self._client_handlers[client][event] |
97 |
| - handlers.remove(handler) |
98 |
| - |
99 |
| - def add_global_handler(self, event: ProviderEvent, handler: EventHandler) -> None: |
100 |
| - self._global_handlers[event].append(handler) |
101 |
| - |
102 |
| - from openfeature.api import get_client |
103 |
| - |
104 |
| - self._run_immediate_handler(get_client(), event, handler) |
105 |
| - |
106 |
| - def remove_global_handler( |
107 |
| - self, event: ProviderEvent, handler: EventHandler |
108 |
| - ) -> None: |
109 |
| - self._global_handlers[event].remove(handler) |
110 |
| - |
111 |
| - def run_handlers_for_provider( |
112 |
| - self, |
113 |
| - provider: FeatureProvider, |
114 |
| - event: ProviderEvent, |
115 |
| - provider_details: ProviderEventDetails, |
116 |
| - ) -> None: |
117 |
| - details = EventDetails.from_provider_event_details( |
118 |
| - provider.get_metadata().name, provider_details |
119 |
| - ) |
120 |
| - # run the global handlers |
121 |
| - self.run_global_handlers(event, details) |
122 |
| - # run the handlers for clients associated to this provider |
123 |
| - for client in self._client_handlers: |
124 |
| - if client.provider == provider: |
125 |
| - self.run_client_handlers(client, event, details) |
126 |
| - |
127 |
| - def _run_immediate_handler( |
128 |
| - self, client: OpenFeatureClient, event: ProviderEvent, handler: EventHandler |
129 |
| - ) -> None: |
130 |
| - if event == ProviderEvent.from_provider_status(client.get_provider_status()): |
131 |
| - handler(EventDetails(provider_name=client.provider.get_metadata().name)) |
132 |
| - |
133 |
| - def clear(self) -> None: |
134 |
| - self._global_handlers.clear() |
135 |
| - self._client_handlers.clear() |
0 commit comments