diff --git a/.github/workflows/tests-macos.yml b/.github/workflows/tests-macos.yml index 0409b3ef2..421336fd0 100644 --- a/.github/workflows/tests-macos.yml +++ b/.github/workflows/tests-macos.yml @@ -26,6 +26,14 @@ jobs: env: TOXENV: no-reactor + # 3.15 pre-release + - python-version: "3.15.0-beta.2" + env: + TOXENV: py + - python-version: "3.15.0-beta.2" + env: + TOXENV: no-reactor + steps: - uses: actions/checkout@v6 diff --git a/.github/workflows/tests-ubuntu.yml b/.github/workflows/tests-ubuntu.yml index 15f25d9b8..95980a6ec 100644 --- a/.github/workflows/tests-ubuntu.yml +++ b/.github/workflows/tests-ubuntu.yml @@ -80,6 +80,17 @@ jobs: env: TOXENV: botocore + # 3.15 pre-release + - python-version: "3.15.0-beta.2" + env: + TOXENV: py + - python-version: "3.15.0-beta.2" + env: + TOXENV: default-reactor + - python-version: "3.15.0-beta.2" + env: + TOXENV: no-reactor + steps: - uses: actions/checkout@v6 @@ -89,7 +100,7 @@ jobs: python-version: ${{ matrix.python-version }} - name: Install system libraries - if: contains(matrix.python-version, 'pypy') || contains(matrix.env.TOXENV, 'min') + if: contains(matrix.python-version, 'pypy') || contains(matrix.env.TOXENV, 'min') || contains(matrix.python-version, '3.15') run: | sudo apt-get update sudo apt-get install libxml2-dev libxslt-dev diff --git a/.github/workflows/tests-windows.yml b/.github/workflows/tests-windows.yml index f413782bc..a42dcae39 100644 --- a/.github/workflows/tests-windows.yml +++ b/.github/workflows/tests-windows.yml @@ -53,6 +53,17 @@ jobs: env: TOXENV: extra-deps + # 3.15 pre-release + - python-version: "3.15.0-beta.2" + env: + TOXENV: py + - python-version: "3.15.0-beta.2" + env: + TOXENV: default-reactor + - python-version: "3.15.0-beta.2" + env: + TOXENV: no-reactor + steps: - uses: actions/checkout@v6 diff --git a/pyproject.toml b/pyproject.toml index b24397c02..5dcce5988 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,6 +40,7 @@ classifiers = [ "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Internet :: WWW/HTTP", diff --git a/scrapy/utils/misc.py b/scrapy/utils/misc.py index 20e7cb381..f23d88f4e 100644 --- a/scrapy/utils/misc.py +++ b/scrapy/utils/misc.py @@ -99,10 +99,10 @@ def walk_modules_iter(path: str) -> Iterable[ModuleType]: >>> list(walk_modules_iter('scrapy.utils')) [, ...] >>> gen = walk_modules_iter('scrapy.utils.nonexistent') # error not raised until the generator is consumed - >>> list(gen) + >>> list(gen) # doctest: +ELLIPSIS Traceback (most recent call last): ... - ModuleNotFoundError: No module named 'scrapy.utils.nonexistent' + ModuleNotFoundError: No module named 'scrapy.utils.nonexistent'... """ mod = import_module(path) diff --git a/tox.ini b/tox.ini index 526533480..99343dd62 100644 --- a/tox.ini +++ b/tox.ini @@ -22,7 +22,7 @@ envlist = min-no-reactor min-botocore min-pypy3 - py{310,311,312,313,314} + py{310,311,312,313,314,315} extra-deps default-reactor no-reactor