Использование 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
A wallet linked to Joseph Lubin (@ethereumJoseph), Co-Founder of @ethereum and Founder of @Consensys, supplied 15,000 $ETH ($31.43M) to #MakerDAO and borrowed $4.1M $DAI.
In total, the wallet holds 137,908 $ETH ($287.29M) and has borrowed $107.77M $DAI.
https://intel.arkm.com/explorer/address/0xABED497D0CCB6916C95Dd98aD4402fEBf5f52FE7
https://x.com/OnchainLens/status/2019298159550427171
Follow @onchainlens for more onchain updates
Wallet 0xa58 (linked to Rune Christensen, #MakerDAO cofounder) has sold 2,235 $MKR for 4.542M $DAI at $2,032 on average in the past 2 days.
Currently, the wallet still holds 2,430 $MKR ($4.92M), and may keep selling.
The $MKR price has been down ~3.39% (2D), since the first sale.
Want to monitor the wallet, follow @spotonchain and turn on your 🔔 at https://platform.spotonchain.ai/en/profile?address=0xa5890ccd2359dc38f649158abdc24b62602dec68
🚨 A super early $MKR holder has sold after over 7 years!
- This holder bought 451.5 old $MKR in 2017 when the price was around $23 (the inception of $MKR)
- This holder just sold 251.5 $MKR ($408K) for 172.5 $ETH ~5 hours ago at $1,624 (x70)
#MakerDAO is down 24% since the rebrand to #Sky, partly due to market conditions and the criticism over its "freeze function".
👉 More Details: platform.spotonchain.ai/signal-details/super-early-holder-sold-the-first-25153-mkr-408k-after-over-7-years-168917
The $SHIB price soared over 50% (24H). What happened on-chain in the past 3 days leading to the pump?
1. Smart trader 0x37d withdrew 75.91B $SHIB (currently $1.51M) from #Binance 2 days ago before the pump, now making $614K (+69%).
👉 Address: 0x37dffd32ea5b23813a263f725759632c120e0ac7
2. #MakerDAO founder @RuneKek bought 7.41B $SHIB with 100K $USDC, allegedly for the first time 13 hours ago, now making $47.1K (+47.1%).
👉 Entity: Rune Christensen (MakerDAO founder)
3. Wallet 0x02e related to #Upbit has accumulated 2.13T $SHIB (now $42.3M) in the past 24 hours.
• Currently, the wallet is the 7th largest-holding wallet of $SHIB with 12.45T $SHIB ($247M).
👉 Address: 0x02e2201576fbbefb52812f2ee7f08eb4774b481e
Don’t forget to follow @spotonchain and turn on your alerts for more updates on $SHIB.
The $MKR price is surging for the second time, as affected by the #Endgame Launch announcement from #MakerDAO.
Whale 0xcf9 spent 1.94M $USDT to buy 702.8 $MKR at ~$2,763 around 30 mins ago.
👉 Address: 0xcf9bfaf7e7ed48d85f2487b8fed07852a5e93ad1
Moreover, the founder of MakerDAO, Rune Christensen (@RuneKek), also spent $4.57M to buy 1,967 $MKR at ~$2,324 in the past 7 days, now making $1.02M (+22.3%).
👉 Entity: Rune Christensen (MakerDAO founder)
Follow @spotonchain and turn on your 🔔 at the above addresses for more updates!
🗣 Новый день, новый Governance Voting в котором я принимаю участие, прокачивая свои DAO скиллы и неся свободу и децентрализацию в наш бренный #Web3 мир. Этот 2023 год можно точно назвать #bullrun для всех децентрализованных protocol governance и #DAO. Вся интеллектуальная активность в сети, аирдропы и пользователи сейчас здесь.
База: большие протоколы/блокчейны управляются сообществом владельцев токенов и их делегатами. Делегат - это пользователь (кошелек) у которого может и не быть токенов протокола, но он получил делегацию "голосов" от других участников и может теперь представлять их интересы при голосовании за предложения (чем-то похоже на депутата от народа).
Процесс #DAO следующий:
- активный участник делает детальное предложение и выносит его на обсуждение. Место: форум проекта.
- после обсуждения проекта, предложение выносится на голосование оффчейн (без проведения транзакции, а только с помощью отправки подписи). Место: snapshot.org
- после принятие предложения на snapshot оно переносится уже на onchain голосование и после исполняется. Место: tally.xyz
Основные задачи управления ДАО - это обновление протокола (экономические параметры), перенос протокола на новую сеть (лицензионные параметры), управление казначейством (распределение нажитого имущества или токенов проекта в целях поощрения сообщества протокола). В частных случаях это еще и координация управления операционной, юридической и политической активностью протокола.
Список #DAO в которых я не последний человек принимаю участие:
- Uniswap $UNI - Forum / Snapshot [treasury - $1.5B]
- Arbitrum $ARB - Forum / Snapshot [treasury - $2.8B]
- Optimism $OP - Forum / Snapshot [treasury - $1.5B]
- Frax $FXS - Forum / Snapshot [mcap - $1.4B]
Далее в моем списке: #Lido, #AAVE, #Straknet, #MakerDAO
… [ч1] продолжение в следующем посте 🟢