diff --git a/.github/workflows/ci-python.yml b/.github/workflows/ci-python.yml
index 8cbff243e0962..8f9ce869f23f6 100644
--- a/.github/workflows/ci-python.yml
+++ b/.github/workflows/ci-python.yml
@@ -20,14 +20,14 @@ jobs:
steps:
- name: Checkout source tree
uses: actions/checkout@v4
- - name: Set up Python 3.9
+ - name: Set up Python 3.10
uses: actions/setup-python@v6
with:
- python-version: 3.9
+ python-version: '3.10'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
- pip install tox==4.30.2
+ pip install tox
- name: Generate docs
run: tox -c py/tox.ini
env:
@@ -40,14 +40,14 @@ jobs:
steps:
- name: Checkout source tree
uses: actions/checkout@v4
- - name: Set up Python 3.9
+ - name: Set up Python 3.10
uses: actions/setup-python@v6
with:
- python-version: 3.9
+ python-version: '3.10'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
- pip install tox==4.30.2
+ pip install tox
- name: Run type checking
run: |
tox -c py/tox.ini || true
diff --git a/.github/workflows/update-documentation.yml b/.github/workflows/update-documentation.yml
index d9d1ff83f197f..5ec9389fb1dc7 100644
--- a/.github/workflows/update-documentation.yml
+++ b/.github/workflows/update-documentation.yml
@@ -66,11 +66,11 @@ jobs:
with:
java-version: 17
distribution: 'temurin'
- - name: Set up Python 3.9
+ - name: Set up Python 3.10
if: ${{ inputs.language == 'py' || inputs.language == 'all' }}
uses: actions/setup-python@v6
with:
- python-version: 3.9
+ python-version: '3.10'
- name: Install dependencies
if: ${{ inputs.language == 'py' || inputs.language == 'all' }}
run: |
diff --git a/MODULE.bazel b/MODULE.bazel
index dd60b47797859..999eb38bc05d6 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -24,7 +24,7 @@ bazel_dep(name = "rules_multitool", version = "1.3.0")
bazel_dep(name = "rules_nodejs", version = "6.3.2")
bazel_dep(name = "rules_oci", version = "1.8.0")
bazel_dep(name = "rules_pkg", version = "1.0.1")
-bazel_dep(name = "rules_python", version = "1.5.0")
+bazel_dep(name = "rules_python", version = "1.6.3")
bazel_dep(name = "rules_proto", version = "7.0.2")
bazel_dep(name = "rules_ruby", version = "0.19.0")
@@ -123,12 +123,12 @@ use_repo(oci, "chrome_standalone", "firefox_standalone", "java_image_base")
python = use_extension("@rules_python//python/extensions:python.bzl", "python")
python.toolchain(
is_default = True,
- python_version = "3.9",
+ python_version = "3.10",
)
-python.toolchain(python_version = "3.10")
python.toolchain(python_version = "3.11")
python.toolchain(python_version = "3.12")
python.toolchain(python_version = "3.13")
+python.toolchain(python_version = "3.14")
use_repo(python, "pythons_hub")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
@@ -140,11 +140,11 @@ pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
requirements_lock = "//py:requirements_lock.txt",
)
for version in [
- "3.9",
"3.10",
"3.11",
"3.12",
"3.13",
+ "3.14",
]
]
diff --git a/multitool.lock.json b/multitool.lock.json
index 078148109b7f5..0dff14971c3c0 100644
--- a/multitool.lock.json
+++ b/multitool.lock.json
@@ -4,41 +4,41 @@
"binaries": [
{
"kind": "archive",
- "url": "https://github.com/astral-sh/ruff/releases/download/0.13.0/ruff-aarch64-unknown-linux-musl.tar.gz",
+ "url": "https://github.com/astral-sh/ruff/releases/download/0.13.3/ruff-aarch64-unknown-linux-musl.tar.gz",
"file": "ruff-aarch64-unknown-linux-musl/ruff",
- "sha256": "bdee6f1376470b74b1dc5ed48eca52ec9c3e4512bd7f3204e0df100f0bed4741",
+ "sha256": "4301d51fd2fbce6d4cc55613e5f8f96ee4fcb8dcaec8419023fe555575cf78f6",
"os": "linux",
"cpu": "arm64"
},
{
"kind": "archive",
- "url": "https://github.com/astral-sh/ruff/releases/download/0.13.0/ruff-x86_64-unknown-linux-musl.tar.gz",
+ "url": "https://github.com/astral-sh/ruff/releases/download/0.13.3/ruff-x86_64-unknown-linux-musl.tar.gz",
"file": "ruff-x86_64-unknown-linux-musl/ruff",
- "sha256": "b56ac90cc6987401bafdcf1b931ef044074c5b9451286afa4606a983f64f4fdd",
+ "sha256": "8d24d74171772c67366d3187b990a3dc706022aa3a631b2a612d12e362f226c7",
"os": "linux",
"cpu": "x86_64"
},
{
"kind": "archive",
- "url": "https://github.com/astral-sh/ruff/releases/download/0.13.0/ruff-aarch64-apple-darwin.tar.gz",
+ "url": "https://github.com/astral-sh/ruff/releases/download/0.13.3/ruff-aarch64-apple-darwin.tar.gz",
"file": "ruff-aarch64-apple-darwin/ruff",
- "sha256": "0d706798534537b6655b79fd95c2955c0a0013d4c54d36679d3306825a6bd6aa",
+ "sha256": "a170ead9a9f03527dba3d2fb3e9e445f73d9efe3584c3307f3d30c6d5f31c487",
"os": "macos",
"cpu": "arm64"
},
{
"kind": "archive",
- "url": "https://github.com/astral-sh/ruff/releases/download/0.13.0/ruff-x86_64-apple-darwin.tar.gz",
+ "url": "https://github.com/astral-sh/ruff/releases/download/0.13.3/ruff-x86_64-apple-darwin.tar.gz",
"file": "ruff-x86_64-apple-darwin/ruff",
- "sha256": "ac47ad1ac90f3070c064d2f5fceef4fe609fec7c073fd29d0814ed126c492e6d",
+ "sha256": "1c3a291a595ddd08398eb1e06fba883b7d8d715bd4255af5972f858fec8b4e57",
"os": "macos",
"cpu": "x86_64"
},
{
"kind": "archive",
- "url": "https://github.com/astral-sh/ruff/releases/download/0.13.0/ruff-x86_64-pc-windows-msvc.zip",
+ "url": "https://github.com/astral-sh/ruff/releases/download/0.13.3/ruff-x86_64-pc-windows-msvc.zip",
"file": "ruff-x86_64-pc-windows-msvc/ruff.exe",
- "sha256": "3a8d8cb96333671f78a5d209ddb4f830287e3eb2796fe01dd043b02ec1c1c7f1",
+ "sha256": "01e7ce81e052ad8788d6a9bffbce74524d80fbf0659e6194165d1e1d3ded9f39",
"os": "windows",
"cpu": "x86_64"
}
diff --git a/py/BUILD.bazel b/py/BUILD.bazel
index 2a8fdc30063b3..ea7b0dd374692 100644
--- a/py/BUILD.bazel
+++ b/py/BUILD.bazel
@@ -314,24 +314,24 @@ py_wheel(
"Topic :: Software Development :: Testing",
"Topic :: Software Development :: Libraries",
"Programming Language :: Python",
- "Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
+ "Programming Language :: Python :: 3.14",
],
description_file = "README.rst",
distribution = "selenium",
homepage = "https://www.selenium.dev",
license = "Apache-2.0",
- python_requires = ">=3.9",
+ python_requires = ">=3.10",
python_tag = "py3",
requires = [
"urllib3[socks]>=2.5.0,<3.0",
- "trio>=0.30.0,<1.0",
+ "trio>=0.31.0,<1.0",
"trio-websocket>=0.12.2,<1.0",
- "certifi>=2025.6.15",
- "typing_extensions>=4.14.0,<5.0",
+ "certifi>=2025.10.5",
+ "typing_extensions>=4.15.0,<5.0",
"websocket-client>=1.8.0,<2.0",
],
strip_path_prefixes = [
diff --git a/py/docs/requirements.txt b/py/docs/requirements.txt
index 39a1851859249..29d534bc4ad14 100644
--- a/py/docs/requirements.txt
+++ b/py/docs/requirements.txt
@@ -1,3 +1,3 @@
Jinja2==3.1.6
-Sphinx==7.4.7
+Sphinx==8.1.3
sphinx-material==0.0.36
diff --git a/py/docs/source/index.rst b/py/docs/source/index.rst
index 9e5859e5ac040..992e43c22f24a 100644
--- a/py/docs/source/index.rst
+++ b/py/docs/source/index.rst
@@ -30,7 +30,7 @@ Updated documentation published with each commit is available at: `readthedocs.i
Supported Python Versions
=========================
-* Python 3.9+
+* Python 3.10+
Supported Browsers
==================
@@ -51,11 +51,11 @@ Install or upgrade the Python bindings with `pip `.
Latest official release::
- pip install -U selenium
+ pip install selenium
Nightly development release::
- pip install -U --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ selenium
+ pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ selenium
Note: you should consider using a
`virtual environment `_
diff --git a/py/pyproject.toml b/py/pyproject.toml
index 39b06b8fefd00..3b8bd059d6337 100644
--- a/py/pyproject.toml
+++ b/py/pyproject.toml
@@ -9,7 +9,7 @@ license = "Apache-2.0"
license-files = ["LICENSE", "NOTICE"]
description = "Official Python bindings for Selenium WebDriver."
readme = "README.rst"
-requires-python = "~=3.9"
+requires-python = ">=3.10"
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
@@ -19,18 +19,18 @@ classifiers = [
"Topic :: Software Development :: Testing",
"Topic :: Software Development :: Libraries",
"Programming Language :: Python",
- "Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
+ "Programming Language :: Python :: 3.14",
]
dependencies = [
"urllib3[socks]>=2.5.0,<3.0",
- "trio>=0.30.0,<1.0",
+ "trio>=0.31.0,<1.0",
"trio-websocket>=0.12.2,<1.0",
- "certifi>=2025.6.15",
- "typing_extensions>=4.14.0,<5.0",
+ "certifi>=2025.10.5",
+ "typing_extensions>=4.15.0,<5.0",
"websocket-client>=1.8.0,<2.0",
]
diff --git a/py/requirements.txt b/py/requirements.txt
index 955d4c7fa84ce..46960fac7d730 100644
--- a/py/requirements.txt
+++ b/py/requirements.txt
@@ -1,12 +1,12 @@
attrs==25.3.0
cachetools==6.2.0
-certifi==2025.8.3
+certifi==2025.10.5
cffi==2.0.0
chardet==5.2.0
charset-normalizer==3.4.3
colorama==0.4.6
-cryptography==45.0.7
-debugpy==1.8.16
+cryptography==46.0.2
+debugpy==1.8.17
distlib==0.4.0
docutils==0.21.2
filelock==3.19.1
@@ -22,7 +22,7 @@ jaraco.context==6.0.1
jaraco.functools==4.3.0
jeepney==0.9.0
keyring==25.6.0
-markdown-it-py==3.0.0
+markdown-it-py==4.0.0
mdurl==0.1.2
more-itertools==10.8.0
multidict==6.6.4
@@ -38,7 +38,7 @@ pyproject-api==1.9.1
PySocks==1.7.1
pytest==8.4.2
pytest-instafail==0.5.0
-pytest-mock==3.15.0
+pytest-mock==3.15.1
pytest-trio==0.8.0
pywin32-ctypes==0.2.3
readme_renderer==44.0
@@ -46,10 +46,10 @@ requests==2.32.5
requests-toolbelt==1.0.0
rfc3986==2.0.0
rich==14.1.0
-SecretStorage==3.3.3
+SecretStorage==3.4.0
sniffio==1.3.1
sortedcontainers==2.4.0
-tox==4.30.2
+tox==4.30.3
trio==0.31.0
trio-websocket==0.12.2
twine==6.2.0
diff --git a/py/requirements_lock.txt b/py/requirements_lock.txt
index 26a0204b10293..3fb0d9d063105 100644
--- a/py/requirements_lock.txt
+++ b/py/requirements_lock.txt
@@ -1,5 +1,5 @@
#
-# This file is autogenerated by pip-compile with Python 3.9
+# This file is autogenerated by pip-compile with Python 3.10
# by the following command:
#
# bazel run //py:requirements.update
@@ -21,9 +21,9 @@ cachetools==6.2.0 \
# via
# -r py/requirements.txt
# tox
-certifi==2025.8.3 \
- --hash=sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407 \
- --hash=sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5
+certifi==2025.10.5 \
+ --hash=sha256:0f212c2744a9bb6de0c56639a6f68afe01ecd92d91f14ae897c4fe7bbeeef0de \
+ --hash=sha256:47c09d31ccf2acf0be3f701ea53595ee7e0b8fa08801c6624be771df09ae7b43
# via
# -r py/requirements.txt
# requests
@@ -210,74 +210,95 @@ colorama==0.4.6 \
# via
# -r py/requirements.txt
# tox
-cryptography==45.0.7 \
- --hash=sha256:06ce84dc14df0bf6ea84666f958e6080cdb6fe1231be2a51f3fc1267d9f3fb34 \
- --hash=sha256:16ede8a4f7929b4b7ff3642eba2bf79aa1d71f24ab6ee443935c0d269b6bc513 \
- --hash=sha256:18fcf70f243fe07252dcb1b268a687f2358025ce32f9f88028ca5c364b123ef5 \
- --hash=sha256:1993a1bb7e4eccfb922b6cd414f072e08ff5816702a0bdb8941c247a6b1b287c \
- --hash=sha256:1f3d56f73595376f4244646dd5c5870c14c196949807be39e79e7bd9bac3da63 \
- --hash=sha256:258e0dff86d1d891169b5af222d362468a9570e2532923088658aa866eb11130 \
- --hash=sha256:2f641b64acc00811da98df63df7d59fd4706c0df449da71cb7ac39a0732b40ae \
- --hash=sha256:3808e6b2e5f0b46d981c24d79648e5c25c35e59902ea4391a0dcb3e667bf7443 \
- --hash=sha256:3994c809c17fc570c2af12c9b840d7cea85a9fd3e5c0e0491f4fa3c029216d59 \
- --hash=sha256:3be4f21c6245930688bd9e162829480de027f8bf962ede33d4f8ba7d67a00cee \
- --hash=sha256:465ccac9d70115cd4de7186e60cfe989de73f7bb23e8a7aa45af18f7412e75bf \
- --hash=sha256:48c41a44ef8b8c2e80ca4527ee81daa4c527df3ecbc9423c41a420a9559d0e27 \
- --hash=sha256:4a862753b36620af6fc54209264f92c716367f2f0ff4624952276a6bbd18cbde \
- --hash=sha256:4b1654dfc64ea479c242508eb8c724044f1e964a47d1d1cacc5132292d851971 \
- --hash=sha256:4bd3e5c4b9682bc112d634f2c6ccc6736ed3635fc3319ac2bb11d768cc5a00d8 \
- --hash=sha256:577470e39e60a6cd7780793202e63536026d9b8641de011ed9d8174da9ca5339 \
- --hash=sha256:67285f8a611b0ebc0857ced2081e30302909f571a46bfa7a3cc0ad303fe015c6 \
- --hash=sha256:7285a89df4900ed3bfaad5679b1e668cb4b38a8de1ccbfc84b05f34512da0a90 \
- --hash=sha256:81823935e2f8d476707e85a78a405953a03ef7b7b4f55f93f7c2d9680e5e0691 \
- --hash=sha256:8978132287a9d3ad6b54fcd1e08548033cc09dc6aacacb6c004c73c3eb5d3ac3 \
- --hash=sha256:a20e442e917889d1a6b3c570c9e3fa2fdc398c20868abcea268ea33c024c4083 \
- --hash=sha256:a24ee598d10befaec178efdff6054bc4d7e883f615bfbcd08126a0f4931c83a6 \
- --hash=sha256:b04f85ac3a90c227b6e5890acb0edbaf3140938dbecf07bff618bf3638578cf1 \
- --hash=sha256:b6a0e535baec27b528cb07a119f321ac024592388c5681a5ced167ae98e9fff3 \
- --hash=sha256:bef32a5e327bd8e5af915d3416ffefdbe65ed975b646b3805be81b23580b57b8 \
- --hash=sha256:bfb4c801f65dd61cedfc61a83732327fafbac55a47282e6f26f073ca7a41c3b2 \
- --hash=sha256:c13b1e3afd29a5b3b2656257f14669ca8fa8d7956d509926f0b130b600b50ab7 \
- --hash=sha256:c987dad82e8c65ebc985f5dae5e74a3beda9d0a2a4daf8a1115f3772b59e5141 \
- --hash=sha256:ce7a453385e4c4693985b4a4a3533e041558851eae061a58a5405363b098fcd3 \
- --hash=sha256:d0c5c6bac22b177bf8da7435d9d27a6834ee130309749d162b26c3105c0795a9 \
- --hash=sha256:d97cf502abe2ab9eff8bd5e4aca274da8d06dd3ef08b759a8d6143f4ad65d4b4 \
- --hash=sha256:dad43797959a74103cb59c5dac71409f9c27d34c8a05921341fb64ea8ccb1dd4 \
- --hash=sha256:dd342f085542f6eb894ca00ef70236ea46070c8a13824c6bde0dfdcd36065b9b \
- --hash=sha256:de58755d723e86175756f463f2f0bddd45cc36fbd62601228a3f8761c9f58252 \
- --hash=sha256:f3df7b3d0f91b88b2106031fd995802a2e9ae13e02c36c1fc075b43f420f3a17 \
- --hash=sha256:f5414a788ecc6ee6bc58560e85ca624258a55ca434884445440a810796ea0e0b \
- --hash=sha256:fa26fa54c0a9384c27fcdc905a2fb7d60ac6e47d14bc2692145f2b3b1e2cfdbd
+cryptography==46.0.2 \
+ --hash=sha256:04911b149eae142ccd8c9a68892a70c21613864afb47aba92d8c7ed9cc001023 \
+ --hash=sha256:07c0eb6657c0e9cca5891f4e35081dbf985c8131825e21d99b4f440a8f496f36 \
+ --hash=sha256:0b507c8e033307e37af61cb9f7159b416173bdf5b41d11c4df2e499a1d8e007c \
+ --hash=sha256:0c7ffe8c9b1fcbb07a26d7c9fa5e857c2fe80d72d7b9e0353dcf1d2180ae60ee \
+ --hash=sha256:1a88634851d9b8de8bb53726f4300ab191d3b2f42595e2581a54b26aba71b7cc \
+ --hash=sha256:1d3b3edd145953832e09607986f2bd86f85d1dc9c48ced41808b18009d9f30e5 \
+ --hash=sha256:1e3b6428a3d56043bff0bb85b41c535734204e599c1c0977e1d0f261b02f3ad5 \
+ --hash=sha256:1fd1a69086926b623ef8126b4c33d5399ce9e2f3fac07c9c734c2a4ec38b6d02 \
+ --hash=sha256:218abd64a2e72f8472c2102febb596793347a3e65fafbb4ad50519969da44470 \
+ --hash=sha256:21b6fc8c71a3f9a604f028a329e5560009cc4a3a828bfea5fcba8eb7647d88fe \
+ --hash=sha256:27c53b4f6a682a1b645fbf1cd5058c72cf2f5aeba7d74314c36838c7cbc06e0f \
+ --hash=sha256:2b9cad9cf71d0c45566624ff76654e9bae5f8a25970c250a26ccfc73f8553e2d \
+ --hash=sha256:2fafb6aa24e702bbf74de4cb23bfa2c3beb7ab7683a299062b69724c92e0fa73 \
+ --hash=sha256:3f37aa12b2d91e157827d90ce78f6180f0c02319468a0aea86ab5a9566da644b \
+ --hash=sha256:48b983089378f50cba258f7f7aa28198c3f6e13e607eaf10472c26320332ca9a \
+ --hash=sha256:48c01988ecbb32979bb98731f5c2b2f79042a6c58cc9a319c8c2f9987c7f68f9 \
+ --hash=sha256:4a766d2a5d8127364fd936572c6e6757682fc5dfcbdba1632d4554943199f2fa \
+ --hash=sha256:512c0250065e0a6b286b2db4bbcc2e67d810acd53eb81733e71314340366279e \
+ --hash=sha256:5840f05518caa86b09d23f8b9405a7b6d5400085aa14a72a98fdf5cf1568c0d2 \
+ --hash=sha256:5e38f203160a48b93010b07493c15f2babb4e0f2319bbd001885adb3f3696d21 \
+ --hash=sha256:6b275e398ab3a7905e168c036aad54b5969d63d3d9099a0a66cc147a3cc983be \
+ --hash=sha256:7282d8f092b5be7172d6472f29b0631f39f18512a3642aefe52c3c0e0ccfad5a \
+ --hash=sha256:747b6f4a4a23d5a215aadd1d0b12233b4119c4313df83ab4137631d43672cc90 \
+ --hash=sha256:758cfc7f4c38c5c5274b55a57ef1910107436f4ae842478c4989abbd24bd5acb \
+ --hash=sha256:8b16c1ede6a937c291d41176934268e4ccac2c6521c69d3f5961c5a1e11e039e \
+ --hash=sha256:8b9bf67b11ef9e28f4d78ff88b04ed0929fcd0e4f70bb0f704cfc32a5c6311ee \
+ --hash=sha256:8e2ad4d1a5899b7caa3a450e33ee2734be7cc0689010964703a7c4bcc8dd4fd0 \
+ --hash=sha256:9066cfd7f146f291869a9898b01df1c9b0e314bfa182cef432043f13fc462c92 \
+ --hash=sha256:91447f2b17e83c9e0c89f133119d83f94ce6e0fb55dd47da0a959316e6e9cfa1 \
+ --hash=sha256:97e83bf4f2f2c084d8dd792d13841d0a9b241643151686010866bbd076b19659 \
+ --hash=sha256:9bd26f2f75a925fdf5e0a446c0de2714f17819bf560b44b7480e4dd632ad6c46 \
+ --hash=sha256:9bdc25e4e01b261a8fda4e98618f1c9515febcecebc9566ddf4a70c63967043b \
+ --hash=sha256:9ec3f2e2173f36a9679d3b06d3d01121ab9b57c979de1e6a244b98d51fea1b20 \
+ --hash=sha256:9f13b040649bc18e7eb37936009b24fd31ca095a5c647be8bb6aaf1761142bd1 \
+ --hash=sha256:a08e7401a94c002e79dc3bc5231b6558cd4b2280ee525c4673f650a37e2c7685 \
+ --hash=sha256:a61c154cc5488272a6c4b86e8d5beff4639cdb173d75325ce464d723cda0052b \
+ --hash=sha256:bb7fb9cd44c2582aa5990cf61a4183e6f54eea3172e54963787ba47287edd135 \
+ --hash=sha256:bca3f0ce67e5a2a2cf524e86f44697c4323a86e0fd7ba857de1c30d52c11ede1 \
+ --hash=sha256:bda55e8dbe8533937956c996beaa20266a8eca3570402e52ae52ed60de1faca8 \
+ --hash=sha256:be939b99d4e091eec9a2bcf41aaf8f351f312cd19ff74b5c83480f08a8a43e0b \
+ --hash=sha256:c4b93af7920cdf80f71650769464ccf1fb49a4b56ae0024173c24c48eb6b1612 \
+ --hash=sha256:cb5e8daac840e8879407acbe689a174f5ebaf344a062f8918e526824eb5d97af \
+ --hash=sha256:d19f5f48883752b5ab34cff9e2f7e4a7f216296f33714e77d1beb03d108632b6 \
+ --hash=sha256:d30bc11d35743bf4ddf76674a0a369ec8a21f87aaa09b0661b04c5f6c46e8d7b \
+ --hash=sha256:e12b61e0b86611e3f4c1756686d9086c1d36e6fd15326f5658112ad1f1cc8807 \
+ --hash=sha256:e6f6775eaaa08c0eec73e301f7592f4367ccde5e4e4df8e58320f2ebf161ea2c \
+ --hash=sha256:e7155c0b004e936d381b15425273aee1cebc94f879c0ce82b0d7fecbf755d53a \
+ --hash=sha256:e8633996579961f9b5a3008683344c2558d38420029d3c0bc7ff77c17949a4e1 \
+ --hash=sha256:f25a41f5b34b371a06dad3f01799706631331adc7d6c05253f5bca22068c7a34 \
+ --hash=sha256:f3e32ab7dd1b1ef67b9232c4cf5e2ee4cd517d4316ea910acaaa9c5712a1c663 \
+ --hash=sha256:f9b2dc7668418fb6f221e4bf701f716e05e8eadb4f1988a2487b11aedf8abe62 \
+ --hash=sha256:fab8f805e9675e61ed8538f192aad70500fa6afb33a8803932999b1049363a08 \
+ --hash=sha256:fe245cf4a73c20592f0f48da39748b3513db114465be78f0a36da847221bd1b4 \
+ --hash=sha256:ff798ad7a957a5021dcbab78dfff681f0cf15744d0e6af62bd6746984d9c9e9c
# via
# -r py/requirements.txt
# secretstorage
-debugpy==1.8.16 \
- --hash=sha256:135ccd2b1161bade72a7a099c9208811c137a150839e970aeaf121c2467debe8 \
- --hash=sha256:19c9521962475b87da6f673514f7fd610328757ec993bf7ec0d8c96f9a325f9e \
- --hash=sha256:211238306331a9089e253fd997213bc4a4c65f949271057d6695953254095376 \
- --hash=sha256:2801329c38f77c47976d341d18040a9ac09d0c71bf2c8b484ad27c74f83dc36f \
- --hash=sha256:2a3958fb9c2f40ed8ea48a0d34895b461de57a1f9862e7478716c35d76f56c65 \
- --hash=sha256:31e69a1feb1cf6b51efbed3f6c9b0ef03bc46ff050679c4be7ea6d2e23540870 \
- --hash=sha256:64473c4a306ba11a99fe0bb14622ba4fbd943eb004847d9b69b107bde45aa9ea \
- --hash=sha256:67371b28b79a6a12bcc027d94a06158f2fde223e35b5c4e0783b6f9d3b39274a \
- --hash=sha256:687c7ab47948697c03b8f81424aa6dc3f923e6ebab1294732df1ca9773cc67bc \
- --hash=sha256:70f5fcd6d4d0c150a878d2aa37391c52de788c3dc680b97bdb5e529cb80df87a \
- --hash=sha256:75f204684581e9ef3dc2f67687c3c8c183fde2d6675ab131d94084baf8084121 \
- --hash=sha256:833a61ed446426e38b0dd8be3e9d45ae285d424f5bf6cd5b2b559c8f12305508 \
- --hash=sha256:85df3adb1de5258dca910ae0bb185e48c98801ec15018a263a92bb06be1c8787 \
- --hash=sha256:8624a6111dc312ed8c363347a0b59c5acc6210d897e41a7c069de3c53235c9a6 \
- --hash=sha256:88eb9ffdfb59bf63835d146c183d6dba1f722b3ae2a5f4b9fc03e925b3358922 \
- --hash=sha256:a2ba6fc5d7c4bc84bcae6c5f8edf5988146e55ae654b1bb36fecee9e5e77e9e2 \
- --hash=sha256:b202e2843e32e80b3b584bcebfe0e65e0392920dc70df11b2bfe1afcb7a085e4 \
- --hash=sha256:b2abae6dd02523bec2dee16bd6b0781cccb53fd4995e5c71cc659b5f45581898 \
- --hash=sha256:b5aea1083f6f50023e8509399d7dc6535a351cc9f2e8827d1e093175e4d9fa4c \
- --hash=sha256:bee89e948bc236a5c43c4214ac62d28b29388453f5fd328d739035e205365f0b \
- --hash=sha256:c2c47c2e52b40449552843b913786499efcc3dbc21d6c49287d939cd0dbc49fd \
- --hash=sha256:cf358066650439847ec5ff3dae1da98b5461ea5da0173d93d5e10f477c94609a \
- --hash=sha256:d58c48d8dbbbf48a3a3a638714a2d16de537b0dace1e3432b8e92c57d43707f8 \
- --hash=sha256:e5ca7314042e8a614cc2574cd71f6ccd7e13a9708ce3c6d8436959eae56f2378 \
- --hash=sha256:f8340a3ac2ed4f5da59e064aa92e39edd52729a88fbde7bbaa54e08249a04493 \
- --hash=sha256:fee6db83ea5c978baf042440cfe29695e1a5d48a30147abf4c3be87513609817
+debugpy==1.8.17 \
+ --hash=sha256:045290c010bcd2d82bc97aa2daf6837443cd52f6328592698809b4549babcee1 \
+ --hash=sha256:1440fd514e1b815edd5861ca394786f90eb24960eb26d6f7200994333b1d79e3 \
+ --hash=sha256:17e456da14848d618662354e1dccfd5e5fb75deec3d1d48dc0aa0baacda55860 \
+ --hash=sha256:24693179ef9dfa20dca8605905a42b392be56d410c333af82f1c5dff807a64cc \
+ --hash=sha256:3a32c0af575749083d7492dc79f6ab69f21b2d2ad4cd977a958a07d5865316e4 \
+ --hash=sha256:3bea3b0b12f3946e098cce9b43c3c46e317b567f79570c3f43f0b96d00788088 \
+ --hash=sha256:5c59b74aa5630f3a5194467100c3b3d1c77898f9ab27e3f7dc5d40fc2f122670 \
+ --hash=sha256:60c7dca6571efe660ccb7a9508d73ca14b8796c4ed484c2002abba714226cfef \
+ --hash=sha256:6a4e9dacf2cbb60d2514ff7b04b4534b0139facbf2abdffe0639ddb6088e59cf \
+ --hash=sha256:6c5cd6f009ad4fca8e33e5238210dc1e5f42db07d4b6ab21ac7ffa904a196420 \
+ --hash=sha256:857c1dd5d70042502aef1c6d1c2801211f3ea7e56f75e9c335f434afb403e464 \
+ --hash=sha256:893cba7bb0f55161de4365584b025f7064e1f88913551bcd23be3260b231429c \
+ --hash=sha256:8deb4e31cd575c9f9370042876e078ca118117c1b5e1f22c32befcfbb6955f0c \
+ --hash=sha256:a3aad0537cf4d9c1996434be68c6c9a6d233ac6f76c2a482c7803295b4e4f99a \
+ --hash=sha256:b13eea5587e44f27f6c48588b5ad56dcb74a4f3a5f89250443c94587f3eb2ea1 \
+ --hash=sha256:b532282ad4eca958b1b2d7dbcb2b7218e02cb934165859b918e3b6ba7772d3f4 \
+ --hash=sha256:b69b6bd9dba6a03632534cdf67c760625760a215ae289f7489a452af1031fe1f \
+ --hash=sha256:b75868b675949a96ab51abc114c7163f40ff0d8f7d6d5fd63f8932fd38e9c6d7 \
+ --hash=sha256:bb1bbf92317e1f35afcf3ef0450219efb3afe00be79d8664b250ac0933b9015f \
+ --hash=sha256:c41d2ce8bbaddcc0009cc73f65318eedfa3dbc88a8298081deb05389f1ab5542 \
+ --hash=sha256:c6bdf134457ae0cac6fb68205776be635d31174eeac9541e1d0c062165c6461f \
+ --hash=sha256:d3fce3f0e3de262a3b67e69916d001f3e767661c6e1ee42553009d445d1cd840 \
+ --hash=sha256:e34ee844c2f17b18556b5bbe59e1e2ff4e86a00282d2a46edab73fd7f18f4a83 \
+ --hash=sha256:e79a195f9e059edfe5d8bf6f3749b2599452d3e9380484cd261f6b7cd2c7c4da \
+ --hash=sha256:e851beb536a427b5df8aa7d0c7835b29a13812f41e46292ff80b2ef77327355a \
+ --hash=sha256:e8f8f61c518952fb15f74a302e068b48d9c4691768ade433e4adeea961993464 \
+ --hash=sha256:eaa85bce251feca8e4c87ce3b954aba84b8c645b90f0e6a515c00394a9f5c0e7 \
+ --hash=sha256:f14467edef672195c6f6b8e27ce5005313cb5d03c9239059bc7182b60c176e2d \
+ --hash=sha256:f2ac8055a0c4a09b30b931100996ba49ef334c6947e7ae365cdd870416d7513e \
+ --hash=sha256:fd723b47a8c08892b1a16b2c6239a8b96637c62a59b94bb5dab4bac592a58a8e
# via -r py/requirements.txt
distlib==0.4.0 \
--hash=sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16 \
@@ -285,9 +306,9 @@ distlib==0.4.0 \
# via
# -r py/requirements.txt
# virtualenv
-docutils==0.22 \
- --hash=sha256:4ed966a0e96a0477d852f7af31bdcb3adc049fbb35ccba358c2ea8a03287615e \
- --hash=sha256:ba9d57750e92331ebe7c08a1bbf7a7f8143b86c476acd51528b042216a6aad0f
+docutils==0.21.2 \
+ --hash=sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f \
+ --hash=sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2
# via
# -r py/requirements.txt
# readme-renderer
@@ -334,7 +355,6 @@ importlib-metadata==8.7.0 \
# via
# -r py/requirements.txt
# keyring
- # twine
inflection==0.5.1 \
--hash=sha256:1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417 \
--hash=sha256:f38b2b640938a4f35ade69ac3d053042959b62a0f1076a5bbaa1b9526605a8a2
@@ -376,9 +396,9 @@ keyring==25.6.0 \
# via
# -r py/requirements.txt
# twine
-markdown-it-py==3.0.0 \
- --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \
- --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb
+markdown-it-py==4.0.0 \
+ --hash=sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147 \
+ --hash=sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3
# via
# -r py/requirements.txt
# rich
@@ -611,9 +631,9 @@ pytest-instafail==0.5.0 \
--hash=sha256:33a606f7e0c8e646dc3bfee0d5e3a4b7b78ef7c36168cfa1f3d93af7ca706c9e \
--hash=sha256:6855414487e9e4bb76a118ce952c3c27d3866af15487506c4ded92eb72387819
# via -r py/requirements.txt
-pytest-mock==3.15.0 \
- --hash=sha256:ab896bd190316b9d5d87b277569dfcdf718b2d049a2ccff5f7aca279c002a1cf \
- --hash=sha256:ef2219485fb1bd256b00e7ad7466ce26729b30eadfc7cbcdb4fa9a92ca68db6f
+pytest-mock==3.15.1 \
+ --hash=sha256:0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc0949630d \
+ --hash=sha256:1849a238f6f396da19762269de72cb1814ab44416fa73a8686deac10b0d87a0f
# via -r py/requirements.txt
pytest-trio==0.8.0 \
--hash=sha256:8363db6336a79e6c53375a2123a41ddbeccc4aa93f93788651641789a56fb52e \
@@ -655,9 +675,9 @@ rich==14.1.0 \
# via
# -r py/requirements.txt
# twine
-secretstorage==3.3.3 \
- --hash=sha256:2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77 \
- --hash=sha256:f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99
+secretstorage==3.4.0 \
+ --hash=sha256:0e3b6265c2c63509fb7415717607e4b2c9ab767b7f344a57473b779ca13bd02e \
+ --hash=sha256:c46e216d6815aff8a8a18706a2fbfd8d53fcbb0dce99301881687a1b0289ef7c
# via
# -r py/requirements.txt
# keyring
@@ -710,9 +730,9 @@ tomli==2.2.1 \
# pyproject-api
# pytest
# tox
-tox==4.30.2 \
- --hash=sha256:772925ad6c57fe35c7ed5ac3e958ac5ced21dff597e76fc40c1f5bf3cd1b6a2e \
- --hash=sha256:efd261a42e8c82a59f9026320a80a067f27f44cad2e72a6712010c311d31176b
+tox==4.30.3 \
+ --hash=sha256:a9f17b4b2d0f74fe0d76207236925a119095011e5c2e661a133115a8061178c9 \
+ --hash=sha256:f3dd0735f1cd4e8fbea5a3661b77f517456b5f0031a6256432533900e34b90bf
# via -r py/requirements.txt
trio==0.31.0 \
--hash=sha256:b5d14cd6293d79298b49c3485ffd9c07e3ce03a6da8c7dfbe0cb3dd7dc9a4774 \
@@ -734,6 +754,7 @@ typing-extensions==4.15.0 \
--hash=sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548
# via
# -r py/requirements.txt
+ # cryptography
# exceptiongroup
# multidict
# tox
diff --git a/py/tox.ini b/py/tox.ini
index 49c041c7e99e3..470488ec284c3 100644
--- a/py/tox.ini
+++ b/py/tox.ini
@@ -32,7 +32,7 @@ setenv =
[testenv:mypy]
skip_install = true
deps =
- mypy==1.17.1
+ mypy==1.18.2
types-urllib3==1.26.25.14
types-certifi==2021.10.8.3
trio-typing==0.10.0
@@ -43,7 +43,7 @@ commands =
[testenv:linting]
skip_install = true
deps =
- ruff==0.13.0
+ ruff==0.13.3
commands =
ruff check --fix --show-fixes --exit-non-zero-on-fix .
ruff format --exit-non-zero-on-format .