更新日志¶
本项目的所有重要变更都将记录在此文件中。
格式基于 Keep a Changelog。
[未发布]¶
[2026.6.1] - 2026-06-01¶
问题修复¶
- httpclient:
_prepare_body(data={"key": "value"})在未提供files时不再静默丢弃 dict 数据。Dict 数据现在会被 URL 编码为application/x-www-form-urlencoded,与httpx/requests行为一致。(#93)
测试¶
- 新增 httpclient、websocket 和 cache 模块的并发性能测试。
- 新增 yaml/soup/protobuf/multipart 的几何级数规模曲线测试。(#86)
- 新增解析器模块的 tracemalloc 内存基准测试。(#84、#85)
- 基准测试报告新增 min/max/stddev/P95 统计指标。(#81)
- 新增解析器模块的真实场景 fixture 数据。(#83)
基础设施¶
- 重构 CI 为可复用的
lint-test.yml工作流,由ci.yml和release.yml共同调用。 - Lint 作业改用
pre-commit run --all-files替代原始 ruff 命令。 - 统一 CI/release 参考库安装方式,通过
pyproject.tomlextras 动态提取。 - 使用官方 complexipy pre-commit hook。
- 新增
CONTRIBUTING.md及工作流文档中的禁止 AI co-author 策略。 - 新增 arXiv 徽章和引用 BibTeX。
[2026.5.17] - 2026-05-17¶
新增模块¶
- multipart 模块:零依赖的 multipart/form-data 解析与编码器,遵循 RFC 7578 / RFC 2046。
parse_multipart()使用 boundary-split 算法配合bytes.find()在 C 层解析请求体。encode_multipart()编码表单字段和文件上传。extract_boundary()从 Content-Type 头提取 boundary。Part冻结数据类,包含 name、data、filename、content_type、headers、.text和.is_file属性。健壮的 boundary 检测(验证前后字节避免误匹配)。支持 Content-Transfer-Encoding(base64、quoted-printable)。RFC 5987filename*参数解码。安全限制:max_part_size(10 MB)、max_parts(1000)、max_header_size(16 KB)。单文件,约 590 行,仅标准库。57 个正确性测试 + 11 个性能测试(比 python-multipart 快 3-7 倍)。
问题修复¶
- httpclient:移除
AsyncClient/Client中多余的全局asyncio.Lock()/threading.Lock(),该锁会序列化并发请求并可能导致死锁。连接池内部已有细粒度锁机制。
基础设施¶
- 在 AGENTS.md 中新增文档/更新日志更新工作流指引。
[2026.5.2.1] - 2026-05-02¶
问题修复¶
- CLI:
version-check和bump不再对没有历史 release tag 的全新模块执行错误的自动版本递增。新模块现在显示"new (initial release)"而非"new (needs version bump)",并从自动 bump 目标中排除。 - 模块版本:回退 5 个新模块的错误版本递增 — httpserver (0.1.0)、websocket (0.1.0)、cdp (0.1.0)、useragent (0.1.0)、synctex (0.2.0)。
[2026.5.2] - 2026-05-02¶
新增模块¶
- websocket 模块:零依赖的 RFC 6455 WebSocket 客户端,同步 + 异步支持。
WebSocketClient和AsyncWebSocketClient支持ws://和wss://连接。完整协议实现:升级握手、文本帧编解码(含客户端侧掩码)、ping/pong 自动响应、关闭帧交换(含状态码)。支持自定义头部(认证令牌等)、子协议协商、可配置超时。上下文管理器(with/async with)。TLS 支持可选证书验证。单文件,约 1000 行,仅标准库(socket、ssl、asyncio、hashlib、struct)。27 个正确性测试(同步 + 异步、echo、超时、自定义服务器、URL 解析)+ 8 个性能测试(对标websockets— JSON-RPC 往返、大负载、突发消息、连接建立)。 - cdp 模块:零依赖的 Chrome DevTools Protocol 客户端,用于无头浏览器自动化。
CDPClient和AsyncCDPClient通过 WebSocket 通信,自动命令/响应 ID 匹配和事件缓冲。高级 API:get_rendered_text()和get_rendered_html()一行代码提取 SPA 渲染内容。低级 API:create_target()、close_target()、navigate()(自动等待Page.loadEventFired)、evaluate()(异常传播)、set_user_agent()和原始send_command()。通过/json/version自动发现浏览器调试 WebSocket URL。依赖兄弟模块websocket。约 900 行,仅标准库。18 个正确性测试(mock CDP 服务器 + 可选真实 Chromium)+ 10 个性能测试(完整渲染管线、多标签页、JS 执行吞吐、命令吞吐)。 - httpserver 模块:零依赖的异步 HTTP 服务器,兼容 Flask/microdot 的装饰器路由 API。基于
asyncio.start_server()构建,原生 HTTP/1.1 解析。@app.route(path, methods=)、@app.get()、@app.post()等路由注册方式。支持带类型转换的路径参数(<name>、<int:id>、<float:price>、<path:filepath>)。返回值自动转换(dict → JSON、str → 文本、bytes → 二进制、tuple → 状态码/头部、None → 204)。StreamingResponse支持 chunked 编码用于 SSE。FileResponse提供静态文件服务,内置目录遍历防护。before_request/after_request/errorhandler中间件钩子。同步处理器通过asyncio.to_thread()自动包装。SIGINT/SIGTERM 优雅关闭。单文件,约 1000 行,仅标准库。58 个正确性测试 + 26 个性能测试(对标 Flask、microdot、bottle — 串行、并发、同步/异步、大负载)。 - SyncTeX 模块:零依赖的 SyncTeX 双向搜索解析器(PDF 位置与源代码位置互转)。解析 TeX 引擎生成的
.synctex和.synctex.gz文件。parse_synctex()提取输入文件映射、页面 hbox 记录和前导元数据。inverse_search()通过多阶段空间匹配算法将 PDF 页面坐标映射回源文件和行号。forward_search()将源文件和行号映射到 PDF 页面坐标。支持可配置的路径前缀去除,适用于 Docker/远程构建场景。29 个正确性测试。 - useragent 模块:轻量级 Chrome/Edge User-Agent 字符串生成器,附带 Client Hints 头部。
generate()为 Windows、macOS、Linux(桌面)和 Android(移动端)生成逼真的 UA 字符串及对应的Sec-CH-UA-*头部。支持低熵 hints(始终包含)和通过accept_ch()获取的高熵 hints(平台版本、架构、位数、型号、完整版本列表)。通过random.seed()实现确定性输出。单文件,约 470 行,仅标准库random。47 个正确性测试 + 8 个性能测试(比 ua-generator 快 2-3 倍)。灵感来自 ua-generator(Apache-2.0)。
基础设施¶
- 在 benchmark CI 工作流中添加
websockets,用于 websocket 和 cdp 性能跟踪。 - 在 benchmark CI 工作流中添加
ua-generator,用于 useragent 性能跟踪。 - 新增自动 PyPI 发布工作流(
.github/workflows/pypi.yml),在 GitHub Release 发布时触发,带变更检测以跳过仅版本号变更。 - 新增
AGENTS.md(统一的 AI 编程助手指令文件),附CLAUDE.md软链接,兼容 Claude Code、Codex、Cursor、Copilot、Gemini CLI 等工具。
功能增强¶
- CLI:为
zerodep new新增--from FILE参数,支持从已有 Python 源文件创建模块。自动注入 frontmatter(保留 shebang/encoding 声明),复用已有 frontmatter 并支持 CLI 参数覆盖,检测到第三方 import 时输出警告。
[2026.4.27] - 2026-04-27¶
新增模块¶
- llms.txt 模块:零依赖的 llms.txt 规范 解析器。
parse()从 llms.txt 文件中提取结构化数据(标题、描述、详情、H2 分节、Optional 条目)。find_candidates()提供统一的 URL 发现功能 — 搜索已解析的 llms.txt 条目(精确 > 扩展名变体 > 路径前缀),无可用 llms.txt 时回退到启发式.mdURL 推导。discover()自动探测任意 URL 所在站点的/llms.txt和/llms-full.txt,通过DiscoveryResult返回原始内容。冻结 dataclass(LlmsTxt、FileEntry、DiscoveryResult)作为不可变结果。55 个正确性测试 + 4 个性能测试。 - PNG 模块:零依赖的 PNG/BMP 图像编解码器,附带矩阵压缩 API。
decode_png/encode_png支持 PNG 图像(灰度/RGB/RGBA、8/16 位、全部 5 种行滤波器),decode_bmp/encode_bmp支持 BMP(24/32 位未压缩),convert()支持 L/LA/RGB/RGBA 模式互转,matrix_to_png/png_to_matrix通过 PNG 行滤波器实现二维数值数据压缩,通过 tEXt 元数据实现浮点数无损往返。104 个正确性测试(与 Pillow Apple-to-Apple 对比)+ 24 个性能测试。
新功能¶
- Protobuf 模块:新增
byte_size()方法,计算序列化消息大小而无需实际分配 bytes。适用于预分配缓冲区和协议帧长度计算。 - QR 模块:新增
qr_to_svg()和qr_to_png(),将 QR Code 渲染为 SVG 和 PNG 图像。SVG 使用单个<path>元素(零依赖);PNG 通过 siblingpng模块懒加载渲染灰度图像。两者均支持可配置的缩放比例、静默区边框和前景/背景色。24 个渲染测试。 - Validate 模块:新增
FieldValidator和model_validator自定义验证机制。FieldValidator是基于Annotated的约束,可转换值并在失败时抛出ValueError/AssertionError(不同于只返回 bool 的Predicate)。model_validator是装饰器,用于在 TypedDict/dataclass 上注册跨字段验证器,在所有字段验证通过后执行。新增 18 个测试。版本 0.4.2 → 0.5.0。 - Sparse Search 模块:新增检索后重排序工具,用于混合搜索和 RAG 管道。
rrf()实现倒数排名融合(Reciprocal Rank Fusion,Cormack et al., SIGIR 2009),用于合并多路排名结果列表(如 BM25 稀疏搜索 + 稠密向量搜索),支持各列表独立权重和 top_k 截断。mmr()实现最大边际相关性(Maximal Marginal Relevance)结果多样化重排序,接受用户自定义相似度函数,内部自动 min-max 归一化相关性分数。jaccard_similarity()提供基于集合的相似度计算工具,作为 MMR 相似度函数的构建块。三个函数均为独立的模块级函数,操作通用list[Result]。新增 31 个正确性测试 + 5 个性能测试。版本 0.3.2 → 0.4.0。
功能增强¶
- Markdown 模块:新增 GFM 删除线(
~~text~~→<del>)、任务列表(- [ ]/- [x],带 checkbox 和 class 属性)、扩展自动链接(裸https:///http://URL 自动链接,自动剥离尾部标点)。所有输出与 mistune GFM 插件完全一致。新增 28 个正确性测试 + 4 个 GFM 性能测试。版本 0.3.1 → 0.4.0。 - Soup 模块:新增 CSS 伪选择器支持——
:first-child、:last-child、:only-child和:not(selector)。涵盖最常用的结构性伪类。:not()接受任意简单选择器(标签、类名、ID、属性或嵌套伪类)。新增 CSS 选择器和伪选择器性能测试。版本 0.5.0 → 0.6.0。
性能优化¶
- PNG 模块:优化 BMP 编解码器、PNG 行滤波器和模式转换。BMP 编解码将逐像素 BGR↔RGB 循环替换为
bytearrayslice 赋值(C 级操作)——提速 42-44 倍(从比 Pillow 慢 193-265 倍降至约慢 4.6-6.1 倍)。PNG 行滤波器优化:Up 滤波器使用 list comprehension +zip,Sub 滤波器前缀单独处理,Paeth 缓存函数引用为局部变量。解码/编码路径预分配像素缓冲区。7 种无损模式转换(L↔RGB↔RGBA 等)从逐像素循环改为 slice 操作。PNG 编解码整体提速约 10%。 - Protobuf 模块:全面优化编解码热路径——FieldInfo 上绑定 encoder 分发(消除 11 路 if/elif)、每字段特化
_is_default检查、内联 1 字节 tag 解码快速路径(字段号 1-15)、write-to-buffer varint/scalar 编码器(消除中间bytes分配)、缓存 map entry 类型元数据(_MapMeta)、__dict__.update批量构造消息实例。编码提速约 41-65%,解码提速约 7-27%,大型消息往返提速约 39%。
基础设施¶
- 模块分类从 7 个细化为 12 个更精确的分组:network、protocol、serialization、validation、text、config、terminal、crypto、image、process、storage、devtools。
- 重命名
scripts/→_scripts/(内部约定)。 - 文档构建时从
manifest.json+ 配置文件自动生成modules/index.md。 - 修复
version-check误报:旧的项目级 SemVer tag 冲突和主文件选取错误导致的 false positive。
[2026.4.25] - 2026-04-25¶
新增模块¶
- JSON Schema 模块:零依赖的 JSON Schema 展平与清理。
flatten_schema()解析$ref、合并allOf(深度合并,支持 type 取交集、数值约束取严格值、required 取并集)、简化anyOf/oneOf(nullable 检测、单变体展开)并剥离不支持的关键字。每个阶段可独立调用:resolve_refs、merge_allof、simplify_unions、sanitize。与allof-merge(JS)在 5 个复杂度层级对比——快 1.7-5.3 倍。57 个单元测试 + 13 个跨实现正确性测试。 - Readability 模块:零依赖的文章正文提取器,移植自 Mozilla Readability.js。
extract()执行完整的文章提取并返回元数据(标题、作者、摘要、发布时间、站点名称、语言、文字方向)。is_probably_readable()提供快速可读性启发式检查。支持 JSON-LD 和 OpenGraph 元数据提取。两级重试机制(ruthless 开/关)确保提取鲁棒性。18 个 Mozilla Readability.js 测试用例用于交叉验证。三方 benchmark 对比:zerodep vs readability-lxml vs Mozilla JS。依赖soup模块(无 pip 依赖)。
功能增强¶
- Soup 模块:扩展树操作和序列化 API——
append()、insert()、extract()、replace_with()、unwrap()用于 DOM 树操作;to_html()/__str__()用于 HTML 序列化;__setitem__/__delitem__用于属性设置/删除;Soup.new_tag()工厂方法用于创建独立的 Tag 节点。
性能优化¶
- A2A 模块:优化序列化和反序列化路径——
to_dict()避免了dataclasses.asdict()风格的深拷贝开销。序列化现已比 a2a-protocol 快 2.2-2.6 倍(此前慢 1.4-2.1 倍)。反序列化从慢 1.8-4.1 倍收窄至慢 1.1-1.7 倍,得益于优化的枚举解析和类型分发。JSON 往返现已端到端快 1.4-1.5 倍。 - Cache 模块:优化
TypedKey构造、装饰器包装路径和 LFU 淘汰。LRU 装饰器开销现已比 cachetools 快 1.2 倍。TTL 装饰器达到持平。LFU 淘汰现已基本持平(此前慢 1.4 倍)。 - PersistDict 模块:优化 SQLite 写入性能——
PRAGMA synchronous=NORMAL、commit_every参数支持批量写入、延迟提交。 - QR 模块:优化编码路径——短输入现仅慢 1.1 倍(此前慢 2.1 倍)。中型/长输入现已比
qrcode库快 1.1-1.2 倍(此前慢 1.7-1.9 倍)。 - Readability 模块:优化评分和树遍历算法——小型页面快 2.1 倍,中型页面现已快 1.2 倍(此前慢 2 倍)。大型页面从慢 2 倍改善至慢 1.4 倍(vs readability-lxml)。
- Semver 模块:优化解析、比较和属性访问。解析快约 1.3 倍,排序快约 1.4 倍,比较快约 1.4 倍,属性访问快约 4.5 倍。
问题修复¶
- 文档:修复
search→sparse_search模块重命名导致的 ReadTheDocs 构建失败。
[2026.4.15] - 2026-04-15¶
新增命令¶
zerodep bump:自动检测变更模块(通过内容哈希与 git tag 对比)并 bump 其 frontmatter 版本号。支持--patch(默认)、--minor和--major级别。可选指定模块名。Bump 后自动重新生成manifest.json。zerodep new:生成新模块目录的脚手架模板——包含 frontmatter、版权信息和__all__的模块源文件,正确性测试文件。支持--category、--tier和--deps选项。
功能增强¶
zerodep version-check --strict:新增标志,当有模块需要 bump 时以退出码 1 退出,支持 CI 集成。
CI¶
- Release 工作流:新增 GitHub Actions 工作流(
.github/workflows/release.yml),自动化完整发布流程——lint、测试、自动检测 CalVer 版本、bump 模块版本、更新项目版本、提交、打 tag、创建 GitHub Release。通过workflow_dispatch触发,支持手动指定版本号。 - Benchmark 版本检查:在 benchmark 工作流中添加非阻塞的
version-check步骤,提醒未 bump 的模块。 - Benchmark 告警阈值从 150% 提高至 200%,减少 CI 运行环境波动导致的误报。
问题修复¶
- a2a 模块:修复 Python 3.11+ 下
StrEnum字符串表示测试(使用.value属性替代 f-string 格式化)。 - httpclient 模块:benchmark 测试从
httpbin.org切换到本地测试服务器,提升可靠性。
重构¶
- 复杂度治理:对 19 个模块进行重构,使所有函数的认知复杂度(complexipy)和圈复杂度(ruff C901)均降至 20 以下。涉及模块:cache、validate、tabulate、dotenv、runner、xml、diff、soup、sse、search、scheduler、depdetect、qr、acp、yaml、toon、protobuf、markdown、httpclient。
- 采用的重构模式:按类型分派表、try-parse 提取、分阶段分解、辅助函数提取——均在单文件约束下完成。
- qr 模块:更新版权声明,反映大幅重构(不再是直接移植)。
Benchmark¶
- 自定义 HTML 报告生成器,支持明暗主题切换和按模块生成独立 benchmark 页面,可嵌入文档。
- 修正 benchmark 报告颜色阈值和 AES 模块分类。
内部改进¶
- 新增
complexipy>=5.2.0开发依赖及pyproject.toml中的[tool.complexipy]配置。 - 启用 ruff
C901检查规则,max-complexity = 20。
[2026.4.11] - 2026-04-11¶
不兼容变更¶
- 版本策略:项目级版本号采用 CalVer(
YYYY.M.patch)日历版本。各模块继续使用独立的 SemVer 语义版本。每次发布代表 CLI 和全部模块的稳定快照。
新增命令¶
zerodep dep-graph:显示模块依赖关系——全量模块表格视图,或指定单个模块查看传递性影响分析(zerodep dep-graph yaml)。zerodep dep-check:自动检测变更模块(通过内容哈希与 git tag 对比),然后运行变更模块及其所有下游依赖的正确性测试。测试失败时退出码为 1,支持 CI 集成。可指定模块名检查特定模块(zerodep dep-check yaml config)。zerodep version-check:检查哪些模块在其声明版本后有代码修改(此前已存在,现重构以与dep-check共享检测逻辑)。
功能增强¶
- 模块 frontmatter:为所有模块添加
note字段,指向 CLI 文档,提示手动拷贝文件可能遗漏依赖。 zerodep add:拷贝文件时将通用 note 替换为具体模块的安装命令(如zerodep add config)。- 模块版本:修正所有模块级版本号,反映各模块实际的变更历史,而非跟随项目版本统一 bump。如
cache(0.2.0)、prompt(0.2.0)、tabulate(0.1.0)现显示其真实版本。
内部改进¶
- 从
cmd_version_check提取_find_changed_modules()辅助函数,在version-check和dep-check间共享变更检测逻辑。 - 新增
_build_reverse_deps()、_transitive_dependents()和_find_test_file()工具函数。
[0.4.1] - 2026-04-10¶
性能优化¶
- Validate 模块:为
_typeddict_fields()、_dataclass_fields()、_find_discriminator()、_is_typeddict()、_is_dataclass_type()和_unwrap_annotated()内部辅助函数添加@functools.lru_cache(maxsize=None)缓存。消除冗余的get_type_hints()和类型内省调用。简单验证提速 3 倍(9.9 → 3.3 us),批量数据验证现已比 pydantic 快 2 倍。
问题修复¶
- Validate 模块:新增
_strip_required()辅助函数,用于在 discriminated union 匹配前解包Required[T]/NotRequired[T]包装器。此前当联合类型成员使用Required[Literal[...]]字段注解时,discriminated union 分发可能失败。
[0.4.0] - 2026-04-09¶
新增模块¶
- Semver 模块:PEP 440 版本解析与比较器——零依赖,可直接替换
packaging.version。支持完整的 PEP 440 版本方案,包括 epoch、pre/post/dev 发布、local 版本和字母规范化。排序性能比packaging快约 2 倍。 - Protobuf 模块:零依赖 proto3 编解码器,使用 Python dataclass 定义消息 schema。支持全部 proto3 标量类型(int32/64、uint32/64、sint32/64、fixed32/64、sfixed32/64、float32、double、bool、string、bytes)、嵌套消息、packed repeated 字段、map 字段、枚举、oneof 分组和未知字段保留。通过
@message装饰器 +field(number)+Annotated类型别名定义 schema——无需.proto文件或protoc编译器。Proto3 语义:零值字段不序列化,repeated 标量默认 packed 编码。 - 持久化字典模块:基于
MutableMapping的持久化字典,支持可插拔后端(JSON 文件、SQLite)和可插拔序列化(默认 JSON,无 pickle)。线程安全、原子写入、通过 SQLite 表支持命名空间。工厂函数open()根据文件扩展名自动检测后端。 - DepDetect 模块:依赖检测与验证工具。
功能增强¶
- zerodep CLI:新增
outdated命令——将本地文件的内容哈希与上游 manifest 对比,检测实质性内容变更,忽略仅元数据更新(如版本号变化)。 - zerodep CLI:manifest 新增
content_hash字段——去除 frontmatter 后的模块文件 SHA-256 摘要,实现可靠的变更检测。 - zerodep CLI:manifest 新增
last_updated字段——每个模块主文件最后一次 git 提交的 ISO 8601 时间戳。 - zerodep CLI:manifest 生成现在跳过
build/和dist/目录,避免将过期构建产物注册为模块。 - Skills 模块:
to_markdown()和from_dict()方法,支持 SKILL.md 往返序列化——程序化技能创建、模板生成和迁移工具。 - Skills 模块:BM25 索引缓存——避免在相同技能集上重复调用
select()时冗余重建索引。 - Skills 模块:
SkillRegistry.select()新增min_score阈值——在注入系统提示词前过滤低相关性结果。 - Skills 模块:递归目录发现(
discover(..., recursive=True))——支持category/sub-skill/分层布局。 - Skills 模块:优先级/覆盖机制(
register(override=True)、discover(override=True))——实现项目 > 用户 > 系统的技能优先级链。 - Skills 模块:资源内容内联(
to_prompt(inline_resources=True))——将 scripts/references/assets 文件内容直接嵌入激活提示词 XML。 - Skills 模块:兼容性过滤(
filter_compatible()、select()的available_tools参数)——根据当前环境的可用工具过滤技能。 - AES 模块:
aes_ecb_padded_size()工具函数——无需实际加密即可计算 PKCS7 填充后的密文大小。
[0.3.0] - 2026-04-01¶
新增模块¶
- 文件锁模块:仅标准库的跨平台咨询式文件锁。Unix/macOS 使用
fcntl.flock,Windows 使用msvcrt.locking配合指数退避轮询。支持上下文管理器、非阻塞try_lock()、自动创建父目录。 - JSON-RPC 模块:JSON-RPC 2.0 协议实现,包含核心数据类型(
JSONRPCError、JSONRPCRequest、JSONRPCResponse)、异常层次结构、支持流式的方法分发器,以及基于换行分隔 JSON 流的异步传输层。性能测试比jsonrpcserver快约 12-17 倍。
功能增强¶
- Search 模块:Bayesian BM25 概率校准——通过 sigmoid 似然、复合先验和贝叶斯后验,将无界 BM25 分数转换为校准概率 [0,1]。支持从语料统计自动估计 α/β 参数和可选的基准率校正。校准状态在 JSON 和 SQLite 中持久化。
- A2A 模块:将内联 JSON-RPC 层提取至共享
jsonrpc模块;A2AError现继承JSONRPCException,实现统一的错误处理。 - ACP 模块:将内联 JSON-RPC 层提取至共享
jsonrpc模块;用基于正则的算法转换替换 39 条硬编码 camelCase 映射表;序列化统一为 A2A 风格的单一递归to_dict(),支持空集合过滤。
风格¶
- 现代化类型标注:将
Optional/Dict/List替换为 PEP 604/585 风格。 - 为所有模块添加
__all__导出。 - 统一模块间的段落分隔符风格。
- 为 frozen dataclass 添加
slots=True。 - 重命名 httpclient 测试文件以保持命名一致性。
- 统一测试文件 docstring 格式。
[0.2.2] - 2026-03-31¶
功能增强¶
- HTTP Client:新增
HttpClientError作为公共基础异常;将ConnectionError/TimeoutError重命名为HttpConnectionError/HttpTimeoutError,避免遮蔽 Python 内置名(保留向后兼容别名)。 - Config 模块:为
UndefinedValueError新增ConfigError基础异常。 - Frontmatter 模块:
HandlerError新增handler上下文字段。 - VCS 模块:
CommandError在超时时捕获部分输出,并新增timeout字段。
内部改进¶
- 标准化所有子系统模块的错误类型约定:两层层次结构、
<模块><名词>Error命名、带上下文字段的 f-string 消息。 - 文档化子进程执行约定(二进制发现、超时、编码、返回码)。
- 文档化 sync/async API 镜像约定(命名、阶段注释、共享逻辑提取)。
- 文档化大模块内部分层约定(段落标记、顺序、阶段注释)。
internals.md中全部 8 个模式现已标准化或已实现。
[0.2.1] - 2026-03-30¶
功能增强¶
- VCS 模块:
Mercurial和Jujutsu构造函数接受merge_func参数,支持显式注入三路合并函数;detect()将其转发给后端。 - Config 模块:
Config构造函数接受loaders和dotenv_loader参数,支持显式注入文件格式加载器和 dotenv 加载器。 - SSE 模块:
SSEClient和AsyncSSEClient构造函数接受transport参数,支持显式注入 HTTP 传输层;重连错误处理自动适配。
内部改进¶
- 在 vcs、config、sse 模块中引入
_Unset哨兵模式,实现三态注入参数(_UNSET= 自动发现、None= 禁用、可调用对象 = 注入)。 - 在内部约定文档中新增"显式注入"章节(中英文)。
[0.2.0] - 2026-03-30¶
新增模块¶
- Scheduler 模块:零依赖进程内任务调度器,支持 cron 表达式。
- Sparse Search 模块:BM25 系列(BM25、BM25+、BM25L)和 TF-IDF 全文搜索引擎。
- Frontmatter 模块:解析和序列化 YAML/TOML/JSON 文件头元数据。
- Config 模块:统一多源配置加载器,支持环境变量、.env 文件、JSON/JSONC/YAML/TOML/INI,类型转换和前缀过滤。
- Cache 模块:内存缓存,支持 LRU/FIFO/LFU/TTL 淘汰策略、同步+异步装饰器、线程安全、缓存统计。
- Runner 模块:结构化子进程执行,支持同步+异步 API、流式输出(回调+迭代器)、SIGTERM 到 SIGKILL 超时升级、环境隔离、命令白名单/黑名单。
- XML 模块:兼容 xmltodict 的字典与 XML 互转,支持 LLM 标签提取。
功能增强¶
- HTTP Client:连接池,支持可配置的池大小和空闲超时。
- HTTP Client:透明 gzip/deflate 自动解压缩,覆盖普通和流式响应。
- HTTP Client:HTTP/HTTPS 代理支持,含 CONNECT 隧道。
- HTTP Client:Basic 和 Digest 认证,支持自动 401 质询-响应。
- VCS 模块:工作区、分支和提交生命周期操作。
zerodepCLI 工具,支持模块发现和依赖感知的模块复制。- zerodep CLI:递归模块扫描,支持嵌套目录结构和重名检测。
- 模块元数据从
__version__/__deps__迁移至 PEP 723 内联脚本元数据(frontmatter)。 - 稀疏搜索反向索引优化,提升检索性能。
问题修复¶
- Runner:对齐异步路径下的部分输出处理和进程回收逻辑与同步路径一致。
- Scheduler:收紧任务状态转换的锁纪律,修复竞态条件。
- HTTP Client:修复同步/异步路径差异并丰富错误上下文。
- HTTP Client:修复
ty类型检查器发现的类型错误。
内部改进¶
- Tier 1 重构:统一 config、sse、vcs 模块的兄弟导入模式;延迟加载 config 兄弟模块和 vcs 中的 diff 模块以减少导入时副作用;对齐 prompt 和 structlog 的终端颜色检测逻辑;为清理路径添加层级分类注释。
- Tier 2 重构:将 httpclient 重组为 12 层内部结构以提升清晰度;为 runner 添加 14 段结构及同步/异步对齐审计;明确 scheduler 并发模型并添加错误约定。
[0.1.0] - 2026-03-27¶
新增¶
- AES 模块:AES 加解密,支持 ECB、CBC、CTR、GCM 模式及 128/192/256 位密钥。
- QR Code 模块:零外部依赖的二维码生成。
- HTTP Client 模块:同步和异步 HTTP 客户端,支持流式响应和文件上传。
- Dotenv 模块:
.env文件解析和加载。 - YAML 模块:YAML 解析和生成。
- JSONC 模块:JSON with Comments (JSONC) 解析器。
- Retry 模块:可配置的重试装饰器,支持退避策略。
- Structured Logging 模块:结构化日志,支持 JSON 输出和终端彩色显示。
- TOON 模块:Token-Oriented Object Notation 序列化/反序列化。
- Tabulate 模块:纯文本表格格式化。
- Soup 模块:轻量级 HTML 解析。
- Prompt 模块:交互式终端输入工具。
- Validate 模块:TypedDict/dataclass 运行时校验器,支持 JSON Schema 生成。
- SSE 模块:Server-Sent Events (SSE) 客户端。
- Markdown 模块:Markdown 到 HTML 渲染器。
- Diff 模块:统一和上下文差异生成。
- VCS 模块:版本控制系统工具。
- ANSI 模块:ANSI 终端样式,支持自动颜色检测。
- 所有模块添加
__version__属性,支持跨模块兼容性检查。 - 在
pyproject.toml中添加ty类型检查器配置。 - 添加 CI 工作流,覆盖 Python 3.10–3.13 兼容性测试。
修复¶
- 修复 HTTP 客户端异步 body 读取竞态条件。
- 修复
ty类型检查器在多个模块中发现的类型错误。
变更¶
- 统一 prompt、structlog 和 ansi 模块的终端颜色检测逻辑。
- 将 HTTP 测试从
httpbin.org替换为本地测试服务器,提升测试可靠性。
移除¶
- 移除 validate 模块对
typing_extensions的依赖。