diff --git a/.github/workflows/daily.yml b/.github/workflows/daily.yml index be0d5b7cad71..f42527f995aa 100644 --- a/.github/workflows/daily.yml +++ b/.github/workflows/daily.yml @@ -35,7 +35,7 @@ jobs: strategy: matrix: os: ["ubuntu-latest", "windows-latest", "macos-latest"] - python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14-dev"] fail-fast: false steps: diff --git a/.github/workflows/stubtest_stdlib.yml b/.github/workflows/stubtest_stdlib.yml index b2ac305aefd2..2a574584ff08 100644 --- a/.github/workflows/stubtest_stdlib.yml +++ b/.github/workflows/stubtest_stdlib.yml @@ -31,7 +31,7 @@ jobs: strategy: matrix: os: ["ubuntu-latest", "windows-latest", "macos-latest"] - python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14-dev"] fail-fast: false steps: diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index d81261fc8a71..e5e037be2393 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -61,7 +61,8 @@ jobs: strategy: matrix: platform: ["linux", "win32", "darwin"] - python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] + # TODO (2025-05-10) "3.13.2" should be "3.14-dev", see below. + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.13.2"] fail-fast: false steps: - uses: actions/checkout@v4 @@ -77,10 +78,17 @@ jobs: printf "Installing APT packages:\n $(echo $DEPENDENCIES | sed 's/ /\n /g')\n" sudo apt-get install -qy $DEPENDENCIES fi - - run: | - # python-version can sometimes be pinned to a specific version or to "-dev", but - # mypy understands only X.Y version numbers. - MYPY_PY_VERSION=$(echo ${{ matrix.python-version }} | cut -d - -f 1 | cut -d . -f 1-2) + - name: Run mypy_test.py + run: | + # TODO: (2025-05-10) This is a bad hack to work around mypy crashing + # when running on Python 3.14. See https://github.com/python/mypy/pull/19020. + if [[ "${{ matrix.python-version }}" == "3.13.2" ]]; then + MYPY_PY_VERSION="3.14" + else + # python-version can sometimes be pinned to a specific version or to "-dev", but + # mypy understands only X.Y version numbers. + MYPY_PY_VERSION=$(echo ${{ matrix.python-version }} | cut -d - -f 1 | cut -d . -f 1-2) + fi python ./tests/mypy_test.py --platform=${{ matrix.platform }} --python-version=${MYPY_PY_VERSION} regression-tests: @@ -103,7 +111,7 @@ jobs: strategy: matrix: python-platform: ["Linux", "Windows", "Darwin"] - python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] fail-fast: false steps: - uses: actions/checkout@v4 diff --git a/README.md b/README.md index b52ecf3a5de9..ee09529b967a 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ the project the stubs are for, but instead report them here to typeshed.** Further documentation on stub files, typeshed, and Python's typing system in general, can also be found at https://typing.readthedocs.io/en/latest/. -Typeshed supports Python versions 3.9 to 3.13. +Typeshed supports Python versions 3.9 to 3.14. ## Using diff --git a/requirements-tests.txt b/requirements-tests.txt index a81e7cf21f89..6005614b24d8 100644 --- a/requirements-tests.txt +++ b/requirements-tests.txt @@ -6,15 +6,20 @@ pyright==1.1.400 pytype==2024.10.11; platform_system != "Windows" and python_version >= "3.10" and python_version < "3.13" # Libraries used by our various scripts. -aiohttp==3.11.15 -grpcio-tools>=1.66.2 # For grpc_tools.protoc +# TODO (2025-05-09): Installing this on Python 3.14 on Windows fails at +# the moment. +aiohttp==3.11.15; python_version < "3.14" +# TODO (2025-05-09): No wheels exist for Python 3.14 yet, slowing down CI +# considerably and prone to fail. +grpcio-tools>=1.66.2; python_version < "3.14" # For grpc_tools.protoc mypy-protobuf==3.6.0 packaging==24.2 pathspec>=0.11.1 pre-commit # Required by create_baseline_stubs.py. Must match .pre-commit-config.yaml. ruff==0.11.4 -stubdefaulter==0.1.0 +# TODO (2025-05-07): Dependency libcst doesn't support Python 3.14 yet. +stubdefaulter==0.1.0; python_version < "3.14" termcolor>=2.3 tomli==2.2.1 tomlkit==0.13.2 diff --git a/stdlib/@tests/stubtest_allowlists/common.txt b/stdlib/@tests/stubtest_allowlists/common.txt index 7746a8082a51..a036c227f118 100644 --- a/stdlib/@tests/stubtest_allowlists/common.txt +++ b/stdlib/@tests/stubtest_allowlists/common.txt @@ -183,11 +183,6 @@ _collections_abc.AsyncGenerator.__anext__ _collections_abc.AsyncGenerator.aclose _collections_abc.AsyncIterator.__anext__ -# Pretend typing.ByteString is a Union, to better match its documented semantics. -# As a side effect, this changes the definition of collections.abc.ByteString, which is okay, -# because it's not an ABC that makes any sense and was deprecated in 3.12 -_collections_abc.ByteString - _collections_abc.Callable # Typing-related weirdness _collections_abc.Mapping.get # Adding None to the Union messed up mypy _collections_abc.Sequence.index # Supporting None in end is not mandatory @@ -215,12 +210,7 @@ _?ast.stmt.__init__ _ast.ImportFrom.level # None on the class, but never None on instances -ast.Bytes.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs -ast.Ellipsis.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs ast.ImportFrom.level # None on the class, but never None on instances -ast.NameConstant.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs -ast.Num.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs -ast.Str.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs ast.NodeVisitor.visit_\w+ # Methods are discovered dynamically, see #3796 _?asyncio.Future.__init__ # Usually initialized from c object asyncio.futures.Future.__init__ # Usually initialized from c object @@ -312,7 +302,6 @@ enum.auto.__xor__ # enum.auto is magic, see comments functools._lru_cache_wrapper.cache_parameters # Cannot be detected statically functools.cached_property.__set__ # doesn't exist, but cached_property is settable by another mechanism -_?hashlib.scrypt # Raises TypeError if salt, n, r or p are None hmac.new # Raises TypeError if optional argument digestmod is not provided http.HTTPStatus.description # set in __new__; work-around for enum wierdness http.HTTPStatus.phrase # set in __new__; work-around for enum wierdness @@ -325,7 +314,6 @@ importlib._bootstrap_external.FileLoader.get_resource_reader importlib._bootstrap_external.FileLoader.load_module importlib.abc.FileLoader.get_filename importlib.abc.FileLoader.load_module -importlib.abc.Traversable.open # Problematic protocol signature at runtime, see source code comments. importlib.machinery.ExtensionFileLoader.get_filename # We can't distinguish not having a default value from having a default value of inspect.Parameter.empty @@ -472,7 +460,6 @@ typing_extensions\.TypeVar.* typing_extensions\._SpecialForm.* # Special primitives -typing\.ByteString typing(_extensions)?\.AbstractSet typing(_extensions)?\.AsyncGenerator typing(_extensions)?\.AsyncIterable @@ -527,10 +514,6 @@ typing(_extensions)?\.(Async)?ContextManager typing(_extensions)?\.IO\.__iter__ typing(_extensions)?\.IO\.__next__ -# Will always raise. Not included to avoid type checkers inferring that -# TypeAliasType instances are callable. -typing_extensions.TypeAliasType.__call__ - types.MethodType.__closure__ # read-only but not actually a property; stubtest thinks it doesn't exist. types.MethodType.__code__ # read-only but not actually a property; stubtest thinks it doesn't exist. types.MethodType.__defaults__ # read-only but not actually a property; stubtest thinks it doesn't exist. diff --git a/stdlib/@tests/stubtest_allowlists/darwin-py314.txt b/stdlib/@tests/stubtest_allowlists/darwin-py314.txt new file mode 100644 index 000000000000..31c60195d9b9 --- /dev/null +++ b/stdlib/@tests/stubtest_allowlists/darwin-py314.txt @@ -0,0 +1,23 @@ +# ==================================================================== +# TODO: New errors in Python 3.14 that need to be fixed or moved below +# ==================================================================== + +_curses.assume_default_colors +_posixsubprocess.fork_exec +asyncio.tools +asyncio.unix_events.__all__ +asyncio.unix_events.DefaultEventLoopPolicy +asyncio.unix_events._DefaultEventLoopPolicy +ctypes.c_double_complex._type_ +ctypes.c_float_complex._type_ +ctypes.c_longdouble_complex._type_ +multiprocessing.popen_fork.Popen.interrupt +multiprocessing.reduction.ACKNOWLEDGE +posix.readinto + + +# ======= +# >= 3.13 +# ======= + +(mmap.MAP_32BIT)? # Exists locally on MacOS but not on GitHub diff --git a/stdlib/@tests/stubtest_allowlists/linux-py314.txt b/stdlib/@tests/stubtest_allowlists/linux-py314.txt new file mode 100644 index 000000000000..c6e1bc3bda5f --- /dev/null +++ b/stdlib/@tests/stubtest_allowlists/linux-py314.txt @@ -0,0 +1,36 @@ +# ==================================================================== +# TODO: New errors in Python 3.14 that need to be fixed or moved below +# ==================================================================== + +_curses.assume_default_colors +_posixsubprocess.fork_exec +_socket.CAN_RAW_ERR_FILTER +_socket.IPV6_RECVERR +_socket.IP_FREEBIND +_socket.IP_RECVERR +_socket.IP_RECVORIGDSTADDR +_socket.SO_ORIGINAL_DST +_socket.VMADDR_CID_LOCAL +asyncio.tools +asyncio.unix_events.__all__ +asyncio.unix_events.DefaultEventLoopPolicy +asyncio.unix_events._DefaultEventLoopPolicy +ctypes.c_double_complex._type_ +ctypes.c_float_complex._type_ +ctypes.c_longdouble_complex._type_ +errno.EHWPOISON +multiprocessing.popen_fork.Popen.interrupt +multiprocessing.reduction.ACKNOWLEDGE +os.SCHED_DEADLINE +os.SCHED_NORMAL +posix.SCHED_DEADLINE +posix.SCHED_NORMAL +posix.readinto +select.EPOLLWAKEUP +socket.CAN_RAW_ERR_FILTER +socket.IPV6_RECVERR +socket.IP_FREEBIND +socket.IP_RECVERR +socket.IP_RECVORIGDSTADDR +socket.SO_ORIGINAL_DST +socket.VMADDR_CID_LOCAL diff --git a/stdlib/@tests/stubtest_allowlists/py310.txt b/stdlib/@tests/stubtest_allowlists/py310.txt index 73bc3da9eb6e..cb686b140098 100644 --- a/stdlib/@tests/stubtest_allowlists/py310.txt +++ b/stdlib/@tests/stubtest_allowlists/py310.txt @@ -150,6 +150,32 @@ tkinter.tix.TclVersion tkinter.tix.TkVersion +# ======= +# <= 3.13 +# ======= + +# Pretend typing.ByteString is a Union, to better match its documented semantics. +# As a side effect, this changes the definition of collections.abc.ByteString, which is okay, +# because it's not an ABC that makes any sense and was deprecated in 3.12 +_collections_abc.ByteString + +ast.Bytes.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs +ast.Ellipsis.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs +ast.NameConstant.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs +ast.Num.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs +ast.Str.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs + +_?hashlib.scrypt # Raises TypeError if salt, n, r or p are None + +importlib.abc.Traversable.open # Problematic protocol signature at runtime, see source code comments. + +typing\.ByteString + +# Will always raise. Not included to avoid type checkers inferring that +# TypeAliasType instances are callable. +typing_extensions.TypeAliasType.__call__ + + # ============================================================= # Allowlist entries that cannot or should not be fixed; >= 3.10 # ============================================================= diff --git a/stdlib/@tests/stubtest_allowlists/py311.txt b/stdlib/@tests/stubtest_allowlists/py311.txt index 655e603c06d1..80b55805b3e6 100644 --- a/stdlib/@tests/stubtest_allowlists/py311.txt +++ b/stdlib/@tests/stubtest_allowlists/py311.txt @@ -117,6 +117,32 @@ tkinter.tix.TclVersion tkinter.tix.TkVersion +# ======= +# <= 3.13 +# ======= + +# Pretend typing.ByteString is a Union, to better match its documented semantics. +# As a side effect, this changes the definition of collections.abc.ByteString, which is okay, +# because it's not an ABC that makes any sense and was deprecated in 3.12 +_collections_abc.ByteString + +ast.Bytes.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs +ast.Ellipsis.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs +ast.NameConstant.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs +ast.Num.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs +ast.Str.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs + +_?hashlib.scrypt # Raises TypeError if salt, n, r or p are None + +importlib.abc.Traversable.open # Problematic protocol signature at runtime, see source code comments. + +typing\.ByteString + +# Will always raise. Not included to avoid type checkers inferring that +# TypeAliasType instances are callable. +typing_extensions.TypeAliasType.__call__ + + # ============================================================= # Allowlist entries that cannot or should not be fixed; >= 3.11 # ============================================================= diff --git a/stdlib/@tests/stubtest_allowlists/py312.txt b/stdlib/@tests/stubtest_allowlists/py312.txt index 3222fed0d8aa..6b225d0594bd 100644 --- a/stdlib/@tests/stubtest_allowlists/py312.txt +++ b/stdlib/@tests/stubtest_allowlists/py312.txt @@ -100,6 +100,32 @@ tkinter.tix.TclVersion tkinter.tix.TkVersion +# ======= +# <= 3.13 +# ======= + +# Pretend typing.ByteString is a Union, to better match its documented semantics. +# As a side effect, this changes the definition of collections.abc.ByteString, which is okay, +# because it's not an ABC that makes any sense and was deprecated in 3.12 +_collections_abc.ByteString + +ast.Bytes.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs +ast.Ellipsis.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs +ast.NameConstant.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs +ast.Num.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs +ast.Str.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs + +_?hashlib.scrypt # Raises TypeError if salt, n, r or p are None + +importlib.abc.Traversable.open # Problematic protocol signature at runtime, see source code comments. + +typing\.ByteString + +# Will always raise. Not included to avoid type checkers inferring that +# TypeAliasType instances are callable. +typing_extensions.TypeAliasType.__call__ + + # ============================================================= # Allowlist entries that cannot or should not be fixed; >= 3.12 # ============================================================= diff --git a/stdlib/@tests/stubtest_allowlists/py313.txt b/stdlib/@tests/stubtest_allowlists/py313.txt index ba44606f9179..9ef94b218899 100644 --- a/stdlib/@tests/stubtest_allowlists/py313.txt +++ b/stdlib/@tests/stubtest_allowlists/py313.txt @@ -61,6 +61,32 @@ typing(_extensions)?\.IO\.write typing(_extensions)?\.IO\.writelines +# ======= +# <= 3.13 +# ======= + +# Pretend typing.ByteString is a Union, to better match its documented semantics. +# As a side effect, this changes the definition of collections.abc.ByteString, which is okay, +# because it's not an ABC that makes any sense and was deprecated in 3.12 +_collections_abc.ByteString + +ast.Bytes.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs +ast.Ellipsis.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs +ast.NameConstant.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs +ast.Num.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs +ast.Str.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs + +_?hashlib.scrypt # Raises TypeError if salt, n, r or p are None + +importlib.abc.Traversable.open # Problematic protocol signature at runtime, see source code comments. + +typing\.ByteString + +# Will always raise. Not included to avoid type checkers inferring that +# TypeAliasType instances are callable. +typing_extensions.TypeAliasType.__call__ + + # ============================================================= # Allowlist entries that cannot or should not be fixed; >= 3.13 # ============================================================= diff --git a/stdlib/@tests/stubtest_allowlists/py314.txt b/stdlib/@tests/stubtest_allowlists/py314.txt new file mode 100644 index 000000000000..5c6f2fd01493 --- /dev/null +++ b/stdlib/@tests/stubtest_allowlists/py314.txt @@ -0,0 +1,798 @@ +# ==================================================================== +# TODO: New errors in Python 3.14 that need to be fixed or moved below +# ==================================================================== + +_ast.Add.__annotations_cache__ +_ast.And.__annotations_cache__ +_ast.AnnAssign.__annotations_cache__ +_ast.Assert.__annotations_cache__ +_ast.Assign.__annotations_cache__ +_ast.AsyncFor.__annotations_cache__ +_ast.AsyncFunctionDef.__annotations_cache__ +_ast.AsyncWith.__annotations_cache__ +_ast.Attribute.__annotations_cache__ +_ast.AugAssign.__annotations_cache__ +_ast.Await.__annotations_cache__ +_ast.BinOp.__annotations_cache__ +_ast.BitAnd.__annotations_cache__ +_ast.BitOr.__annotations_cache__ +_ast.BitXor.__annotations_cache__ +_ast.BoolOp.__annotations_cache__ +_ast.Break.__annotations_cache__ +_ast.Call.__annotations_cache__ +_ast.ClassDef.__annotations_cache__ +_ast.Compare.__annotations_cache__ +_ast.Constant.__annotations_cache__ +_ast.Continue.__annotations_cache__ +_ast.Del.__annotations_cache__ +_ast.Delete.__annotations_cache__ +_ast.Dict.__annotations_cache__ +_ast.DictComp.__annotations_cache__ +_ast.Div.__annotations_cache__ +_ast.Eq.__annotations_cache__ +_ast.ExceptHandler.__annotations_cache__ +_ast.Expr.__annotations_cache__ +_ast.Expression.__annotations_cache__ +_ast.FloorDiv.__annotations_cache__ +_ast.For.__annotations_cache__ +_ast.FormattedValue.__annotations_cache__ +_ast.FunctionDef.__annotations_cache__ +_ast.FunctionType.__annotations_cache__ +_ast.GeneratorExp.__annotations_cache__ +_ast.Global.__annotations_cache__ +_ast.Gt.__annotations_cache__ +_ast.GtE.__annotations_cache__ +_ast.If.__annotations_cache__ +_ast.IfExp.__annotations_cache__ +_ast.Import.__annotations_cache__ +_ast.ImportFrom.__annotations_cache__ +_ast.In.__annotations_cache__ +_ast.Interactive.__annotations_cache__ +_ast.Invert.__annotations_cache__ +_ast.Is.__annotations_cache__ +_ast.IsNot.__annotations_cache__ +_ast.JoinedStr.__annotations_cache__ +_ast.LShift.__annotations_cache__ +_ast.Lambda.__annotations_cache__ +_ast.List.__annotations_cache__ +_ast.ListComp.__annotations_cache__ +_ast.Load.__annotations_cache__ +_ast.Lt.__annotations_cache__ +_ast.LtE.__annotations_cache__ +_ast.MatMult.__annotations_cache__ +_ast.Match.__annotations_cache__ +_ast.MatchAs.__annotations_cache__ +_ast.MatchClass.__annotations_cache__ +_ast.MatchMapping.__annotations_cache__ +_ast.MatchOr.__annotations_cache__ +_ast.MatchSequence.__annotations_cache__ +_ast.MatchSingleton.__annotations_cache__ +_ast.MatchStar.__annotations_cache__ +_ast.MatchValue.__annotations_cache__ +_ast.Mod.__annotations_cache__ +_ast.Module.__annotations_cache__ +_ast.Mult.__annotations_cache__ +_ast.Name.__annotations_cache__ +_ast.NamedExpr.__annotations_cache__ +_ast.Nonlocal.__annotations_cache__ +_ast.Not.__annotations_cache__ +_ast.NotEq.__annotations_cache__ +_ast.NotIn.__annotations_cache__ +_ast.Or.__annotations_cache__ +_ast.ParamSpec.__annotations_cache__ +_ast.Pass.__annotations_cache__ +_ast.Pow.__annotations_cache__ +_ast.RShift.__annotations_cache__ +_ast.Raise.__annotations_cache__ +_ast.Return.__annotations_cache__ +_ast.Set.__annotations_cache__ +_ast.SetComp.__annotations_cache__ +_ast.Slice.__annotations_cache__ +_ast.Starred.__annotations_cache__ +_ast.Store.__annotations_cache__ +_ast.Sub.__annotations_cache__ +_ast.Subscript.__annotations_cache__ +_ast.Try.__annotations_cache__ +_ast.TryStar.__annotations_cache__ +_ast.Tuple.__annotations_cache__ +_ast.TypeAlias.__annotations_cache__ +_ast.TypeIgnore.__annotations_cache__ +_ast.TypeVar.__annotations_cache__ +_ast.TypeVarTuple.__annotations_cache__ +_ast.UAdd.__annotations_cache__ +_ast.USub.__annotations_cache__ +_ast.UnaryOp.__annotations_cache__ +_ast.While.__annotations_cache__ +_ast.With.__annotations_cache__ +_ast.Yield.__annotations_cache__ +_ast.YieldFrom.__annotations_cache__ +_ast.alias.__annotations_cache__ +_ast.arg.__annotations_cache__ +_ast.arguments.__annotations_cache__ +_ast.comprehension.__annotations_cache__ +_ast.keyword.__annotations_cache__ +_ast.match_case.__annotations_cache__ +_ast.withitem.__annotations_cache__ +_asyncio.all_tasks +_asyncio.future_add_to_awaited_by +_asyncio.future_discard_from_awaited_by +_compression +_contextvars.Token.__enter__ +_contextvars.Token.__exit__ +_ctypes.POINTER +_ctypes.byref +_ctypes.byref +_ctypes.pointer +_decimal.Decimal.from_number +_decimal.IEEEContext +_decimal.IEEE_CONTEXT_MAX_BITS +_heapq.heapify_max +_heapq.heappop_max +_heapq.heappush_max +_heapq.heappushpop_max +_heapq.heapreplace_max +_imp.pyc_magic_number_token +_socket.IP_RECVTTL +_socket.if_indextoname +_ssl.HAS_PHA +_thread.RLock.locked +_thread.set_name +annotationlib +argparse.HelpFormatter.__init__ +argparse.HelpFormatter.__init__ +ast.Add.__annotations_cache__ +ast.And.__annotations_cache__ +ast.AnnAssign.__annotations_cache__ +ast.Assert.__annotations_cache__ +ast.Assign.__annotations_cache__ +ast.AsyncFor.__annotations_cache__ +ast.AsyncFunctionDef.__annotations_cache__ +ast.AsyncWith.__annotations_cache__ +ast.Attribute.__annotations_cache__ +ast.AugAssign.__annotations_cache__ +ast.Await.__annotations_cache__ +ast.BinOp.__annotations_cache__ +ast.BitAnd.__annotations_cache__ +ast.BitOr.__annotations_cache__ +ast.BitXor.__annotations_cache__ +ast.BoolOp.__annotations_cache__ +ast.Break.__annotations_cache__ +ast.Call.__annotations_cache__ +ast.ClassDef.__annotations_cache__ +ast.Compare.__annotations_cache__ +ast.Constant.__annotations_cache__ +ast.Continue.__annotations_cache__ +ast.Del.__annotations_cache__ +ast.Delete.__annotations_cache__ +ast.Dict.__annotations_cache__ +ast.DictComp.__annotations_cache__ +ast.Div.__annotations_cache__ +ast.Eq.__annotations_cache__ +ast.ExceptHandler.__annotations_cache__ +ast.Expr.__annotations_cache__ +ast.Expression.__annotations_cache__ +ast.FloorDiv.__annotations_cache__ +ast.For.__annotations_cache__ +ast.FormattedValue.__annotations_cache__ +ast.FunctionDef.__annotations_cache__ +ast.FunctionType.__annotations_cache__ +ast.GeneratorExp.__annotations_cache__ +ast.Global.__annotations_cache__ +ast.Gt.__annotations_cache__ +ast.GtE.__annotations_cache__ +ast.If.__annotations_cache__ +ast.IfExp.__annotations_cache__ +ast.Import.__annotations_cache__ +ast.ImportFrom.__annotations_cache__ +ast.In.__annotations_cache__ +ast.Interactive.__annotations_cache__ +ast.Interpolation +ast.Invert.__annotations_cache__ +ast.Is.__annotations_cache__ +ast.IsNot.__annotations_cache__ +ast.JoinedStr.__annotations_cache__ +ast.LShift.__annotations_cache__ +ast.Lambda.__annotations_cache__ +ast.List.__annotations_cache__ +ast.ListComp.__annotations_cache__ +ast.Load.__annotations_cache__ +ast.Lt.__annotations_cache__ +ast.LtE.__annotations_cache__ +ast.MatMult.__annotations_cache__ +ast.Match.__annotations_cache__ +ast.MatchAs.__annotations_cache__ +ast.MatchClass.__annotations_cache__ +ast.MatchMapping.__annotations_cache__ +ast.MatchOr.__annotations_cache__ +ast.MatchSequence.__annotations_cache__ +ast.MatchSingleton.__annotations_cache__ +ast.MatchStar.__annotations_cache__ +ast.MatchValue.__annotations_cache__ +ast.Mod.__annotations_cache__ +ast.Module.__annotations_cache__ +ast.Mult.__annotations_cache__ +ast.Name.__annotations_cache__ +ast.NamedExpr.__annotations_cache__ +ast.Nonlocal.__annotations_cache__ +ast.Not.__annotations_cache__ +ast.NotEq.__annotations_cache__ +ast.NotIn.__annotations_cache__ +ast.Or.__annotations_cache__ +ast.ParamSpec.__annotations_cache__ +ast.Pass.__annotations_cache__ +ast.Pow.__annotations_cache__ +ast.RShift.__annotations_cache__ +ast.Raise.__annotations_cache__ +ast.Return.__annotations_cache__ +ast.Set.__annotations_cache__ +ast.SetComp.__annotations_cache__ +ast.Slice.__annotations_cache__ +ast.Starred.__annotations_cache__ +ast.Store.__annotations_cache__ +ast.Sub.__annotations_cache__ +ast.Subscript.__annotations_cache__ +ast.TemplateStr +ast.Try.__annotations_cache__ +ast.TryStar.__annotations_cache__ +ast.Tuple.__annotations_cache__ +ast.TypeAlias.__annotations_cache__ +ast.TypeIgnore.__annotations_cache__ +ast.TypeVar.__annotations_cache__ +ast.TypeVarTuple.__annotations_cache__ +ast.UAdd.__annotations_cache__ +ast.USub.__annotations_cache__ +ast.UnaryOp.__annotations_cache__ +ast.While.__annotations_cache__ +ast.With.__annotations_cache__ +ast.Yield.__annotations_cache__ +ast.YieldFrom.__annotations_cache__ +ast.alias.__annotations_cache__ +ast.arg.__annotations_cache__ +ast.arguments.__annotations_cache__ +ast.comprehension.__annotations_cache__ +ast.keyword.__annotations_cache__ +ast.main +ast.match_case.__annotations_cache__ +ast.withitem.__annotations_cache__ +asyncio.__all__ +asyncio.FrameCallGraphEntry +asyncio.FutureCallGraph +asyncio._AbstractEventLoopPolicy +asyncio._DefaultEventLoopPolicy +asyncio.__all__ +asyncio._get_event_loop_policy +asyncio._set_event_loop_policy +asyncio.capture_call_graph +asyncio.eager_task_factory +asyncio.eager_task_factory +asyncio.eager_task_factory +asyncio.eager_task_factory +asyncio.format_call_graph +asyncio.future_add_to_awaited_by +asyncio.future_discard_from_awaited_by +asyncio.print_call_graph +asyncio.events.__all__ +asyncio.events.AbstractEventLoopPolicy +asyncio.events.BaseDefaultEventLoopPolicy +asyncio.events._AbstractEventLoopPolicy +asyncio.events.__all__ +asyncio.events._get_event_loop_policy +asyncio.events._set_event_loop_policy +asyncio.futures.__all__ +asyncio.futures.__all__ +asyncio.futures.future_add_to_awaited_by +asyncio.futures.future_discard_from_awaited_by +asyncio.graph +asyncio.tasks.eager_task_factory +asyncio.tasks.eager_task_factory +asyncio.tasks.eager_task_factory +asyncio.tasks.eager_task_factory +bdb.Bdb.__init__ +bdb.Bdb.disable_current_event +bdb.Bdb.restart_events +bdb.Bdb.start_trace +bdb.Bdb.stop_trace +builtins.BaseExceptionGroup.split +builtins.BaseExceptionGroup.subgroup +builtins.ExceptionGroup.split +builtins.ExceptionGroup.subgroup +builtins.bytearray.resize +builtins.classmethod.__annotate__ +builtins.classmethod.__class_getitem__ +builtins.complex.from_number +builtins.float.from_number +builtins.int.__round__ +builtins.memoryview.__class_getitem__ +builtins.staticmethod.__annotate__ +builtins.staticmethod.__class_getitem__ +builtins.type.__annotate__ +code.compile_command +codeop.compile_command +compression +compression.bz2 +compression.gzip +compression.lzma +compression.zlib +compression.zstd +concurrent.futures.__all__ +concurrent.futures.Executor.map +concurrent.futures.InterpreterPoolExecutor +concurrent.futures.ProcessPoolExecutor.kill_workers +concurrent.futures.ProcessPoolExecutor.map +concurrent.futures.ProcessPoolExecutor.terminate_workers +concurrent.futures.ThreadPoolExecutor.BROKEN +concurrent.futures.ThreadPoolExecutor.prepare_context +concurrent.futures.__all__ +concurrent.futures._base.Executor.map +concurrent.futures.interpreter +concurrent.futures.process.ProcessPoolExecutor.kill_workers +concurrent.futures.process.ProcessPoolExecutor.map +concurrent.futures.process.ProcessPoolExecutor.terminate_workers +concurrent.futures.thread.ThreadPoolExecutor.BROKEN +concurrent.futures.thread.ThreadPoolExecutor.prepare_context +concurrent.futures.thread.WorkerContext +concurrent.futures.thread._WorkItem.__init__ +concurrent.futures.thread._WorkItem.__init__ +concurrent.futures.thread._WorkItem.__init__ +concurrent.futures.thread._WorkItem.run +concurrent.futures.thread._worker +concurrent.futures.thread._worker +concurrent.futures.thread._worker +configparser.__all__ +configparser.InvalidWriteError +configparser.UnnamedSectionDisabledError +configparser.__all__ +contextvars.Token.__enter__ +contextvars.Token.__exit__ +ctypes.POINTER +ctypes.POINTER +ctypes.byref +ctypes.byref +ctypes.memoryview_at +ctypes.pointer +ctypes.py_object.__class_getitem__ +ctypes.util.dllist +ctypes.wintypes.HCONV +ctypes.wintypes.HCONVLIST +ctypes.wintypes.HCURSOR +ctypes.wintypes.HDDEDATA +ctypes.wintypes.HDROP +ctypes.wintypes.HFILE +ctypes.wintypes.HRESULT +ctypes.wintypes.HSZ +dataclasses.Field.__init__ +dataclasses.Field.doc +dataclasses.field +dataclasses.make_dataclass +datetime.date.strptime +datetime.time.strptime +decimal.Decimal.from_number +decimal.DecimalTuple.__annotate_func__ +decimal.DecimalTuple.__annotations_cache__ +decimal.IEEE_CONTEXT_MAX_BITS +dis.Bytecode.__init__ +dis.Instruction.make +dis.dis +dis.disassemble +dis.distb +enum.Enum.__signature__ +enum.EnumMeta.__signature__ +enum.EnumType.__signature__ +faulthandler.dump_c_stack +fnmatch.__all__ +fnmatch.filterfalse +fractions.Fraction.__pow__ +fractions.Fraction.__rpow__ +fractions.Fraction.from_number +functools.__all__ +functools.Placeholder +functools.WRAPPER_ASSIGNMENTS +functools.partialmethod.__new__ +functools.partialmethod.__new__ +functools.partialmethod.__new__ +functools.reduce +functools.reduce +functools.update_wrapper +functools.wraps +getpass.getpass +gzip.GzipFile.readinto +gzip.GzipFile.readinto +gzip.GzipFile.readinto1 +gzip.GzipFile.readinto1 +gzip.compress +http.server.__all__ +http.server.HTTPSServer +http.server.ThreadingHTTPSServer +imaplib.IMAP4.file +imaplib.IMAP4.idle +imaplib.IMAP4_SSL.file +imaplib.IMAP4_stream.file +importlib.abc.ResourceReader +importlib.abc.Traversable +importlib.abc.TraversableResources +importlib.machinery.__all__ +importlib.machinery.AppleFrameworkLoader +importlib.metadata.PackageMetadata.__annotate_func__ +importlib.metadata.PackageMetadata.__annotations_cache__ +importlib.metadata._meta.PackageMetadata.__annotate_func__ +importlib.metadata._meta.PackageMetadata.__annotations_cache__ +importlib.metadata._meta.SimplePath.__annotate_func__ +importlib.metadata._meta.SimplePath.__annotations_cache__ +importlib.resources.abc.Traversable.__annotate_func__ +importlib.resources.abc.Traversable.__annotations_cache__ +importlib.util.__all__ +importlib.util.Loader +inspect.__all__ +inspect.CO_HAS_DOCSTRING +inspect.CO_METHOD +inspect.Signature.format +inspect.Signature.from_callable +inspect.formatannotation +inspect.get_annotations +inspect.ispackage +inspect.signature +io.__all__ +io.Reader +io.Writer +ipaddress._IPAddressBase.version +logging.handlers.QueueListener.__enter__ +logging.handlers.QueueListener.__exit__ +logging.handlers.SysLogHandler.__init__ +marshal.dump +marshal.dumps +multiprocessing.forkserver.main +multiprocessing.managers.BaseListProxy.clear +multiprocessing.managers.BaseListProxy.copy +multiprocessing.managers.DictProxy.__ior__ +multiprocessing.managers.SyncManager.set +multiprocessing.managers._BaseDictProxy.__ior__ +multiprocessing.managers._BaseDictProxy.__or__ +multiprocessing.managers._BaseDictProxy.__reversed__ +multiprocessing.managers._BaseDictProxy.__ror__ +multiprocessing.managers._BaseDictProxy.fromkeys +multiprocessing.process.BaseProcess.interrupt +multiprocessing.synchronize.SemLock.locked +os.__all__ +os.readinto +pathlib.Path.copy_into +pathlib.Path.copytree +pathlib.Path.delete +pathlib.Path.info +pathlib.Path.move +pathlib.Path.move_into +pathlib.Path.rmtree +pathlib.PurePath.is_relative_to +pathlib.PurePath.is_relative_to +pathlib.PurePath.relative_to +pathlib.PurePath.relative_to +pathlib.types +pdb.__all__ +pdb.Pdb.__init__ +pdb.Pdb.__init__ +pdb.Pdb.__init__ +pdb.Pdb.checkline +pdb.Pdb.complete_multiline_names +pdb.Pdb.print_stack_trace +pdb.Pdb.set_trace +pdb.Pdb.set_trace_async +pdb.get_default_backend +pdb.set_default_backend +pdb.set_trace +pkgutil.__all__ +pkgutil.find_loader +pkgutil.get_loader +platform.invalidate_caches +pstats.FunctionProfile.__annotate_func__ +pstats.FunctionProfile.__annotations_cache__ +pstats.StatsProfile.__annotate_func__ +pstats.StatsProfile.__annotations_cache__ +pyexpat.errors.XML_ERROR_NOT_STARTED +shutil.__all__ +socket.__all__ +socket.IP_RECVTTL +socket.if_indextoname +sre_compile.CH_NEGATE +sre_constants.CH_NEGATE +sre_parse.CH_NEGATE +string.Template.flags +string.templatelib +sys.is_remote_debug_enabled +sys.remote_exec +tarfile.TarFile.zstopen +threading.Thread.__init__ +threading._RLock.locked +tkinter.Event.__class_getitem__ +token.__all__ +token.TSTRING_END +token.TSTRING_MIDDLE +token.TSTRING_START +tokenize.__all__ +tokenize.TSTRING_END +tokenize.TSTRING_MIDDLE +tokenize.TSTRING_START +tomllib.TOMLDecodeError.__init__ +tomllib.TOMLDecodeError.__init__ +tomllib.TOMLDecodeError.__init__ +traceback.__all__ +turtle.__all__ +turtle.RawTurtle.fill +turtle.RawTurtle.poly +turtle.TurtleScreen.no_animation +turtle.TurtleScreen.save +turtle.fill +turtle.no_animation +turtle.poly +turtle.save +types.CodeType.co_branches +types.FrameType.f_generator +types.FunctionType.__annotate__ +types.LambdaType.__annotate__ +types.ModuleType.__annotate__ +types.UnionType.__class_getitem__ +types.UnionType.__mro_entries__ +types.UnionType.__name__ +types.UnionType.__qualname__ +typing.__all__ +typing.ForwardRef.__arg__ +typing.ForwardRef.__ast_node__ +typing.ForwardRef.__cell__ +typing.ForwardRef.__code__ +typing.ForwardRef.__extra_names__ +typing.ForwardRef.__forward_arg__ +typing.ForwardRef.__forward_code__ +typing.ForwardRef.__globals__ +typing.ForwardRef.__init__ +typing.ForwardRef.__init__ +typing.ForwardRef.__init__ +typing.ForwardRef.__init_subclass__ +typing.ForwardRef.__owner__ +typing.ForwardRef.__stringifier_dict__ +typing.ForwardRef.evaluate +typing.ParamSpec.evaluate_default +typing.SupportsAbs.__annotate_func__ +typing.SupportsAbs.__annotations_cache__ +typing.SupportsBytes.__annotate_func__ +typing.SupportsBytes.__annotations_cache__ +typing.SupportsComplex.__annotate_func__ +typing.SupportsComplex.__annotations_cache__ +typing.SupportsFloat.__annotate_func__ +typing.SupportsFloat.__annotations_cache__ +typing.SupportsIndex.__annotate_func__ +typing.SupportsIndex.__annotations_cache__ +typing.SupportsInt.__annotate_func__ +typing.SupportsInt.__annotations_cache__ +typing.SupportsRound.__annotate_func__ +typing.SupportsRound.__annotations_cache__ +typing.TypeAliasType.evaluate_value +typing.TypeVar.evaluate_bound +typing.TypeVar.evaluate_constraints +typing.TypeVar.evaluate_default +typing.TypeVarTuple.evaluate_default +typing.Union +typing.evaluate_forward_ref +typing.get_type_hints +typing_extensions.ForwardRef.__arg__ +typing_extensions.ForwardRef.__ast_node__ +typing_extensions.ForwardRef.__cell__ +typing_extensions.ForwardRef.__code__ +typing_extensions.ForwardRef.__extra_names__ +typing_extensions.ForwardRef.__forward_arg__ +typing_extensions.ForwardRef.__forward_code__ +typing_extensions.ForwardRef.__globals__ +typing_extensions.ForwardRef.__init__ +typing_extensions.ForwardRef.__init__ +typing_extensions.ForwardRef.__init__ +typing_extensions.ForwardRef.__init_subclass__ +typing_extensions.ForwardRef.__owner__ +typing_extensions.ForwardRef.__stringifier_dict__ +typing_extensions.ForwardRef.evaluate +typing_extensions.SupportsAbs.__annotate_func__ +typing_extensions.SupportsAbs.__annotations_cache__ +typing_extensions.SupportsBytes.__annotate_func__ +typing_extensions.SupportsBytes.__annotations_cache__ +typing_extensions.SupportsComplex.__annotate_func__ +typing_extensions.SupportsComplex.__annotations_cache__ +typing_extensions.SupportsFloat.__annotate_func__ +typing_extensions.SupportsFloat.__annotations_cache__ +typing_extensions.SupportsIndex.__annotate_func__ +typing_extensions.SupportsIndex.__annotations_cache__ +typing_extensions.SupportsInt.__annotate_func__ +typing_extensions.SupportsInt.__annotations_cache__ +typing_extensions.SupportsRound.__annotate_func__ +typing_extensions.SupportsRound.__annotations_cache__ +typing_extensions.TypeAliasType.evaluate_value +typing_extensions.Union +typing_extensions.evaluate_forward_ref +typing_extensions.get_type_hints +unittest.TestCase.assertEndsWith +unittest.TestCase.assertHasAttr +unittest.TestCase.assertIsSubclass +unittest.TestCase.assertNotEndsWith +unittest.TestCase.assertNotHasAttr +unittest.TestCase.assertNotIsSubclass +unittest.TestCase.assertNotStartsWith +unittest.TestCase.assertStartsWith +unittest.case.TestCase.assertEndsWith +unittest.case.TestCase.assertHasAttr +unittest.case.TestCase.assertIsSubclass +unittest.case.TestCase.assertNotEndsWith +unittest.case.TestCase.assertNotHasAttr +unittest.case.TestCase.assertNotIsSubclass +unittest.case.TestCase.assertNotStartsWith +unittest.case.TestCase.assertStartsWith +urllib.request.__all__ +urllib.request.FancyURLopener +urllib.request.URLopener +urllib.request.pathname2url +urllib.request.url2pathname +urllib.request.url2pathname +urllib.request.url2pathname +uuid.MAX +uuid.NIL +uuid.uuid6 +uuid.uuid7 +uuid.uuid8 +wsgiref.types.ErrorStream.__annotate_func__ +wsgiref.types.ErrorStream.__annotations_cache__ +wsgiref.types.FileWrapper.__annotate_func__ +wsgiref.types.FileWrapper.__annotations_cache__ +wsgiref.types.InputStream.__annotate_func__ +wsgiref.types.InputStream.__annotations_cache__ +wsgiref.types.StartResponse.__annotate_func__ +wsgiref.types.StartResponse.__annotations_cache__ +wsgiref.types._Readable.__annotate_func__ +wsgiref.types._Readable.__annotations_cache__ +xml.parsers.expat.errors.XML_ERROR_NOT_STARTED +xml.sax.__all__ +xml.sax.InputSource +zipfile.ZipFile.data_offset +zipfile._path.glob.Translator.__annotate_func__ + + +# ========================= +# New errors in Python 3.14 +# ========================= + + +# ==================================== +# Pre-existing errors from Python 3.13 +# ==================================== + + +# ======= +# >= 3.12 +# ======= + +zoneinfo.ZoneInfo.from_file # Pos-only parameters had different "names" in different Python versions + + +# ======= +# >= 3.11 +# ======= + +typing.NewType.__mro_entries__ + + +# ======= +# >= 3.10 +# ======= + +builtins.ellipsis # type is not exposed anywhere +importlib._abc.Loader.exec_module # See Lib/importlib/_abc.py. Might be defined for backwards compatibility + +# positional-only complaints caused by differences between typing aliases and the "real" classes in the stdlib +_collections_abc.Coroutine.send +_collections_abc.Coroutine.throw +_collections_abc.Generator.send +_collections_abc.Generator.throw + +# These are not positional-only at runtime, but we treat them as positional-only to match dict. +_collections_abc.MutableMapping.pop +_collections_abc.MutableMapping.setdefault + +# These three have a pos-or-keyword first parameter at runtime, but deliberately have a pos-only first parameter in the stub. #6812 +posixpath.join +ntpath.join +os.path.join + +# typing.IO uses positional-or-keyword arguments, but in the stubs we prefer +# to mark these as positional-only for compatibility with existing sub-classes. +typing(_extensions)?\.BinaryIO\.write +typing(_extensions)?\.IO\.read +typing(_extensions)?\.IO\.readline +typing(_extensions)?\.IO\.readlines +typing(_extensions)?\.IO\.seek +typing(_extensions)?\.IO\.truncate +typing(_extensions)?\.IO\.write +typing(_extensions)?\.IO\.writelines + + +# ============================================================= +# Allowlist entries that cannot or should not be fixed; >= 3.13 +# ============================================================= + +_pyrepl\..+ # The internal implementation of the REPL on py313+; not for public consumption +codecs.backslashreplace_errors # Runtime incorrectly has `self` +codecs.ignore_errors # Runtime incorrectly has `self` +codecs.namereplace_errors # Runtime incorrectly has `self` +codecs.replace_errors # Runtime incorrectly has `self` +codecs.strict_errors # Runtime incorrectly has `self` +codecs.xmlcharrefreplace_errors # Runtime incorrectly has `self` + +# These multiprocessing proxy methods have *args, **kwargs signatures at runtime, +# But have more precise (accurate) signatures in the stub +multiprocessing.managers._BaseDictProxy.__iter__ +multiprocessing.managers._BaseDictProxy.__len__ +multiprocessing.managers._BaseDictProxy.clear +multiprocessing.managers._BaseDictProxy.copy +multiprocessing.managers._BaseDictProxy.items +multiprocessing.managers._BaseDictProxy.keys +multiprocessing.managers._BaseDictProxy.popitem +multiprocessing.managers._BaseDictProxy.values + +# To match `dict`, we lie about the runtime, but use overloads to match the correct behavior +types.MappingProxyType.get + +typing_extensions.Protocol # Super-special typing primitive + + +# ============================================================= +# Allowlist entries that cannot or should not be fixed; >= 3.12 +# ============================================================= + +# Runtime AST node runtime constructor behaviour is too loose. +# For static typing, the loose behaviour is undesirable (https://github.com/python/typeshed/issues/8378). +# For the runtime, the loose behaviour is deprecated in Python 3.13 (https://github.com/python/cpython/issues/105858) +_?ast.type_param.__init__ + +# Deprecation wrapper classes; their methods are just pass-through, so we can ignore them. +importlib.metadata.DeprecatedNonAbstract.__new__ + +# Deprecated argument is supported at runtime by renaming it through a decorator. +importlib.resources._common.files +importlib.resources.files + +sys._monitoring # Doesn't really exist. See comments in the stub. +sys.last_exc # not always defined + +# These only exist to give a better error message if you try to subclass an instance +typing.ParamSpec.__mro_entries__ +typing.ParamSpecArgs.__mro_entries__ +typing.ParamSpecKwargs.__mro_entries__ +typing.TypeVar.__mro_entries__ +typing.TypeVarTuple.__mro_entries__ + +# These exist at runtime because the protocol uses PEP-695 syntax in CPython +typing.SupportsAbs.__type_params__ +typing.SupportsRound.__type_params__ +typing_extensions.SupportsAbs.__type_params__ +typing_extensions.SupportsRound.__type_params__ + + +# ============================================================= +# Allowlist entries that cannot or should not be fixed; >= 3.11 +# ============================================================= + +enum.auto.__init__ # The stub for enum.auto is nothing like the implementation +enum.auto.value # The stub for enum.auto is nothing like the implementation +http.HTTPMethod.description # mutable instance attribute at runtime but we pretend it's a property +importlib.resources.abc.Traversable.open # Problematic protocol signature at runtime, see source code comments. +inspect._ParameterKind.description # Still exists, but stubtest can't see it +typing\._SpecialForm.* # Super-special typing primitive +typing\.LiteralString # Super-special typing primitive + + +# ============================================================= +# Allowlist entries that cannot or should not be fixed; >= 3.10 +# ============================================================= + +# Runtime AST node runtime constructor behaviour is too loose. +# For static typing, the loose behaviour is undesirable (https://github.com/python/typeshed/issues/8378). +# For the runtime, the loose behaviour is deprecated in Python 3.13 (https://github.com/python/cpython/issues/105858) +_?ast.pattern.__init__ + +_collections_abc.AsyncGenerator.athrow # async at runtime, deliberately not in the stub, see #7491. Pos-only differences also. +builtins.property.__set_name__ # Doesn't actually exist +collections\.UserList\.index # ignoring pos-or-keyword parameter +dataclasses.KW_ONLY # white lies around defaults +importlib.metadata._meta.SimplePath.joinpath # Runtime definition of protocol is incorrect diff --git a/stdlib/@tests/stubtest_allowlists/py39.txt b/stdlib/@tests/stubtest_allowlists/py39.txt index a912b6f85b5b..496eb7231453 100644 --- a/stdlib/@tests/stubtest_allowlists/py39.txt +++ b/stdlib/@tests/stubtest_allowlists/py39.txt @@ -97,6 +97,32 @@ tkinter.tix.TclVersion tkinter.tix.TkVersion +# ======= +# <= 3.13 +# ======= + +# Pretend typing.ByteString is a Union, to better match its documented semantics. +# As a side effect, this changes the definition of collections.abc.ByteString, which is okay, +# because it's not an ABC that makes any sense and was deprecated in 3.12 +_collections_abc.ByteString + +ast.Bytes.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs +ast.Ellipsis.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs +ast.NameConstant.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs +ast.Num.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs +ast.Str.__new__ # runtime is *args, **kwargs due to a wrapper, but we have more accurate signatures in the stubs + +_?hashlib.scrypt # Raises TypeError if salt, n, r or p are None + +importlib.abc.Traversable.open # Problematic protocol signature at runtime, see source code comments. + +typing\.ByteString + +# Will always raise. Not included to avoid type checkers inferring that +# TypeAliasType instances are callable. +typing_extensions.TypeAliasType.__call__ + + # ============================================================== # Allowlist entries that cannot or should not be fixed; 3.9 only # ============================================================== diff --git a/stdlib/@tests/stubtest_allowlists/win32-py314.txt b/stdlib/@tests/stubtest_allowlists/win32-py314.txt new file mode 100644 index 000000000000..9e2f612dbd39 --- /dev/null +++ b/stdlib/@tests/stubtest_allowlists/win32-py314.txt @@ -0,0 +1,59 @@ +# ==================================================================== +# TODO: New errors in Python 3.14 that need to be fixed or moved below +# ==================================================================== + +_socket.IPV6_RECVERR +_socket.IP_RECVERR +_socket.SOL_RFCOMM +_socket.SO_ORIGINAL_DST +_socket.SO_BTH_ENCRYPT +_socket.SO_BTH_MTU +_socket.SO_BTH_MTU_MAX +_socket.SO_BTH_MTU_MIN +_socket.TCP_QUICKACK +_winapi.COPY_FILE_DIRECTORY +asyncio.WindowsProactorEventLoopPolicy.get_child_watcher +asyncio.WindowsProactorEventLoopPolicy.set_child_watcher +asyncio._WindowsProactorEventLoopPolicy +asyncio._WindowsSelectorEventLoopPolicy +asyncio.windows_events.__all__ +asyncio.windows_events.DefaultEventLoopPolicy +asyncio.windows_events.WindowsProactorEventLoopPolicy +asyncio.windows_events.WindowsSelectorEventLoopPolicy +asyncio.windows_events._DefaultEventLoopPolicy +asyncio.windows_events._WindowsProactorEventLoopPolicy +asyncio.windows_events._WindowsSelectorEventLoopPolicy +ctypes.c_double_complex +ctypes.c_float_complex +ctypes.c_longdouble_complex +encodings.win32_code_page_search_function +nt.readinto +pathlib.Path.group +pathlib.Path.owner +socket.IPV6_RECVERR +socket.IP_RECVERR +socket.SOL_RFCOMM +socket.SO_ORIGINAL_DST +socket.SO_BTH_ENCRYPT +socket.SO_BTH_MTU +socket.SO_BTH_MTU_MAX +socket.SO_BTH_MTU_MIN +socket.TCP_QUICKACK +winsound.MB_ICONERROR +winsound.MB_ICONINFORMATION +winsound.MB_ICONSTOP +winsound.MB_ICONWARNING +winsound.SND_SENTRY +winsound.SND_SYNC +winsound.SND_SYSTEM +zlib.ZLIBNG_VERSION + + +# ======= +# >= 3.12 +# ======= + +# Undocumented internal method, not really for public consumption. +# (Hard to add types for unless we add stubs for the undocumented _overlapped module...) +asyncio.IocpProactor.finish_socket_func +asyncio.windows_events.IocpProactor.finish_socket_func diff --git a/stdlib/ast.pyi b/stdlib/ast.pyi index be7788edfd50..bced1cb45c96 100644 --- a/stdlib/ast.pyi +++ b/stdlib/ast.pyi @@ -251,6 +251,7 @@ class AsyncFunctionDef(stmt): returns: expr | None = ..., type_comment: str | None = ..., type_params: list[type_param] = ..., + **kwargs: Unpack[_Attributes], ) -> Self: ... class ClassDef(stmt): diff --git a/stubs/pyflakes/pyflakes/checker.pyi b/stubs/pyflakes/pyflakes/checker.pyi index 3f6dbc726b3f..45486100fa6c 100644 --- a/stubs/pyflakes/pyflakes/checker.pyi +++ b/stubs/pyflakes/pyflakes/checker.pyi @@ -185,6 +185,11 @@ else: _TypeVarTuple: TypeAlias = Never _TypeAlias: TypeAlias = Never +if sys.version_info >= (3, 14): + _NameConstant: TypeAlias = Never +else: + _NameConstant: TypeAlias = ast.NameConstant + class Checker: nodeDepth: int offset: tuple[int, int] | None @@ -254,7 +259,7 @@ class Checker: def SET(self, tree: ast.Set, omit: _OmitType = None) -> None: ... def ATTRIBUTE(self, tree: ast.Attribute, omit: _OmitType = None) -> None: ... def STARRED(self, tree: ast.Starred, omit: _OmitType = None) -> None: ... - def NAMECONSTANT(self, tree: ast.NameConstant, omit: _OmitType = None) -> None: ... + def NAMECONSTANT(self, tree: _NameConstant, omit: _OmitType = None) -> None: ... def NAMEDEXPR(self, tree: ast.NamedExpr, omit: _OmitType = None) -> None: ... def SUBSCRIPT(self, node: ast.Subscript) -> None: ... def CALL(self, node: ast.Call) -> None: ... diff --git a/tests/mypy_test.py b/tests/mypy_test.py index 3607199431d4..fd26e05ca85e 100755 --- a/tests/mypy_test.py +++ b/tests/mypy_test.py @@ -44,7 +44,7 @@ print_error("Cannot import mypy. Did you install it?") sys.exit(1) -SUPPORTED_VERSIONS = ["3.13", "3.12", "3.11", "3.10", "3.9"] +SUPPORTED_VERSIONS = ["3.14", "3.13", "3.12", "3.11", "3.10", "3.9"] SUPPORTED_PLATFORMS = ("linux", "win32", "darwin") DIRECTORIES_TO_TEST = [STDLIB_PATH, STUBS_PATH] diff --git a/tests/regr_test.py b/tests/regr_test.py index 32bfb259390c..0693974a901f 100755 --- a/tests/regr_test.py +++ b/tests/regr_test.py @@ -41,7 +41,7 @@ TYPESHED = "typeshed" SUPPORTED_PLATFORMS = ["linux", "darwin", "win32"] -SUPPORTED_VERSIONS = ["3.13", "3.12", "3.11", "3.10", "3.9"] +SUPPORTED_VERSIONS = ["3.14", "3.13", "3.12", "3.11", "3.10", "3.9"] def distribution_with_test_cases(distribution_name: str) -> DistributionTests: diff --git a/tests/runtests.py b/tests/runtests.py index 5e1e9e96cc99..64346f4e58fd 100755 --- a/tests/runtests.py +++ b/tests/runtests.py @@ -53,7 +53,7 @@ def main() -> None: parser.add_argument( "--python-version", default=_PYTHON_VERSION, - choices=("3.9", "3.10", "3.11", "3.12", "3.13"), + choices=("3.9", "3.10", "3.11", "3.12", "3.13", "3.14"), help="Target Python version for the test (default: %(default)s).", ) parser.add_argument("path", help="Path of the stub to test in format /, from the root of the project.") diff --git a/tests/typecheck_typeshed.py b/tests/typecheck_typeshed.py index a70ddf9b4a83..90d7afcaf706 100755 --- a/tests/typecheck_typeshed.py +++ b/tests/typecheck_typeshed.py @@ -14,7 +14,7 @@ ReturnCode: TypeAlias = int SUPPORTED_PLATFORMS = ("linux", "darwin", "win32") -SUPPORTED_VERSIONS = ("3.13", "3.12", "3.11", "3.10", "3.9") +SUPPORTED_VERSIONS = ("3.14", "3.13", "3.12", "3.11", "3.10", "3.9") LOWEST_SUPPORTED_VERSION = min(SUPPORTED_VERSIONS, key=lambda x: int(x.split(".")[1])) DIRECTORIES_TO_TEST = ("scripts", "tests") EMPTY: list[str] = []