Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
fail-fast: false
matrix:
os: [ windows-latest, ubuntu-latest ]
python: [ "3.8", "3.10", "3.11", "3.12", "pypy-3.11" ]
python: [ "3.10", "3.11", "3.12", "3.13", "3.14", "pypy-3.11" ]

steps:
- uses: actions/checkout@v5
Expand Down
6 changes: 3 additions & 3 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,19 @@ repos:
rev: v2.4.1
hooks:
- id: codespell
- repo: https://github.com/asottile/blacken-docs
- repo: https://github.com/adamchainz/blacken-docs
rev: 1.20.0
hooks:
- id: blacken-docs
additional_dependencies: [black==22.12.0]
additional_dependencies: [black==25.11.0]
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v6.0.0
hooks:
- id: check-yaml
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.14.4
hooks:
- id: ruff
- id: ruff-check
args: [ --fix ]
exclude: "^doc/"
- id: ruff-format
Expand Down
5 changes: 5 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
2.2.0 (UNRELEASED)
------------------

* `#380 <https://github.com/pytest-dev/execnet/pull/380>`__: Add support for Python 3.13 and 3.14, and drop EOL 3.8 and 3.9.

2.1.2 (2025-11-11)
------------------

Expand Down
2 changes: 1 addition & 1 deletion doc/install.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Info in a nutshell
====================

**Pythons**: 3.8+, PyPy 3
**Pythons**: 3.10+, PyPy 3

**Operating systems**: Linux, Windows, OSX, Unix

Expand Down
8 changes: 4 additions & 4 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ dynamic = ["version"]
description = "execnet: rapid multi-Python deployment"
readme = {"file" = "README.rst", "content-type" = "text/x-rst"}
license = "MIT"
requires-python = ">=3.8"
requires-python = ">=3.10"
authors = [
{ name = "holger krekel and others" },
]
Expand All @@ -22,11 +22,11 @@ classifiers = [
"Operating System :: MacOS :: MacOS X",
"Operating System :: Microsoft :: Windows",
"Operating System :: POSIX",
"Programming Language :: Python :: 3.8",
"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",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Software Development :: Libraries",
Expand Down Expand Up @@ -96,7 +96,7 @@ include = [
]

[tool.mypy]
python_version = "3.8"
python_version = "3.10"
mypy_path = ["src"]
files = ["src", "testing"]
strict = true
Expand Down
2 changes: 1 addition & 1 deletion src/execnet/gateway.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
import linecache
import textwrap
import types
from collections.abc import Callable
from typing import TYPE_CHECKING
from typing import Any
from typing import Callable

from . import gateway_base
from .gateway_base import IO
Expand Down
6 changes: 3 additions & 3 deletions src/execnet/gateway_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@
import traceback
import weakref
from _thread import interrupt_main
from collections.abc import Callable
from collections.abc import Iterator
from collections.abc import MutableSet
from io import BytesIO
from typing import Any
from typing import Callable
from typing import Iterator
from typing import Literal
from typing import MutableSet
from typing import Protocol
from typing import cast
from typing import overload
Expand Down
8 changes: 4 additions & 4 deletions src/execnet/multi.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@

import atexit
import types
from collections.abc import Callable
from collections.abc import Iterable
from collections.abc import Iterator
from collections.abc import Sequence
from functools import partial
from threading import Lock
from typing import TYPE_CHECKING
from typing import Any
from typing import Callable
from typing import Iterable
from typing import Iterator
from typing import Literal
from typing import Sequence
from typing import overload

from . import gateway_bootstrap
Expand Down
2 changes: 1 addition & 1 deletion src/execnet/rsync.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@

import os
import stat
from collections.abc import Callable
from hashlib import md5
from queue import Queue
from typing import Callable
from typing import Literal

import execnet.rsync_remote
Expand Down
6 changes: 3 additions & 3 deletions testing/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

import shutil
import sys
from collections.abc import Callable
from collections.abc import Generator
from collections.abc import Iterator
from functools import lru_cache
from typing import Callable
from typing import Generator
from typing import Iterator

import pytest

Expand Down
2 changes: 1 addition & 1 deletion testing/test_basics.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
import subprocess
import sys
import textwrap
from collections.abc import Callable
from dataclasses import dataclass
from io import BytesIO
from pathlib import Path
from typing import Any
from typing import Callable

import pytest

Expand Down
4 changes: 2 additions & 2 deletions testing/test_gateway.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
import shutil
import signal
import sys
from collections.abc import Callable
from textwrap import dedent
from typing import Callable

import pytest

Expand Down Expand Up @@ -635,7 +635,7 @@ def test_main_thread_only_concurrent_remote_exec_deadlock(
True,
execnet.gateway_base.MAIN_THREAD_ONLY_DEADLOCK_TEXT,
)
for expected, ch in zip(expected_results, channels):
for expected, ch in zip(expected_results, channels, strict=True):
try:
res = ch.receive()
except execnet.RemoteError as e:
Expand Down
2 changes: 1 addition & 1 deletion testing/test_multi.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
from __future__ import annotations

import gc
from collections.abc import Callable
from time import sleep
from typing import Callable

import pytest

Expand Down
2 changes: 1 addition & 1 deletion testing/test_termination.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import signal
import subprocess
import sys
from typing import Callable
from collections.abc import Callable

import pytest
from test_gateway import TESTTIMEOUT
Expand Down
2 changes: 1 addition & 1 deletion testing/test_xspec.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
import shutil
import subprocess
import sys
from collections.abc import Callable
from pathlib import Path
from typing import Callable

import pytest

Expand Down
2 changes: 1 addition & 1 deletion tox.ini
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[tox]
envlist=py{38,39,310,311,312,pypy311},docs,linting
envlist=py{310,311,312,313,314,py311},docs,linting
isolated_build = true

[testenv]
Expand Down