diff --git a/confidence/confidence.py b/confidence/confidence.py index d5c0723..4f2a9ac 100644 --- a/confidence/confidence.py +++ b/confidence/confidence.py @@ -77,8 +77,6 @@ class ResolveResult(object): class Confidence: - context: Dict[str, FieldType] = {} - def put_context(self, key: str, value: FieldType) -> None: self.context[key] = value @@ -103,16 +101,19 @@ def __init__( custom_resolve_base_url: Optional[str] = None, timeout_ms: Optional[int] = DEFAULT_TIMEOUT_MS, logger: logging.Logger = logging.getLogger("confidence_logger"), - async_client: httpx.AsyncClient = httpx.AsyncClient(), + async_client: Optional[httpx.AsyncClient] = None, disable_telemetry: bool = False, ): + self.context: Dict[str, FieldType] = {} self._client_secret = client_secret self._region = region self._api_endpoint = region.endpoint() self._apply_on_resolve = apply_on_resolve self._timeout_ms = timeout_ms self.logger = logger - self.async_client = async_client + self.async_client = ( + async_client if async_client is not None else httpx.AsyncClient() + ) self._setup_logger(logger) self._custom_resolve_base_url = custom_resolve_base_url self._telemetry = Telemetry(__version__, disabled=disable_telemetry) diff --git a/tests/test_confidence.py b/tests/test_confidence.py index b1e9ddc..97111ad 100644 --- a/tests/test_confidence.py +++ b/tests/test_confidence.py @@ -589,6 +589,15 @@ async def test_handle_actual_timeout_async(self): self.assertIsNone(result.variant) self.assertEqual(result.error_code, ErrorCode.TIMEOUT) + def test_context_is_isolated_per_instance(self): + a = Confidence(client_secret="test") + b = Confidence(client_secret="test") + + a.put_context("user", "alice") + + self.assertEqual(a.context, {"user": "alice"}) + self.assertEqual(b.context, {}) + if __name__ == "__main__": unittest.main()