From 5ba6005c9ba32e7edec0661c8d5365919f2dbe54 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Mon, 22 Jun 2026 10:37:29 -0400 Subject: [PATCH 1/2] fix(transform): guard against IndexError when bare dict has no type args --- src/openai/_utils/_transform.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/openai/_utils/_transform.py b/src/openai/_utils/_transform.py index 414f38c340..6cf4f7f546 100644 --- a/src/openai/_utils/_transform.py +++ b/src/openai/_utils/_transform.py @@ -180,7 +180,10 @@ def _transform_recursive( return _transform_typeddict(data, stripped_type) if origin == dict and is_mapping(data): - items_type = get_args(stripped_type)[1] + _dict_args = get_args(stripped_type) + if not _dict_args: + return data + items_type = _dict_args[1] return {key: _transform_recursive(value, annotation=items_type) for key, value in data.items()} if ( @@ -346,7 +349,10 @@ async def _async_transform_recursive( return await _async_transform_typeddict(data, stripped_type) if origin == dict and is_mapping(data): - items_type = get_args(stripped_type)[1] + _dict_args = get_args(stripped_type) + if not _dict_args: + return data + items_type = _dict_args[1] return {key: _transform_recursive(value, annotation=items_type) for key, value in data.items()} if ( From 9017ba414c91ba003ab366909b43c19b01a474c7 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Mon, 22 Jun 2026 10:38:21 -0400 Subject: [PATCH 2/2] fix(models): guard against ValueError when bare dict has no type args in construct_type --- src/openai/_models.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/openai/_models.py b/src/openai/_models.py index ed4c1f82d6..e5a7ccc03d 100644 --- a/src/openai/_models.py +++ b/src/openai/_models.py @@ -657,7 +657,11 @@ def construct_type(*, value: object, type_: object, metadata: Optional[List[Any] if not is_mapping(value): return value - _, items_type = get_args(type_) # Dict[_, items_type] + _dict_args = get_args(type_) + if len(_dict_args) < 2: + return value + + _, items_type = _dict_args # Dict[_, items_type] return {key: construct_type(value=item, type_=items_type) for key, item in value.items()} if (