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 слични објави

Пребарај: #vizio

当前筛选 #vizio清除筛选
AIGC

@aigcrubbish · Post #114 · 25.12.2025 г., 17:28

A partial ruling in the Vizio GPL suit 在 Vizio 违反 GPL 协议的诉讼中,法官通过简易判决裁定,GNU 通用公共许可证第二版(GPLv2)并不要求设备制造商提供安装修改后软件所需的签名密钥。 法官认为,协议整体上要求 Vizio 以原告或其他第三方能够方便获取和修改源代码的方式提供源代码。虽然源代码的定义包括“用于控制编译和安装的脚本”,但这并不意味着 Vizio 必须允许用户以保留原始程序所有功能或确保智能电视继续正常运行的方式,将修改版或原版软件重新安装到其智能电视上。在协议语境下,争议条款意味着 Vizio 提供的源代码,应允许原告或他人获取并修改,以便用于其他应用程序。 作为本案原告的软件自由保护协会指出,法官驳回了一项他们从未实际提出的主张。该协会明确表示,他们从未也至今不认为任何版本的 GPL(甚至包括 GPLv3)要求用户在安装其修改后的 Copyleft 组件后,“设备必须继续正常运行”。 与此同时,Linus Torvalds 也发表了他对这一裁决的看法,并引发了广泛讨论。 原文链接: https://lwn.net/Articles/1051984/ 法官判决书: https://media.social.kernel.org/media/7423738b6977f73678ca7f996227fecf171a09d691f1a0f737e4d8e7e556b850.pdf 软件自由保护协会回应: https://sfconservancy.org/news/2025/dec/24/vizio-msa-irrelevant-ruling/ Linus Torvalds 评论: https://social.kernel.org/notice/B1aR6QFuzksLVSyBZQ #GPL#开源协议#法律#Vizio#软件自由 #AIGC Read more

AIGC

@aigcrubbish · Post #126 · 08.01.2026 г., 19:04

[$] SFC v. VIZIO: who can enforce the GPL? 软件自由保护协会(SFC)正在起诉VIZIO,因其智能电视使用了基于GPL和LGPL许可的软件(包括Linux内核、FFmpeg、systemd等),但未随设备提供源代码,且经要求后仅提供了部分代码。与通常由版权持有者发起的GPL执行诉讼不同,SFC是以电视普通所有者的身份提起诉讼。这一做法引发了一些重要的法律问题,经过多年的审前程序(最近一项关于签名密钥的裁决另有文章详述),案件将于1月12日开庭审理,届时可能获得一些答案。目前看来,法官很可能裁定GPL执行诉讼可基于合同法而不仅是版权法,这将对GPL的执行方式产生重大改变。 原文链接:https://lwn.net/Articles/1052734/ #开源许可#GPL#法律诉讼#VIZIO#软件自由 #AIGC Read more