Skip to content

Commit 16917f7

Browse files
committed
Make OFClient optional arg
1 parent 0a75f7e commit 16917f7

File tree

2 files changed

+22
-11
lines changed

2 files changed

+22
-11
lines changed

sentry_sdk/integrations/openfeature.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from typing import Optional
99

1010
try:
11+
from openfeature import api
1112
from openfeature.hook import Hook
1213

1314
if TYPE_CHECKING:
@@ -22,20 +23,21 @@ class OpenFeatureIntegration(Integration):
2223
identifier = "openfeature"
2324
_client = None # type: Optional[OpenFeatureClient]
2425

25-
def __init__(self, client):
26-
# type: (OpenFeatureClient) -> None
26+
def __init__(self, client=None):
27+
# type: (Optional[OpenFeatureClient]) -> None
2728
self.__class__._client = client
2829

2930
@staticmethod
3031
def setup_once():
3132
# type: () -> None
3233

3334
client = OpenFeatureIntegration._client
34-
if not client:
35-
raise DidNotEnable("Error getting OpenFeatureClient instance")
36-
37-
# Register the hook within the openfeature client.
38-
client.add_hooks(hooks=[OpenFeatureHook()])
35+
if client:
36+
# Register the hook within the openfeature client.
37+
client.add_hooks(hooks=[OpenFeatureHook()])
38+
else:
39+
# Register the hook within the global openfeature hooks list.
40+
api.add_hooks(hooks=[OpenFeatureHook()])
3941

4042
scope = sentry_sdk.get_current_scope()
4143
scope.add_error_processor(flag_error_processor)

tests/integrations/openfeature/test_openfeature.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,13 @@
1010
from sentry_sdk.integrations.openfeature import OpenFeatureIntegration
1111

1212

13-
def test_openfeature_integration(sentry_init, capture_events, uninstall_integration):
13+
@pytest.mark.parametrize(
14+
"use_global_client",
15+
(False, True),
16+
)
17+
def test_openfeature_integration(
18+
sentry_init, use_global_client, capture_events, uninstall_integration
19+
):
1420
flags = {
1521
"hello": InMemoryFlag("on", {"on": True, "off": False}),
1622
"world": InMemoryFlag("off", {"on": True, "off": False}),
@@ -19,7 +25,10 @@ def test_openfeature_integration(sentry_init, capture_events, uninstall_integrat
1925
client = api.get_client()
2026

2127
uninstall_integration(OpenFeatureIntegration.identifier)
22-
sentry_init(integrations=[OpenFeatureIntegration(client)])
28+
if use_global_client:
29+
sentry_init(integrations=[OpenFeatureIntegration()])
30+
else:
31+
sentry_init(integrations=[OpenFeatureIntegration(client=client)])
2332

2433
client.get_boolean_value("hello", default_value=False)
2534
client.get_boolean_value("world", default_value=False)
@@ -49,7 +58,7 @@ def test_openfeature_integration_threaded(
4958
client = api.get_client()
5059

5160
uninstall_integration(OpenFeatureIntegration.identifier)
52-
sentry_init(integrations=[OpenFeatureIntegration(client)])
61+
sentry_init(integrations=[OpenFeatureIntegration(client=client)])
5362
events = capture_events()
5463

5564
# Capture an eval before we split isolation scopes.
@@ -109,7 +118,7 @@ def test_openfeature_integration_asyncio(
109118
client = api.get_client()
110119

111120
uninstall_integration(OpenFeatureIntegration.identifier)
112-
sentry_init(integrations=[OpenFeatureIntegration(client)])
121+
sentry_init(integrations=[OpenFeatureIntegration(client=client)])
113122
events = capture_events()
114123

115124
# Capture an eval before we split isolation scopes.

0 commit comments

Comments
 (0)