From b2399ada272763ca054e723470d15688d45c75a4 Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 13 Jul 2026 00:39:56 +0200 Subject: [PATCH] fix: raise for missing context keys --- tests/providers/test_context_resources.py | 6 ++++++ that_depends/providers/context_resources.py | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/tests/providers/test_context_resources.py b/tests/providers/test_context_resources.py index b093b9e0..07b25294 100644 --- a/tests/providers/test_context_resources.py +++ b/tests/providers/test_context_resources.py @@ -1200,6 +1200,12 @@ def test_fetch_context_item_raises() -> None: with pytest.raises(KeyError): fetch_context_item("s", raise_on_not_found=True) + with container_context(global_context={"present": None}): + assert fetch_context_item("present", default="fallback") is None + with pytest.raises(KeyError, match="Key `missing` not found"): + fetch_context_item("missing", raise_on_not_found=True) + assert fetch_context_item("missing", default="fallback") == "fallback" + def test_context_scope_hash() -> None: assert ContextScope("TEST") == ContextScope("TEST") diff --git a/that_depends/providers/context_resources.py b/that_depends/providers/context_resources.py index 5e30641c..8ba230e9 100644 --- a/that_depends/providers/context_resources.py +++ b/that_depends/providers/context_resources.py @@ -241,8 +241,9 @@ def fetch_context_item(key: str, default: typing.Any = None, raise_on_not_found: ``` """ - if context := _get_container_context(): - return context.get(key, default) + context = _get_container_context() + if context is not None and key in context: + return context[key] if raise_on_not_found: msg = f"Key `{key}` not found in global context." raise KeyError(msg)