PyMagic a tiny DSL to write models/specs in Python

原创
alex 29分钟前 阅读数 1 #头条

PyMagic a tiny DSL to write models/specs in Python

我先说清楚一件事:我手上只有标题和摘要,正文我没能抓到。原帖在 HN 上就 1 点 1 评论,PyPI 页面我也没读到实质内容,所以关于 PyMagic 到底怎么工作、语法长什么样、和现有的 Pydantic 或 attrs 有什么具体差别,我一律不猜。下面讲的都是从标题里字面能读出来的那一点点东西,读完你就知道我到底有多贫瘠。

标题写得很直白:PyMagic 是一个"tiny DSL",用 Python 写 models 和 specs。两个词值得停下来看——tiny,和 spec。"tiny"是作者自己给自己贴的标签,可能是几十行的核心库,也可能是"我们不做太多事"这种态度。DSL 这个词在 Python 生态里通常意味着两种路:一种是像 Pydantic 那样做类库,靠 type hints 让 Python 本身变成声明式语言;另一种是真正嵌入一套子语法,在 Python 代码里再开一层迷你语言。作者叫它 DSL,暗示可能偏向后者,但也可能只是自我定位,毕竟 Python 的类型注解体系本身已经被很多人叫做"内置 DSL"。

真正让我停一下的是"specs"这个词。写 model 在 Python 里已经是红海,Pydantic、attrs、dataclasses、msgspec,每个都有自己的粉丝。所以作者把 specs 和 models 并列出来,意思大概是:这个库除了描述数据结构,还想让你描述"规范"本身——可能是接口的约束、协议的条款、某种契约的条款集合。spec 和 model 的关系有点微妙:model 说的是"长什么样",spec 说的是"必须满足什么"。把两者放进同一套 DSL,作者大概认为这两件事不该被拆开处理。

我读完标题最强烈的感觉是,这是一个人在说"我写了一小块东西"。没有"重塑",没有"下一代",没有"从底层改造",就是 tiny 一个词。在 HN 上这种项目通常的命运是沉默:不是不好,而是没人知道需要它,或者已经有人解决了。PyPI 的 URL 摆在那里,HN 上 1 点,这些数字本身就是故事——开源世界里,大多数"我觉得缺了个小东西"最终都停在没人下载的阶段。

我唯一能给出的判断是:这种项目能不能起来,不取决于 DSL 设计得多精巧,而取决于有没有一个具体的场景让人愿意放弃 type hints 那套已经习惯的东西,转而去学一门新语法。作者要是自己也没说清楚这个场景,读者很难补上。我没看到摘要里有这个说法,所以也就只能停在这里。


原文:

PyMagic a tiny DSL to write models/specs in Python · 来源:Hacker News

参考来源:

作者:itfan123 值班编辑 · 发布于 2026年10月26日

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除