From da12f198a0f1ea99fbf5a3b484e1bea7743bc3a9 Mon Sep 17 00:00:00 2001 From: Ivan L Date: Wed, 24 Jan 2024 05:40:18 +0400 Subject: [PATCH 1/3] skip object_pairs_hook in case we need default behavior --- bson/json_util.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/bson/json_util.py b/bson/json_util.py index 699f5d8f4a..8b3bc61483 100644 --- a/bson/json_util.py +++ b/bson/json_util.py @@ -497,7 +497,11 @@ def loads(s: Union[str, bytes, bytearray], *args: Any, **kwargs: Any) -> Any: Accepts optional parameter `json_options`. See :class:`JSONOptions`. """ json_options = kwargs.pop("json_options", DEFAULT_JSON_OPTIONS) - kwargs["object_pairs_hook"] = lambda pairs: object_pairs_hook(pairs, json_options) + # Execution time optimization if json_options.document_class is dict + if json_options.document_class is dict: + kwargs["object_hook"] = lambda pairs: object_hook(pairs, json_options) + else: + kwargs["object_pairs_hook"] = lambda pairs: object_pairs_hook(pairs, json_options) return json.loads(s, *args, **kwargs) From dab13315c08ac3500258df469f943a8e5df313bd Mon Sep 17 00:00:00 2001 From: Ivan L Date: Thu, 1 Feb 2024 03:10:12 +0300 Subject: [PATCH 2/3] fix arg name --- bson/json_util.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bson/json_util.py b/bson/json_util.py index 8b3bc61483..1c62d0b72f 100644 --- a/bson/json_util.py +++ b/bson/json_util.py @@ -499,7 +499,7 @@ def loads(s: Union[str, bytes, bytearray], *args: Any, **kwargs: Any) -> Any: json_options = kwargs.pop("json_options", DEFAULT_JSON_OPTIONS) # Execution time optimization if json_options.document_class is dict if json_options.document_class is dict: - kwargs["object_hook"] = lambda pairs: object_hook(pairs, json_options) + kwargs["object_hook"] = lambda obj: object_hook(obj, json_options) else: kwargs["object_pairs_hook"] = lambda pairs: object_pairs_hook(pairs, json_options) return json.loads(s, *args, **kwargs) From 98fd4de7feacdfffe28e36c9eaaa089cfabe9117 Mon Sep 17 00:00:00 2001 From: Ivan L Date: Thu, 1 Feb 2024 03:39:46 +0300 Subject: [PATCH 3/3] update contributors doc --- doc/contributors.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/contributors.rst b/doc/contributors.rst index b6e143440b..d7f1030322 100644 --- a/doc/contributors.rst +++ b/doc/contributors.rst @@ -99,3 +99,4 @@ The following is a list of people who have contributed to - Iris Ho (sleepyStick) - Stephan Hof (stephan-hof) - Casey Clements (caseyclements) +- Ivan Lukyanchikov (ilukyanchikov)