diff --git a/.github/workflows/tests-macos.yml b/.github/workflows/tests-macos.yml index 9a09aa67d..d7a0a91bf 100644 --- a/.github/workflows/tests-macos.yml +++ b/.github/workflows/tests-macos.yml @@ -38,6 +38,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@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: diff --git a/.github/workflows/tests-ubuntu.yml b/.github/workflows/tests-ubuntu.yml index b58b2af7b..52991f3d1 100644 --- a/.github/workflows/tests-ubuntu.yml +++ b/.github/workflows/tests-ubuntu.yml @@ -92,6 +92,17 @@ jobs: TOXENV: botocore coverage: true + # 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@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: @@ -103,7 +114,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 254e9395e..3a86b65ec 100644 --- a/.github/workflows/tests-windows.yml +++ b/.github/workflows/tests-windows.yml @@ -50,6 +50,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@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: diff --git a/pyproject.toml b/pyproject.toml index 0bdcf6b51..d85eba4d4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,6 +42,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 57b526be6..93962d3da 100644 --- a/scrapy/utils/misc.py +++ b/scrapy/utils/misc.py @@ -104,10 +104,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 7ea1c57d7..318d5ccf3 100644 --- a/tox.ini +++ b/tox.ini @@ -23,7 +23,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