Использование 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
"Down with the men, with the swords
down with the sleepy fellows—
hundreds from under a wing
dozens from a feather tip!"
— The #Kalevala: 43: 227 — 230
(Bosley translation)
Art: Joseph Alanen🇫🇮 — The defense of the Sampo (1910 – 1912)
The text underneath the painting in a runic style font is verse 227 in Finnish.
ДЕНЬ "КАЛЕВАЛЫ": ИСТОРИЯ
28 февраля 1835 года финский врач и фольклорист Элиас Леннрот, подписав инициалами "E.L." предисловие к эпосу "Калевала", передал рукопись в типографию. Этот день войдет в историю как День "Калевалы".
Первый раз День «Калевалы» отметили в 1865 году в связи с 30-летием выпуска первого издания эпоса. Финляндия на тот момент входила в состав Российской Империи в качестве Великого княжества Финляндского, а значит можно считать, что День «Калевалы» был общим праздником. «Калевалу» знали и изучали и в Суоми и в России.
Столетие первого издания эпоса в 1935 году Финляндия уже встречала самостоятельным государством. Основой и фундаментом финского национального сознания был именно эпос «Калевала». В Российской Карелии также событие не осталось незамеченным, но более того – объединило научные силы исследователей по обе стороны границы. Однако, военные конфликты ХХ в. надолго прекратили эту совместную работу.
В конце 1930-х-начале 1940-х годов, когда прошла Зимняя война, а затем и война-продолжение было, конечно, не до широких праздников. Однако, тема "Калевалы" витала не только в научных кругах, а все больше использовалась для пропаганды и уже не сходила с передовиц газет и журналов, теснясь рядом с боевыми сводками.
К Дню "Калевалы" 1943 года стало ясно, что Германия не выиграет войну и что мирные условия могут быть жесткими для Финляндии. Газеты сменили риторику и в отношении "Калевалы", и в отношении политических взглядов на национальные вопросы.
В Советском союзе в послевоенные годы юбилейные Дни "Калевалы" проходили с большим размахом. В 1948 году, в год 99-летия полного издания поэмы Элиаса Леннрота, был объявлен всесоюзный конкурс художников на создание иллюстраций к эпосу. Власти готовились к вековому юбилею первого полного издания эпоса.
В 1949 году уже 9 января вышло «Постановление Политбюро ЦК ВКП(б) о мероприятиях по проведению 100-летия со времени издания карело-финского эпоса «Калевала»». В рамках празднования проходили концерты с выступлением сказителей и рунопевцев, которые не только заучивали руны из леннротовской "Калевалы", но и сами писали руны нового времени: про Антикайнена и Сталина, про советские стройки и жизнь в колхозах, а также хвалебные песни в честь коммунистического правительства. Власть такие песни, конечно, любила и щедро одаривала грамотами и титулами. Малограмотные колхозники-кантелисты и исполнители народных рун становились членами Союза писателей, при этом писать литературные произведения и тем более издаваться было совсем не обязательно.
В 1970-80 гг. праздники с фокусом на калевальскую поэтику проходили в рунопевческих деревнях не только в конце февраля, но и в летние месяцы. Деревни очень долго хранили традиции предков, отмечая праздники с христианским и языческим подтекстом: Иванов день, Петров день… В Советском союзе у властей была другая идеология, поэтому дедовские праздники легко маскировались в праздники с фольклорным уклоном, с выступлением местной самодеятельности.
Уже многие годы День "Калевалы" отмечается и в Финляндии, и в России: проходят научные конференции, детские музейные праздники, конкурсы чтецов и иллюстраторов эпической поэмы и другое. «Калевала» все ещё интересует современное сообщество, объединяя людей для совместной исследовательской работы и творческого переосмысления общего наследия.
Текст и фото: Татьяна Бердашева
#berdasheva#kalevala#historia#karelia#28февраля