From 6a1da5fb7c72ae1322780d25615ebdb81ebbbba5 Mon Sep 17 00:00:00 2001 From: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com> Date: Sun, 21 Sep 2025 17:13:58 -0400 Subject: [PATCH 1/6] [py] Support Python 3.14 --- MODULE.bazel | 2 ++ py/BUILD.bazel | 1 + py/pyproject.toml | 3 ++- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/MODULE.bazel b/MODULE.bazel index 9fa05793a9b8d..c9d09c7d3ec31 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -129,6 +129,7 @@ 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") @@ -145,6 +146,7 @@ pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip") "3.11", "3.12", "3.13", + "3.14", ] ] diff --git a/py/BUILD.bazel b/py/BUILD.bazel index d4af61f0e0259..d9f41c2e42f87 100644 --- a/py/BUILD.bazel +++ b/py/BUILD.bazel @@ -319,6 +319,7 @@ py_wheel( "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", diff --git a/py/pyproject.toml b/py/pyproject.toml index 896e510c82e66..af477eec04b8b 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.9" classifiers = [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", @@ -24,6 +24,7 @@ classifiers = [ "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", From 07d62fc81a6abeb73ccd03285b151ee725c3ed0d Mon Sep 17 00:00:00 2001 From: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com> Date: Sun, 5 Oct 2025 10:28:40 -0400 Subject: [PATCH 2/6] [py] Drop python 3.9 and update dependencies --- .github/workflows/ci-python.yml | 12 +- .github/workflows/update-documentation.yml | 4 +- MODULE.bazel | 6 +- multitool.lock.json | 20 +-- py/BUILD.bazel | 9 +- py/docs/requirements.txt | 2 +- py/docs/source/index.rst | 2 +- py/pyproject.toml | 9 +- py/requirements.txt | 16 +- py/requirements_lock.txt | 191 ++++++++++++--------- py/tox.ini | 4 +- 11 files changed, 146 insertions(+), 129 deletions(-) diff --git a/.github/workflows/ci-python.yml b/.github/workflows/ci-python.yml index 96c5182b71740..fba88b7d00d62 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..76a56bb951fc3 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 669d2df3ef2e4..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,9 +123,8 @@ 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") @@ -141,7 +140,6 @@ 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", 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 6615b261ab054..ea7b0dd374692 100644 --- a/py/BUILD.bazel +++ b/py/BUILD.bazel @@ -314,7 +314,6 @@ 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", @@ -325,14 +324,14 @@ py_wheel( 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..b64127538fa49 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.2.3 sphinx-material==0.0.36 diff --git a/py/docs/source/index.rst b/py/docs/source/index.rst index 9e5859e5ac040..2da64a28865ae 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 ================== diff --git a/py/pyproject.toml b/py/pyproject.toml index 9b7d1423fcdbc..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,7 +19,6 @@ 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", @@ -28,10 +27,10 @@ classifiers = [ ] 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..82ffec7a6c34b 100644 --- a/py/requirements.txt +++ b/py/requirements.txt @@ -1,14 +1,14 @@ 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 +docutils==0.22.2 filelock==3.19.1 filetype==1.2.0 h11==0.16.0 @@ -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..d50a6f94b3d4e 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.22.2 \ + --hash=sha256:9fdb771707c8784c8f2728b67cb2c691305933d68137ef95a75db5f4dfbc213d \ + --hash=sha256:b0e98d679283fc3bb0ead8a5da7f501baa632654e7056e9c5846842213d674d8 # 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 . From d4988d3fb7c31408fbb6bdd3a8741cebb63ea296 Mon Sep 17 00:00:00 2001 From: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com> Date: Sun, 5 Oct 2025 18:32:10 -0400 Subject: [PATCH 3/6] [py] Quote python-version --- .github/workflows/ci-python.yml | 4 ++-- .github/workflows/update-documentation.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-python.yml b/.github/workflows/ci-python.yml index fba88b7d00d62..5be4cc647c143 100644 --- a/.github/workflows/ci-python.yml +++ b/.github/workflows/ci-python.yml @@ -23,7 +23,7 @@ jobs: - name: Set up Python 3.10 uses: actions/setup-python@v6 with: - python-version: 3.10 + python-version: '3.10' - name: Install dependencies run: | python -m pip install --upgrade pip @@ -43,7 +43,7 @@ jobs: - name: Set up Python 3.10 uses: actions/setup-python@v6 with: - python-version: 3.10 + python-version: '3.10' - name: Install dependencies run: | python -m pip install --upgrade pip diff --git a/.github/workflows/update-documentation.yml b/.github/workflows/update-documentation.yml index 76a56bb951fc3..5ec9389fb1dc7 100644 --- a/.github/workflows/update-documentation.yml +++ b/.github/workflows/update-documentation.yml @@ -70,7 +70,7 @@ jobs: if: ${{ inputs.language == 'py' || inputs.language == 'all' }} uses: actions/setup-python@v6 with: - python-version: 3.10 + python-version: '3.10' - name: Install dependencies if: ${{ inputs.language == 'py' || inputs.language == 'all' }} run: | From 4162ee2d94ade3c89cfe42b0481ce1d55bf1c3fe Mon Sep 17 00:00:00 2001 From: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com> Date: Sun, 5 Oct 2025 19:07:47 -0400 Subject: [PATCH 4/6] [py] Downgrade sphinx --- py/docs/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/py/docs/requirements.txt b/py/docs/requirements.txt index b64127538fa49..29d534bc4ad14 100644 --- a/py/docs/requirements.txt +++ b/py/docs/requirements.txt @@ -1,3 +1,3 @@ Jinja2==3.1.6 -Sphinx==8.2.3 +Sphinx==8.1.3 sphinx-material==0.0.36 From 56eff630df4e344bbce19b576619c3eb61ce2c90 Mon Sep 17 00:00:00 2001 From: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com> Date: Sun, 5 Oct 2025 20:26:05 -0400 Subject: [PATCH 5/6] [py] Downgrade docutils --- py/requirements.txt | 2 +- py/requirements_lock.txt | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/py/requirements.txt b/py/requirements.txt index 82ffec7a6c34b..46960fac7d730 100644 --- a/py/requirements.txt +++ b/py/requirements.txt @@ -8,7 +8,7 @@ colorama==0.4.6 cryptography==46.0.2 debugpy==1.8.17 distlib==0.4.0 -docutils==0.22.2 +docutils==0.21.2 filelock==3.19.1 filetype==1.2.0 h11==0.16.0 diff --git a/py/requirements_lock.txt b/py/requirements_lock.txt index d50a6f94b3d4e..3fb0d9d063105 100644 --- a/py/requirements_lock.txt +++ b/py/requirements_lock.txt @@ -306,9 +306,9 @@ distlib==0.4.0 \ # via # -r py/requirements.txt # virtualenv -docutils==0.22.2 \ - --hash=sha256:9fdb771707c8784c8f2728b67cb2c691305933d68137ef95a75db5f4dfbc213d \ - --hash=sha256:b0e98d679283fc3bb0ead8a5da7f501baa632654e7056e9c5846842213d674d8 +docutils==0.21.2 \ + --hash=sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f \ + --hash=sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2 # via # -r py/requirements.txt # readme-renderer From 297e79755cde587aa64f4dab9f232276ff8be548 Mon Sep 17 00:00:00 2001 From: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com> Date: Mon, 6 Oct 2025 08:34:31 -0400 Subject: [PATCH 6/6] [py] Update installation command in docs --- py/docs/source/index.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/py/docs/source/index.rst b/py/docs/source/index.rst index 2da64a28865ae..992e43c22f24a 100644 --- a/py/docs/source/index.rst +++ b/py/docs/source/index.rst @@ -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 `_