Hacktoberfest 2026:維護者為十月標記出來的 issue,仍然開放、適合新手。 瀏覽 Hacktoberfest issue

Union(Type) and TypeForm

未關閉
#21,910 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視

維護者通常 1 天內回覆

@Dextheking1 已經在處理了。

開始於 2026年9月22日。

  • #22022 來自 @Dextheking1 —— 未關閉

評估

難度
3/5
預估耗時
1-2 天
新手友好度
68/100
Issue 類型
缺陷
描述清晰度
基本清楚
活躍度
活躍
技術堆疊
python
領域
devtools

研究方向

首先使用 mypy 在有和沒有 --warn-unreachable 的情況下重現 main.py 中的範例,並檢查當值使用 typing_extensions.TypeForm 進行型別註記時,typing.Union 和 types.UnionType 是如何處理的。完成的標準是,等效的 isinstance 檢查不再產生所回報的 incompatible-type 或 unreachable-statement 錯誤。

由索引模型根據 Issue 內容生成。

描述

bug topic-runtime-semantics

My function should analyze types.
Both when --warn-unreachable is enabled, and when checking typing.Union, and when checking types.UnionType, an error occurs.

code:

from types import UnionType
from typing import Any, Union

from typing_extensions import TypeForm


def f(t: TypeForm[Any]) -> Any:
    if isinstance(t, Union):
        pass


def g(t: TypeForm[Any]) -> Any:
    if isinstance(t, UnionType):
        pass

errors:

main.py:8: error: Argument 2 to "isinstance" has incompatible type "<typing special form>"; expected "_ClassInfo"  [arg-type]
main.py:14: error: Statement is unreachable  [unreachable]
Found 2 errors in 1 file (checked 1 source file)

in runtime, the behavior of both isinstance is equivalent.

主要語言
Python
星號
20.7k
分支
3.3k
平均合併
1 天 20 小時
30 天內合併 PR
102

環境準備

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

python/mypy 的其他 Issue

查看 python/mypy 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。