From e6db0dd19db8d8db13597a99e0d26cf06f52041c Mon Sep 17 00:00:00 2001 From: devteamaegis Date: Sun, 31 May 2026 23:42:09 -0400 Subject: [PATCH] fix: guard bare dict unpacking in construct_type When type_ is a bare unparameterized dict, get_args(dict) returns () causing ValueError on tuple unpacking. Fall back to (Any, Any) when no args are present. --- src/cohere/core/unchecked_base_model.py | 3 ++- tests/test_unchecked_base_model.py | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 tests/test_unchecked_base_model.py diff --git a/src/cohere/core/unchecked_base_model.py b/src/cohere/core/unchecked_base_model.py index 67d7e3be4..ad39f0298 100644 --- a/src/cohere/core/unchecked_base_model.py +++ b/src/cohere/core/unchecked_base_model.py @@ -360,7 +360,8 @@ def construct_type( if not isinstance(object_, typing.Mapping): return object_ - key_type, items_type = get_args(type_) + args = get_args(type_) + key_type, items_type = args if args else (typing.Any, typing.Any) key_type = _maybe_resolve_forward_ref(key_type, host) items_type = _maybe_resolve_forward_ref(items_type, host) d = { diff --git a/tests/test_unchecked_base_model.py b/tests/test_unchecked_base_model.py new file mode 100644 index 000000000..11ae0dae2 --- /dev/null +++ b/tests/test_unchecked_base_model.py @@ -0,0 +1,11 @@ +import sys +import os +sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "src")) + +from cohere.core.unchecked_base_model import construct_type + + +def test_construct_type_bare_dict_no_unpack_error(): + # bare dict (unparameterized) must not raise ValueError on get_args unpacking + result = construct_type(type_=dict, object_={"key": "value"}) + assert result == {"key": "value"}