From ff9151cc5e16b9a673442bd8e7dc233e3d88f830 Mon Sep 17 00:00:00 2001 From: Greg Pauloski <18683347+gpauloski@users.noreply.github.com> Date: Mon, 19 Jan 2026 13:05:36 -0800 Subject: [PATCH] Drop Python 3.9 --- .github/workflows/tests.yml | 3 --- psbench/benchmarks/endpoint_qps/main.py | 2 +- psbench/benchmarks/task_pipelining/main.py | 9 +++++++-- psbench/benchmarks/workflow_memory/main.py | 2 +- psbench/executor/dask.py | 9 ++------- pyproject.toml | 11 ++++------- testing/globus_compute.py | 2 +- tox.ini | 2 +- 8 files changed, 17 insertions(+), 23 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 2e6b093..c01ad0e 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -14,9 +14,6 @@ jobs: strategy: matrix: include: - - os: ubuntu-latest - python: 3.9 - toxenv: py39 - os: ubuntu-latest python: '3.10' toxenv: py310 diff --git a/psbench/benchmarks/endpoint_qps/main.py b/psbench/benchmarks/endpoint_qps/main.py index fb6a7d5..31fe42f 100644 --- a/psbench/benchmarks/endpoint_qps/main.py +++ b/psbench/benchmarks/endpoint_qps/main.py @@ -9,9 +9,9 @@ import multiprocessing import sys import time +from collections.abc import Callable from statistics import stdev from typing import Any -from typing import Callable if sys.version_info >= (3, 11): # pragma: >=3.11 cover pass diff --git a/psbench/benchmarks/task_pipelining/main.py b/psbench/benchmarks/task_pipelining/main.py index bd225a7..a6617c7 100644 --- a/psbench/benchmarks/task_pipelining/main.py +++ b/psbench/benchmarks/task_pipelining/main.py @@ -6,10 +6,10 @@ import queue import threading import time +from collections.abc import Callable from concurrent.futures import Executor from concurrent.futures import Future from typing import Any -from typing import Callable from typing import NamedTuple from parsl.concurrent import ParslPoolExecutor @@ -296,7 +296,12 @@ def receiver() -> None: task_timestamps = [ mid.collate(start, end) - for start, mid, end in zip(task_submitted, task_times, task_received) + for start, mid, end in zip( + task_submitted, + task_times, + task_received, + strict=True, + ) ] return RunResult( diff --git a/psbench/benchmarks/workflow_memory/main.py b/psbench/benchmarks/workflow_memory/main.py index 8de66eb..b691b28 100644 --- a/psbench/benchmarks/workflow_memory/main.py +++ b/psbench/benchmarks/workflow_memory/main.py @@ -6,11 +6,11 @@ import logging import sys import time +from collections.abc import Callable from collections.abc import Sequence from concurrent.futures import Executor from concurrent.futures import Future from typing import Any -from typing import Callable from typing import TypeVar if sys.version_info >= (3, 11): # pragma: >=3.11 cover diff --git a/psbench/executor/dask.py b/psbench/executor/dask.py index 18053fd..9f6a5b6 100644 --- a/psbench/executor/dask.py +++ b/psbench/executor/dask.py @@ -1,20 +1,15 @@ from __future__ import annotations -import sys +from collections.abc import Callable from collections.abc import Generator from collections.abc import Iterable from collections.abc import Iterator from concurrent.futures import Executor from concurrent.futures import Future from typing import Any -from typing import Callable +from typing import ParamSpec from typing import TypeVar -if sys.version_info >= (3, 10): # pragma: >=3.10 cover - from typing import ParamSpec -else: # pragma: <3.10 cover - from typing_extensions import ParamSpec - from dask.distributed import Client P = ParamSpec('P') diff --git a/pyproject.toml b/pyproject.toml index e7727ac..f13e263 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,11 +14,10 @@ maintainers = [ ] description = "ProxyStore benchmark suite." readme = "README.md" -requires-python = ">=3.9" +requires-python = ">=3.10" license = {file = "MIT"} classifiers = [ "License :: OSI Approved :: MIT License", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", @@ -29,10 +28,8 @@ classifiers = [ dependencies = [ "adios2==2.10.1", "colmena==0.7.1", - "dask==2023.5.0; python_version < '3.10'", - "dask==2025.1.0; python_version >= '3.10'", - "distributed==2023.5.0; python_version < '3.10'", - "distributed==2025.1.0; python_version >= '3.10'", + "dask==2025.1.0", + "distributed==2025.1.0", "globus-compute-endpoint==3.0.*", "globus-compute-sdk==3.0.*", "proxystore[all]==0.8.*", @@ -114,7 +111,7 @@ filterwarnings = [ [tool.ruff] line-length = 79 -target-version = "py39" +target-version = "py310" [tool.ruff.format] indent-style = "space" diff --git a/testing/globus_compute.py b/testing/globus_compute.py index 969ac7b..a527bd3 100644 --- a/testing/globus_compute.py +++ b/testing/globus_compute.py @@ -2,10 +2,10 @@ import contextlib import uuid +from collections.abc import Callable from collections.abc import Generator from concurrent.futures import Future from typing import Any -from typing import Callable from typing import TypeVar from unittest import mock diff --git a/tox.ini b/tox.ini index 70bf6fb..cf0e0ba 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py39, py310, py311, py312, py313, pre-commit +envlist = py310, py311, py312, py313, pre-commit [testenv] extras = dev