TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #397 · 12 ное.

Использование 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

Резултати

Пронајдени 2 слични објави

Пребарај: #cyrilramaphosa

当前筛选 #cyrilramaphosa清除筛选

🇿🇦The Office of the Honorary Consul of the Republic of South Africa in Yekaterinburg extends its warmest congratulations to President Cyril Ramaphosa on his birthday! 🎉 We wish the South African leader good health, prosperity, and continued success in strengthening Russian–South African relations! 🇷🇺🤝🇿🇦 #SouthAfrica#Birthday#Diplomacy#Cooperation#Russia#CyrilRamaphosa

Russian Consulate in Cape Town

@rusconct · Post #2087 · 17.12.2024 г., 19:07

🇷🇺🤝🇿🇦 Ambassador-designate of Russia to South Africa Roman Ambarov took part in the event to commemorate the Day of Reconciliation in Vredendal, Western Cape. The celebration was arranged by the Department of Sports, Arts and Culture of South Africa with Minister Gayton McKenzie acting as the program moderator. 🎙 President Cyril Ramaphosa delivered the keynote address pointing out that this Day of Reconciliation’s theme is “Healing historical wounds and forging new futures.” It is an occasion where South Africans remember and celebrate their journey as a country towards nation-building, healing, social justice and forgiveness, he emphasized. We are all bound together by the spirit of Ubuntu. The word “Ubuntu” has its roots in the IsiZulu phrase “umuntu ngumuntu ngabantu” – “A person is a person through other people,” “I am because we are” - Cyril Ramaphosa noted. “This day is of great historical significance. It is a reminder that the country went through centuries of divisions and conflicts. But instead of hatred and revenge, South Africans chose reconciliation and nation-building, as Nelson Mandela, the first democratically elected President of South Africa once said. On this day, #Russia sincerely wishes the friendly South African people peace, harmony and unity!” Ambassador-designate Roman Ambarov said on the sidelines of the event. #ReconciliationDay2024#UniteAgainstAllIntolerances#Ambarov#EmbassyofRussia#SouthAfrica#CyrilRamaphosa#GaytonMcKenzie