Использование 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
19.04.26 Сумы - Мирополье
Позиционные боевые действия в Сумской зоне безопасности.
ВС РФ продвинулись на 1 км от демаркационной линии к Мирополью с восточного направления. Передовая позиция ВС РФ под огнём ВСУ.
1:26 50.993179,35.316483
Источник 21+
Геопривязка
#ru
18.04.26 Краснополье - Таратутино
Позиционные боевые действия в Сумской зоне безопасности.
Передовая позиция ВС РФ в Таратутино подверглась обстрелу ВСУ. ВС РФ продвинулись в Сумской области на 3,5 км и достигли новых позиций в населённом пункте.
0:43 50.728385, 35.375816
Источник 21+
Геопривязка
#ru
16.03.26 Северск - Резниковка
Активные боевые действия в районе Северска.
Пехотная атака ВС РФ в Резниковке. Штурмовая группа зачищает позицию ВСУ в жилой застройке и увеличивает зону контроля на 700 метров.
48.838569,37.977290
Источник https://t.me/OMSBr_123/1754
Геопривязка
#ru
13.04.26 Великая Новосёлка - Александроград
Активные боевые действия в районе Великой Новосёлки.
Военнослужащие ВС РФ занимают новые позиции под огнём противника на рубеже Искра - Александроград. Увеличение зоны контроля ВС РФ на 2,5 км по фронту на левом берегу реки Волчья.
0:26 48.010070,36.619011
Источник 21+
Геопривязка
#ru
12.04.26 Сумы - Мирополье
Позиционные боевые действия в Сумской зоне безопасности.
Военнослужащие ВС РФ попали под обстрел ВСУ
западнее посёлка Мирополье. ВС РФ продвинулись в Сумской области увеличив зону контроля до 3 км от демаркационной линии.
51.037774, 35.344966
Источник 21+
Геопривязка
#ru
11.04.26 Константиновка - Долгая Балка
Позиционные боевые действия в районе Горловки.
Передовая позиция ВС РФ в жилой застройке Долгой Балки под огнём дронов ВСУ. ВС РФ продвинулись на 1 км к северу от Степановки и заняли новые позиции в южной части посёлка Долгая Балка.
0:14 48.481047, 37.607169
Источник 21+
Геопривязка
#ru
11.04.26 Краснополье - Новодмитровка
Позиционные боевые действия в Сумской зоне безопасности.
Штурмовые подразделения ВС РФ продвинулись более 4,5 км в направлении на Краснополье и заняли новые позиции в восточной части Новодмитровки. Передовая позиция ВС РФ в жилой застройке посёлка под обстрелом с дрона ВСУ.
1:38 50.75527, 35.39651
Источник 21+
Геопривязка
#ru
11.04.26 Константиновка - Степановка
Позиционные боевые действия в районе Горловки.
Передовая позиция ВС РФ в окрестностях Степановки подверглась обстрелу со стороны ВСУ. ВС РФ продвинулись более1.5 км и вышли на северные окраины Степановки.
0:39 48.473420,37.613850
Источник 21+
Геопривязка
#ru
06.04.26 Северск - Никифоровка
Активные боевые действия в районе Северска.
Атака ВС РФ пехотным подразделением севернее Никифоровки. Штурмовая группа зачищает позицию ВСУ. ВС РФ продвинулись около 2 км и увеличили зону контроля на рубеже Никифоровка - Каленики.
48.80452, 37.92016
Источник 21+
Геопривязка
#ru
06.04.26 Покровское - Берёзовое
Позиционные боевые действия в Днепропетровской зоне безопасности.
Передовые позиции ВС РФ в Берёзовом подверглись обстрелу ВСУ. ВС РФ заняли ряд новых позиций в посёлке увеличив зону контроля на 1 км.
0:19 47.871420,36.492084
1:13 47.874686,36.491471
Источник 21+
Геопривязка
#ru
31.03.26 Северск - Кривая Лука
Активные боевые действия в районе Северска.
Атака ВС РФ подразделением легких мотострелков около Кривой Луки. Штурмовик ВС РФ попал под обстрел ВСУ на трассе к посёлку. ВС РФ увеличили зону контроля выйдя на рубеж Каленики-Кривая Лука.
0:41 48.860286,38.001178
0:43 48.859195,37.930673
Источник 21+
Геопривязка
Геопривязка так же по https://t.me/creamy_caprice/11418?single
#ru
27.03.26 Красноармейск - Белицкое
Позиционные боевые действия в районе Красноармейска.
ВС РФ заняли ряд новых позиций в восточной части Белицкого. Передовые позиции в жилой застройке под огнём ВСУ . Продвижение ВС РФ более 600 метров.
0:06 48.40801, 37.1914
0:18 48.40476, 37.19765
Источник 21+
Геопривязка
#ru