Skip to content

Commit 6f7f253

Browse files
committed
refactor(provider): remove unused exception handling
Signed-off-by: Kiki L Hakiem <[email protected]>
1 parent 93610f8 commit 6f7f253

File tree

5 files changed

+53
-77
lines changed

5 files changed

+53
-77
lines changed

providers/openfeature-provider-unleash/src/openfeature/contrib/provider/unleash/__init__.py

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -99,18 +99,9 @@ def get_provider_hooks(self) -> list[Hook]:
9999

100100
def shutdown(self) -> None:
101101
"""Shutdown the Unleash client."""
102-
try:
103-
if self.client.is_initialized:
104-
self.client.destroy()
105-
self._status = ProviderStatus.NOT_READY
106-
except Exception as e:
107-
self._status = ProviderStatus.ERROR
108-
self._event_manager.emit_event(
109-
ProviderEvent.PROVIDER_ERROR,
110-
error_message=str(e),
111-
error_code=ErrorCode.GENERAL,
112-
)
113-
raise GeneralError(f"Failed to shutdown Unleash provider: {e}") from e
102+
if self.client.is_initialized:
103+
self.client.destroy()
104+
self._status = ProviderStatus.NOT_READY
114105

115106
def on_context_changed(
116107
self,

providers/openfeature-provider-unleash/src/openfeature/contrib/provider/unleash/flag_evaluation.py

Lines changed: 43 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
from openfeature.evaluation_context import EvaluationContext
99
from openfeature.exception import (
10-
GeneralError,
1110
ParseError,
1211
TypeMismatchError,
1312
)
@@ -55,26 +54,21 @@ def resolve_boolean_details(
5554
Returns:
5655
FlagResolutionDetails with the resolved boolean value
5756
"""
58-
try:
59-
context = self._provider._build_unleash_context(evaluation_context)
60-
is_enabled = self._provider.client.is_enabled(flag_key, context=context)
61-
62-
return FlagResolutionDetails(
63-
value=is_enabled,
64-
reason=Reason.TARGETING_MATCH if is_enabled else Reason.DEFAULT,
65-
variant=None,
66-
error_code=None,
67-
error_message=None,
68-
flag_metadata={
69-
"source": "unleash",
70-
"enabled": is_enabled,
71-
"app_name": self._provider.app_name,
72-
},
73-
)
74-
except (TypeMismatchError, ParseError, GeneralError):
75-
raise
76-
except Exception as e:
77-
raise GeneralError(f"Unexpected error: {e}") from e
57+
context = self._provider._build_unleash_context(evaluation_context)
58+
is_enabled = self._provider.client.is_enabled(flag_key, context=context)
59+
60+
return FlagResolutionDetails(
61+
value=is_enabled,
62+
reason=Reason.TARGETING_MATCH if is_enabled else Reason.DEFAULT,
63+
variant=None,
64+
error_code=None,
65+
error_message=None,
66+
flag_metadata={
67+
"source": "unleash",
68+
"enabled": is_enabled,
69+
"app_name": self._provider.app_name,
70+
},
71+
)
7872

7973
def resolve_string_details(
8074
self,
@@ -174,48 +168,43 @@ def _resolve_variant_flag(
174168
Returns:
175169
FlagResolutionDetails with the resolved value
176170
"""
177-
try:
178-
context = self._provider._build_unleash_context(evaluation_context)
179-
variant = self._provider.client.get_variant(flag_key, context=context)
180-
181-
if variant.get("enabled", False) and "payload" in variant:
182-
try:
183-
payload_value = variant["payload"].get("value", default_value)
184-
value = value_converter(payload_value)
185-
return FlagResolutionDetails(
186-
value=value,
187-
reason=Reason.TARGETING_MATCH,
188-
variant=variant.get("name"),
189-
error_code=None,
190-
error_message=None,
191-
flag_metadata={
192-
"source": "unleash",
193-
"enabled": variant.get("enabled", False),
194-
"variant_name": variant.get("name") or "",
195-
"app_name": self._provider.app_name,
196-
},
197-
)
198-
except (ValueError, TypeError) as e:
199-
raise TypeMismatchError(str(e)) from e
200-
except ParseError:
201-
raise
202-
else:
171+
context = self._provider._build_unleash_context(evaluation_context)
172+
variant = self._provider.client.get_variant(flag_key, context=context)
173+
174+
if variant.get("enabled", False) and "payload" in variant:
175+
try:
176+
payload_value = variant["payload"].get("value", default_value)
177+
value = value_converter(payload_value)
203178
return FlagResolutionDetails(
204-
value=default_value,
205-
reason=Reason.DEFAULT,
206-
variant=None,
179+
value=value,
180+
reason=Reason.TARGETING_MATCH,
181+
variant=variant.get("name"),
207182
error_code=None,
208183
error_message=None,
209184
flag_metadata={
210185
"source": "unleash",
211186
"enabled": variant.get("enabled", False),
187+
"variant_name": variant.get("name") or "",
212188
"app_name": self._provider.app_name,
213189
},
214190
)
215-
except (TypeMismatchError, ParseError, GeneralError):
216-
raise
217-
except Exception as e:
218-
raise GeneralError(f"Unexpected error: {e}") from e
191+
except ValueError as e:
192+
raise TypeMismatchError(str(e)) from e
193+
except ParseError:
194+
raise
195+
else:
196+
return FlagResolutionDetails(
197+
value=default_value,
198+
reason=Reason.DEFAULT,
199+
variant=None,
200+
error_code=None,
201+
error_message=None,
202+
flag_metadata={
203+
"source": "unleash",
204+
"enabled": variant.get("enabled", False),
205+
"app_name": self._provider.app_name,
206+
},
207+
)
219208

220209
def _parse_json(self, value: Any) -> Any:
221210
"""Parse JSON value for object flags.

providers/openfeature-provider-unleash/src/openfeature/contrib/provider/unleash/tracking.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,6 @@ def track(
4646
evaluation_context: Optional evaluation context
4747
event_details: Optional tracking event details
4848
"""
49-
if not self._provider.client:
50-
return
51-
5249
unleash_context = (
5350
self._provider._build_unleash_context(evaluation_context) or {}
5451
)

providers/openfeature-provider-unleash/tests/test_provider.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import uuid
22
from unittest.mock import Mock, patch
33

4+
from UnleashClient.cache import FileCache
45
from UnleashClient.events import UnleashEventType, UnleashReadyEvent
56

67
from openfeature.contrib.provider.unleash import UnleashProvider
78
from openfeature.evaluation_context import EvaluationContext
89
from openfeature.provider import ProviderStatus
910

10-
1111
# Mock feature response for testing cache functionality
1212
MOCK_FEATURE_RESPONSE = {
1313
"version": 1,
@@ -196,8 +196,6 @@ def test_unleash_provider_flag_metadata():
196196

197197
def test_unleash_provider_with_custom_cache():
198198
"""Test that UnleashProvider properly uses a custom cache with mocked features."""
199-
from UnleashClient.cache import FileCache
200-
201199
# Create a custom cache with mocked features
202200
custom_cache = FileCache("test-app")
203201
custom_cache.bootstrap_from_dict(MOCK_FEATURE_RESPONSE)

uv.lock

Lines changed: 6 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)