Использование 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
🔤Углеводлар организмда ўзлаштирилишига қараб тез (содда молекулали) ва секин (мураккаб тузилишли) турларга бўлинади.
🧁Тез углеводлар, оддий углеводлар деб ҳам аталади, организмда жуда тез парчаланади ва тез сўрилади, қондаги қанд даражасини кескин оширади. Тез углеводларга мисоллар глюкоза, фруктоза, сахароза, малтоза ва лактозадир. Улар шакар, мураббо, асал, ширин мевалар (банан, узум, қовун), ширин ичимликлар ва турли пишириқларда кўп миқдорда учрайди (упаковкадаги кўп маҳсулотларда ҳам анчагина шакар бўлади).
🥦Мураккаб углеводлар деб ҳам аталадиган секин углеводлар секин сўрилади ва қондаги глюкоза даражасини аста-секин оширади. Секин углеводларга мисоллар клетчатка ва крахмал. Улар сабзавот, ширин бўлмаган мевалар, дуккаклилар, ёнғоқлар, уруғлар, бутун донли нон ва донларда кўп миқдорда сақланади.
🤒Кўп миқдорда тез углеводларни истеъмол қилиш қонда қанд ва инсулинни даражасини оширади, бу эса семириш, юрак касалликлари ва диабет ривожланиш хавфини ошириши мумкин. Шунинг учун ҳар хил турдаги углеводларни меёрида ва аралаш истеъмол қилишингиз керак.
🩺Doctor Ziyod | #nutrition#obesity
Latest Funding Rounds in AI and Tech
Recent funding highlights in AI and technology:
- Boon AI secured $15.50M on Dec 20, 2024. Learn more
- OpenLoop raised $15M on Dec 28, 2024. Learn more
- Emocog collected $14.98M on Dec 26, 2024, focusing on cognitive improvement digital therapeutics. Learn more
- Micro Optics raised $13.74M on Dec 13, 2024. Learn more
- Hengtuogao gathered $13.70M on Dec 30, 2024, specializing in integrated precision machinery. Learn more
- Tianhu Technology received $10M on Nov 15, 2024, as a leading AI protein design service in China. Learn more
- NitiNotes raised $9.30M on Dec 23, 2024, developing innovative treatments for obesity. Learn more
- WAJA secured $4.26M on Dec 31, 2024, focusing on regional economic development. Learn more
- Vetbiolix raised $4.23M on Dec 6, 2024, aiming at innovative pet health solutions. Learn more
- ChainOpera AI garnered $3.50M on Dec 26, 2024, working on blockchain solutions for decentralized AI apps. Learn more
These rounds highlight ongoing investment in AI, healthcare, pet care, and tech innovations.
#AI#Tech#Funding#Healthcare#Obesity#Decentralized#Blockchain#Innovation#CognitiveHealth#PetCare#Automation#ProteinDesign#DigitalTherapeutics#Economy#IndustrialSolutions#Hitech#Investment#Startup#VentureCapital#VC