From c40630c3a0da1798e67d963e772c63d126afaf36 Mon Sep 17 00:00:00 2001 From: box-sdk-build Date: Wed, 1 Jul 2026 03:14:19 -0700 Subject: [PATCH] fix: Add support for additionalProperties with in Python SDK (box/box-codegen#966) --- .codegen.json | 2 +- box_sdk_gen/internal/base_object.py | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/.codegen.json b/.codegen.json index 56c1f5789..5fc06fe3f 100644 --- a/.codegen.json +++ b/.codegen.json @@ -1 +1 @@ -{ "engineHash": "ed5236c", "specHash": "131c54a", "version": "4.12.0" } +{ "engineHash": "5560f9a", "specHash": "131c54a", "version": "4.12.0" } diff --git a/box_sdk_gen/internal/base_object.py b/box_sdk_gen/internal/base_object.py index 47c407323..f9ce7718e 100644 --- a/box_sdk_gen/internal/base_object.py +++ b/box_sdk_gen/internal/base_object.py @@ -81,6 +81,8 @@ def _deserialize(cls, key, value, annotation=None): if get_origin(annotation) == list: return cls._deserialize_list(key, value, annotation) + elif get_origin(annotation) == dict: + return cls._deserialize_dict(key, value, annotation) elif get_origin(annotation) == Union: return cls._deserialize_union(key, value, annotation) elif isinstance(annotation, EnumMeta): @@ -104,6 +106,17 @@ def _deserialize_list(cls, key, value, annotation: list): except Exception: return value + @classmethod + def _deserialize_dict(cls, key, value, annotation): + try: + args = get_args(annotation) + if len(args) < 2: + return value + value_type = args[1] + return {k: cls._deserialize(key, v, value_type) for k, v in value.items()} + except Exception: + return value + @classmethod def _deserialize_union(cls, key, value, annotation): try: