Skip to content

Commit d9ac1d3

Browse files
committed
Drop support for Python 3.9
which has reached end of life on 2025-10-31.
1 parent 0ce17bb commit d9ac1d3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+365
-419
lines changed

.github/workflows/lint.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ jobs:
88
runs-on: ubuntu-latest
99
strategy:
1010
matrix:
11-
python-version: ['3.9', '3.14']
11+
python-version: ['3.10', '3.14']
1212
steps:
1313
- uses: actions/checkout@v5
1414
with:

.github/workflows/test.yaml

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -31,86 +31,86 @@ jobs:
3131
matrix:
3232
include:
3333
- os: ubuntu-latest
34-
tox_env: py39
34+
tox_env: py310
3535
galaxy_version: dev
3636
galaxy_python_version: '3.9'
3737
- os: ubuntu-latest
38-
tox_env: py39
38+
tox_env: py310
3939
galaxy_version: release_25.1
4040
galaxy_python_version: '3.9'
4141
- os: ubuntu-latest
42-
tox_env: py39
42+
tox_env: py310
4343
galaxy_version: release_25.0
4444
galaxy_python_version: '3.9'
4545
- os: ubuntu-latest
46-
tox_env: py39
46+
tox_env: py310
4747
galaxy_version: release_24.2
4848
galaxy_python_version: '3.8'
4949
- os: ubuntu-latest
50-
tox_env: py39
50+
tox_env: py310
5151
galaxy_version: release_24.1
5252
galaxy_python_version: '3.8'
5353
- os: ubuntu-latest
54-
tox_env: py39
54+
tox_env: py310
5555
galaxy_version: release_24.0
5656
galaxy_python_version: '3.8'
5757
# Python 3.7 is not available via setup-python on ubuntu >=24.04
5858
- os: ubuntu-22.04
59-
tox_env: py39
59+
tox_env: py310
6060
galaxy_version: release_23.2
6161
galaxy_python_version: '3.7'
6262
- os: ubuntu-22.04
63-
tox_env: py39
63+
tox_env: py310
6464
galaxy_version: release_23.1
6565
galaxy_python_version: '3.7'
6666
- os: ubuntu-22.04
67-
tox_env: py39
67+
tox_env: py310
6868
galaxy_version: release_23.0
6969
galaxy_python_version: '3.7'
7070
- os: ubuntu-22.04
71-
tox_env: py39
71+
tox_env: py310
7272
galaxy_version: release_22.05
7373
galaxy_python_version: '3.7'
7474
- os: ubuntu-22.04
75-
tox_env: py39
75+
tox_env: py310
7676
galaxy_version: release_22.01
7777
galaxy_python_version: '3.7'
7878
# The minimum Python supported version by the following releases is
7979
# 3.6, but it is EOL
8080
- os: ubuntu-22.04
81-
tox_env: py39
81+
tox_env: py310
8282
galaxy_version: release_21.09
8383
galaxy_python_version: '3.7'
8484
- os: ubuntu-22.04
85-
tox_env: py39
85+
tox_env: py310
8686
galaxy_version: release_21.05
8787
galaxy_python_version: '3.7'
8888
- os: ubuntu-22.04
89-
tox_env: py39
89+
tox_env: py310
9090
galaxy_version: release_21.01
9191
galaxy_python_version: '3.7'
9292
# The minimum Python supported version by the following releases is
9393
# 3.5, but it is EOL
9494
- os: ubuntu-22.04
95-
tox_env: py39
95+
tox_env: py310
9696
galaxy_version: release_20.09
9797
galaxy_python_version: '3.7'
9898
- os: ubuntu-22.04
99-
tox_env: py39
99+
tox_env: py310
100100
galaxy_version: release_20.05
101101
galaxy_python_version: '3.7'
102102
# The minimum Python supported version by the following releases is
103103
# 2.7, but it is EOL
104104
- os: ubuntu-22.04
105-
tox_env: py39
105+
tox_env: py310
106106
galaxy_version: release_20.01
107107
galaxy_python_version: '3.7'
108108
- os: ubuntu-22.04
109-
tox_env: py39
109+
tox_env: py310
110110
galaxy_version: release_19.09
111111
galaxy_python_version: '3.7'
112112
- os: ubuntu-22.04
113-
tox_env: py39
113+
tox_env: py310
114114
galaxy_version: release_19.05
115115
galaxy_python_version: '3.7'
116116
- os: ubuntu-latest
@@ -120,7 +120,7 @@ jobs:
120120
# Cannot test on macOS because service containers are not supported
121121
# yet: https://github.community/t/github-actions-services-available-on-others-vms/16916
122122
# - os: macos-latest
123-
# tox_env: py39
123+
# tox_env: py310
124124
# galaxy_version: dev
125125
# galaxy_python_version: '3.8'
126126
steps:

ABOUT.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ interacting with the `Galaxy`_ API.
33

44
BioBlend is supported and tested on:
55

6-
- Python 3.9 - 3.14
6+
- Python 3.10 - 3.14
77
- Galaxy release 19.05 and later.
88

99
BioBlend's goal is to make it easier to script and automate the running of

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
## BioBlend v
22

3-
* Added support for Python 3.14.
3+
* Dropped support for Python 3.9. Added support for Python 3.14.
44

55
* Added ``job_id`` parameter to ``InvocationClient.get_invocations()``.
66

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ How to run BioBlend tests
1313

1414
1. Clone Galaxy to a directory outside of BioBlend source directory via `git clone https://github.com/galaxyproject/galaxy.git`
1515

16-
2. Change directory to your BioBlend source and run the tests via `./run_bioblend_tests.sh -g GALAXY_PATH [-r GALAXY_REV] [-e TOX_ENV]` where `GALAXY_PATH` is the directory where the galaxy repository was cloned, `GALAXY_REV` is the branch or commit of Galaxy that you would like to test against (if different from the current state of your galaxy clone), and `TOX_ENV` is used to specify the Python version to use for BioBlend, e.g. `py39` for Python 3.9.
16+
2. Change directory to your BioBlend source and run the tests via `./run_bioblend_tests.sh -g GALAXY_PATH [-r GALAXY_REV] [-e TOX_ENV]` where `GALAXY_PATH` is the directory where the galaxy repository was cloned, `GALAXY_REV` is the branch or commit of Galaxy that you would like to test against (if different from the current state of your galaxy clone), and `TOX_ENV` is used to specify the Python version to use for BioBlend, e.g. `py310` for Python 3.10.
1717

1818
You can also add `2>&1 | tee log.txt` to the command above to contemporarily view the test output and save it to the `log.txt` file.
1919

README.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ BioBlend is a Python library for interacting with the `Galaxy`_ API.
1515

1616
BioBlend is supported and tested on:
1717

18-
- Python 3.9 - 3.14
18+
- Python 3.10 - 3.14
1919
- Galaxy release 19.05 and later.
2020

2121
Full docs are available at https://bioblend.readthedocs.io/ with a quick library

bioblend/__init__.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@
33
import logging.config
44
import os
55
import time
6+
from collections.abc import Callable
67
from typing import (
7-
Callable,
8-
Optional,
98
TypeVar,
10-
Union,
119
)
1210

1311
from bioblend.config import (
@@ -68,7 +66,7 @@ def emit(self, record: logging.LogRecord) -> None:
6866

6967

7068
def set_file_logger(
71-
name: str, filepath: str, level: Union[int, str] = logging.INFO, format_string: Optional[str] = None
69+
name: str, filepath: str, level: int | str = logging.INFO, format_string: str | None = None
7270
) -> None:
7371
global log
7472
if not format_string:
@@ -83,7 +81,7 @@ def set_file_logger(
8381
log = logger
8482

8583

86-
def set_stream_logger(name: str, level: Union[int, str] = logging.DEBUG, format_string: Optional[str] = None) -> None:
84+
def set_stream_logger(name: str, level: int | str = logging.DEBUG, format_string: str | None = None) -> None:
8785
global log
8886
if not format_string:
8987
format_string = default_format_string
@@ -107,7 +105,7 @@ class ConnectionError(Exception):
107105
"""
108106

109107
def __init__( # noqa: B042 # https://github.com/PyCQA/flake8-bugbear/issues/525
110-
self, message: str, body: Optional[Union[bytes, str]] = None, status_code: Optional[int] = None
108+
self, message: str, body: bytes | str | None = None, status_code: int | None = None
111109
) -> None:
112110
super().__init__(message)
113111
self.body = body

bioblend/_tests/TestGalaxyDatasetCollections.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
from inspect import signature
55
from typing import (
66
Any,
7-
Union,
87
)
98
from zipfile import ZipFile
109

@@ -166,7 +165,7 @@ def test_download_dataset_collection(self):
166165
os.mkdir(extract_dir_path)
167166

168167
if archive_type == "zip":
169-
archive: Union[ZipFile, tarfile.TarFile] = ZipFile(archive_path)
168+
archive: ZipFile | tarfile.TarFile = ZipFile(archive_path)
170169
elif archive_type == "tgz":
171170
archive = tarfile.open(archive_path)
172171

bioblend/_tests/TestGalaxyObjects.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,14 @@
99
import unittest
1010
import uuid
1111
from collections.abc import (
12+
Callable,
1213
Collection,
1314
Iterable,
1415
)
1516
from ssl import SSLError
1617
from typing import (
1718
Any,
18-
Callable,
1919
Literal,
20-
Union,
2120
)
2221
from urllib.error import URLError
2322
from urllib.request import urlopen
@@ -128,7 +127,7 @@ def is_reachable(url: str) -> bool:
128127
res = None
129128
try:
130129
res = urlopen(url, timeout=5)
131-
except (SSLError, URLError, socket.timeout):
130+
except (SSLError, URLError, TimeoutError):
132131
return False
133132
if res is not None:
134133
res.close()
@@ -990,7 +989,7 @@ def tearDown(self):
990989
def _test(self, existing_hist: bool = False, pass_params: bool = False) -> None:
991990
hist_name = f"test_{uuid.uuid4().hex}"
992991
if existing_hist:
993-
hist: Union[str, wrappers.History] = self.gi.histories.create(hist_name)
992+
hist: str | wrappers.History = self.gi.histories.create(hist_name)
994993
else:
995994
hist = hist_name
996995
if pass_params:

bioblend/_tests/TestGalaxyWorkflows.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
from typing import (
77
Any,
88
Literal,
9-
Optional,
109
)
1110

1211
import pytest
@@ -155,7 +154,7 @@ def test_import_other_users_published_workflow(self) -> None:
155154
assert not imported_wf_by_new_user["deleted"]
156155
assert not imported_wf_by_new_user["published"]
157156

158-
def _import_export(self, style: Optional[Literal["ga", "format2"]] = None):
157+
def _import_export(self, style: Literal["ga", "format2"] | None = None):
159158
path = test_util.get_abspath(os.path.join("data", "paste_columns.ga"))
160159
with open(path) as f:
161160
wf_dict = json.load(f)

0 commit comments

Comments
 (0)