Использование 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
Последний кусочек отпускного счастья — перелёт Бангкок – болото, облачные облака и горы.
До сих пор не знаю, зачем "спустила" столько кадров на крылья, если мне за них не платит авиакомпания, но допустим окэй.
В комменты сложу файлы, можно будет забрать для заставки на телефон, а то чего-то давно так не делала.
#35мм
Черепахи, фантастический пляж, на который мы не выходили, потому что прятались в тени местных сосен, зелень перед грозой и машинка после рыболовного магазина. На этом тайская серия всё, нууу, почти 💔
#35мм
С перерывами продолжаю показывать отпуск на плёнку — ладно, есть ещё порох в пороховницах.
Посмотрите на эту нежность, цвет, облака и воду.
Четвёртый кадр кажется через чур чёрным, но это просто нужно вправо смотреть — там не столько облака, там горки!
#35мм
Продолжим вести протокол: фотографировать с лодки на скорости я тоже разучилась. Это островная часть, где на рыб мы только смотрели. Со дна Алексей Сергеич достал мне зелёно-коричневую каури размером с абрикос, а себе местную блесёнку.
#35мм
Вчерашний день был отдан детячьим книжкам в Голосине, поэтому плёночный пост постится сегодня.
Кажется, я разучилась настраивать камеру, солнце выжгло мне мозг. Первая тайская серия, рыболовно-морская, солёная.
Карена с Fujifilm. Поставщик, как всегда, Денис.
#35мм
Недавно отдала Полине и Анотону распечатанные фото, нужно и вам что ли показать эту сборную солянку на #35мм💘
Раз в миллион лет я продолжаю снимать свадьбы и портреты. Чтобы жизнь малиной не казалась, я решила в этот раз вооружиться полностью механической Кареной с механическим Гелиосом, подстраховочной новой Минолтой на автомате (купила новую и сразу устроила стресс-тест машине) и механическим же Киевом-60.
Формат свадьбы был не мой любимый — выкуп, посиделки дома, ЗАГС, роспись, фуршетец в парке — но зато невеста вместо референсов и "хочу вот так" дала полную свободу действий. Ну я и развлекалась в меру своих скромных возможностей, снимая на три камеры и подснимая это всё ещё и на телефон.
Подруга невесты принесла на свадьбу новенький Полароид, и все гости были обеспечены моментальным фото на память. Приходите в комменты, я их покажу. А фотки с Киева покажу в другой раз.
Копалась в папках на компе и нашла неопубликованные книжнофестивальные #35мм👀
Встречайте!
Казань, фестиваль Смены. И нежная чудесная Рената, волонтёр, не раз выручивший меня и Женю (кстати, это Женя меня сфоткала на фоне e=mc²).
Уфа, любимая лягушка Ксюша, вид снизу, потому что я растеклась лужей на адской жаре.
Перелёт Екатеринбург – Петербург и призрак Петра Волцита на фоне музейного домика в Верхней Туре.
В комментариях покажу другие 35мм: меня на зимнем нонфике снимала Ксюша, наши с Ксюшей тени у Двадцать восьмого, кадр сделала Рената в Казани, и ещё Рома из тюменских Измерений мыльницу в Тобольск брал.
Последние плёночные кадры с Кольского #35мм
Тут у нас облако, облизывающее холм.
Речка, впадающая в залив, и рыбак (левый мужик какой-то, но стоял так хорошо).
Лодочка с кранцами из старых покрышек.
И два брата-близнеца: неразличимы на первый взгляд и совсем разные на все последующие. Так и не определилась, какая история нравится мне больше: уравновешивающие рыбаки возвращаются домой или рыбаки-точки за сарайчиком ждут погоды и рыбы.
Какой кадр из двух вам больше нравится и почему?
Первая серия #35мм с Кольского. Взяла свою старушку, от и до механическую камеру Carena, прицепила на неё Юпитер-21М и пошлёпала сплющивать пространство.
Зелень и горковость. Контрастная чернота, автомобильная точка. Лэпины! Снова зелень, горковость, лужица. Разлив воды, дома, ветряки. Гористость, покрытая лесом (мозг упорно говорит, что это мангровые заросли). Снова машинка на дороге! Знаки. Кандалакшинская губа с высоты, город с той же точки.
Мне.
Очень.
Зелено!
Лель, Афина, Вета, Квартет, Бемби.
Сегодня закрыла сезон жидкой воды. В этом году на Фарте больше не выйдем — разоружились, положили мачту, отнесли её в гараж и зачехлили. Впереди уборочные работы, подъём, зачехление корпуса и почти полгода дурной твёрдой воды.
В комментах покажу сегодняшние фото, а эти #35мм с каких-то летних выходных.