chore(types): gate HTTP client cleanup

This commit is contained in:
jxxghp
2026-10-17 17:19:18 +08:00
parent b1b6d82c33
commit b33060f0a6
3 changed files with 9 additions and 27 deletions

View File

@@ -108,7 +108,7 @@ ARCH-201 至 ARCH-204 均达到实现、验证、提交、推送和远端门禁
| Event Contract | 53 | 均已有 payload model,但当前全部是 diagnostic enforcement |
| Python 源码量 | 373,625 行 | 本次重新扫描物理行数,排除 `app/plugins/**`;74 个文件超过 1,000 行,12 个超过 2,000 行;源码尺寸仅作观察 |
| 长方法 | 309 个超过 80 行 | 本次 AST 扫描排除 `app/plugins/**`;61 个超过 150 行,17 个超过 250 行;新增函数仍受 C901/嵌套深度门禁约束 |
| 全量 mypy 历史债务 | 4,919 / 258 文件 | 本轮在消息、站点、诊断、备份、用户配置、订阅、AcoustID、TMDB、仪表板和命令生命周期边界补齐类型,历史债务再减少 53 项;TMDB v3 API 显式导出并保留集合 parts 的列表合同,逐文件逐错误码无增长;此前工作流筛选、动态插件路由和 stdio 流补齐边界类型,历史债务减少 3 项;Bitpt 与 CookieCloud 补齐边界类型,历史债务减少 16 项;知行站点解析器补齐数值属性与基类合同,历史债务减少 18 项;通知排版补齐 Slack 消息块类型,历史债务减少 2 项;工作流资源过滤改用领域对象调用过滤链,恢复的节点输出在消费前归一化,并收紧可空资源列表的类型低水位;消息媒体交互类型债务已清零,canonical Facade 与 endpoint 类型边界已补齐,低水位只允许继续下降;微信 ClawBot 入站 item_list 媒体解析改为按子项键名分派后,类型错误减少 4 项;站点解析器分享率改用浮点初值,类型错误减少 20 项;本次下载与文件安全修复再减少 3 项;Transmission 进度回退值归一化再减少 2 项;本批清理 Servarr、认证、存储、订阅策略和搜索/规则/通知 Schema 的 18 项类型错误,并修复系统配置中的 Python 2 异常语法;本批再清理订阅元数据、订阅写入、交互宿主、整理路径、删除统计和工作流动作的 14 项类型错误,逐文件逐错误码无增长;本批补齐 OCR 请求参数、工具 Schema 摘要和宿主模块配置快照的 5 项边界类型,逐文件逐错误码无增长;本批为 Rousi 用户消息分页解析补齐返回类型与数据结构兜底,减少 2 项类型错误;本批优先处理 TMDB v3 电影与电视剧对象模型,补齐 98 个同步/异步方法注解并减少 122 项历史类型错误;随后补齐剧集、季度、人物、搜索和趋势对象的 142 个方法注解,再减少 142 项类型错误;绿联 API 响应边界补齐具体泛型与运行时字典收窄,减少 31 项类型错误;运行时限流器补齐状态方法、装饰器边界和时间队列类型,减少 31 项类型错误;QQ Bot API 响应边界补齐具体泛型与 JSON 形状校验,减少 17 项类型错误;rTorrent 客户端清理 182 项错误,调用端同步明确字典合同,累计再减少 190 项错误;豆瓣 API、中心服务接口及订阅消费端补齐返回边界和参数收窄,结合 Context 方法签名与缓存代理类型清理,累计再减少 455 项错误;缓存同步/异步继承冲突保留为设计债务,未纳入严格门禁 |
| 全量 mypy 历史债务 | 4,703 / 257 文件 | 本轮在消息、站点、诊断、备份、用户配置、订阅、AcoustID、TMDB、仪表板和命令生命周期边界补齐类型,历史债务再减少 53 项;TMDB v3 API 显式导出并保留集合 parts 的列表合同,逐文件逐错误码无增长;此前工作流筛选、动态插件路由和 stdio 流补齐边界类型,历史债务减少 3 项;Bitpt 与 CookieCloud 补齐边界类型,历史债务减少 16 项;知行站点解析器补齐数值属性与基类合同,历史债务减少 18 项;通知排版补齐 Slack 消息块类型,历史债务减少 2 项;工作流资源过滤改用领域对象调用过滤链,恢复的节点输出在消费前归一化,并收紧可空资源列表的类型低水位;消息媒体交互类型债务已清零,canonical Facade 与 endpoint 类型边界已补齐,低水位只允许继续下降;微信 ClawBot 入站 item_list 媒体解析改为按子项键名分派后,类型错误减少 4 项;站点解析器分享率改用浮点初值,类型错误减少 20 项;本次下载与文件安全修复再减少 3 项;Transmission 进度回退值归一化再减少 2 项;本批清理 Servarr、认证、存储、订阅策略和搜索/规则/通知 Schema 的 18 项类型错误,并修复系统配置中的 Python 2 异常语法;本批再清理订阅元数据、订阅写入、交互宿主、整理路径、删除统计和工作流动作的 14 项类型错误,逐文件逐错误码无增长;本批补齐 OCR 请求参数、工具 Schema 摘要和宿主模块配置快照的 5 项边界类型,逐文件逐错误码无增长;本批为 Rousi 用户消息分页解析补齐返回类型与数据结构兜底,减少 2 项类型错误;本批优先处理 TMDB v3 电影与电视剧对象模型,补齐 98 个同步/异步方法注解并减少 122 项历史类型错误;随后补齐剧集、季度、人物、搜索和趋势对象的 142 个方法注解,再减少 142 项类型错误;绿联 API 响应边界补齐具体泛型与运行时字典收窄,减少 31 项类型错误;运行时限流器补齐状态方法、装饰器边界和时间队列类型,减少 31 项类型错误;QQ Bot API 响应边界补齐具体泛型与 JSON 形状校验,减少 17 项类型错误;rTorrent 客户端清理 182 项错误,调用端同步明确字典合同,累计再减少 190 项错误;豆瓣 API、中心服务接口及订阅消费端补齐返回边界和参数收窄,结合 Context 方法签名与缓存代理类型清理,累计再减少 455 项错误;共享 HTTP 客户端清理 110 项错误,U115 存储边界清理 97 项错误,补充 AliPan/OpenList 对可空流响应的防守;存储基类返回契约仍有 4 项设计债务,未纳入严格门禁;缓存同步/异步继承冲突保留为设计债务,未纳入严格门禁 |
| Ruff 历史诊断 | 73 | 低水位门禁通过,但规则集只覆盖 `E4/E7/E9/F/I` |
| 覆盖率逐文件低水位 | 全 app(排除 app/plugins)当前聚合 77.68% | 存量文件低水位只增不减,新文件至少 80% |

View File

@@ -81,6 +81,7 @@ files =
app/adapters/network/__init__.py,
app/adapters/network/cloudflare.py,
app/adapters/network/feishu.py,
app/adapters/network/http.py,
app/adapters/network/ip.py,
app/adapters/network/resolver.py,
app/adapters/network/webpush.py,

View File

@@ -30,14 +30,6 @@
"no-any-return": 1,
"no-untyped-def": 3
},
"app/adapters/network/http.py": {
"assignment": 28,
"misc": 1,
"no-any-return": 15,
"no-untyped-call": 7,
"no-untyped-def": 33,
"type-arg": 26
},
"app/adapters/system/fsproxy.py": {
"arg-type": 1,
"assignment": 1,
@@ -911,7 +903,6 @@
"app/modules/filemanager/storages/alipan.py": {
"arg-type": 19,
"assignment": 7,
"attr-defined": 1,
"empty-body": 2,
"no-any-return": 5,
"no-untyped-call": 4,
@@ -925,7 +916,6 @@
"app/modules/filemanager/storages/alist.py": {
"arg-type": 13,
"assignment": 2,
"attr-defined": 1,
"empty-body": 2,
"misc": 1,
"no-any-return": 4,
@@ -969,18 +959,9 @@
"union-attr": 5
},
"app/modules/filemanager/storages/u115.py": {
"arg-type": 16,
"assignment": 7,
"attr-defined": 1,
"call-overload": 17,
"empty-body": 2,
"no-any-return": 6,
"no-untyped-call": 3,
"no-untyped-def": 5,
"operator": 2,
"override": 2,
"type-arg": 8,
"union-attr": 32
"assignment": 1,
"no-untyped-call": 1,
"override": 2
},
"app/modules/filemanager/transhandler.py": {
"arg-type": 18,
@@ -1032,7 +1013,7 @@
"type-arg": 1
},
"app/modules/indexer/spider/__init__.py": {
"arg-type": 12,
"arg-type": 10,
"assignment": 3,
"dict-item": 3,
"misc": 1,
@@ -1047,7 +1028,7 @@
"var-annotated": 2
},
"app/modules/indexer/spider/haidan.py": {
"arg-type": 3,
"arg-type": 1,
"assignment": 5,
"no-any-return": 1,
"no-untyped-def": 2,
@@ -1080,7 +1061,7 @@
"var-annotated": 3
},
"app/modules/indexer/spider/tnode.py": {
"arg-type": 4,
"arg-type": 2,
"assignment": 1,
"misc": 2,
"return-value": 2,
@@ -1401,7 +1382,7 @@
"type-arg": 1
},
"app/modules/zspace/zspace.py": {
"arg-type": 10,
"arg-type": 9,
"assignment": 3,
"no-any-return": 12,
"no-untyped-call": 2,