From cec103fa8a36e70f78adabf8cf88a974610875e3 Mon Sep 17 00:00:00 2001 From: Adam Dangoor Date: Thu, 10 Sep 2026 15:33:48 +0100 Subject: [PATCH 1/2] Type parsed request bodies as JSON --- src/mock_vws/_flask_server/target_manager.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/mock_vws/_flask_server/target_manager.py b/src/mock_vws/_flask_server/target_manager.py index 1db36a980..b3a510fdb 100644 --- a/src/mock_vws/_flask_server/target_manager.py +++ b/src/mock_vws/_flask_server/target_manager.py @@ -29,7 +29,11 @@ VuMarkDatabaseDict, ) from mock_vws.database_type import DatabaseType -from mock_vws.model_target import ModelTargetDataset, OAuth2ClientCredential +from mock_vws.model_target import ( + JSONValue, + ModelTargetDataset, + OAuth2ClientCredential, +) from mock_vws.request_rate_limits import RequestRateLimit, RequestRateLimits from mock_vws.states import States from mock_vws.target import ImageTarget, VuMarkTarget @@ -108,7 +112,7 @@ def validate(value: object) -> T: @beartype -def _is_json_object(value: object, /) -> TypeIs[dict[str, object]]: +def _is_json_object(value: object, /) -> TypeIs[dict[str, JSONValue]]: """Whether a value parsed from JSON is an object. JSON object keys are always strings. From 03c86c5baad0724080a7e6fa2bfd43745562c520 Mon Sep 17 00:00:00 2001 From: Adam Dangoor Date: Thu, 10 Sep 2026 15:35:17 +0100 Subject: [PATCH 2/2] Add news fragment --- newsfragments/3606.change.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 newsfragments/3606.change.rst diff --git a/newsfragments/3606.change.rst b/newsfragments/3606.change.rst new file mode 100644 index 000000000..59763f327 --- /dev/null +++ b/newsfragments/3606.change.rst @@ -0,0 +1 @@ +Type parsed Target Manager request bodies using recursive JSON values.