add datetable cnfcnpj
This commit is contained in:
@@ -5,7 +5,7 @@ import warnings
|
||||
from abc import ABC, abstractmethod
|
||||
from base64 import urlsafe_b64decode, urlsafe_b64encode
|
||||
from dataclasses import dataclass
|
||||
from datetime import datetime
|
||||
from datetime import date, datetime
|
||||
from ipaddress import IPv4Address
|
||||
from typing import TYPE_CHECKING, Any, Self, Type, TypedDict
|
||||
from urllib.parse import quote, unquote
|
||||
@@ -38,26 +38,52 @@ def _serialize_to_basic_types(data: Any) -> str | dict | set | list:
|
||||
match data:
|
||||
case datetime():
|
||||
return data.isoformat()
|
||||
|
||||
case date():
|
||||
return data.isoformat()
|
||||
|
||||
case UUID():
|
||||
return str(data)
|
||||
|
||||
case IPv4Address():
|
||||
return str(data)
|
||||
|
||||
case tuple() | list():
|
||||
if not data:
|
||||
return []
|
||||
|
||||
serialized = [_serialize_to_basic_types(v) for v in data]
|
||||
|
||||
if any(isinstance(v, dict) for v in serialized):
|
||||
if any(isinstance(v, (dict, list)) for v in serialized):
|
||||
return serialized
|
||||
|
||||
return set(serialized)
|
||||
try:
|
||||
return set(serialized)
|
||||
except TypeError:
|
||||
return serialized
|
||||
|
||||
case set():
|
||||
if not data:
|
||||
return []
|
||||
|
||||
return set(_serialize_to_basic_types(v) for v in data)
|
||||
|
||||
case dict():
|
||||
return {k: _serialize_to_basic_types(v) for k, v in data.items()}
|
||||
return {
|
||||
k: _serialize_to_basic_types(v)
|
||||
for k, v in data.items()
|
||||
if v is not None
|
||||
}
|
||||
|
||||
case _:
|
||||
return data
|
||||
|
||||
|
||||
def serialize(data: dict) -> dict:
|
||||
return {
|
||||
k: serializer.serialize(_serialize_to_basic_types(v)) for k, v in data.items()
|
||||
k: serializer.serialize(_serialize_to_basic_types(v))
|
||||
for k, v in data.items()
|
||||
if v is not None
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user