Allow `float("inf")` and `float("-inf")` in literals
还没有人认领这个 Issue。
- 主要语言
- Python
- 星标
- 1.8k
- 派生
- 302
- 平均合并
- 23 小时
- 30 天内合并 PR
- 8
描述
I have been frequently using positive and negative infinity as default values for values that should otherwise be ints. Because of Python's duck typing this is a convenient pattern that sometimes allows reducing some special-casing logic.
def less_than(value: int, limit: int | None) -> bool:
if limit is None:
return True
return value < limit
vs
def less_than(value: int, limit: int | Literal[float("inf")]) -> bool:
return value < limit
Would it be feasible to special-case the expressions float("inf") and float("-inf") and make type-checkers regard them as literal values, even though they aren't strictly speaking language-level literals?
For posterity, PEP 586 mentions this with:
Representing Literals of infinity or NaN in a clean way is tricky; real-world APIs are unlikely to vary their behavior based on a float parameter.
So I guess what I'm asking here is: am I an odd duckling or could it be worth considering +/- infinity as legal values in literal types?
贡献指南
这个仓库没有索引到贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
首先阅读 PEP 586 中关于非法 Literal 参数的讨论,以及此 issue 中的 21 条评论。确定 typing 社区是否已经就将 float("inf") 和 float("-inf") 作为字面量值处理达成决定;只有在已有一致同意的规范并确定了需要对 type-checker 进行的更改时,才能算完成,而该 issue 并未提供这些内容。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- python
- 领域
- devtools
- Issue 类型
- 功能
- 难度
- 5/5
- 预计耗时
- 一周以上
- 活跃度
- 停滞
- 描述清晰度
- 需要澄清
- 新手友好度
- 25/100