comment here
This commit is contained in:
41
.CondaPkg/env/lib/python3.11/site-packages/jsons/serializers/default_tuple.py
vendored
Normal file
41
.CondaPkg/env/lib/python3.11/site-packages/jsons/serializers/default_tuple.py
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
from typing import Union, Optional, Tuple
|
||||
|
||||
from typish import get_args
|
||||
|
||||
from jsons._compatibility_impl import tuple_with_ellipsis
|
||||
from jsons._dump_impl import dump
|
||||
from jsons.serializers.default_iterable import default_iterable_serializer
|
||||
|
||||
|
||||
def default_tuple_serializer(obj: tuple,
|
||||
cls: Optional[type] = None,
|
||||
**kwargs) -> Union[list, dict]:
|
||||
"""
|
||||
Serialize the given ``obj`` to a list of serialized objects.
|
||||
:param obj: the tuple that is to be serialized.
|
||||
:param cls: the type of the ``obj``.
|
||||
:param kwargs: any keyword arguments that may be given to the serialization
|
||||
process.
|
||||
:return: a list of which all elements are serialized.
|
||||
"""
|
||||
if hasattr(obj, '_fields'):
|
||||
return default_namedtuple_serializer(obj, **kwargs)
|
||||
|
||||
cls_ = cls
|
||||
if cls and tuple_with_ellipsis(cls):
|
||||
cls_ = Tuple[(get_args(cls)[0],) * len(obj)]
|
||||
|
||||
return default_iterable_serializer(obj, cls_, **kwargs)
|
||||
|
||||
|
||||
def default_namedtuple_serializer(obj: tuple, **kwargs) -> dict:
|
||||
"""
|
||||
Serialize the given ``obj`` to a dict of serialized objects.
|
||||
:param obj: the named tuple that is to be serialized.
|
||||
:param kwargs: any keyword arguments that may be given to the serialization
|
||||
process.
|
||||
:return: a dict of which all elements are serialized.
|
||||
"""
|
||||
result = {field_name: dump(getattr(obj, field_name), **kwargs)
|
||||
for field_name in obj._fields}
|
||||
return result
|
||||
Reference in New Issue
Block a user