执行摘要
修复 dataclass 默认值中 (None,) 的 typo
在 dataclass 中,Optional[X] = None, 中的尾随逗号会使得 Python 将其解析为 Optional[X] = (None,),导致类型标注与默认值不匹配。虽然所有调用方均显式传参,默认值不会被实际使用,但保持类型一致性有助于静态分析与代码可读性。
无需深入阅读,但值得作为 Python dataclass 默认值陷阱的案例学习。
无 review 评论,合入者直接合并。
在 dataclass 中,Optional[X] = None, 中的尾随逗号会使得 Python 将其解析为 Optional[X] = (None,),导致类型标注与默认值不匹配。虽然所有调用方均显式传参,默认值不会被实际使用,但保持类型一致性有助于静态分析与代码可读性。
无需深入阅读,但值得作为 Python dataclass 默认值陷阱的案例学习。
无 review 评论,合入者直接合并。
python/sglang/srt/mem_cache/hicache_storage.py: 将 HiCacheStorageExtraInfo.prefix_keys 的默认值从 (None,) 改为 None。python/sglang/lang/ir.py: 将 SglSamplingParams 中三个字段的默认值从 (None,) 改为 None:logprob_start_len, top_logprobs_num, return_text_in_logprobs。| 文件 | 模块 | 状态 | 重要度 |
|---|---|---|---|
python/sglang/lang/ir.py |
语言层 | modified | 5.19 |
python/sglang/srt/mem_cache/hicache_storage.py |
缓存层 | modified | 4.49 |
python/sglang/lang/ir.py
core-logic
修复了 SglSamplingParams 中三个字段的默认值 typo,是 PR 的核心变更文件之一。
@dataclasses.dataclass
class SglSamplingParams:
# ... 其他字段 ...
return_logprob: Optional[bool] = None
# 以下三个字段修复前默认值为 (None,)
logprob_start_len: Optional[int] = None # 原为 (None,)
top_logprobs_num: Optional[int] = None # 原为 (None,)
return_text_in_logprobs: Optional[bool] = None # 原为 (None,)
json_schema: Optional[str] = None
当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。
风险极低:所有四个字段的调用方均显式传参,默认值从未被依赖。但若未来有新增代码依赖这些默认值,可能会因为类型从 (None,) 变为 None 而引入细微变化(如 if field: 的行为不变,但 for x in field: 将引发 TypeError)。
影响范围小,仅涉及两个文件中的四个字段默认值变更,无运行时行为变化。对用户无感知,对系统稳定性无影响。
当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。
参与讨论