From ef1c7227e77184634e31b6e2b2d35b85f1a5fb5c Mon Sep 17 00:00:00 2001 From: Alan Fleming Date: Wed, 6 May 2026 15:29:51 +1000 Subject: [PATCH 1/2] Include default argument in pack_json_bytes and pack_json_str. --- src/async_kernel/compat/json.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/async_kernel/compat/json.py b/src/async_kernel/compat/json.py index 9e78bfff..eab3b2fa 100644 --- a/src/async_kernel/compat/json.py +++ b/src/async_kernel/compat/json.py @@ -9,8 +9,8 @@ if TYPE_CHECKING: from collections.abc import Callable - pack_json_bytes: Callable[[Any], bytes] - pack_json_str: Callable[[Any], str] + pack_json_bytes: Callable[[Any, Callable[[Any], Any]], bytes] + pack_json_str: Callable[[Any, Callable[[Any], Any]], str] unpack_json: Callable[[str | bytes], Any] @@ -19,11 +19,11 @@ from jupyter_client.jsonutil import json_default - def _jc_pack_bytes(data: Any) -> bytes: - return json.dumps(data, default=json_default).encode() + def _jc_pack_bytes(data: Any, default=json_default) -> bytes: + return json.dumps(data, default=default).encode() - def _jc_pack_str(data: Any) -> str: - return json.dumps(data, default=json_default) + def _jc_pack_str(data: Any, default=json_default) -> str: + return json.dumps(data, allow_nan=False, default=default) pack_json_bytes, pack_json_str, unpack_json = _jc_pack_bytes, _jc_pack_str, json.loads @@ -36,10 +36,10 @@ def _jc_pack_str(data: Any) -> str: ORJSON_OPTION = orjson.OPT_SERIALIZE_NUMPY | orjson.OPT_NAIVE_UTC | orjson.OPT_UTC_Z - def _oj_pack_bytes(data) -> bytes: - return orjson.dumps(data, default=json_default, option=ORJSON_OPTION) + def _oj_pack_bytes(data, default=json_default) -> bytes: + return orjson.dumps(data, default=default, option=ORJSON_OPTION) - def _oj_pack_str(data) -> str: - return orjson.dumps(data, default=json_default, option=ORJSON_OPTION).decode() + def _oj_pack_str(data, default=json_default) -> str: + return orjson.dumps(data, default=default, option=ORJSON_OPTION).decode() pack_json_bytes, pack_json_str, unpack_json = _oj_pack_bytes, _oj_pack_str, orjson.loads From e5d7a3222b65d9b2af63c1bbcf43c82641331909 Mon Sep 17 00:00:00 2001 From: Alan Fleming <> Date: Wed, 6 May 2026 16:10:37 +1000 Subject: [PATCH 2/2] Revise type hints for compat.json objects. --- src/async_kernel/compat/json.py | 44 ++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/src/async_kernel/compat/json.py b/src/async_kernel/compat/json.py index eab3b2fa..3e57e0d7 100644 --- a/src/async_kernel/compat/json.py +++ b/src/async_kernel/compat/json.py @@ -9,9 +9,31 @@ if TYPE_CHECKING: from collections.abc import Callable - pack_json_bytes: Callable[[Any, Callable[[Any], Any]], bytes] - pack_json_str: Callable[[Any, Callable[[Any], Any]], str] - unpack_json: Callable[[str | bytes], Any] + from jupyter_client.jsonutil import json_default + + def pack_json_bytes(obj: Any, /, default: Callable[[Any], Any] | None = json_default) -> bytes: + """ + Pack obj into json serialized bytes. + + Args: + data: The data to serialize. + default: A function that should return a serializable version of obj or raise TypeError. + """ + ... + + def pack_json_str(obj: Any, /, default: Callable[[Any], Any] | None = json_default) -> str: + """ + Pack obj into json serialized string. + + Args: + data: The data to serialize. + default: A function that should return a serializable version of obj or raise TypeError. + """ + ... + + def unpack_json(data: str | bytes, /) -> Any: + "Deserialize data in a Python object." + ... if importlib.util.find_spec("jupyter_client"): @@ -19,11 +41,11 @@ from jupyter_client.jsonutil import json_default - def _jc_pack_bytes(data: Any, default=json_default) -> bytes: - return json.dumps(data, default=default).encode() + def _jc_pack_bytes(obj: Any, default: Callable[[Any], Any] | None = json_default) -> bytes: + return json.dumps(obj, default=default).encode() - def _jc_pack_str(data: Any, default=json_default) -> str: - return json.dumps(data, allow_nan=False, default=default) + def _jc_pack_str(obj: Any, default: Callable[[Any], Any] | None = json_default) -> str: + return json.dumps(obj, allow_nan=False, default=default) pack_json_bytes, pack_json_str, unpack_json = _jc_pack_bytes, _jc_pack_str, json.loads @@ -36,10 +58,10 @@ def _jc_pack_str(data: Any, default=json_default) -> str: ORJSON_OPTION = orjson.OPT_SERIALIZE_NUMPY | orjson.OPT_NAIVE_UTC | orjson.OPT_UTC_Z - def _oj_pack_bytes(data, default=json_default) -> bytes: - return orjson.dumps(data, default=default, option=ORJSON_OPTION) + def _oj_pack_bytes(obj: Any, default: Callable[[Any], Any] | None = json_default) -> bytes: + return orjson.dumps(obj, default=default, option=ORJSON_OPTION) - def _oj_pack_str(data, default=json_default) -> str: - return orjson.dumps(data, default=default, option=ORJSON_OPTION).decode() + def _oj_pack_str(obj: Any, default: Callable[[Any], Any] | None = json_default) -> str: + return orjson.dumps(obj, default=default, option=ORJSON_OPTION).decode() pack_json_bytes, pack_json_str, unpack_json = _oj_pack_bytes, _oj_pack_str, orjson.loads