From dbf42c370784236ff31e9324968f02a5efb58586 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sun, 9 Oct 2022 10:33:06 -1000 Subject: [PATCH] feat: add cdef to unpack_variants (#95) --- src/dbus_fast/unpack.pxd | 2 ++ src/dbus_fast/unpack.py | 12 ++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/dbus_fast/unpack.pxd b/src/dbus_fast/unpack.pxd index 3f996c3..7ab4670 100644 --- a/src/dbus_fast/unpack.pxd +++ b/src/dbus_fast/unpack.pxd @@ -4,3 +4,5 @@ import cython cpdef unpack_variants(object data) + +cdef _unpack_variants(object data) diff --git a/src/dbus_fast/unpack.py b/src/dbus_fast/unpack.py index ac2a140..d23426d 100644 --- a/src/dbus_fast/unpack.py +++ b/src/dbus_fast/unpack.py @@ -5,10 +5,14 @@ from .signature import Variant def unpack_variants(data: Any) -> Any: """Unpack variants and remove signature info.""" - if isinstance(data, Variant): - return unpack_variants(data.value) + return _unpack_variants(data) + + +def _unpack_variants(data: Any) -> Any: if isinstance(data, dict): - return {k: unpack_variants(v) for k, v in data.items()} + return {k: _unpack_variants(v) for k, v in data.items()} if isinstance(data, list): - return [unpack_variants(item) for item in data] + return [_unpack_variants(item) for item in data] + if isinstance(data, Variant): + return _unpack_variants(data.value) return data