feat: add cdef to unpack_variants (#95)

This commit is contained in:
J. Nick Koston 2022-10-09 10:33:06 -10:00 committed by GitHub
parent baa3e9fd6b
commit dbf42c3707
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 4 deletions

View File

@ -4,3 +4,5 @@ import cython
cpdef unpack_variants(object data)
cdef _unpack_variants(object data)

View File

@ -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