add datetable cnfcnpj

This commit is contained in:
2025-11-24 11:45:53 -03:00
parent 5b1ba9e9c7
commit 78ad183e61
29 changed files with 828 additions and 255 deletions

View File

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