Bad typing for requests.cookies.RequestsCookieJar
还没有人认领这个 Issue。
评估
调研方向
从 stubs/requests/requests/cookies.pyi 中第 38 行附近的 RequestsCookieJar 声明开始,然后将其 iter 行为与 MutableMapping[str, str] 注解进行比较。运行提供的 pyright 和 mypy 复现,以验证迭代具有类型标注,并且行为如同 Cookie 值。完成的标准是,stub 不再向调用方提供错误的可迭代元素类型。
由索引模型根据 Issue 内容生成。
描述
RequestsCookieJar is typed as a subtype of both http.CookieJar and MutableMapping[str, str]:
including a comment ignoring the type error. This is simply wrong; RequestsCookieJar is not a MutableMapping because the __iter__ fn differs.
This causes real problems:
import requests.cookies
import typing
cookiejar = requests.cookies.RequestsCookieJar()
cookiejar["a"] = "b"
print("outside func")
for cookie in cookiejar:
typing.reveal_type(cookie) # type is Cookie at typecheck and runtime
print(f"{type(cookie)=}")
def in_func(not_a_cookiejar:typing.Iterable[str]):
print("in_func")
for maybe_cookie in not_a_cookiejar:
typing.reveal_type(maybe_cookie) # type is str at typecheck
print(f"{type(maybe_cookie)=}") # type is Cookie at runtime
in_func(cookiejar)
pyright 1.1.407 says:
information: Type of "cookie" is "Cookie"
information: Type of "maybe_cookie" is "str"
mypy 1.19.1 says:
bad-types.py:9: note: Revealed type is "http.cookiejar.Cookie"
bad-types.py:15: note: Revealed type is "builtins.str"
- 主要语言
- Python
- 星标
- 5.1k
- 派生
- 2.1k
- 平均合并
- 1 天 13 小时
- 30 天内合并 PR
- 73
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
python/typeshed 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 72/100
-
难度 2/5 1-3 小时 新手友好度 68/100
-
难度 2/5 1-3 小时 新手友好度 76/100
-
project: infrastructure
难度 2/5 1-3 小时 新手友好度 68/100
-
stubs: improvement
难度 2/5 1-3 小时 新手友好度 72/100
相似的 Issue
-
bug
难度 2/5 1-3 小时 新手友好度 82/100
-
难度 2/5 1-3 小时 新手友好度 88/100
use-agent-os/agent-os#3314 ·
-
难度 2/5 1-3 小时 新手友好度 75/100
BasedHardware/omi#15662 · 1 条评论 ·
-
documentation help wanted
难度 2/5 1-3 小时 新手友好度 90/100
-
难度 2/5 1-3 小时 新手友好度 62/100
AiursoftWeb/AnduinOS-2#19 ·