From afa4bfdb52e5f775e31ff003986fca33cddc0015 Mon Sep 17 00:00:00 2001 From: citizen204 Date: Mon, 15 Jun 2026 19:57:55 +0930 Subject: [PATCH 1/2] fix: use ConfigDict instead of class-based Config in RequestContext Pydantic V2 deprecated class-based model Config in favor of model_config = ConfigDict(...). Replace the inner Config class in RequestContext with the ConfigDict pattern to silence the deprecation warning emitted on import. Fixes #320 --- src/bedrock_agentcore/runtime/context.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/bedrock_agentcore/runtime/context.py b/src/bedrock_agentcore/runtime/context.py index b5f20221..26c8ca0a 100644 --- a/src/bedrock_agentcore/runtime/context.py +++ b/src/bedrock_agentcore/runtime/context.py @@ -7,7 +7,7 @@ from contextvars import ContextVar from typing import Any, Callable, Dict, Optional -from pydantic import BaseModel, Field +from pydantic import BaseModel, ConfigDict, Field from ..config_bundle.bundle import ConfigBundleRef @@ -21,10 +21,7 @@ class RequestContext(BaseModel): request_headers: Optional[Dict[str, str]] = Field(None) request: Optional[Any] = Field(None, description="The underlying Starlette request object") - class Config: - """Allow non-serializable types like Starlette Request.""" - - arbitrary_types_allowed = True + model_config = ConfigDict(arbitrary_types_allowed=True) class BedrockAgentCoreContext: From a3175ec5840765a72f8aec1f210b643a1681d3b5 Mon Sep 17 00:00:00 2001 From: citizen204 Date: Sat, 27 Jun 2026 18:13:34 +0930 Subject: [PATCH 2/2] test(runtime): add regression guard for PydanticDeprecatedSince20 in RequestContext Instantiate RequestContext under warnings.simplefilter("error", PydanticDeprecatedSince20) to ensure class-based Config never silently creeps back in. Addresses review feedback from valter-silva-au on #522. --- tests/bedrock_agentcore/runtime/test_context.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/bedrock_agentcore/runtime/test_context.py b/tests/bedrock_agentcore/runtime/test_context.py index db37bed8..a4632399 100644 --- a/tests/bedrock_agentcore/runtime/test_context.py +++ b/tests/bedrock_agentcore/runtime/test_context.py @@ -253,6 +253,22 @@ def test_request_context_allows_arbitrary_types(self): assert context.request is mock_request + def test_request_context_no_pydantic_v1_deprecation_warning(self): + """RequestContext must not raise PydanticDeprecatedSince20 on instantiation. + + Regression guard: class-based Config triggers this warning in Pydantic v2; + ConfigDict does not. If someone reverts the fix, this test will fail. + """ + import warnings + + from pydantic import PydanticDeprecatedSince20 + + with warnings.catch_warnings(): + warnings.simplefilter("error", PydanticDeprecatedSince20) + context = RequestContext(session_id="regression-check", request_headers={"X-Test": "1"}) + + assert context.session_id == "regression-check" + class TestBedrockAgentCoreContextConfigBundles: """Tests for config bundle ContextVar methods on BedrockAgentCoreContext."""