Использование 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
💎 Топ-10 акций с наименьшим P/E
Один из самых ключевых финансовых мультипликаторов — P/E (price-to-earnings) — показывает, сколько инвесторы готовы заплатить за каждый сум (или доллар) прибыли компании. Проще говоря, чем ниже P/E, тем дешевле компания оценивается рынком относительно своих заработков.
🌱 Низкий P/E может означать, что акция недооценена и инвесторы пока не верят в её потенциал — или, наоборот, что бизнес переживает спад и прибыль падает.
🚀 Высокий P/E, напротив, указывает на ожидания будущего роста — рынок готов переплачивать за перспективу (часто это касается IT-компаний). Но иногда такие компании оказываются переоценёнными, если рост не оправдывается.
В нашем рейтинге по итогам III квартала лидируют банковские акции — 🏦«Узпромстройбанк», 🏦«Хамкорбанк», 🏦«Универсал банк», 🏦«Алокабанк». Это естественно: банки традиционно показывают стабильную прибыль, а их котировки растут медленнее, поэтому мультипликатор P/E у них остаётся низким.
📌 Низкий P/E — не всегда гарантия выгодной покупки, но точно повод присмотреться к бизнесу и понять, почему рынок оценивает прибыль так дешево.
—
💎 Eng past P/E ko‘rsatkichiga ega TOP-10 aksiyalar
Moliyaviy tahlilda eng muhim ko‘rsatkichlardan biri — P/E (price-to-earnings) kompaniya foydasining har bir so‘miga (yoki dollarga) investorlar qancha to‘lashga tayyorligini bildiradi. Oddiy qilib aytganda, P/E qanchalik past bo‘lsa, kompaniya bozorda o‘z foydasiga nisbatan shunchalik arzon baholanadi.
🌱 Past P/E ko‘rsatkichiga ega aksiyalar ko‘pincha bozor tomonidan hali to‘liq qadrlanmagan yoki vaqtinchalik ishonchsizlikka duch kelgan kompaniyalar bo‘lishi mumkin. Biroq bu ba’zan ish faoliyatidagi pasayish yoki foydaning kamayishi bilan ham bog‘liq bo‘ladi.
🚀 Yuqori P/E esa, aksincha, kelajakdagi o‘sish kutilayotganini anglatadi — bozor istiqbol uchun ko‘proq to‘lashga tayyor (bu holat ko‘pincha IT-kompaniyalarga xos). Ammo o‘sish kutilganidek bo‘lmasa, bunday aksiyalar ortiqcha baholangan bo‘lishi ham mumkin.
III chorak yakunlariga ko‘ra, bizning reytingda bank aksiyalari — 🏦“O‘zsanoatqurilishbank”, 🏦“Hamkorbank”, 🏦“Universal bank”, 🏦“Aloqabank” yetakchilik qilmoqda. Bu tabiiy hol: banklar odatda barqaror foyda ko‘rsatadi, lekin ularning aksiyalari sekinroq o‘sadi, shuning uchun ularning P/E ko‘rsatkichi past bo‘lib qoladi.
📌 Past P/E har doim ham foydali xarid kafolati emas, ammo bu ko‘rsatkich kompaniyani chuqurroq o‘rganish va bozor nima uchun foydani arzon baholayotganini tushunish uchun jiddiy sababdir.
📈#рейтинг#PE
#java#bedrock#bedrock_edition#bedrock_to_java#bungee#fabric#geyser#geysermc#hacktoberfest#java#java_edition#minecraft#minecraft_bedrock_edition#packet#pe#protocol#proxy#spigot#translator#velocity
Geyser is a free tool that lets you play Minecraft across different versions by connecting Minecraft Java Edition servers. It works by translating data between the two game versions, enabling cross-platform play on devices like Windows, iOS, Android, and consoles. You can install it as a plugin or standalone, and it supports recent Minecraft versions. This means you can join Java servers even if you only have Bedrock Edition, expanding your multiplayer options without needing a separate Java account if you use the Floodgate plugin. It’s great for seamless crossplay but may have some minor limitations due to game differences[1][2][5].
https://github.com/GeyserMC/Geyser