From d708cc03e1c9c90a92a238da1adedfe9e24a36ea Mon Sep 17 00:00:00 2001 From: Matthew Keeler Date: Wed, 2 Oct 2024 10:45:25 -0400 Subject: [PATCH] feat: Expose LDClient from provider --- ld_openfeature/provider.py | 9 +++++++++ tests/test_provider.py | 4 ++++ 2 files changed, 13 insertions(+) diff --git a/ld_openfeature/provider.py b/ld_openfeature/provider.py index d2acca1..8bd642c 100644 --- a/ld_openfeature/provider.py +++ b/ld_openfeature/provider.py @@ -22,6 +22,15 @@ def __init__(self, config: Config): self.__context_converter = EvaluationContextConverter() self.__details_converter = ResolutionDetailsConverter() + @property + def client(self) -> LDClient: + """ + Access the underlying LaunchDarky client instance backing this provider. + + This is useful for accessing additional functionality not exposed by the provider. + """ + return self.__client + def __handle_data_source_status(self, status: DataSourceStatus): state = status.state if state == DataSourceState.INITIALIZING: diff --git a/tests/test_provider.py b/tests/test_provider.py index 851fb62..edc8893 100644 --- a/tests/test_provider.py +++ b/tests/test_provider.py @@ -42,6 +42,10 @@ def test_metadata_name_is_correct(provider: LaunchDarklyProvider): assert provider.get_metadata().name == "launchdarkly-openfeature-server" +def test_ldclient_is_accessible(provider: LaunchDarklyProvider): + assert type(provider.client) is LDClient + + def test_not_providing_context_returns_error(provider: LaunchDarklyProvider): resolution_details = provider.resolve_boolean_details("flag-key", True, None)