Skip to content

Update typing.Union and types.UnionType definitions for 3.14#13740

Draft
Viicos wants to merge 4 commits into
python:mainfrom
Viicos:union-314
Draft

Update typing.Union and types.UnionType definitions for 3.14#13740
Viicos wants to merge 4 commits into
python:mainfrom
Viicos:union-314

Conversation

@Viicos
Copy link
Copy Markdown
Contributor

@Viicos Viicos commented Mar 29, 2025

As per python/cpython#105511.


2026-06-04 (@srittau): Marking as deferred. Depends on python/mypy#21588 being fixed.

@srittau
Copy link
Copy Markdown
Collaborator

srittau commented Mar 29, 2025

Thanks for contributing! Unfortunately, as outlined in our CONTRIBUTING document we only accept pull requests to the standard library for future Python versions after the first beta version has been released. This is in part to prevent churn in the stubs, and in part because the testing infrastructure for the future version is not yet in place. Please feel free to open a new PR when the first beta version has been released. Alternatively, if this PR is still relevant, you can leave a comment here to reopen it.

@srittau srittau closed this Mar 29, 2025
@github-actions

This comment has been minimized.

@Avasam
Copy link
Copy Markdown
Collaborator

Avasam commented May 15, 2025

@Viicos Beta 1 has been released! I don't think contributors can re-open their PRs. You can let us know if you'd like us to re-open this or you can create a new PR!

@Viicos
Copy link
Copy Markdown
Contributor Author

Viicos commented May 15, 2025

Yes happy to have this one reopened.

@srittau srittau reopened this May 15, 2025
@JelleZijlstra
Copy link
Copy Markdown
Member

I tried this too but ran into some trouble with how type checkers are special-casing these symbols; might need some changes inside type checkers too.

@github-actions

This comment has been minimized.

@LordGiacomoS
Copy link
Copy Markdown

Did some slight tweaks to mypy's source code to try and get it working with these changes. It seems my changes work when running the stubtest in both python 3.14.5 and 3.15.0b1 on linux with a slightly updated version of this fork, but the code still needs work before I'd even consider it remotely worthwhile to open a PR here or in mypy.

  • The tweaked version of mypy fails if it is working with an old version of typeshed, meaning that either typeshed needs to be updated first, the tweaked version of mypy needs to have some guardrails to gracefully handle older versions of typeshed, or mypy's internal typeshed needs to be modified in the same way.
  • The version checks used to make sure that mypy isn't handling pre 3.14 UnionTypes with 3.14+ behavior need to be moved to wherever version checks that can't be handled in .pyi files go.

@srittau
Copy link
Copy Markdown
Collaborator

srittau commented Jun 4, 2026

This doesn't merge cleanly to main, at the moment.

@github-actions

This comment has been minimized.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 4, 2026

Diff from mypy_primer, showing the effect of this PR on open source code:

pyodide (https://github.com/pyodide/pyodide)
+ ...typeshed_to_test/stdlib/typing.pyi:1002: error: INTERNAL ERROR -- Please try using mypy master on GitHub:
+ https://mypy.readthedocs.io/en/stable/common_issues.html#using-a-development-mypy-build
+ Please report a bug at https://github.com/python/mypy/issues
+ version: 2.1.0
+ ...typeshed_to_test/stdlib/typing.pyi:1002: note: use --pdb to drop into pdb
- pyodide-build/pyodide_build/vendor/_pypabuild.py:124: error: Unused "type: ignore" comment  [unused-ignore]
- pyodide-build/pyodide_build/out_of_tree/app_data.py:113: error: Function is missing a return type annotation  [no-untyped-def]
- pyodide-build/pyodide_build/pywasmcross.py:376: error: Incompatible types in assignment (expression has type "str | None", variable has type "str")  [assignment]
- pyodide-build/pyodide_build/vendor/loky.py:113: error: Incompatible types in assignment (expression has type "int", variable has type "str")  [assignment]
- pyodide-build/pyodide_build/vendor/loky.py:119: error: Incompatible types in assignment (expression has type "int", variable has type "str")  [assignment]
- pyodide-build/pyodide_build/vendor/loky.py:120: error: Incompatible types in assignment (expression has type "int", variable has type "str")  [assignment]
- pyodide-build/pyodide_build/vendor/loky.py:121: error: Unsupported operand types for > ("str" and "int")  [operator]
- pyodide-build/pyodide_build/vendor/loky.py:122: error: Unsupported left operand type for / ("str")  [operator]
- pyodide-build/pyodide_build/vendor/loky.py:167: error: Statement is unreachable  [unreachable]
- pyodide-build/pyodide_build/vendor/loky.py:175: error: Incompatible types in assignment (expression has type "list[str]", variable has type "CompletedProcess[str]")  [assignment]
- pyodide-build/pyodide_build/vendor/loky.py:176: error: Incompatible types in assignment (expression has type "set[Any]", variable has type "CompletedProcess[str]")  [assignment]
- pyodide-build/pyodide_build/vendor/loky.py:176: error: "CompletedProcess[str]" has no attribute "__iter__" (not iterable)  [attr-defined]
- pyodide-build/pyodide_build/vendor/loky.py:177: error: Argument 1 to "len" has incompatible type "CompletedProcess[str]"; expected "Sized"  [arg-type]
- pyodide-build/pyodide_build/vendor/loky.py:206: error: Incompatible types in assignment (expression has type "str", variable has type "int")  [assignment]
- pyodide-build/pyodide_build/common.py:151: error: Incompatible default for parameter "version" (default has type "None", parameter has type "str")  [assignment]
- pyodide-build/pyodide_build/common.py:151: note: PEP 484 prohibits implicit Optional. Accordingly, mypy has changed its default to no_implicit_optional=True
- pyodide-build/pyodide_build/common.py:151: note: Use https://github.com/hauntsaninja/no_implicit_optional to automatically upgrade your codebase
- pyodide-build/pyodide_build/common.py:301: error: Function is missing a type annotation for one or more parameters  [no-untyped-def]
- pyodide-build/pyodide_build/common.py:443: error: Function is missing a type annotation for one or more parameters  [no-untyped-def]
- pyodide-build/pyodide_build/common.py:449: error: List item 4 has incompatible type "Path"; expected "str"  [list-item]
- pyodide-build/pyodide_build/common.py:449: error: List item 6 has incompatible type "Path"; expected "str"  [list-item]
- pyodide-build/pyodide_build/common.py:455: error: Function is missing a type annotation for one or more parameters  [no-untyped-def]
- pyodide-build/pyodide_build/common.py:459: error: List item 4 has incompatible type "Path"; expected "str"  [list-item]
- pyodide-build/pyodide_build/common.py:459: error: List item 6 has incompatible type "Path"; expected "str"  [list-item]
- pyodide-build/pyodide_build/common.py:461: error: Argument "err_msg" to "run_command" has incompatible type "tuple[str, Path]"; expected "str | tuple[str, ...] | None"  [arg-type]
- pyodide-build/pyodide_build/common.py:466: error: Function is missing a type annotation for one or more parameters  [no-untyped-def]
- pyodide-build/pyodide_build/common.py:504: error: List item 4 has incompatible type "Path"; expected "str"  [list-item]
- pyodide-build/pyodide_build/common.py:510: error: Argument "err_msg" to "run_command" has incompatible type "tuple[str, Path, str]"; expected "str | tuple[str, ...] | None"  [arg-type]
- pyodide-build/pyodide_build/xbuildenv.py:476: error: Item "str" of "Path | Any | str" has no attribute "exists"  [union-attr]
- pyodide-build/pyodide_build/xbuildenv.py:492: error: Incompatible return value type (got "Path | Any | str", expected "Path")  [return-value]
- pyodide-build/pyodide_build/tests/test_xbuildenv.py:88: error: Statement is unreachable  [unreachable]
- pyodide-build/pyodide_build/tests/test_xbuildenv.py:388: error: Unsupported right operand type for in ("str | None")  [operator]
- pyodide-build/pyodide_build/tests/test_xbuildenv.py:397: error: Unsupported operand types for <= ("str" and "None")  [operator]
- pyodide-build/pyodide_build/tests/test_xbuildenv.py:397: note: Left operand is of type "str | None"
- pyodide-build/pyodide_build/tests/test_xbuildenv.py:400: error: Unsupported operand types for <= ("str" and "None")  [operator]
- pyodide-build/pyodide_build/tests/test_xbuildenv.py:400: note: Left operand is of type "str | None"
- pyodide-build/pyodide_build/tests/test_xbuildenv.py:428: error: Untyped decorator makes function "test_url_to_version" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/recipe/skeleton.py:136: error: Incompatible types in assignment (expression has type "None", variable has type "str")  [assignment]
- pyodide-build/pyodide_build/recipe/skeleton.py:161: error: Statement is unreachable  [unreachable]
- pyodide-build/pyodide_build/recipe/skeleton.py:237: error: Function is missing a return type annotation  [no-untyped-def]
- pyodide-build/pyodide_build/recipe/skeleton.py:237: error: Function is missing a type annotation for one or more parameters  [no-untyped-def]
- pyodide-build/pyodide_build/recipe/skeleton.py:246: error: Function is missing a return type annotation  [no-untyped-def]
- pyodide-build/pyodide_build/recipe/skeleton.py:246: error: Function is missing a type annotation for one or more parameters  [no-untyped-def]
- pyodide-build/pyodide_build/recipe/skeleton.py:358: error: Incompatible types in assignment (expression has type "str", variable has type "Literal['wheel', 'sdist'] | None")  [assignment]
- pyodide-build/pyodide_build/recipe/skeleton.py:359: error: List item 0 has incompatible type "Literal['wheel', 'sdist'] | None"; expected "Literal['wheel', 'sdist']"  [list-item]
- pyodide-build/pyodide_build/recipe/skeleton.py:446: error: Function is missing a return type annotation  [no-untyped-def]
- pyodide-build/pyodide_build/out_of_tree/venv.py:149: error: Unsupported left operand type for / ("None")  [operator]
- pyodide-build/pyodide_build/out_of_tree/venv.py:149: note: Left operand is of type "Path | None"
- pyodide-build/pyodide_build/out_of_tree/venv.py:159: error: Unsupported left operand type for / ("None")  [operator]
- pyodide-build/pyodide_build/out_of_tree/venv.py:159: note: Left operand is of type "Path | None"
- pyodide-build/pyodide_build/out_of_tree/venv.py:164: error: Unsupported left operand type for / ("None")  [operator]
- pyodide-build/pyodide_build/out_of_tree/venv.py:164: note: Left operand is of type "Path | None"
- pyodide-build/pyodide_build/out_of_tree/venv.py:169: error: Unsupported left operand type for / ("None")  [operator]
- pyodide-build/pyodide_build/out_of_tree/venv.py:169: note: Left operand is of type "Path | None"
- pyodide-build/pyodide_build/out_of_tree/venv.py:174: error: Unsupported left operand type for / ("None")  [operator]
- pyodide-build/pyodide_build/out_of_tree/venv.py:174: note: Left operand is of type "Path | None"
- pyodide-build/pyodide_build/out_of_tree/venv.py:179: error: Unsupported left operand type for / ("None")  [operator]
- pyodide-build/pyodide_build/out_of_tree/venv.py:179: note: Left operand is of type "Path | None"
- pyodide-build/pyodide_build/out_of_tree/venv.py:184: error: Unsupported left operand type for / ("None")  [operator]
- pyodide-build/pyodide_build/out_of_tree/venv.py:184: note: Left operand is of type "Path | None"
- pyodide-build/pyodide_build/out_of_tree/venv.py:189: error: Unsupported left operand type for / ("None")  [operator]
- pyodide-build/pyodide_build/out_of_tree/venv.py:189: note: Left operand is of type "Path | None"
- pyodide-build/pyodide_build/out_of_tree/venv.py:194: error: Unsupported left operand type for / ("None")  [operator]
- pyodide-build/pyodide_build/out_of_tree/venv.py:194: note: Left operand is of type "Path | None"
- pyodide-build/pyodide_build/out_of_tree/venv.py:272: error: List item 0 has incompatible type "Path"; expected "str"  [list-item]
- pyodide-build/pyodide_build/out_of_tree/venv.py:296: error: List item 0 has incompatible type "Path"; expected "str"  [list-item]
- pyodide-build/pyodide_build/out_of_tree/venv.py:476: error: Item "None" of "Path | None" has no attribute "glob"  [union-attr]
- pyodide-build/pyodide_build/out_of_tree/venv.py:596: error: Module has no attribute "_base_executable"  [attr-defined]
- pyodide-build/pyodide_build/out_of_tree/venv.py:690: error: Unsupported left operand type for / ("None")  [operator]
- pyodide-build/pyodide_build/out_of_tree/venv.py:690: note: Left operand is of type "Path | None"
- pyodide-build/pyodide_build/out_of_tree/venv.py:705: error: Unsupported left operand type for / ("None")  [operator]
- pyodide-build/pyodide_build/out_of_tree/venv.py:705: note: Left operand is of type "Path | None"
- pyodide-build/pyodide_build/out_of_tree/venv.py:726: error: Item "None" of "Path | None" has no attribute "glob"  [union-attr]
- pyodide-build/pyodide_build/cli/xbuildenv.py:17: error: Untyped decorator makes function "app" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/xbuildenv.py:18: error: Untyped decorator makes function "app" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/xbuildenv.py:31: error: Untyped decorator makes function "_install" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/xbuildenv.py:32: error: Untyped decorator makes function "_install" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/xbuildenv.py:33: error: Untyped decorator makes function "_install" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/xbuildenv.py:41: error: Untyped decorator makes function "_install" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/xbuildenv.py:46: error: Untyped decorator makes function "_install" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/xbuildenv.py:54: error: Untyped decorator makes function "_install" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/xbuildenv.py:97: error: Untyped decorator makes function "_version" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/xbuildenv.py:98: error: Untyped decorator makes function "_version" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/xbuildenv.py:116: error: Untyped decorator makes function "_versions" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/xbuildenv.py:117: error: Untyped decorator makes function "_versions" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/xbuildenv.py:137: error: Untyped decorator makes function "_uninstall" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/xbuildenv.py:138: error: Untyped decorator makes function "_uninstall" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/xbuildenv.py:139: error: Untyped decorator makes function "_uninstall" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/xbuildenv.py:158: error: Untyped decorator makes function "_use" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/xbuildenv.py:159: error: Untyped decorator makes function "_use" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/xbuildenv.py:160: error: Untyped decorator makes function "_use" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/xbuildenv.py:179: error: Untyped decorator makes function "_search" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/xbuildenv.py:180: error: Untyped decorator makes function "_search" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/xbuildenv.py:189: error: Untyped decorator makes function "_search" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/xbuildenv.py:197: error: Untyped decorator makes function "_search" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/xbuildenv.py:255: error: Untyped decorator makes function "_install_emscripten" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/xbuildenv.py:256: error: Untyped decorator makes function "_install_emscripten" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/xbuildenv.py:261: error: Untyped decorator makes function "_install_emscripten" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/xbuildenv.py:267: error: Untyped decorator makes function "_install_emscripten" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/config.py:11: error: Untyped decorator makes function "app" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/config.py:12: error: Untyped decorator makes function "app" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/config.py:28: error: Untyped decorator makes function "list_config" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/config.py:37: error: Untyped decorator makes function "get_config" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/config.py:38: error: Untyped decorator makes function "get_config" untyped  [untyped-decorator]
- src/py/pyodide/webloop.py:1060: error: Unused "type: ignore" comment  [unused-ignore]
- pyodide-build/pyodide_build/pypabuild.py:53: error: Incompatible default for parameter "isolated_build_env" (default has type "None", parameter has type "_DefaultIsolatedEnv")  [assignment]
- pyodide-build/pyodide_build/pypabuild.py:53: note: PEP 484 prohibits implicit Optional. Accordingly, mypy has changed its default to no_implicit_optional=True
- pyodide-build/pyodide_build/pypabuild.py:53: note: Use https://github.com/hauntsaninja/no_implicit_optional to automatically upgrade your codebase
- pyodide-build/pyodide_build/pypabuild.py:78: error: "isolated_build_env" has type "_DefaultIsolatedEnv" which does not implement __bool__ or __len__ so it could always be true in boolean context  [truthy-bool]
- pyodide-build/pyodide_build/pypabuild.py:301: error: Function is missing a return type annotation  [no-untyped-def]
- pyodide-build/pyodide_build/pypabuild.py:343: error: Argument 2 to "_create_symlink_dir" has incompatible type "Path | None"; expected "Path"  [arg-type]
- pyodide-build/pyodide_build/cli/py_compile.py:9: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/py_compile.py:10: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/py_compile.py:11: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/py_compile.py:16: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/py_compile.py:21: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/py_compile.py:27: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/tests/recipe/test_unvendor.py:17: error: Item "None" of "Path | None" has no attribute "exists"  [union-attr]
- pyodide-build/pyodide_build/tests/recipe/test_unvendor.py:18: error: Item "None" of "Path | None" has no attribute "name"  [union-attr]
- pyodide-build/pyodide_build/tests/recipe/test_unvendor.py:21: error: Argument 1 to "unpack_archive" has incompatible type "Path | None"; expected "str | PathLike[str]"  [arg-type]
- pyodide-build/pyodide_build/tests/recipe/test_unvendor.py:54: error: Item "None" of "Path | None" has no attribute "exists"  [union-attr]
- pyodide-build/pyodide_build/tests/recipe/test_unvendor.py:55: error: Item "None" of "Path | None" has no attribute "name"  [union-attr]
- pyodide-build/pyodide_build/tests/recipe/test_unvendor.py:58: error: Argument 1 to "unpack_archive" has incompatible type "Path | None"; expected "str | PathLike[str]"  [arg-type]
- pyodide-build/pyodide_build/tests/recipe/test_skeleton.py:89: error: Name "mock_run" already defined on line 60  [no-redef]
- pyodide-build/pyodide_build/cli/skeleton.py:15: error: Untyped decorator makes function "app" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/skeleton.py:16: error: Untyped decorator makes function "app" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/skeleton.py:35: error: Untyped decorator makes function "enable" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/skeleton.py:36: error: Untyped decorator makes function "enable" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/skeleton.py:37: error: Untyped decorator makes function "enable" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/skeleton.py:69: error: Untyped decorator makes function "disable" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/skeleton.py:70: error: Untyped decorator makes function "disable" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/skeleton.py:71: error: Untyped decorator makes function "disable" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/skeleton.py:77: error: Untyped decorator makes function "disable" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/skeleton.py:106: error: Untyped decorator makes function "pin" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/skeleton.py:107: error: Untyped decorator makes function "pin" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/skeleton.py:108: error: Untyped decorator makes function "pin" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/skeleton.py:114: error: Untyped decorator makes function "pin" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/skeleton.py:143: error: Untyped decorator makes function "new_recipe_pypi" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/skeleton.py:144: error: Untyped decorator makes function "new_recipe_pypi" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/skeleton.py:145: error: Untyped decorator makes function "new_recipe_pypi" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/skeleton.py:152: error: Untyped decorator makes function "new_recipe_pypi" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/skeleton.py:158: error: Untyped decorator makes function "new_recipe_pypi" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/skeleton.py:164: error: Untyped decorator makes function "new_recipe_pypi" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/skeleton.py:169: error: Untyped decorator makes function "new_recipe_pypi" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/skeleton.py:178: error: Untyped decorator makes function "new_recipe_pypi" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/skeleton.py:186: error: Untyped decorator makes function "new_recipe_pypi" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/skeleton.py:192: error: Untyped decorator makes function "new_recipe_pypi" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/tests/test_venv.py:117: error: Unsupported right operand type for in ("Any | None")  [operator]
- pyodide-build/pyodide_build/tests/test_venv.py:280: error: Unsupported left operand type for / ("None")  [operator]
- pyodide-build/pyodide_build/tests/test_venv.py:280: note: Left operand is of type "Path | None"
- pyodide-build/pyodide_build/cli/venv.py:11: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/venv.py:12: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/venv.py:13: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/venv.py:18: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/venv.py:24: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/venv.py:31: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/venv.py:37: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/venv.py:42: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/venv.py:48: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/venv.py:53: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/venv.py:59: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/tests/test_cli_xbuildenv.py:29: error: Function is missing a type annotation for one or more parameters  [no-untyped-def]
- pyodide-build/pyodide_build/tests/test_pypabuild.py:37: error: Unused "type: ignore" comment  [unused-ignore]
- pyodide-build/pyodide_build/tests/test_pypabuild.py:41: error: Unused "type: ignore" comment  [unused-ignore]
- pyodide-build/pyodide_build/tests/test_pypabuild.py:199: error: Statement is unreachable  [unreachable]
- pyodide-build/pyodide_build/tests/test_pypabuild.py:208: error: Statement is unreachable  [unreachable]
- pyodide-build/pyodide_build/tests/test_pypabuild.py:216: error: Statement is unreachable  [unreachable]
- pyodide-build/pyodide_build/recipe/builder.py:73: error: Missing type arguments for generic type "dict"  [type-arg]
- pyodide-build/pyodide_build/recipe/builder.py:87: error: Function is missing a return type annotation  [no-untyped-def]
- pyodide-build/pyodide_build/recipe/builder.py:218: error: Incompatible types in assignment (expression has type "type[RecipeBuilderStaticLibrary]", variable has type "type[RecipeBuilderPackage]")  [assignment]
- pyodide-build/pyodide_build/recipe/builder.py:220: error: Incompatible types in assignment (expression has type "type[RecipeBuilderSharedLibrary]", variable has type "type[RecipeBuilderPackage]")  [assignment]
- pyodide-build/pyodide_build/recipe/builder.py:372: error: Argument 2 to "_extract_tarballname" has incompatible type "CaseInsensitiveDict[str]"; expected "dict[Any, Any]"  [arg-type]
- pyodide-build/pyodide_build/recipe/builder.py:507: error: List item 5 has incompatible type "Path"; expected "str"  [list-item]
- pyodide-build/pyodide_build/recipe/builder.py:509: error: Argument "err_msg" to "run_command" has incompatible type "tuple[str, Path]"; expected "str | tuple[str, ...] | None"  [arg-type]
- pyodide-build/pyodide_build/recipe/builder.py:783: error: Function is missing a type annotation for one or more parameters  [no-untyped-def]
- pyodide-build/pyodide_build/recipe/builder.py:841: error: Argument "version" to "find_matching_wheel" has incompatible type "str | None"; expected "str"  [arg-type]
- pyodide-build/pyodide_build/recipe/graph_builder.py:170: error: Argument 1 to "run" has incompatible type "list[str | None]"; expected "str | bytes | PathLike[str] | PathLike[bytes] | Sequence[str | bytes | PathLike[str] | PathLike[bytes]]"  [arg-type]
- pyodide-build/pyodide_build/tests/recipe/test_graph_builder.py:133: error: Function is missing a type annotation for one or more parameters  [no-untyped-def]
- pyodide-build/pyodide_build/tests/recipe/test_graph_builder.py:161: error: Function is missing a type annotation for one or more parameters  [no-untyped-def]
- pyodide-build/pyodide_build/cli/build_recipes.py:64: error: Untyped decorator makes function "build_recipes_no_deps" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:65: error: Untyped decorator makes function "build_recipes_no_deps" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:66: error: Untyped decorator makes function "build_recipes_no_deps" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:74: error: Untyped decorator makes function "build_recipes_no_deps" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:84: error: Untyped decorator makes function "build_recipes_no_deps" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:89: error: Untyped decorator makes function "build_recipes_no_deps" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:94: error: Untyped decorator makes function "build_recipes_no_deps" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:99: error: Untyped decorator makes function "build_recipes_no_deps" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:104: error: Untyped decorator makes function "build_recipes_no_deps" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:109: error: Untyped decorator makes function "build_recipes_no_deps" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:114: error: Untyped decorator makes function "build_recipes_no_deps" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:121: error: Untyped decorator makes function "build_recipes_no_deps" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:127: error: Untyped decorator makes function "build_recipes_no_deps" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:133: error: Untyped decorator makes function "build_recipes_no_deps" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:215: error: Untyped decorator makes function "build_recipes" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:216: error: Untyped decorator makes function "build_recipes" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:217: error: Untyped decorator makes function "build_recipes" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:225: error: Untyped decorator makes function "build_recipes" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:235: error: Untyped decorator makes function "build_recipes" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:243: error: Untyped decorator makes function "build_recipes" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:251: error: Untyped decorator makes function "build_recipes" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:260: error: Untyped decorator makes function "build_recipes" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:265: error: Untyped decorator makes function "build_recipes" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:270: error: Untyped decorator makes function "build_recipes" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:275: error: Untyped decorator makes function "build_recipes" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:280: error: Untyped decorator makes function "build_recipes" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:285: error: Untyped decorator makes function "build_recipes" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:290: error: Untyped decorator makes function "build_recipes" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:295: error: Untyped decorator makes function "build_recipes" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:300: error: Untyped decorator makes function "build_recipes" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:306: error: Untyped decorator makes function "build_recipes" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:314: error: Untyped decorator makes function "build_recipes" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build_recipes.py:320: error: Untyped decorator makes function "build_recipes" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/tests/test_cleanup.py:36: error: Function is missing a return type annotation  [no-untyped-def]
- pyodide-build/pyodide_build/tests/test_cleanup.py:55: error: Function is missing a return type annotation  [no-untyped-def]
- pyodide-build/pyodide_build/tests/test_cleanup.py:72: error: Function is missing a return type annotation  [no-untyped-def]
- pyodide-build/pyodide_build/tests/test_cleanup.py:99: error: Function is missing a return type annotation  [no-untyped-def]
- pyodide-build/pyodide_build/cli/clean.py:10: error: Untyped decorator makes function "app" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/clean.py:11: error: Untyped decorator makes function "app" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/clean.py:31: error: Untyped decorator makes function "clean_recipes" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/clean.py:32: error: Untyped decorator makes function "clean_recipes" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/clean.py:33: error: Untyped decorator makes function "clean_recipes" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/clean.py:38: error: Untyped decorator makes function "clean_recipes" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build.py:237: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build.py:244: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build.py:245: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build.py:252: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build.py:259: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build.py:266: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build.py:271: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build.py:276: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build.py:284: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build.py:289: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build.py:295: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build.py:305: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build.py:315: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build.py:326: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build.py:334: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/cli/build.py:342: error: Untyped decorator makes function "main" untyped  [untyped-decorator]
- pyodide-build/pyodide_build/tests/test_cli.py:435: error: Function is missing a type annotation for one or more parameters  [no-untyped-def]
- pyproject.toml: note: unused section(s): module = ['PIL.*', 'docutils.parsers.rst', 'loky', 'matplotlib.*', 'pytest_pyodide', 'pytest_pyodide.runner', 'pytest_pyodide.utils', 'termcolor', 'test', 'tomli', 'typer']
+ Traceback (most recent call last):
+   File "mypy/checkexpr.py", line 6178, in accept
+   File "mypy/nodes.py", line 3420, in accept
+   File "mypy/checkexpr.py", line 4967, in visit_type_alias_expr
+     return self.alias_type_in_runtime_context(alias.node, ctx=alias, alias_definition=True)
+   File "mypy/checkexpr.py", line 5024, in alias_type_in_runtime_context
+     return self.chk.named_generic_type("types.UnionType", item.items)
+   File "mypy/checker.py", line 7788, in named_generic_type
+   File "mypy/checker.py", line 7797, in lookup_typeinfo
+     assert isinstance(node, TypeInfo), node
+ AssertionError: TypeAlias:723(
+   UnionType
+   Never
+   False)
+ 

anyio (https://github.com/agronholm/anyio)
+ ...typeshed_to_test/stdlib/typing.pyi:1002: error: INTERNAL ERROR -- Please try using mypy master on GitHub:
+ https://mypy.readthedocs.io/en/stable/common_issues.html#using-a-development-mypy-build
+ Please report a bug at https://github.com/python/mypy/issues
+ version: 2.1.0
+ ...typeshed_to_test/stdlib/typing.pyi:1002: note: use --pdb to drop into pdb
- src/anyio/_core/_eventloop.py:21: error: Name "sniffio" already defined on line 19  [no-redef]
+ Traceback (most recent call last):
+   File "mypy/checkexpr.py", line 6178, in accept
+   File "mypy/nodes.py", line 3420, in accept
+   File "mypy/checkexpr.py", line 4967, in visit_type_alias_expr
+     return self.alias_type_in_runtime_context(alias.node, ctx=alias, alias_definition=True)
+   File "mypy/checkexpr.py", line 5024, in alias_type_in_runtime_context
+     return self.chk.named_generic_type("types.UnionType", item.items)
+   File "mypy/checker.py", line 7788, in named_generic_type
+   File "mypy/checker.py", line 7797, in lookup_typeinfo
+     assert isinstance(node, TypeInfo), node
+ AssertionError: TypeAlias:723(
+   UnionType
+   Never
+   False)
+ 
- src/anyio/pytest_plugin.py:102: error: Untyped decorator makes function "pytest_fixture_setup" untyped  [untyped-decorator]
- src/anyio/pytest_plugin.py:163: error: Untyped decorator makes function "pytest_pycollect_makeitem" untyped  [untyped-decorator]
- src/anyio/pytest_plugin.py:205: error: Unused "type: ignore" comment  [unused-ignore]
- src/anyio/pytest_plugin.py:239: error: Untyped decorator makes function "pytest_pyfunc_call" untyped  [untyped-decorator]
- src/anyio/pytest_plugin.py:276: error: Untyped decorator makes function "anyio_backend" untyped  [untyped-decorator]
- src/anyio/pytest_plugin.py:281: error: Untyped decorator makes function "anyio_backend_name" untyped  [untyped-decorator]
- src/anyio/pytest_plugin.py:289: error: Untyped decorator makes function "anyio_backend_options" untyped  [untyped-decorator]
- src/anyio/pytest_plugin.py:358: error: Untyped decorator makes function "free_tcp_port_factory" untyped  [untyped-decorator]
- src/anyio/pytest_plugin.py:363: error: Untyped decorator makes function "free_udp_port_factory" untyped  [untyped-decorator]
- src/anyio/pytest_plugin.py:368: error: Untyped decorator makes function "free_tcp_port" untyped  [untyped-decorator]
- src/anyio/pytest_plugin.py:373: error: Untyped decorator makes function "free_udp_port" untyped  [untyped-decorator]
- src/anyio/itertools.py:144: error: No overload variant of "add" matches argument types "T", "T"  [call-overload]
- src/anyio/itertools.py:144: note: Possible overload variants:
- src/anyio/itertools.py:144: note:     def [_T_contra, _T_co] add(SupportsAdd[_T_contra, _T_co], _T_contra, /) -> _T_co
- src/anyio/itertools.py:144: note:     def [_T_contra, _T_co] add(_T_contra, SupportsRAdd[_T_contra, _T_co], /) -> _T_co
- src/anyio/_backends/_trio.py:192: error: Unused "type: ignore" comment  [unused-ignore]
- src/anyio/_backends/_trio.py:325: error: Class cannot subclass "Instrument" (has type "Any")  [misc]
- src/anyio/_backends/_trio.py:366: error: Unused "type: ignore" comment  [unused-ignore]

@srittau
Copy link
Copy Markdown
Collaborator

srittau commented Jun 4, 2026

I've files python/mypy#21588. I'm marking this PR as deferred an draft for now, as I see no way forward until this fixed in mypy.

@srittau srittau marked this pull request as draft June 4, 2026 10:58
@srittau srittau added the status: deferred Issue or PR deferred until some precondition is fixed label Jun 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

status: deferred Issue or PR deferred until some precondition is fixed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants