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

Резултати

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

Пребарај: #cyberpunk2

当前筛选 #cyberpunk2清除筛选
Geex 👾

@GeexNoticias · Post #977 · 29.09.2023 г., 02:39

🚨#Cyberpunk2. Tras el éxito de la expansión #PhantomLiberty, #CDProjektRED tiene claro cuál es su próximo paso CD Projekt RED ha logrado recuperar la atención de todos los fans del RPG gracias al lanzamiento de Phantom Liberty, primera y única expansión de #Cyberpunk2077. El equipo por fin ha terminado el trabajo tras aquel accidentado lanzamiento en 2020, pero eso no significa que la maquinaria se haya detenido Gabe Amatangelo el director de juego, ha confirmado en una entrevista que el título no recibirá más actualizaciones de tamaño similar: "2.0 y Phantom Liberty son las últimas actualizaciones grandes. Haremos algo más, pero esas son las últimas grandes". Dejando claro que la mirada de la desarrolladora ya está puesta en el futuro de la franquicia. "Entonces, toca Cyberpunk 2 u 'Orion' debería decir, como sea que terminemos llamándolo", concluye Amatangelo. De este modo queda claro que el equipo quiere dejar atrás Cyberpunk 2077 y centrarse en su secuela, de la que todavía no tenemos muchos detalles.