Использование Pydantic сегодня стало нормой, и это правильно. Но иногда на ревью вижу, что используют его не всегда корректно.
Например, метод BaseModel.model_dump() по умолчанию не преобразует стандартные типы, такие как datetime, UUID или Decimal, в простой сериализуемый для JSON вид. Тогда пишут кастмоный сериализатор для этих типов чтобы функция json.dump() не падала с ошибкой.
import uuid
from datetime import datetime
from decimal import Decimal
from uuid import UUID
from pydantic import BaseModel
class MyModel(BaseModel):
id: UUID
date: datetime
value: Decimal
obj = MyModel(
id=uuid.uuid4(),
date=datetime.now(),
value='1.23'
)
print(obj.model_dump())
# не подходит для json.dump
# {
# 'id': UUID('4f8c1bc4-25fd-40cd-9dbe-2c73639b0dc1'),
# 'date': datetime.datetime(2025, 12, 12, 12, 12, 12, 111111),
# 'value': Decimal('1.23')
# }
# добавляем свой кастомный сериализатор
json.dumps(obj.model_dump(), cls=MySerializer)
# {
# 'id': '4f8c1bc4-25fd-40cd-9dbe-2c73639b0dc1',
# 'date': '2025-12-12T12:12:12.111111',
# 'value': '1.23'
# }
В данном случае класс MySerializer обрабатывает datetime, UUID и Decimal. Например так:
class MySerializer(json.JSONEncoder):
def default(self, o):
if isinstance(o, Decimal):
return str(o)
elif isinstance(o, datetime):
return o.isoformat()
elif isinstance(o, UUID):
return str(o)
return super().default(o)
Специально для тех, кто всё еще так делает - в этом нет необходимости!
Pydantic может это сделать сам, просто нужно добавить параметр mode="json".
json.dumps(obj.model_dump(mode="json"))
# {
# 'id': '4f8c1bc4-25fd-40cd-9dbe-2c73639b0dc1',
# 'date': '2012-12-12T12:12:12.111111',
# 'value': '1.23'
# }
#pydantic#libs
#Ungheria🇭🇺
#Parlamentari
Grafico storico dell'affluenza.
Nel grafico allegato è mostrato l’andamento dell’affluenza nel corso della giornata elettorale, mettendo a confronto le diverse tornate dal 1994 al 2026.
Ogni linea rappresenta un anno elettorale; ogni puntino corrisponde a una rilevazione ufficiale effettuata a un orario specifico. In alcune elezioni i puntini compaiono in orari diversi perché, nel tempo, sono cambiati gli orari delle comunicazioni intermedie dei dati.
È molto in evidenza il dato del 2026, che si colloca sopra tutte le serie storiche per gran parte della giornata e chiude al 79,56%, il livello più alto dell’intero confronto.
@TuttoElezioni
#Ungheria🇭🇺
#Parlamentari
I risultati finali non saranno disponibili prima del 18 aprile. Continueremo comunque ad aggiornarvi con i dati ufficiali; nel frattempo, vi ringraziamo per aver seguito con noi le elezioni parlamentari in Ungheria.
@TuttoElezioni
#Ungheria🇭🇺
#Parlamentari
Il prossimo dato sull'affluenza, l'ultimo prima della fine della votazione, sarà reso noto in corrispondenza con la chiusura delle urne, in quanto riferito alle 18:30.
@TuttoElezioni
#Ungheria🇭🇺
#Parlamentari
❗️La partecipazione elettorale alle 17:00 supera qualsiasi affluenza finale mai avuta nelle elezioni parlamentari del Paese.
@TuttoElezioni
#Ungheria🇭🇺
#Parlamentari
❗️Affluenza ancora molto alta alle 13:00: 54,14%
Il dato continua a essere nettamente superiore a quello delle altre elezioni parlamentari:
- 2022: 40,01
- 2018: 42,43
- 2014: 34,33
- 2010: 35,88
- 2006: 38,22
- 2002: 40,19
- 1998: 32,58
La soglia dell'80% rappresenta uno scenario molto probabile, salvo un rallentamento marcato nel corso del pomeriggio.
@TuttoElezioni
#Ungheria🇭🇺
#Parlamentari
❗️Affluenza record alle 11:00: 37,98%
Il dato è nettamente superiore rispetto a qualsiasi altra elezione parlamentare:
- 2022: 25,77%
- 2018: 29,93%
- 2014: 23,23%
- 2010: 24,78%
- 2006: 27,73%
- 2002: 26,37%
- 1998: 23,66%
- 1994: 32,50%*
La proiezione aggiornata dell'affluenza finale è salita al 78-83% (valore centrale: 80,5%). La partecipazione nelle prime ore di voto è stata eccezionale; il dato delle 13:00 dirà con maggiore precisione se la soglia dell'80% di affluenza è alla portata.
* non è riportato il dato delle sole elezioni del 1990, in quanto non sono presenti suddivisioni orarie dell'affluenza, ma solo il valore finale (65,09%)
@TuttoElezioni