From 750bc3b14128f436569c3c5b7969c52473cdfbe6 Mon Sep 17 00:00:00 2001 From: sobolevn Date: Wed, 12 Mar 2025 10:43:35 +0300 Subject: [PATCH 01/25] [aiofiles] `.name` on `NamedTempFile` is always a `str` --- stubs/aiofiles/aiofiles/threadpool/text.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/aiofiles/aiofiles/threadpool/text.pyi b/stubs/aiofiles/aiofiles/threadpool/text.pyi index 6003a0852c31..76c3d9a1d3b2 100644 --- a/stubs/aiofiles/aiofiles/threadpool/text.pyi +++ b/stubs/aiofiles/aiofiles/threadpool/text.pyi @@ -34,7 +34,7 @@ class _UnknownAsyncTextIO(AsyncBase[str]): @property def newlines(self) -> str | tuple[str, ...] | None: ... @property - def name(self) -> FileDescriptorOrPath: ... + def name(self) -> str: ... @property def mode(self) -> str: ... From 40ce4a5cec767e4ac01b4d337119fdcbd4e032b1 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 12 Mar 2025 07:46:31 +0000 Subject: [PATCH 02/25] [pre-commit.ci] auto fixes from pre-commit.com hooks --- stubs/aiofiles/aiofiles/threadpool/text.pyi | 1 - 1 file changed, 1 deletion(-) diff --git a/stubs/aiofiles/aiofiles/threadpool/text.pyi b/stubs/aiofiles/aiofiles/threadpool/text.pyi index 76c3d9a1d3b2..43de0a6e515a 100644 --- a/stubs/aiofiles/aiofiles/threadpool/text.pyi +++ b/stubs/aiofiles/aiofiles/threadpool/text.pyi @@ -1,4 +1,3 @@ -from _typeshed import FileDescriptorOrPath from collections.abc import Iterable from typing import BinaryIO From 060f471f59a18bd549f16de513ce6acfbfbc64f2 Mon Sep 17 00:00:00 2001 From: stubsabot <> Date: Thu, 14 Aug 2025 00:16:33 +0000 Subject: [PATCH 03/25] [stubsabot] Bump tensorflow to ~=2.20.0 Release: https://pypi.org/pypi/tensorflow/2.20.0 Homepage: https://www.tensorflow.org/ Repository: https://github.com/tensorflow/tensorflow Typeshed stubs: https://github.com/python/typeshed/tree/main/stubs/tensorflow Diff: https://github.com/tensorflow/tensorflow/compare/v2.18.1...v2.20.0 Stubsabot analysis of the diff between the two releases: - Total lines of Python code added: 32. - Total lines of Python code deleted: 150. :warning: Review this PR manually, as stubtest is skipped in CI for tensorflow! Also check whether stubtest can be reenabled. :warning: --- stubs/tensorflow/METADATA.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/tensorflow/METADATA.toml b/stubs/tensorflow/METADATA.toml index a207ca05601a..027aab52a824 100644 --- a/stubs/tensorflow/METADATA.toml +++ b/stubs/tensorflow/METADATA.toml @@ -1,6 +1,6 @@ # Using an exact number in the specifier for scripts/sync_protobuf/tensorflow.py # When updating, also re-run the script -version = "~=2.18.0" +version = "~=2.20.0" upstream_repository = "https://github.com/tensorflow/tensorflow" # requires a version of numpy with a `py.typed` file requires = ["numpy>=1.20", "types-protobuf", "types-requests"] From fa4f67732fa407ce923170d1f989f2c0349db13b Mon Sep 17 00:00:00 2001 From: stubsabot <> Date: Tue, 26 Aug 2025 00:15:20 +0000 Subject: [PATCH 04/25] [stubsabot] Bump cachetools to 6.2.* Release: https://pypi.org/pypi/cachetools/6.2.0 Homepage: https://github.com/tkem/cachetools/ Repository: https://github.com/tkem/cachetools Typeshed stubs: https://github.com/python/typeshed/tree/main/stubs/cachetools Diff: https://github.com/tkem/cachetools/compare/v6.1.0...v6.2.0 Stubsabot analysis of the diff between the two releases: - Total lines of Python code added: 105. - Total lines of Python code deleted: 3. If stubtest fails for this PR: - Leave this PR open (as a reminder, and to prevent stubsabot from opening another PR) - Fix stubtest failures in another PR, then close this PR Note that you will need to close and re-open the PR in order to trigger CI --- stubs/cachetools/METADATA.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/cachetools/METADATA.toml b/stubs/cachetools/METADATA.toml index fb57be984ae4..70052083c405 100644 --- a/stubs/cachetools/METADATA.toml +++ b/stubs/cachetools/METADATA.toml @@ -1,2 +1,2 @@ -version = "6.1.*" +version = "6.2.*" upstream_repository = "https://github.com/tkem/cachetools" From 40aa5c24fbeb5d5dda9d38215f7e51f7f4462b19 Mon Sep 17 00:00:00 2001 From: stubsabot <> Date: Tue, 9 Sep 2025 00:15:26 +0000 Subject: [PATCH 05/25] [stubsabot] Bump cffi to 2.0.* Release: https://pypi.org/pypi/cffi/2.0.0 Repository: https://github.com/python-cffi/cffi/ Typeshed stubs: https://github.com/python/typeshed/tree/main/stubs/cffi Changelog: https://cffi.readthedocs.io/en/latest/whatsnew.html Diff: https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0 Stubsabot analysis of the diff between the two releases: - Total lines of Python code added: 356. - Total lines of Python code deleted: 175. If stubtest fails for this PR: - Leave this PR open (as a reminder, and to prevent stubsabot from opening another PR) - Fix stubtest failures in another PR, then close this PR Note that you will need to close and re-open the PR in order to trigger CI --- stubs/cffi/METADATA.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/cffi/METADATA.toml b/stubs/cffi/METADATA.toml index abf41186a33b..22f51de9ed5b 100644 --- a/stubs/cffi/METADATA.toml +++ b/stubs/cffi/METADATA.toml @@ -1,4 +1,4 @@ -version = "1.17.*" +version = "2.0.*" upstream_repository = "https://github.com/python-cffi/cffi/" requires = ["types-setuptools"] From 263694cd96bce65f5372e443efc9de71c4dcf87f Mon Sep 17 00:00:00 2001 From: stubsabot <> Date: Wed, 10 Sep 2025 00:14:12 +0000 Subject: [PATCH 06/25] [stubsabot] Bump pyluach to 2.3.* Release: https://pypi.org/pypi/pyluach/2.3.0 Repository: https://github.com/simlist/pyluach Typeshed stubs: https://github.com/python/typeshed/tree/main/stubs/pyluach Diff: https://github.com/simlist/pyluach/compare/v2.2.0.post1...v2.3.0 Stubsabot analysis of the diff between the two releases: - Total lines of Python code added: 198. - Total lines of Python code deleted: 9. If stubtest fails for this PR: - Leave this PR open (as a reminder, and to prevent stubsabot from opening another PR) - Fix stubtest failures in another PR, then close this PR Note that you will need to close and re-open the PR in order to trigger CI --- stubs/pyluach/METADATA.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/pyluach/METADATA.toml b/stubs/pyluach/METADATA.toml index 2297c2a2eb84..172f950ccedc 100644 --- a/stubs/pyluach/METADATA.toml +++ b/stubs/pyluach/METADATA.toml @@ -1,2 +1,2 @@ -version = "2.2.*" +version = "2.3.*" upstream_repository = "https://github.com/simlist/pyluach" From c69d75761fa3a3a3a354317fe101aaa9f31c40bf Mon Sep 17 00:00:00 2001 From: stubsabot <> Date: Thu, 18 Sep 2025 00:14:09 +0000 Subject: [PATCH 07/25] [stubsabot] Bump auth0-python to 4.13.* Release: https://pypi.org/pypi/auth0-python/4.13.0 Homepage: https://auth0.com Repository: https://github.com/auth0/auth0-python Typeshed stubs: https://github.com/python/typeshed/tree/main/stubs/auth0-python Diff: https://github.com/auth0/auth0-python/compare/4.10.0...4.13.0 Stubsabot analysis of the diff between the two releases: - 1 public Python file has been added: `auth0/management/network_acls.py`. - 0 files included in typeshed's stubs have been deleted. - 6 files included in typeshed's stubs have been modified or renamed: `auth0/authentication/back_channel_login.py`, `auth0/authentication/get_token.py`, `auth0/exceptions.py`, `auth0/management/__init__.py`, `auth0/management/auth0.py`, `auth0/rest.py`. - Total lines of Python code added: 407. - Total lines of Python code deleted: 16. If stubtest fails for this PR: - Leave this PR open (as a reminder, and to prevent stubsabot from opening another PR) - Fix stubtest failures in another PR, then close this PR Note that you will need to close and re-open the PR in order to trigger CI --- stubs/auth0-python/METADATA.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/auth0-python/METADATA.toml b/stubs/auth0-python/METADATA.toml index 4e1606df7422..a85c61332be8 100644 --- a/stubs/auth0-python/METADATA.toml +++ b/stubs/auth0-python/METADATA.toml @@ -1,3 +1,3 @@ -version = "4.10.*" +version = "4.13.*" upstream_repository = "https://github.com/auth0/auth0-python" requires = ["cryptography", "types-requests"] From f3a9a2071b08c228b7ab1bb4e15caf71ff31aa3c Mon Sep 17 00:00:00 2001 From: stubsabot <> Date: Thu, 18 Sep 2025 00:14:13 +0000 Subject: [PATCH 08/25] [stubsabot] Bump gevent to 25.9.* Release: https://pypi.org/pypi/gevent/25.9.1 Homepage: http://www.gevent.org/ Repository: https://github.com/gevent/gevent Typeshed stubs: https://github.com/python/typeshed/tree/main/stubs/gevent Changelog: https://www.gevent.org/changelog.html Diff: https://github.com/gevent/gevent/compare/25.4.2...25.9.1 Stubsabot analysis of the diff between the two releases: - Total lines of Python code added: 18. - Total lines of Python code deleted: 5. If stubtest fails for this PR: - Leave this PR open (as a reminder, and to prevent stubsabot from opening another PR) - Fix stubtest failures in another PR, then close this PR Note that you will need to close and re-open the PR in order to trigger CI --- stubs/gevent/METADATA.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/gevent/METADATA.toml b/stubs/gevent/METADATA.toml index dce29acee5db..b4c7ee9cf896 100644 --- a/stubs/gevent/METADATA.toml +++ b/stubs/gevent/METADATA.toml @@ -1,4 +1,4 @@ -version = "25.4.*" +version = "25.9.*" upstream_repository = "https://github.com/gevent/gevent" requires = ["types-greenlet", "types-psutil"] From 541d54f2b44e63ebf370280c765e4c40402cef48 Mon Sep 17 00:00:00 2001 From: stubsabot <> Date: Thu, 25 Sep 2025 00:14:47 +0000 Subject: [PATCH 09/25] [stubsabot] Bump pycurl to 7.45.7 Release: https://pypi.org/pypi/pycurl/7.45.7 Homepage: http://pycurl.io/ Repository: https://github.com/pycurl/pycurl Typeshed stubs: https://github.com/python/typeshed/tree/main/stubs/pycurl If stubtest fails for this PR: - Leave this PR open (as a reminder, and to prevent stubsabot from opening another PR) - Fix stubtest failures in another PR, then close this PR Note that you will need to close and re-open the PR in order to trigger CI --- stubs/pycurl/METADATA.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/pycurl/METADATA.toml b/stubs/pycurl/METADATA.toml index f4c8a993b104..8d6e2d58ebb3 100644 --- a/stubs/pycurl/METADATA.toml +++ b/stubs/pycurl/METADATA.toml @@ -1,4 +1,4 @@ -version = "7.45.6" +version = "7.45.7" upstream_repository = "https://github.com/pycurl/pycurl" [tool.stubtest] From 8fa665af11feaaa1997c0f926cbac0aa4268f0be Mon Sep 17 00:00:00 2001 From: stubsabot <> Date: Sat, 27 Sep 2025 00:14:09 +0000 Subject: [PATCH 10/25] [stubsabot] Bump pyperclip to 1.11.* Release: https://pypi.org/pypi/pyperclip/1.11.0 Homepage: https://github.com/asweigart/pyperclip Repository: https://github.com/asweigart/pyperclip Typeshed stubs: https://github.com/python/typeshed/tree/main/stubs/pyperclip If stubtest fails for this PR: - Leave this PR open (as a reminder, and to prevent stubsabot from opening another PR) - Fix stubtest failures in another PR, then close this PR Note that you will need to close and re-open the PR in order to trigger CI --- stubs/pyperclip/METADATA.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/pyperclip/METADATA.toml b/stubs/pyperclip/METADATA.toml index 885e7747f335..9e2c211f627d 100644 --- a/stubs/pyperclip/METADATA.toml +++ b/stubs/pyperclip/METADATA.toml @@ -1,4 +1,4 @@ -version = "1.9.*" +version = "1.11.*" upstream_repository = "https://github.com/asweigart/pyperclip" [tool.stubtest] From e380c289663a7d15b09b470bcf109e4b381dbe6d Mon Sep 17 00:00:00 2001 From: stubsabot <> Date: Fri, 10 Oct 2025 00:15:36 +0000 Subject: [PATCH 11/25] [stubsabot] Bump aiofiles to 25.1.* Release: https://pypi.org/pypi/aiofiles/25.1.0 Repository: https://github.com/Tinche/aiofiles Typeshed stubs: https://github.com/python/typeshed/tree/main/stubs/aiofiles Changelog: https://github.com/Tinche/aiofiles#history Diff: https://github.com/Tinche/aiofiles/compare/v24.1.0...v25.1.0 Stubsabot analysis of the diff between the two releases: - Total lines of Python code added: 165. - Total lines of Python code deleted: 83. If stubtest fails for this PR: - Leave this PR open (as a reminder, and to prevent stubsabot from opening another PR) - Fix stubtest failures in another PR, then close this PR Note that you will need to close and re-open the PR in order to trigger CI --- stubs/aiofiles/METADATA.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/aiofiles/METADATA.toml b/stubs/aiofiles/METADATA.toml index fdab36a21cca..e3119727954b 100644 --- a/stubs/aiofiles/METADATA.toml +++ b/stubs/aiofiles/METADATA.toml @@ -1,4 +1,4 @@ -version = "24.1.*" +version = "25.1.*" upstream_repository = "https://github.com/Tinche/aiofiles" [tool.stubtest] From 9a88cbcde58c0d8bc08a65f5326afe7f9df1a852 Mon Sep 17 00:00:00 2001 From: stubsabot <> Date: Thu, 30 Oct 2025 00:16:16 +0000 Subject: [PATCH 12/25] [stubsabot] Bump fpdf2 to 2.8.5 Release: https://pypi.org/pypi/fpdf2/2.8.5 Homepage: https://py-pdf.github.io/fpdf2/ Repository: https://github.com/PyFPDF/fpdf2 Typeshed stubs: https://github.com/python/typeshed/tree/main/stubs/fpdf2 Diff: https://github.com/PyFPDF/fpdf2/compare/2.8.4...2.8.5 Stubsabot analysis of the diff between the two releases: - 5 public Python files have been added: `fpdf/data/__init__.py`, `fpdf/data/color_profiles/__init__.py`, `fpdf/drawing_primitives.py`, `fpdf/font_type_3.py`, `test/color_font/__init__.py`. - 0 files included in typeshed's stubs have been deleted. - 20 files included in typeshed's stubs have been modified or renamed. - Total lines of Python code added: 11767. - Total lines of Python code deleted: 3639. If stubtest fails for this PR: - Leave this PR open (as a reminder, and to prevent stubsabot from opening another PR) - Fix stubtest failures in another PR, then close this PR Note that you will need to close and re-open the PR in order to trigger CI --- stubs/fpdf2/METADATA.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/fpdf2/METADATA.toml b/stubs/fpdf2/METADATA.toml index 99ca1632cb80..798fcf1d018c 100644 --- a/stubs/fpdf2/METADATA.toml +++ b/stubs/fpdf2/METADATA.toml @@ -1,4 +1,4 @@ -version = "2.8.4" +version = "2.8.5" upstream_repository = "https://github.com/PyFPDF/fpdf2" requires = ["Pillow>=10.3.0"] From 60a08f8536eea0c5dfb5f73607923688f687b134 Mon Sep 17 00:00:00 2001 From: stubsabot <> Date: Fri, 31 Oct 2025 00:15:36 +0000 Subject: [PATCH 13/25] [stubsabot] Bump Deprecated to ~=1.3.1 Release: https://pypi.org/pypi/Deprecated/1.3.1 Homepage: https://github.com/laurent-laporte-pro/deprecated Repository: https://github.com/tantale/deprecated Typeshed stubs: https://github.com/python/typeshed/tree/main/stubs/Deprecated Diff: https://github.com/tantale/deprecated/compare/v1.2.18...v1.3.1 Stubsabot analysis of the diff between the two releases: - 2 public Python files have been added: `deprecated/params.py`, `tests/deprecated_params/__init__.py`. - 0 files included in typeshed's stubs have been deleted. - 2 files included in typeshed's stubs have been modified or renamed: `deprecated/__init__.py`, `deprecated/classic.py`. - Total lines of Python code added: 320. - Total lines of Python code deleted: 7. If stubtest fails for this PR: - Leave this PR open (as a reminder, and to prevent stubsabot from opening another PR) - Fix stubtest failures in another PR, then close this PR Note that you will need to close and re-open the PR in order to trigger CI --- stubs/Deprecated/METADATA.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/Deprecated/METADATA.toml b/stubs/Deprecated/METADATA.toml index 3a87312127ac..d56539265994 100644 --- a/stubs/Deprecated/METADATA.toml +++ b/stubs/Deprecated/METADATA.toml @@ -1,3 +1,3 @@ -version = "~=1.2.15" +version = "~=1.3.1" upstream_repository = "https://github.com/tantale/deprecated" requires = [] From fc72b3d588d9192c79d5d96427e4a30a8e9713a1 Mon Sep 17 00:00:00 2001 From: stubsabot <> Date: Sun, 7 Dec 2025 00:18:28 +0000 Subject: [PATCH 14/25] [stubsabot] Bump protobuf to ~=6.33.2 Release: https://pypi.org/pypi/protobuf/6.33.2 Homepage: https://developers.google.com/protocol-buffers/ Repository: https://github.com/protocolbuffers/protobuf Typeshed stubs: https://github.com/python/typeshed/tree/main/stubs/protobuf If stubtest fails for this PR: - Leave this PR open (as a reminder, and to prevent stubsabot from opening another PR) - Fix stubtest failures in another PR, then close this PR Note that you will need to close and re-open the PR in order to trigger CI --- stubs/protobuf/METADATA.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/protobuf/METADATA.toml b/stubs/protobuf/METADATA.toml index fc8dfe341705..a9af8bcb5317 100644 --- a/stubs/protobuf/METADATA.toml +++ b/stubs/protobuf/METADATA.toml @@ -1,6 +1,6 @@ # Using an exact number in the specifier for scripts/sync_protobuf/google_protobuf.py # When updating, also re-run the script -version = "~=6.32.1" +version = "~=6.33.2" upstream_repository = "https://github.com/protocolbuffers/protobuf" extra_description = "Partially generated using [mypy-protobuf==3.6.0](https://github.com/nipunn1313/mypy-protobuf/tree/v3.6.0) and libprotoc 31.1 on [protobuf v32.1](https://github.com/protocolbuffers/protobuf/releases/tag/v32.1) (python `protobuf==6.32.1`)." partial_stub = true From 17e53d65c83a54fcf07e86784cb33ac2689a15b8 Mon Sep 17 00:00:00 2001 From: stubsabot <> Date: Mon, 8 Dec 2025 00:17:16 +0000 Subject: [PATCH 15/25] [stubsabot] Bump ibm-db to 3.2.8 Release: https://pypi.org/pypi/ibm-db/3.2.8 Homepage: http://pypi.python.org/pypi/ibm_db/ Repository: https://github.com/ibmdb/python-ibmdb Typeshed stubs: https://github.com/python/typeshed/tree/main/stubs/ibm-db Diff: https://github.com/ibmdb/python-ibmdb/compare/v3.2.6...v3.2.8 Stubsabot analysis of the diff between the two releases: - Total lines of Python code added: 645. - Total lines of Python code deleted: 89. If stubtest fails for this PR: - Leave this PR open (as a reminder, and to prevent stubsabot from opening another PR) - Fix stubtest failures in another PR, then close this PR Note that you will need to close and re-open the PR in order to trigger CI --- stubs/ibm-db/METADATA.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/ibm-db/METADATA.toml b/stubs/ibm-db/METADATA.toml index 6f7b307e221e..e754728c4eb2 100644 --- a/stubs/ibm-db/METADATA.toml +++ b/stubs/ibm-db/METADATA.toml @@ -1,2 +1,2 @@ -version = "3.2.6" +version = "3.2.8" upstream_repository = "https://github.com/ibmdb/python-ibmdb" From b6937a3bd3223b1b8acb6df37113acd6d23d4311 Mon Sep 17 00:00:00 2001 From: stubsabot <> Date: Wed, 17 Dec 2025 00:15:55 +0000 Subject: [PATCH 16/25] [stubsabot] Bump hdbcli to 2.27.* Release: https://pypi.org/pypi/hdbcli/2.27.19 Homepage: https://www.sap.com/ Typeshed stubs: https://github.com/python/typeshed/tree/main/stubs/hdbcli If stubtest fails for this PR: - Leave this PR open (as a reminder, and to prevent stubsabot from opening another PR) - Fix stubtest failures in another PR, then close this PR Note that you will need to close and re-open the PR in order to trigger CI --- stubs/hdbcli/METADATA.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/hdbcli/METADATA.toml b/stubs/hdbcli/METADATA.toml index 168d2786a79a..c7d8c8e65386 100644 --- a/stubs/hdbcli/METADATA.toml +++ b/stubs/hdbcli/METADATA.toml @@ -1,2 +1,2 @@ -version = "2.25.*" +version = "2.27.*" # upstream_repository = closed-source From 50bc87eb416e635d62828da630e610b3826275fc Mon Sep 17 00:00:00 2001 From: stubsabot <> Date: Fri, 19 Dec 2025 00:17:38 +0000 Subject: [PATCH 17/25] [stubsabot] Bump docutils to 0.22.4 Release: https://pypi.org/pypi/docutils/0.22.4 Homepage: https://docutils.sourceforge.io Repository: https://sourceforge.net/p/docutils/code Typeshed stubs: https://github.com/python/typeshed/tree/main/stubs/docutils Changelog: https://docutils.sourceforge.io/HISTORY.html If stubtest fails for this PR: - Leave this PR open (as a reminder, and to prevent stubsabot from opening another PR) - Fix stubtest failures in another PR, then close this PR Note that you will need to close and re-open the PR in order to trigger CI --- stubs/docutils/METADATA.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/docutils/METADATA.toml b/stubs/docutils/METADATA.toml index 1a84d3665e0c..6e85afb83c18 100644 --- a/stubs/docutils/METADATA.toml +++ b/stubs/docutils/METADATA.toml @@ -1,2 +1,2 @@ -version = "0.22.3" +version = "0.22.4" upstream_repository = "https://sourceforge.net/p/docutils/code" From 42652ebcd0ff2a76995034cc0e19e171c2f58b9a Mon Sep 17 00:00:00 2001 From: stubsabot <> Date: Tue, 23 Dec 2025 00:17:00 +0000 Subject: [PATCH 18/25] [stubsabot] Bump geopandas to 1.1.2 Release: https://pypi.org/pypi/geopandas/1.1.2 Repository: https://github.com/geopandas/geopandas Typeshed stubs: https://github.com/python/typeshed/tree/main/stubs/geopandas Diff: https://github.com/geopandas/geopandas/compare/v1.1.1...v1.1.2 Stubsabot analysis of the diff between the two releases: - 0 public Python files have been added. - 0 files included in typeshed's stubs have been deleted. - 9 files included in typeshed's stubs have been modified or renamed. - Total lines of Python code added: 620. - Total lines of Python code deleted: 101. If stubtest fails for this PR: - Leave this PR open (as a reminder, and to prevent stubsabot from opening another PR) - Fix stubtest failures in another PR, then close this PR Note that you will need to close and re-open the PR in order to trigger CI --- stubs/geopandas/METADATA.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/geopandas/METADATA.toml b/stubs/geopandas/METADATA.toml index 97cd71db2c18..eabfde716d6a 100644 --- a/stubs/geopandas/METADATA.toml +++ b/stubs/geopandas/METADATA.toml @@ -1,4 +1,4 @@ -version = "1.1.1" +version = "1.1.2" # Requires a version of numpy with a `py.typed` file requires = ["numpy>=1.20", "pandas-stubs", "types-shapely", "pyproj"] upstream_repository = "https://github.com/geopandas/geopandas" From 3f4871a877e1781d0f2dea14e05e14982fb74867 Mon Sep 17 00:00:00 2001 From: sobolevn Date: Wed, 24 Dec 2025 11:39:26 +0300 Subject: [PATCH 19/25] [reportlab] Fix `__all__` in `rltempfile` --- stubs/reportlab/reportlab/lib/rltempfile.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/reportlab/reportlab/lib/rltempfile.pyi b/stubs/reportlab/reportlab/lib/rltempfile.pyi index 24b270ff237c..2cb9bb42992c 100644 --- a/stubs/reportlab/reportlab/lib/rltempfile.pyi +++ b/stubs/reportlab/reportlab/lib/rltempfile.pyi @@ -1,4 +1,4 @@ def get_rl_tempdir(*subdirs: str) -> str: ... def get_rl_tempfile(fn: str | None = None) -> str: ... -__all__ = ("get_rl_tempdir", "get_rl_tempdir") +__all__ = ("get_rl_tempdir", "get_rl_tempfile") From 95f59ac7cceaff79a02b8194981d39f67cfbf2e3 Mon Sep 17 00:00:00 2001 From: stubsabot <> Date: Thu, 1 Jan 2026 00:19:27 +0000 Subject: [PATCH 20/25] [stubsabot] Bump Send2Trash to 2.0.* Release: https://pypi.org/pypi/Send2Trash/2.0.0 Homepage: https://github.com/arsenetar/send2trash Repository: https://github.com/arsenetar/send2trash Typeshed stubs: https://github.com/python/typeshed/tree/main/stubs/Send2Trash Diff: https://github.com/arsenetar/send2trash/compare/1.8.3...2.0.0 Stubsabot analysis of the diff between the two releases: - 1 public Python file has been added: `tests/conftest.py`. - 0 files included in typeshed's stubs have been deleted. - 4 files included in typeshed's stubs have been modified or renamed: `send2trash/__init__.py`, `send2trash/__main__.py`, `send2trash/exceptions.py`, `send2trash/util.py`. - Total lines of Python code added: 267. - Total lines of Python code deleted: 343. If stubtest fails for this PR: - Leave this PR open (as a reminder, and to prevent stubsabot from opening another PR) - Fix stubtest failures in another PR, then close this PR Note that you will need to close and re-open the PR in order to trigger CI --- stubs/Send2Trash/METADATA.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/Send2Trash/METADATA.toml b/stubs/Send2Trash/METADATA.toml index 8ff27a7205d0..ef3d502bb9f6 100644 --- a/stubs/Send2Trash/METADATA.toml +++ b/stubs/Send2Trash/METADATA.toml @@ -1,2 +1,2 @@ -version = "1.8.*" +version = "2.0.*" upstream_repository = "https://github.com/arsenetar/send2trash" From ab931449d665f5a6b166da5d6cf1dbb601e5ffac Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 1 Jan 2026 01:47:58 +0000 Subject: [PATCH 21/25] Update dependency mypy to v1.19.1 --- requirements-tests.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-tests.txt b/requirements-tests.txt index 9a6db80b26c1..db44ea667728 100644 --- a/requirements-tests.txt +++ b/requirements-tests.txt @@ -1,6 +1,6 @@ # Type checkers that we test our stubs against. These should always # be pinned to a specific version to make failure reproducible. -mypy==1.18.2 +mypy==1.19.1 pyright==1.1.407 # Libraries used by our various scripts. From 7fbe683cd5f6be883317af96da42eb5ee9f7067b Mon Sep 17 00:00:00 2001 From: Shantanu Jain Date: Wed, 31 Dec 2025 18:40:10 -0800 Subject: [PATCH 22/25] debug --- tests/stubtest_third_party.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/stubtest_third_party.py b/tests/stubtest_third_party.py index d2ea4190bc77..b5e6ce266604 100755 --- a/tests/stubtest_third_party.py +++ b/tests/stubtest_third_party.py @@ -236,6 +236,8 @@ def setup_gdb_stubtest_command(venv_dir: Path, stubtest_cmd: list[str]) -> bool: # Taken from https://github.com/pwndbg/pwndbg/blob/83d8d95b576b749e888f533ce927ad5a77fb957b/gdbinit.py#L37 site_pkgs_path = glob(os.path.join({str(venv_dir)!r}, "lib/*/site-packages"))[0] site.addsitedir(site_pkgs_path) + print("!!! adding site", site_pkgs_path) + print("!!! sys.path", sys.path) exit_code = 1 try: From b4bc449dc99beb4105ac1f409987708c8767b154 Mon Sep 17 00:00:00 2001 From: Shantanu Jain Date: Wed, 31 Dec 2025 19:35:52 -0800 Subject: [PATCH 23/25] more debug --- tests/stubtest_third_party.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/stubtest_third_party.py b/tests/stubtest_third_party.py index b5e6ce266604..98e553ebb3b0 100755 --- a/tests/stubtest_third_party.py +++ b/tests/stubtest_third_party.py @@ -239,6 +239,9 @@ def setup_gdb_stubtest_command(venv_dir: Path, stubtest_cmd: list[str]) -> bool: print("!!! adding site", site_pkgs_path) print("!!! sys.path", sys.path) + import subprocess + subprocess.run("find / | grep librt", shell=True) + exit_code = 1 try: # gdb wraps stdout and stderr without a .fileno From 540ffc0e0e90a7a981732b2236ad4fe24ef37e46 Mon Sep 17 00:00:00 2001 From: Greg M Date: Fri, 2 Jan 2026 00:57:16 +1100 Subject: [PATCH 24/25] fixed Markdown --- CONTRIBUTING.md | 161 ++++++++++++++++++++++---------------------- README.md | 4 +- tests/README.md | 14 +++- tests/REGRESSION.md | 6 +- 4 files changed, 96 insertions(+), 89 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 250297d7a85b..eae13edb6c10 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -24,7 +24,7 @@ it takes a bit longer. For more details, read below. ## Preparing the environment -### Code away! +### Code away Typeshed runs continuous integration (CI) on all pull requests. This means that if you file a pull request (PR), our full test suite @@ -36,6 +36,16 @@ This frees you up to ignore all local setup on your side, focus on the code and rely on the CI to fix everything, or point you to the places that need fixing. +### Code formatting + +Typeshed uses `Black`, `Ruff`, and `Flake8` (with `flake8-pyi`) to enforce +formatting and style. CI will automatically apply many formatting fixes for +you, but you can run the same checks locally via `pre-commit`: + +```bash +(.venv)$ pre-commit run --all-files +``` + ### ... Or create a local development environment If you prefer to run the tests and formatting locally, it's @@ -50,56 +60,39 @@ please refer to this Note that some tests require extra setup steps to install the required dependencies. - - - - - - - - - - - - - - - -
Linux / macOS / WSL - - On Linux and macOS, you will be able to run the full test suite on Python - 3.9-3.12. - To install the necessary requirements, run the following commands from a - terminal window: - - ```bash - $ python3 -m venv .venv - $ source .venv/bin/activate - (.venv)$ pip install -U pip - (.venv)$ pip install -r requirements-tests.txt - ``` - -
Windows - - Run the following commands from a Windows terminal to install all requirements: - - ```powershell - > py -m venv .venv - > .venv\Scripts\activate - (.venv) > python -m pip install -U pip - (.venv) > pip install -r requirements-tests.txt - ``` - -
Using uv - - If you already have [uv](https://docs.astral.sh/uv/getting-started/installation/) installed, you can simply replace the commands above with: - - ```shell - uv venv - uv pip install -r requirements-tests.txt - ``` - -
+### Linux / macOS / WSL + +On Linux and macOS, you will be able to run the full test suite on Python +3.9-3.12. +To install the necessary requirements, run the following commands from a +terminal window: + +```bash +$ python3 -m venv .venv +$ source .venv/bin/activate +(.venv)$ pip install -U pip +(.venv)$ pip install -r requirements-tests.txt +``` + +### Windows + +Run the following commands from a Windows terminal to install all requirements: + +```powershell +> py -m venv .venv +> .venv\Scripts\activate +(.venv) > python -m pip install -U pip +(.venv) > pip install -r requirements-tests.txt +``` + +### Using uv + +If you already have [uv](https://docs.astral.sh/uv/getting-started/installation/) installed, you can simply replace the commands above with: + +```shell +uv venv +uv pip install -r requirements-tests.txt +``` ## Where to make changes @@ -121,6 +114,7 @@ to use syntax and typing features not supported by that version. ### Third-party library stubs We accept stubs for third-party packages into typeshed as long as: + * the package is publicly available on the [Python Package Index](https://pypi.org/); * the package supports any Python version supported by typeshed; and * the package does not ship with its own stubs or type annotations. @@ -129,6 +123,7 @@ The fastest way to generate new stubs is to use `scripts/create_baseline_stubs.p Stubs for third-party packages go into the `stubs` directory. Each subdirectory there represents a PyPI distribution, and contains the following: + * `METADATA.toml`, describing the package. See below for details. * Stubs (i.e. `*.pyi` files) for packages and modules that are shipped in the source distribution. @@ -155,9 +150,9 @@ supported: * `version`: The versions of the library that the stubs support. Two formats are supported: - - A concrete version. This is especially suited for libraries that + * A concrete version. This is especially suited for libraries that use [Calendar Versioning](https://calver.org/). - - A version range ending in `.*`. This is suited for libraries that + * A version range ending in `.*`. This is suited for libraries that reflect API changes in the version number only, where the API-independent part is represented by the asterisk. In the case of [Semantic Versioning](https://semver.org/), this version could look @@ -197,6 +192,7 @@ supported: In addition, we specify configuration for stubtest in the `tool.stubtest` table. This has the following keys: + * `skip` (default: `false`): Whether stubtest should be run against this package. Please avoid setting this to `true`, and add a comment if you have to. @@ -235,7 +231,6 @@ distribution. The format of all `METADATA.toml` files can be checked by running `python3 ./tests/check_typeshed_structure.py`. - ## Making Changes ### Before you begin @@ -279,8 +274,9 @@ constants, etc.) of the module they cover, but it is not always clear exactly what is part of the interface. The following should always be included: -- All objects listed in the module's documentation. -- All objects included in ``__all__`` (if present). + +* All objects listed in the module's documentation. +* All objects included in ``__all__`` (if present). Other objects may be included if they are being used in practice or if they are not prefixed with an underscore. This means @@ -350,35 +346,36 @@ be used in typeshed as soon as the PEP has been accepted and implemented and most type checkers support the new feature. Supported features include: -- [PEP 544](https://peps.python.org/pep-0544/) (Protocol) -- [PEP 585](https://peps.python.org/pep-0585/) (builtin generics) -- [PEP 586](https://peps.python.org/pep-0586/) (Literal) -- [PEP 591](https://peps.python.org/pep-0591/) (Final/@final) -- [PEP 589](https://peps.python.org/pep-0589/) (TypedDict) -- [PEP 604](https://peps.python.org/pep-0604/) (`Foo | Bar` union syntax) -- [PEP 612](https://peps.python.org/pep-0612/) (ParamSpec) -- [PEP 647](https://peps.python.org/pep-0647/) (TypeGuard): + +* [PEP 544](https://peps.python.org/pep-0544/) (Protocol) +* [PEP 585](https://peps.python.org/pep-0585/) (builtin generics) +* [PEP 586](https://peps.python.org/pep-0586/) (Literal) +* [PEP 591](https://peps.python.org/pep-0591/) (Final/@final) +* [PEP 589](https://peps.python.org/pep-0589/) (TypedDict) +* [PEP 604](https://peps.python.org/pep-0604/) (`Foo | Bar` union syntax) +* [PEP 612](https://peps.python.org/pep-0612/) (ParamSpec) +* [PEP 647](https://peps.python.org/pep-0647/) (TypeGuard): see [#5406](https://github.com/python/typeshed/issues/5406) -- [PEP 655](https://peps.python.org/pep-0655/) (`Required` and `NotRequired`) -- [PEP 673](https://peps.python.org/pep-0673/) (`Self`) -- [PEP 675](https://peps.python.org/pep-0675/) (`LiteralString`) -- [PEP 702](https://peps.python.org/pep-0702/) (`@deprecated()`) +* [PEP 655](https://peps.python.org/pep-0655/) (`Required` and `NotRequired`) +* [PEP 673](https://peps.python.org/pep-0673/) (`Self`) +* [PEP 675](https://peps.python.org/pep-0675/) (`LiteralString`) +* [PEP 702](https://peps.python.org/pep-0702/) (`@deprecated()`) Features from the `typing` module that are not present in all supported Python versions must be imported from `typing_extensions` instead in typeshed stubs. This currently affects: -- `TypeAlias` (new in Python 3.10) -- `Concatenate` (new in Python 3.10) -- `ParamSpec` (new in Python 3.10) -- `TypeGuard` (new in Python 3.10) -- `Self` (new in Python 3.11) -- `Never` (new in Python 3.11) -- `LiteralString` (new in Python 3.11) -- `TypeVarTuple` and `Unpack` (new in Python 3.11) -- `Required` and `NotRequired` (new in Python 3.11) -- `Buffer` (new in Python 3.12; in the `collections.abc` module) -- `@deprecated` (new in Python 3.13; in the `warnings` module) +* `TypeAlias` (new in Python 3.10) +* `Concatenate` (new in Python 3.10) +* `ParamSpec` (new in Python 3.10) +* `TypeGuard` (new in Python 3.10) +* `Self` (new in Python 3.11) +* `Never` (new in Python 3.11) +* `LiteralString` (new in Python 3.11) +* `TypeVarTuple` and `Unpack` (new in Python 3.11) +* `Required` and `NotRequired` (new in Python 3.11) +* `Buffer` (new in Python 3.12; in the `collections.abc` module) +* `@deprecated` (new in Python 3.13; in the `warnings` module) Some type checkers implicitly promote the `bytearray` and `memoryview` types to `bytes`. @@ -462,10 +459,10 @@ We sometimes use the ["status: deferred" label](https://github.com/python/typesh to mark PRs and issues that we'd like to accept, but that are blocked by some external factor. Blockers can include: -- An unambiguous bug in a type checker (i.e., a case where the +* An unambiguous bug in a type checker (i.e., a case where the type checker is not implementing [the typing spec](https://typing.readthedocs.io/en/latest/spec/index.html)). -- A dependency on a typing PEP that is still under consideration. -- A pending change in a related project, such as stub-uploader. +* A dependency on a typing PEP that is still under consideration. +* A pending change in a related project, such as stub-uploader. ### Closing stale PRs diff --git a/README.md b/README.md index d295b56bc05d..471ed31454cf 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ it before submitting pull requests; do not report issues with annotations to 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/. +general, can also be found at . Typeshed supports Python versions 3.9 to 3.14. @@ -35,7 +35,7 @@ be installed from PyPI. For example, if you are using `html5lib` and `requests`, you can install the type stubs using ```bash -$ pip install types-html5lib types-requests +pip install types-html5lib types-requests ``` These PyPI packages follow [PEP 561](http://www.python.org/dev/peps/pep-0561/) diff --git a/tests/README.md b/tests/README.md index a8f2c5e9a944..1aeb9fe57a9c 100644 --- a/tests/README.md +++ b/tests/README.md @@ -1,4 +1,5 @@ -This directory contains several tests: +# This directory contains several tests + - `tests/mypy_test.py` tests the stubs with [mypy](https://github.com/python/mypy/) - `tests/pyright_test.py` tests the stubs with @@ -21,6 +22,7 @@ In order for `pyright_test` to work correctly, some third-party stubs may require extra dependencies external to typeshed to be installed in your virtual environment prior to running the test. You can list or install all of a stubs package's external dependencies using the following script: + ```bash (.venv3)$ python tests/get_external_stub_requirements.py # List external dependencies for (.venv3)$ python tests/get_external_stub_requirements.py # List external dependencies for and @@ -31,6 +33,7 @@ You can list or install all of a stubs package's external dependencies using the ## Run all tests for a specific stub Run using: + ```bash (.venv3)$ python3 tests/runtests.py / ``` @@ -51,6 +54,7 @@ For more information, see the docs on [`stubtest_stdlib.py`](#stubtest_stdlibpy) ## mypy\_test.py Run using: + ```bash (.venv3)$ python3 tests/mypy_test.py ``` @@ -70,6 +74,7 @@ for this script. This test requires [Node.js](https://nodejs.org) to be installed. Although typeshed runs pyright in CI, it does not currently use this script. However, this script uses the same pyright version and configuration as the CI. + ```bash (.venv3)$ python3 tests/pyright_test.py # Check all files (.venv3)$ python3 tests/pyright_test.py stdlib/sys.pyi # Check one file @@ -95,13 +100,15 @@ for information on the various configuration options. This checks that typeshed's directory structure and metadata files are correct. Run using: + ```bash -$ python3 tests/check_typeshed_structure.py +python3 tests/check_typeshed_structure.py ``` ## stubtest\_stdlib.py Run using + ```bash (.venv3)$ python3 tests/stubtest_stdlib.py ``` @@ -137,6 +144,7 @@ this script locally if you know you can trust the packages you're running stubtest on. Run using + ```bash (.venv3)$ python3 tests/stubtest_third_party.py ``` @@ -151,6 +159,7 @@ check on the command line: If you have the runtime package installed in your local virtual environment, you can also run stubtest directly, with + ```bash (.venv3)$ MYPYPATH= python3 -m mypy.stubtest \ --custom-typeshed-dir \ @@ -202,6 +211,7 @@ configuration to properly validate Django-specific types during stubtest executi ## typecheck\_typeshed.py Run using + ```bash (.venv3)$ python3 tests/typecheck_typeshed.py ``` diff --git a/tests/REGRESSION.md b/tests/REGRESSION.md index e0d37edd56f1..9eb6c3d3544b 100644 --- a/tests/REGRESSION.md +++ b/tests/REGRESSION.md @@ -1,4 +1,4 @@ -## Regression tests for typeshed +# Regression tests for typeshed Regression tests for the standard library stubs can be found in the `stdlib/@tests/test_cases` directory. Not all third-party-library stub @@ -13,7 +13,7 @@ get right.** 100% test coverage for typeshed is neither necessary nor desirable, as it would lead to code duplication. Moreover, typeshed has multiple other mechanisms for spotting errors in the stubs. -### The purpose of these tests +## The purpose of these tests Different test cases in typeshed serve different purposes. For some typeshed stubs, the type annotations are complex enough that it's useful to have @@ -126,7 +126,7 @@ test cases for `foo` should be put in a file named This means that mypy will only run the test case if `--python-version 3.11`, `--python-version 3.12`, etc. is passed on the command line to `tests/regr_test.py`, -but it _won't_ run the test case if e.g. `--python-version 3.9` +but it *won't* run the test case if e.g. `--python-version 3.9` is passed on the command line. However, `if sys.version_info >= (3, target):` is still required for `pyright` From ef07aa6cfe64d1637173e249101540471856ea3f Mon Sep 17 00:00:00 2001 From: Greg M Date: Fri, 2 Jan 2026 01:05:58 +1100 Subject: [PATCH 25/25] typeshed: Update MAINTAINERS.md --- MAINTAINERS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MAINTAINERS.md b/MAINTAINERS.md index 7f33b516f22b..f85a71b899a6 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -1,4 +1,4 @@ -At present the active maintainers are (alphabetically): +# At present the active maintainers are (alphabetically) * Rebecca Chen (@rchen152) * Jukka Lehtosalo (@JukkaL)