Drop support for Python 3.8

This commit is contained in:
Nicola Soranzo
2025-02-25 19:20:46 +00:00
parent 3f01d5b5c3
commit edd8bccf4f
65 changed files with 280 additions and 362 deletions
+2 -2
View File
@@ -15,7 +15,7 @@ variables:
jobs:
get_code:
docker:
- image: cimg/python:3.8
- image: cimg/python:3.9
<<: *set_workdir
steps:
# Replace standard code checkout with shallow clone to speed things up.
@@ -73,7 +73,7 @@ jobs:
- ~/repo
validate_test_tools:
docker:
- image: cimg/python:3.8
- image: cimg/python:3.9
<<: *set_workdir
steps:
- *restore_repo_cache
+1 -1
View File
@@ -29,7 +29,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ['3.8']
python-version: ['3.9']
chunk: [0, 1]
services:
postgres:
+1 -1
View File
@@ -32,7 +32,7 @@ jobs:
fail-fast: false
matrix:
tox_env: [py313]
galaxy_python_version: ["3.8"]
galaxy_python_version: ['3.9']
steps:
- name: Checkout Galaxy
uses: actions/checkout@v4
@@ -14,7 +14,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.8']
python-version: ['3.9']
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
+1 -1
View File
@@ -22,7 +22,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.8']
python-version: ['3.9']
steps:
- if: github.event_name == 'schedule'
run: |
+1 -1
View File
@@ -24,7 +24,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ['3.8']
python-version: ['3.9']
marker: ['green', 'red and required', 'red and not required']
conformance-version: ['cwl_conformance_v1_0'] #, 'cwl_conformance_v1_1', 'cwl_conformance_v1_2']
services:
+2 -2
View File
@@ -24,11 +24,11 @@ jobs:
matrix:
db: ['postgresql', 'sqlite']
postgresql-version: ['13']
python-version: ['3.8']
python-version: ['3.9']
include:
- db: postgresql
postgresql-version: '9.6'
python-version: '3.8'
python-version: '3.9'
services:
postgres:
image: postgres:${{ matrix.postgresql-version }}
+1 -5
View File
@@ -10,13 +10,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# Install Python 3.8 for update_lint_requirements.sh
# Install Python 3.9 (as default) to allow `uv lock` to generate metadata for rucio-clients
- uses: actions/setup-python@v5
with:
python-version: |
3.8
3.9
python-version: '3.9'
- name: Update dependencies
run: make update-dependencies
- name: Create pull request
+1 -1
View File
@@ -29,7 +29,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.8']
python-version: ['3.9']
steps:
- uses: actions/checkout@v4
with:
+1 -1
View File
@@ -16,7 +16,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.8']
python-version: ['3.9']
steps:
- name: Get target branch name (push)
if: github.event_name == 'push'
+1 -1
View File
@@ -23,7 +23,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ['3.8', '3.13']
python-version: ['3.9', '3.13']
defaults:
run:
shell: bash -l {0}
+1 -1
View File
@@ -25,7 +25,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.8']
python-version: ['3.9']
services:
postgres:
image: postgres:13
+1 -1
View File
@@ -26,7 +26,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.8']
python-version: ['3.9']
services:
postgres:
image: postgres:13
+1 -1
View File
@@ -29,7 +29,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ['3.8']
python-version: ['3.9']
chunk: ['0', '1', '2', '3']
services:
postgres:
+1 -1
View File
@@ -31,7 +31,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.8']
python-version: ['3.9']
services:
postgres:
image: postgres:13
+2 -2
View File
@@ -22,7 +22,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ['3.8', '3.13']
python-version: ['3.9', '3.13']
env:
LINT_PATH: 'lib/galaxy/dependencies/pinned-lint-requirements.txt'
TYPE_PATH: 'lib/galaxy/dependencies/pinned-typecheck-requirements.txt'
@@ -56,5 +56,5 @@ jobs:
run: tox -e mypy
- uses: psf/black@stable
with:
version: "24.8.0" # last version supporting Python 3.8
version: ">=25.1.0"
- uses: isort/isort-action@v1
+1 -1
View File
@@ -20,7 +20,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ['3.8', '3.13']
python-version: ['3.9', '3.13']
steps:
- uses: actions/checkout@v4
with:
+1 -1
View File
@@ -20,7 +20,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ['3.8']
python-version: ['3.9']
steps:
- uses: actions/checkout@v4
with:
+1 -1
View File
@@ -21,7 +21,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ['3.8', '3.13']
python-version: ['3.9', '3.13']
defaults:
run:
shell: bash -l {0}
+1 -1
View File
@@ -24,7 +24,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.8']
python-version: ['3.9']
services:
postgres:
image: postgres:13
+1 -1
View File
@@ -9,7 +9,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.8']
python-version: ['3.9']
steps:
- uses: actions/setup-python@v5
with:
+1 -1
View File
@@ -18,7 +18,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ['3.8', '3.13']
python-version: ['3.9', '3.13']
defaults:
run:
shell: bash -l {0}
+1 -1
View File
@@ -32,7 +32,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ['3.8']
python-version: ['3.9']
chunk: [0, 1, 2]
services:
postgres:
+1 -1
View File
@@ -18,7 +18,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ['3.8', '3.13']
python-version: ['3.9', '3.13']
steps:
- uses: actions/checkout@v4
with:
+1 -1
View File
@@ -21,7 +21,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ['3.8', '3.13']
python-version: ['3.9', '3.13']
shed-api: ['v1', 'v2']
test-install-client: ['galaxy_api', 'standalone']
services:
+1 -1
View File
@@ -22,7 +22,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ['3.8']
python-version: ['3.9']
services:
postgres:
image: postgres:13
+1 -1
View File
@@ -20,7 +20,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ['3.8', '3.13']
python-version: ['3.9', '3.13']
steps:
- uses: actions/checkout@v4
with:
+12 -4
View File
@@ -26,6 +26,14 @@ CWL_TARGETS := test/functional/tools/cwl_tools/v1.0/conformance_tests.yaml \
lib/galaxy_test/api/cwl/test_cwl_conformance_v1_1.py \
lib/galaxy_test/api/cwl/test_cwl_conformance_v1_2.py
NO_YARN_MSG="Could not find yarn, which is required to build the Galaxy client.\nIt should be shipped with Galaxy's virtualenv, but to install yarn manually please visit \033[0;34mhttps://yarnpkg.com/en/docs/install\033[0m for instructions, and package information for all platforms.\n"
SPACE := $() $()
NEVER_PYUPGRADE_PATHS := .venv/ .tox/ lib/galaxy/schema/bco/ \
lib/galaxy/schema/drs/ lib/tool_shed_client/schema/trs \
scripts/check_python.py tools/ test/functional/tools/cwl_tools/
PY37_PYUPGRADE_PATHS := lib/galaxy/exceptions/ lib/galaxy/job_metrics/ \
lib/galaxy/objectstore/ lib/galaxy/tool_util/ lib/galaxy/util/ \
test/unit/job_metrics/ test/unit/objectstore/ test/unit/tool_util/ \
test/unit/util/
all: help
@echo "This makefile is used for building Galaxy's JS client, documentation, and drive the release process. A sensible all target is not implemented."
@@ -54,10 +62,10 @@ format: ## Format Python code base
remove-unused-imports: ## Remove unused imports in Python code base
$(IN_VENV) autoflake --in-place --remove-all-unused-imports --recursive --verbose lib/ test/
pyupgrade: ## Convert older code patterns to Python3.7/3.8 idiomatic ones
ack --type=python -f | grep -v '^lib/galaxy/schema/bco/\|^lib/galaxy/schema/drs/\|^lib/tool_shed_client/schema/trs\|^tools/\|^.venv/\|^.tox/\|^lib/galaxy/exceptions/\|^lib/galaxy/job_metrics/\|^lib/galaxy/objectstore/\|^lib/galaxy/tool_util/\|^lib/galaxy/util/\|^test/functional/tools/cwl_tools/' | xargs pyupgrade --py38-plus
ack --type=python -f | grep -v '^lib/galaxy/schema/bco/\|^lib/galaxy/schema/drs/\|^lib/tool_shed_client/schema/trs\|^tools/\|^.venv/\|^.tox/\|^lib/galaxy/exceptions/\|^lib/galaxy/job_metrics/\|^lib/galaxy/objectstore/\|^lib/galaxy/tool_util/\|^lib/galaxy/util/\|^test/functional/tools/cwl_tools/' | xargs auto-walrus
ack --type=python -f lib/galaxy/exceptions/ lib/galaxy/job_metrics/ lib/galaxy/objectstore/ lib/galaxy/tool_util/ lib/galaxy/util/ | xargs pyupgrade --py37-plus
pyupgrade: ## Convert older code patterns to Python 3.7/3.9 idiomatic ones
ack --type=python -f | grep -v '^$(subst $(SPACE),\|^,$(NEVER_PYUPGRADE_PATHS) $(PY37_PYUPGRADE_PATHS))' | xargs pyupgrade --py39-plus
ack --type=python -f | grep -v '^$(subst $(SPACE),\|^,$(NEVER_PYUPGRADE_PATHS) $(PY37_PYUPGRADE_PATHS))' | xargs auto-walrus
ack --type=python -f $(PY37_PYUPGRADE_PATHS) | xargs pyupgrade --py37-plus
docs-slides-ready:
test -f plantuml.jar || wget http://jaist.dl.sourceforge.net/project/plantuml/plantuml.jar
+2 -2
View File
@@ -24,12 +24,12 @@ Community support is available at `Galaxy Help <https://help.galaxyproject.org/>
Galaxy Quickstart
=================
Galaxy requires Python 3.8 or higher. To check your Python version, run:
Galaxy requires Python 3.9 or higher. To check your Python version, run:
.. code:: console
$ python -V
Python 3.8.18
Python 3.9.21
Start Galaxy:
+8 -6
View File
@@ -119,9 +119,10 @@ def convert_newlines(
converted_regex = False
NEWLINE_BYTE = 10
CR_BYTE = 13
with tempfile.NamedTemporaryFile(mode="wb", prefix=tmp_prefix, dir=tmp_dir, delete=False) as fp, open(
fname, mode="rb"
) as fi:
with (
tempfile.NamedTemporaryFile(mode="wb", prefix=tmp_prefix, dir=tmp_dir, delete=False) as fp,
open(fname, mode="rb") as fi,
):
last_char = None
block = fi.read(block_size)
last_block = b""
@@ -171,9 +172,10 @@ def convert_sep2tabs(
i = 0
converted_newlines = False
converted_regex = False
with tempfile.NamedTemporaryFile(mode="wb", prefix=tmp_prefix, dir=tmp_dir, delete=False) as fp, open(
fname, mode="rb"
) as fi:
with (
tempfile.NamedTemporaryFile(mode="wb", prefix=tmp_prefix, dir=tmp_dir, delete=False) as fp,
open(fname, mode="rb") as fi,
):
block = fi.read(block_size)
while block:
if block:
+1 -1
View File
@@ -315,7 +315,7 @@ class ConditionalDependencies:
return self.pkce_support
def check_rucio_clients(self):
return "rucio" in self.object_stores and sys.version_info >= (3, 9)
return "rucio" in self.object_stores
def optional(config_file=None):
+62 -118
View File
@@ -1,26 +1,18 @@
# This file was autogenerated by uv via the following command:
# uv export --frozen --no-hashes --only-group=dev
aiohappyeyeballs==2.4.4 ; python_full_version < '3.9'
aiohappyeyeballs==2.4.6 ; python_full_version >= '3.9'
aiohttp==3.10.11 ; python_full_version < '3.9'
aiohttp==3.11.12 ; python_full_version >= '3.9'
aiosignal==1.3.1 ; python_full_version < '3.9'
aiosignal==1.3.2 ; python_full_version >= '3.9'
alabaster==0.7.13 ; python_full_version < '3.9'
alabaster==0.7.16 ; python_full_version == '3.9.*'
aiohappyeyeballs==2.4.6
aiohttp==3.11.12
aiosignal==1.3.2
alabaster==0.7.16 ; python_full_version < '3.10'
alabaster==1.0.0 ; python_full_version >= '3.10'
anyio==4.5.2 ; python_full_version < '3.9'
anyio==4.8.0 ; python_full_version >= '3.9'
ase==3.23.0 ; python_full_version < '3.9'
ase==3.24.0 ; python_full_version >= '3.9'
anyio==4.8.0
ase==3.24.0
async-timeout==5.0.1 ; python_full_version < '3.11'
attrs==25.1.0
axe-selenium-python==2.1.6
babel==2.17.0
backports-tarfile==1.2.0 ; python_full_version < '3.12' and platform_machine != 'ppc64le' and platform_machine != 's390x'
backports-zoneinfo==0.2.1 ; python_full_version < '3.9'
black==24.8.0 ; python_full_version < '3.9'
black==25.1.0 ; python_full_version >= '3.9'
black==25.1.0
boto3==1.36.23
botocore==1.36.23
build==1.2.2.post1
@@ -31,25 +23,21 @@ charset-normalizer==3.4.1
click==8.1.8
codespell==2.4.1
colorama==0.4.6 ; os_name == 'nt' or sys_platform == 'win32'
contourpy==1.1.1 ; python_full_version < '3.9'
contourpy==1.3.0 ; python_full_version == '3.9.*'
contourpy==1.3.0 ; python_full_version < '3.10'
contourpy==1.3.1 ; python_full_version >= '3.10'
coverage==7.6.1 ; python_full_version < '3.9'
coverage==7.6.12 ; python_full_version >= '3.9'
coverage==7.6.12
cryptography==44.0.1
cwltest==2.5.20241122133319
cycler==0.12.1
darker==2.1.1
darkgraylib==1.2.1
decorator==5.1.1 ; python_full_version >= '3.9'
decorator==5.2.0
defusedxml==0.7.1
deprecated==1.2.18
docutils==0.20.1 ; python_full_version < '3.9'
docutils==0.21.2 ; python_full_version >= '3.9'
dogpile-cache==1.3.4 ; python_full_version >= '3.9'
docutils==0.21.2
dogpile-cache==1.3.4
exceptiongroup==1.2.2 ; python_full_version < '3.11'
filelock==3.16.1 ; python_full_version < '3.9'
filelock==3.17.0 ; python_full_version >= '3.9'
filelock==3.17.0
fluent-logger==0.11.1
fonttools==4.56.0
frozenlist==1.5.0
@@ -62,168 +50,128 @@ httpx==0.28.1
id==1.5.0
idna==3.10
imagesize==1.4.1
importlib-metadata==8.5.0 ; python_full_version < '3.9'
importlib-metadata==8.6.1 ; (python_full_version >= '3.9' and python_full_version < '3.10.2' and platform_machine == 'ppc64le') or (python_full_version >= '3.9' and python_full_version < '3.10.2' and platform_machine == 's390x') or (python_full_version >= '3.9' and python_full_version < '3.12' and platform_machine != 'ppc64le' and platform_machine != 's390x')
importlib-resources==6.4.5 ; python_full_version < '3.9'
importlib-resources==6.5.2 ; python_full_version == '3.9.*'
importlib-metadata==8.6.1 ; (python_full_version < '3.10.2' and platform_machine == 'ppc64le') or (python_full_version < '3.10.2' and platform_machine == 's390x') or (python_full_version < '3.12' and platform_machine != 'ppc64le' and platform_machine != 's390x')
importlib-resources==6.5.2 ; python_full_version < '3.10'
iniconfig==2.0.0
isodate==0.6.1 ; python_full_version < '3.9'
isodate==0.7.2 ; python_full_version >= '3.9' and python_full_version < '3.11'
isort==5.13.2 ; python_full_version < '3.9'
isort==6.0.0 ; python_full_version >= '3.9'
isodate==0.7.2 ; python_full_version < '3.11'
isort==6.0.0
jaraco-classes==3.4.0 ; platform_machine != 'ppc64le' and platform_machine != 's390x'
jaraco-context==6.0.1 ; platform_machine != 'ppc64le' and platform_machine != 's390x'
jaraco-functools==4.1.0 ; platform_machine != 'ppc64le' and platform_machine != 's390x'
jeepney==0.8.0 ; platform_machine != 'ppc64le' and platform_machine != 's390x' and sys_platform == 'linux'
jinja2==3.1.5
jmespath==1.0.1
jsonschema==4.23.0 ; python_full_version >= '3.9'
jsonschema-specifications==2023.12.1 ; python_version < '0'
jsonschema-specifications==2024.10.1 ; python_full_version >= '3.9'
jsonschema==4.23.0
jsonschema-specifications==2024.10.1
junit-xml==1.9
keyring==25.5.0 ; python_full_version < '3.9' and platform_machine != 'ppc64le' and platform_machine != 's390x'
keyring==25.6.0 ; python_full_version >= '3.9' and platform_machine != 'ppc64le' and platform_machine != 's390x'
keyring==25.6.0 ; platform_machine != 'ppc64le' and platform_machine != 's390x'
kiwisolver==1.4.7 ; python_full_version < '3.10'
kiwisolver==1.4.8 ; python_full_version >= '3.10'
lxml==5.3.1
markdown-it-py==3.0.0
markdown-it-reporter==0.0.2
markupsafe==2.1.5 ; python_full_version < '3.9'
markupsafe==3.0.2 ; python_full_version >= '3.9'
matplotlib==3.7.5 ; python_full_version < '3.9'
matplotlib==3.9.4 ; python_full_version == '3.9.*'
markupsafe==3.0.2
matplotlib==3.9.4 ; python_full_version < '3.10'
matplotlib==3.10.0 ; python_full_version >= '3.10'
mdit-py-plugins==0.4.2
mdurl==0.1.2
mirakuru==2.5.2 ; python_full_version < '3.9'
mirakuru==2.6.0 ; python_full_version >= '3.9'
mirakuru==2.6.0
mistune==3.0.2
more-itertools==10.5.0 ; python_full_version < '3.9' and platform_machine != 'ppc64le' and platform_machine != 's390x'
more-itertools==10.6.0 ; python_full_version >= '3.9' and platform_machine != 'ppc64le' and platform_machine != 's390x'
more-itertools==10.6.0 ; platform_machine != 'ppc64le' and platform_machine != 's390x'
msgpack==1.1.0
multidict==6.1.0
mypy-extensions==1.0.0
myst-parser==3.0.1 ; python_full_version < '3.10'
myst-parser==4.0.1 ; python_full_version >= '3.10'
nh3==0.2.20
numpy==1.24.4 ; python_full_version < '3.9'
numpy==2.0.2 ; python_full_version == '3.9.*'
numpy==2.0.2 ; python_full_version < '3.10'
numpy==2.2.3 ; python_full_version >= '3.10'
onedatafilerestclient==21.2.5.2
outcome==1.3.0.post0
packaging==24.2
pathspec==0.12.1
pbr==6.1.1 ; python_full_version >= '3.9'
pillow==10.4.0 ; python_full_version < '3.9'
pillow==11.1.0 ; python_full_version >= '3.9'
pbr==6.1.1
pillow==11.1.0
pkce==1.0.3
pkgutil-resolve-name==1.3.10 ; python_version < '0'
platformdirs==4.3.6
playwright==1.48.0 ; python_full_version < '3.9'
playwright==1.50.0 ; python_full_version >= '3.9'
playwright==1.50.0
pluggy==1.5.0
port-for==0.7.3 ; python_full_version < '3.9'
port-for==0.7.4 ; python_full_version >= '3.9'
prettytable==3.11.0 ; python_full_version < '3.9'
prettytable==3.14.0 ; python_full_version >= '3.9'
propcache==0.2.0 ; python_full_version < '3.9'
propcache==0.3.0 ; python_full_version >= '3.9'
port-for==0.7.4
prettytable==3.14.0
propcache==0.3.0
psutil==7.0.0 ; sys_platform != 'cygwin'
psycopg==3.2.4
psycopg==3.2.5
pycparser==2.22
pyee==12.0.0 ; python_full_version < '3.9'
pyee==12.1.1 ; python_full_version >= '3.9'
pyee==12.1.1
pygithub==2.6.1
pygments==2.19.1
pyjwt==2.9.0 ; python_full_version < '3.9'
pyjwt==2.10.1 ; python_full_version >= '3.9'
pyjwt==2.10.1
pynacl==1.5.0
pyparsing==3.1.4 ; python_full_version < '3.9'
pyparsing==3.2.1 ; python_full_version >= '3.9'
pyparsing==3.2.1
pyproject-hooks==1.2.0
pysocks==1.7.1
pytest==7.4.4
pytest-asyncio==0.23.8
pytest-base-url==2.1.0
pytest-cov==5.0.0 ; python_full_version < '3.9'
pytest-cov==6.0.0 ; python_full_version >= '3.9'
pytest-cov==6.0.0
pytest-html==4.1.1
pytest-httpserver==1.1.1
pytest-json-report==1.5.0
pytest-metadata==3.1.1
pytest-mock==3.14.0
pytest-playwright==0.5.2 ; python_full_version < '3.9'
pytest-playwright==0.7.0 ; python_full_version >= '3.9'
pytest-postgresql==6.1.1
pytest-playwright==0.7.0
pytest-postgresql==7.0.0
pytest-shard==0.1.2
python-dateutil==2.9.0.post0
python-irodsclient==3.0.0
python-slugify==8.0.4
pytz==2025.1 ; python_full_version < '3.9'
pywin32-ctypes==0.2.3 ; platform_machine != 'ppc64le' and platform_machine != 's390x' and sys_platform == 'win32'
pyyaml==6.0.2
rdflib==6.3.2 ; python_full_version < '3.8.1'
rdflib==7.0.0 ; python_full_version >= '3.8.1' and python_full_version < '3.9'
rdflib==7.1.3 ; python_full_version >= '3.9'
readme-renderer==43.0 ; python_full_version < '3.9'
readme-renderer==44.0 ; python_full_version >= '3.9'
referencing==0.35.1 ; python_version < '0'
referencing==0.36.2 ; python_full_version >= '3.9'
rdflib==7.1.3
readme-renderer==44.0
referencing==0.36.2
requests==2.32.3
requests-toolbelt==1.0.0
responses==0.25.6
rfc3986==2.0.0
rich==13.9.4
roman-numerals-py==3.0.0 ; python_full_version >= '3.11'
rpds-py==0.20.1 ; python_version < '0'
rpds-py==0.23.1 ; python_full_version >= '3.9'
roman-numerals-py==3.1.0 ; python_full_version >= '3.11'
rpds-py==0.23.1
ruamel-yaml==0.18.10
ruamel-yaml-clib==0.2.8 ; python_full_version < '3.9' and platform_python_implementation == 'CPython'
ruamel-yaml-clib==0.2.12 ; python_full_version >= '3.9' and python_full_version < '3.13' and platform_python_implementation == 'CPython'
rucio-clients==36.3.0 ; python_full_version >= '3.9'
ruamel-yaml-clib==0.2.12 ; python_full_version < '3.13' and platform_python_implementation == 'CPython'
rucio-clients==36.3.0
s3transfer==0.11.2
schema-salad==8.7.20241010092723 ; python_full_version < '3.9'
schema-salad==8.8.20250205075315 ; python_full_version >= '3.9'
scipy==1.10.1 ; python_full_version < '3.9'
scipy==1.13.1 ; python_full_version == '3.9.*'
schema-salad==8.8.20250205075315
scipy==1.13.1 ; python_full_version < '3.10'
scipy==1.15.2 ; python_full_version >= '3.10'
secretstorage==3.3.3 ; platform_machine != 'ppc64le' and platform_machine != 's390x' and sys_platform == 'linux'
selenium==4.27.1 ; python_full_version < '3.9'
selenium==4.29.0 ; python_full_version >= '3.9'
selenium==4.29.0
seletools==1.5.0
setuptools==75.3.0 ; python_full_version < '3.9'
setuptools==75.8.0 ; python_full_version >= '3.9'
setuptools==75.8.0
six==1.17.0
sniffio==1.3.1
snowballstemmer==2.2.0
sortedcontainers==2.4.0
sphinx==7.1.2 ; python_full_version < '3.9'
sphinx==7.4.7 ; python_full_version == '3.9.*'
sphinx==7.4.7 ; python_full_version < '3.10'
sphinx==8.1.3 ; python_full_version == '3.10.*'
sphinx==8.2.1 ; python_full_version >= '3.11'
sphinx-rtd-theme==3.0.2
sphinxcontrib-applehelp==1.0.4 ; python_full_version < '3.9'
sphinxcontrib-applehelp==2.0.0 ; python_full_version >= '3.9'
sphinxcontrib-devhelp==1.0.2 ; python_full_version < '3.9'
sphinxcontrib-devhelp==2.0.0 ; python_full_version >= '3.9'
sphinxcontrib-htmlhelp==2.0.1 ; python_full_version < '3.9'
sphinxcontrib-htmlhelp==2.1.0 ; python_full_version >= '3.9'
sphinxcontrib-applehelp==2.0.0
sphinxcontrib-devhelp==2.0.0
sphinxcontrib-htmlhelp==2.1.0
sphinxcontrib-jquery==4.1
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.3 ; python_full_version < '3.9'
sphinxcontrib-qthelp==2.0.0 ; python_full_version >= '3.9'
sphinxcontrib-serializinghtml==1.1.5 ; python_full_version < '3.9'
sphinxcontrib-serializinghtml==2.0.0 ; python_full_version >= '3.9'
sphinxcontrib-qthelp==2.0.0
sphinxcontrib-serializinghtml==2.0.0
statsd==4.0.1
stevedore==5.4.1 ; python_full_version >= '3.9'
tabulate==0.9.0 ; python_full_version >= '3.9'
stevedore==5.4.1
tabulate==0.9.0
testfixtures==8.3.0
text-unidecode==1.3
tinydb==4.8.2
toml==0.10.2
tomli==2.2.1 ; python_full_version <= '3.11'
trio==0.27.0 ; python_full_version < '3.9'
trio==0.29.0 ; python_full_version >= '3.9'
trio==0.29.0
trio-websocket==0.12.1
tuspy==1.1.0
twill==3.3
@@ -232,15 +180,11 @@ typing-extensions==4.12.2
tzdata==2025.1 ; sys_platform == 'win32'
urllib3==1.26.20 ; python_full_version < '3.10'
urllib3==2.3.0 ; python_full_version >= '3.10'
watchdog==4.0.2 ; python_full_version < '3.9'
watchdog==6.0.0 ; python_full_version >= '3.9'
watchdog==6.0.0
wcwidth==0.2.13
websocket-client==1.8.0
werkzeug==3.0.6 ; python_full_version < '3.9'
werkzeug==3.1.3 ; python_full_version >= '3.9'
werkzeug==3.1.3
wrapt==1.17.2
wsproto==1.2.0
yarl==1.15.2 ; python_full_version < '3.9'
yarl==1.18.3 ; python_full_version >= '3.9'
zipp==3.20.2 ; python_full_version < '3.9'
zipp==3.21.0 ; (python_full_version >= '3.9' and python_full_version < '3.10.2' and platform_machine == 'ppc64le') or (python_full_version >= '3.9' and python_full_version < '3.10.2' and platform_machine == 's390x') or (python_full_version >= '3.9' and python_full_version < '3.12' and platform_machine != 'ppc64le' and platform_machine != 's390x')
yarl==1.18.3
zipp==3.21.0 ; (python_full_version < '3.10.2' and platform_machine == 'ppc64le') or (python_full_version < '3.10.2' and platform_machine == 's390x') or (python_full_version < '3.12' and platform_machine != 'ppc64le' and platform_machine != 's390x')
+41 -85
View File
@@ -5,20 +5,15 @@ adal==1.2.7
aiobotocore==2.20.0
aiodataloader==0.4.2
aiofiles==24.1.0
aiohappyeyeballs==2.4.4 ; python_full_version < '3.9'
aiohappyeyeballs==2.4.6 ; python_full_version >= '3.9'
aiohttp==3.10.11 ; python_full_version < '3.9'
aiohttp==3.11.12 ; python_full_version >= '3.9'
aiohappyeyeballs==2.4.6
aiohttp==3.11.12
aioitertools==0.12.0
aiosignal==1.3.1 ; python_full_version < '3.9'
aiosignal==1.3.2 ; python_full_version >= '3.9'
aiosignal==1.3.2
alembic==1.14.1
amqp==5.3.1
annotated-types==0.7.0
anyio==4.5.2 ; python_full_version < '3.9'
anyio==4.8.0 ; python_full_version >= '3.9'
apispec==6.6.1 ; python_full_version < '3.9'
apispec==6.8.1 ; python_full_version >= '3.9'
anyio==4.8.0
apispec==6.8.1
appdirs==1.4.4
arcp==0.2.1
argcomplete==3.5.3
@@ -26,7 +21,6 @@ async-timeout==5.0.1 ; python_full_version < '3.11'
attmap==0.13.2
attrs==25.1.0
babel==2.17.0
backports-zoneinfo==0.2.1 ; python_full_version < '3.9'
bagit==1.8.1
bagit-profile==1.3.1
bcrypt==4.2.1
@@ -34,8 +28,7 @@ bdbag==1.7.3
beaker==1.13.0
billiard==4.2.1
bioblend==1.4.0
bleach==6.1.0 ; python_full_version < '3.9'
bleach==6.2.0 ; python_full_version >= '3.9'
bleach==6.2.0
boltons==25.0.0
boto==2.49.0
botocore==1.36.23
@@ -57,34 +50,26 @@ coloredlogs==15.0.1
conda-package-streaming==0.11.0
cryptography==44.0.1
ct3==3.4.0
cwl-upgrader==1.2.11 ; python_full_version < '3.9'
cwl-upgrader==1.2.12 ; python_full_version >= '3.9'
cwl-utils==0.35 ; python_full_version < '3.9'
cwl-utils==0.37 ; python_full_version >= '3.9'
cwltool==3.1.20241007082533 ; python_full_version < '3.9'
cwltool==3.1.20250110105449 ; python_full_version >= '3.9'
cwl-upgrader==1.2.12
cwl-utils==0.37
cwltool==3.1.20250110105449
defusedxml==0.7.1
deprecation==2.1.0
dictobj==0.4
dnspython==2.6.1 ; python_full_version < '3.9'
dnspython==2.7.0 ; python_full_version >= '3.9'
dnspython==2.7.0
docopt==0.6.2
docutils==0.20.1 ; python_full_version < '3.9'
docutils==0.21.2 ; python_full_version >= '3.9'
docutils==0.21.2
dparse==0.6.4
edam-ontology==1.25.2
email-validator==2.2.0
exceptiongroup==1.2.2 ; python_full_version < '3.11'
fastapi-slim==0.115.8
filelock==3.16.1 ; python_full_version < '3.9'
filelock==3.17.0 ; python_full_version >= '3.9'
filelock==3.17.0
fissix==24.4.24 ; python_full_version >= '3.13'
frozenlist==1.5.0
fs==2.4.16
fsspec==2024.10.0 ; python_full_version < '3.9'
fsspec==2025.2.0 ; python_full_version >= '3.9'
fsspec==2025.2.0
future==1.0.0
galaxy2cwl==0.1.4 ; python_full_version < '3.9'
graphene==3.4.3
graphene-sqlalchemy==3.0.0rc2
graphql-core==3.2.6
@@ -95,24 +80,19 @@ gunicorn==23.0.0
gxformat2==0.20.0
h11==0.14.0
h5grove==2.3.0
h5py==3.11.0 ; python_full_version < '3.9'
h5py==3.13.0 ; python_full_version >= '3.9'
h5py==3.13.0
humanfriendly==10.0
idna==3.10
importlib-metadata==8.5.0 ; python_full_version < '3.9'
importlib-metadata==8.6.1 ; python_full_version >= '3.9'
importlib-resources==6.4.5 ; python_full_version < '3.9'
importlib-resources==6.5.2 ; python_full_version >= '3.9' and python_full_version < '3.12'
importlib-metadata==8.6.1
importlib-resources==6.5.2 ; python_full_version < '3.12'
isa-rwval @ git+https://github.com/nsoranzo/isa-rwval.git@3d989181058d2765a93cb0e7ca85d6955e0eb6ef
isal==1.7.1
isodate==0.6.1 ; python_full_version < '3.9'
isodate==0.7.2 ; python_full_version >= '3.9' and python_full_version < '3.11'
isodate==0.7.2 ; python_full_version < '3.11'
jinja2==3.1.5
jmespath==1.0.1
jsonref==1.1.0
jsonschema==4.23.0
jsonschema-specifications==2023.12.1 ; python_full_version < '3.9'
jsonschema-specifications==2024.10.1 ; python_full_version >= '3.9'
jsonschema-specifications==2024.10.1
kombu==5.4.2
lagom==2.7.5
legacy-cgi==2.6.2 ; python_full_version >= '3.13'
@@ -120,8 +100,7 @@ lxml==5.3.1
mako==1.3.9
markdown==3.7
markdown-it-py==3.0.0
markupsafe==2.1.5 ; python_full_version < '3.9'
markupsafe==3.0.2 ; python_full_version >= '3.9'
markupsafe==3.0.2
mdurl==0.1.2
mercurial==6.9.2
mistune==3.0.2
@@ -130,12 +109,10 @@ msal==1.31.1
msgpack==1.1.0
multidict==6.1.0
mypy-extensions==1.0.0
networkx==3.1 ; python_full_version < '3.9'
networkx==3.2.1 ; python_full_version == '3.9.*'
networkx==3.2.1 ; python_full_version < '3.10'
networkx==3.4.2 ; python_full_version >= '3.10'
nodeenv==1.9.1
numpy==1.24.4 ; python_full_version < '3.9'
numpy==2.0.2 ; python_full_version == '3.9.*'
numpy==2.0.2 ; python_full_version < '3.10'
numpy==2.2.3 ; python_full_version >= '3.10'
oauthlib==3.2.2
orjson==3.10.15
@@ -146,13 +123,10 @@ parsley==1.3
paste==3.10.1
pastedeploy==3.1.0
pebble==5.1.0
pillow==10.4.0 ; python_full_version < '3.9'
pillow==11.1.0 ; python_full_version >= '3.9'
pkgutil-resolve-name==1.3.10 ; python_full_version < '3.9'
pillow==11.1.0
promise==2.3
prompt-toolkit==3.0.50
propcache==0.2.0 ; python_full_version < '3.9'
propcache==0.3.0 ; python_full_version >= '3.9'
propcache==0.3.0
prov==1.5.1
psutil==7.0.0
pulsar-galaxy-lib==0.15.6
@@ -165,13 +139,11 @@ pydot==2.0.0
pyeventsystem==0.1.0
pyfaidx==0.8.1.3
pygments==2.19.1
pyjwt==2.9.0 ; python_full_version < '3.9'
pyjwt==2.10.1 ; python_full_version >= '3.9'
pyjwt==2.10.1
pykwalify==1.8.0
pylibmagic==0.5.0
pynacl==1.5.0
pyparsing==3.1.4 ; python_full_version < '3.9'
pyparsing==3.2.1 ; python_full_version >= '3.9'
pyparsing==3.2.1
pyreadline3==3.5.4 ; sys_platform == 'win32'
pysam==0.23.0
python-dateutil==2.9.0.post0
@@ -182,11 +154,8 @@ python3-openid==3.2.0
pytz==2025.1
pyyaml==6.0.2
pyzmq==26.2.1
rdflib==6.3.2 ; python_full_version < '3.8.1'
rdflib==7.0.0 ; python_full_version >= '3.8.1' and python_full_version < '3.9'
rdflib==7.1.3 ; python_full_version >= '3.9'
referencing==0.35.1 ; python_full_version < '3.9'
referencing==0.36.2 ; python_full_version >= '3.9'
rdflib==7.1.3
referencing==0.36.2
refgenconf==0.12.2
regex==2024.11.6
repoze-lru==0.7
@@ -195,41 +164,32 @@ requests-oauthlib==2.0.0
requests-toolbelt==1.0.0
requests-unixsocket==0.3.0
rich==13.9.4
rich-argparse==1.7.0 ; python_full_version >= '3.9'
rocrate==0.11.0 ; python_full_version < '3.9'
rocrate==0.13.0 ; python_full_version >= '3.9'
rich-argparse==1.7.0
rocrate==0.13.0
routes==2.5.1
rpds-py==0.20.1 ; python_full_version < '3.9'
rpds-py==0.23.1 ; python_full_version >= '3.9'
rpds-py==0.23.1
ruamel-yaml==0.18.10
ruamel-yaml-clib==0.2.8 ; python_full_version < '3.9' and platform_python_implementation == 'CPython'
ruamel-yaml-clib==0.2.12 ; python_full_version >= '3.9' and python_full_version < '3.13' and platform_python_implementation == 'CPython'
s3fs==2024.10.0 ; python_full_version < '3.9'
s3fs==2025.2.0 ; python_full_version >= '3.9'
schema-salad==8.7.20241010092723 ; python_full_version < '3.9'
schema-salad==8.8.20250205075315 ; python_full_version >= '3.9'
setuptools==75.3.0 ; python_full_version < '3.9'
setuptools==75.8.0 ; python_full_version >= '3.9'
ruamel-yaml-clib==0.2.12 ; python_full_version < '3.13' and platform_python_implementation == 'CPython'
s3fs==2025.2.0
schema-salad==8.8.20250205075315
setuptools==75.8.0
setuptools-scm==5.0.2
six==1.17.0
sniffio==1.3.1
social-auth-core==4.5.4 ; python_full_version < '3.9'
social-auth-core==4.5.6 ; python_full_version >= '3.9'
social-auth-core==4.5.6
sortedcontainers==2.4.0
spython==0.3.14
sqlalchemy==2.0.38
sqlitedict==2.1.0
sqlparse==0.5.3
starlette==0.44.0 ; python_full_version < '3.9'
starlette==0.45.3 ; python_full_version >= '3.9'
starlette==0.45.3
starlette-context==0.3.6
starlette-graphene3==0.6.0
supervisor==4.2.5
svgwrite==1.4.3
tenacity==9.0.0
text-unidecode==1.3
tifffile==2023.7.10 ; python_full_version < '3.9'
tifffile==2024.8.30 ; python_full_version == '3.9.*'
tifffile==2024.8.30 ; python_full_version < '3.10'
tifffile==2025.2.18 ; python_full_version >= '3.10'
tinydb==4.8.2
tomli==2.2.1 ; python_full_version < '3.11'
@@ -239,13 +199,11 @@ tuspy==1.1.0
tuswsgi==0.5.5
typing-extensions==4.12.2
tzdata==2025.1
tzlocal==5.2 ; python_full_version < '3.9'
tzlocal==5.3 ; python_full_version >= '3.9'
tzlocal==5.3
ubiquerg==0.8.0
urllib3==1.26.20 ; python_full_version < '3.10'
urllib3==2.3.0 ; python_full_version >= '3.10'
uvicorn==0.33.0 ; python_full_version < '3.9'
uvicorn==0.34.0 ; python_full_version >= '3.9'
uvicorn==0.34.0
uvloop==0.21.0
vine==5.1.0
wcwidth==0.2.13
@@ -254,9 +212,7 @@ webob==1.8.9
whoosh==2.7.4
wrapt==1.17.2
yacman==0.9.3
yarl==1.15.2 ; python_full_version < '3.9'
yarl==1.18.3 ; python_full_version >= '3.9'
zipp==3.20.2 ; python_full_version < '3.9'
zipp==3.21.0 ; python_full_version >= '3.9'
yarl==1.18.3
zipp==3.21.0
zipstream-new==1.1.8
zstandard==0.23.0
@@ -6,8 +6,7 @@ botocore-stubs==1.36.26
cffi==1.17.1 ; platform_python_implementation != 'PyPy'
cryptography==44.0.1
lxml-stubs==0.5.1
mypy==1.14.1 ; python_full_version < '3.9'
mypy==1.15.0 ; python_full_version >= '3.9'
mypy==1.15.0
mypy-boto3-s3==1.36.21
mypy-extensions==1.0.0
pycparser==2.22 ; platform_python_implementation != 'PyPy'
@@ -29,8 +28,7 @@ types-pyyaml==6.0.12.20241230
types-requests==2.31.0.6 ; python_full_version < '3.10'
types-requests==2.32.0.20241016 ; python_full_version >= '3.10'
types-s3transfer==0.11.2
types-setuptools==75.8.0.20250110 ; python_full_version < '3.9'
types-setuptools==75.8.0.20250210 ; python_full_version >= '3.9'
types-setuptools==75.8.0.20250210
types-six==1.17.0.20241205
types-urllib3==1.26.25.14 ; python_full_version < '3.10'
typing-extensions==4.12.2
@@ -10,7 +10,7 @@ THIS_DIRECTORY="$(cd "$(dirname "$0")" > /dev/null && pwd)"
update_pinned_reqs() {
VENV=$(mktemp -d "${TMPDIR:-/tmp}/$1_venv.XXXXXXXXXX")
python3.8 -m venv "${VENV}"
python3.9 -m venv "${VENV}"
. "${VENV}/bin/activate"
pip install --upgrade pip setuptools
pip install -r "${THIS_DIRECTORY}/$1-requirements.txt"
+8 -5
View File
@@ -888,11 +888,14 @@ class eLabFTWFilesSource(BaseFilesSource): # noqa
f"?format=binary",
)
try:
with session.get(
url,
timeout=(CONNECT_TIMEOUT, READ_TIMEOUT),
stream=True,
) as response, open(native_path, "wb") as file:
with (
session.get(
url,
timeout=(CONNECT_TIMEOUT, READ_TIMEOUT),
stream=True,
) as response,
open(native_path, "wb") as file,
):
response.raise_for_status()
for chunk in response.iter_content(512):
file.write(chunk)
+17 -17
View File
@@ -10103,12 +10103,12 @@ class PSAAssociation(Base, AssociationMixin, RepresentById):
__tablename__ = "psa_association"
id: Mapped[int] = mapped_column(primary_key=True)
server_url: Mapped[Optional[str]] = mapped_column(VARCHAR(255)) # type: ignore[assignment, unused-ignore] # needed for social-auth-core Mixin class attributes. unused-ignore needed for older social-auth-core on Python 3.8
handle: Mapped[Optional[str]] = mapped_column(VARCHAR(255)) # type:ignore[assignment, unused-ignore]
secret: Mapped[Optional[str]] = mapped_column(VARCHAR(255)) # type:ignore[assignment, unused-ignore]
issued: Mapped[Optional[int]] # type:ignore[assignment, unused-ignore]
lifetime: Mapped[Optional[int]] # type:ignore[assignment, unused-ignore]
assoc_type: Mapped[Optional[str]] = mapped_column(VARCHAR(64)) # type:ignore[assignment, unused-ignore]
server_url: Mapped[Optional[str]] = mapped_column(VARCHAR(255)) # type: ignore[assignment] # needed for social-auth-core Mixin class attributes
handle: Mapped[Optional[str]] = mapped_column(VARCHAR(255)) # type:ignore[assignment]
secret: Mapped[Optional[str]] = mapped_column(VARCHAR(255)) # type:ignore[assignment]
issued: Mapped[Optional[int]] # type:ignore[assignment]
lifetime: Mapped[Optional[int]] # type:ignore[assignment]
assoc_type: Mapped[Optional[str]] = mapped_column(VARCHAR(64)) # type:ignore[assignment]
# This static property is set at: galaxy.authnz.psa_authnz.PSAAuthnz
sa_session = None
@@ -10165,8 +10165,8 @@ class PSACode(Base, CodeMixin, RepresentById):
__table_args__ = (UniqueConstraint("code", "email"),)
id: Mapped[int] = mapped_column(primary_key=True)
email: Mapped[Optional[str]] = mapped_column(VARCHAR(200)) # type:ignore[assignment, unused-ignore]
code: Mapped[Optional[str]] = mapped_column(VARCHAR(32)) # type:ignore[assignment, unused-ignore]
email: Mapped[Optional[str]] = mapped_column(VARCHAR(200)) # type:ignore[assignment]
code: Mapped[Optional[str]] = mapped_column(VARCHAR(32)) # type:ignore[assignment]
# This static property is set at: galaxy.authnz.psa_authnz.PSAAuthnz
sa_session = None
@@ -10192,9 +10192,9 @@ class PSANonce(Base, NonceMixin, RepresentById):
__tablename__ = "psa_nonce"
id: Mapped[int] = mapped_column(primary_key=True)
server_url: Mapped[Optional[str]] = mapped_column(VARCHAR(255)) # type:ignore[assignment, unused-ignore]
timestamp: Mapped[Optional[int]] # type:ignore[assignment, unused-ignore]
salt: Mapped[Optional[str]] = mapped_column(VARCHAR(40)) # type:ignore[assignment, unused-ignore]
server_url: Mapped[Optional[str]] = mapped_column(VARCHAR(255)) # type:ignore[assignment]
timestamp: Mapped[Optional[int]] # type:ignore[assignment]
salt: Mapped[Optional[str]] = mapped_column(VARCHAR(40)) # type:ignore[assignment]
# This static property is set at: galaxy.authnz.psa_authnz.PSAAuthnz
sa_session = None
@@ -10228,10 +10228,10 @@ class PSAPartial(Base, PartialMixin, RepresentById):
__tablename__ = "psa_partial"
id: Mapped[int] = mapped_column(primary_key=True)
token: Mapped[Optional[str]] = mapped_column(VARCHAR(32)) # type:ignore[assignment, unused-ignore]
data: Mapped[Optional[str]] = mapped_column(TEXT) # type:ignore[assignment, unused-ignore]
next_step: Mapped[Optional[int]] # type:ignore[assignment, unused-ignore]
backend: Mapped[Optional[str]] = mapped_column(VARCHAR(32)) # type:ignore[assignment, unused-ignore]
token: Mapped[Optional[str]] = mapped_column(VARCHAR(32)) # type:ignore[assignment]
data: Mapped[Optional[str]] = mapped_column(TEXT) # type:ignore[assignment]
next_step: Mapped[Optional[int]] # type:ignore[assignment]
backend: Mapped[Optional[str]] = mapped_column(VARCHAR(32)) # type:ignore[assignment]
# This static property is set at: galaxy.authnz.psa_authnz.PSAAuthnz
sa_session = None
@@ -10271,8 +10271,8 @@ class UserAuthnzToken(Base, UserMixin, RepresentById):
id: Mapped[int] = mapped_column(primary_key=True)
user_id: Mapped[Optional[int]] = mapped_column(ForeignKey("galaxy_user.id"), index=True)
uid: Mapped[Optional[str]] = mapped_column(VARCHAR(255)) # type:ignore[assignment, unused-ignore]
provider: Mapped[Optional[str]] = mapped_column(VARCHAR(32)) # type:ignore[assignment, unused-ignore]
uid: Mapped[Optional[str]] = mapped_column(VARCHAR(255)) # type:ignore[assignment]
provider: Mapped[Optional[str]] = mapped_column(VARCHAR(32)) # type:ignore[assignment]
extra_data: Mapped[Optional[bytes]] = mapped_column(MutableJSONType)
lifetime: Mapped[Optional[int]]
assoc_type: Mapped[Optional[str]] = mapped_column(VARCHAR(64))
+8 -2
View File
@@ -5466,7 +5466,10 @@ steps:
def test_workflow_rerun_with_use_cached_job(self):
workflow = self.workflow_populator.load_workflow(name="test_for_run")
# We launch a workflow
with self.dataset_populator.test_history() as history_id_one, self.dataset_populator.test_history() as history_id_two:
with (
self.dataset_populator.test_history() as history_id_one,
self.dataset_populator.test_history() as history_id_two,
):
workflow_request, _, workflow_id = self._setup_workflow_run(workflow, history_id=history_id_one)
invocation_id = self.workflow_populator.invoke_workflow_and_wait(
workflow_id, request=workflow_request
@@ -5549,7 +5552,10 @@ steps:
@skip_without_tool("cat1")
def test_nested_workflow_rerun_with_use_cached_job(self):
with self.dataset_populator.test_history() as history_id_one, self.dataset_populator.test_history() as history_id_two:
with (
self.dataset_populator.test_history() as history_id_one,
self.dataset_populator.test_history() as history_id_two,
):
test_data = """
outer_input:
value: 1.bed
+18 -9
View File
@@ -137,12 +137,15 @@ def get_change_lines_in_file_for_tag(tag, change_dict):
def handle_bz2(repository: "Repository", uploaded_file_name):
with tempfile.NamedTemporaryFile(
mode="wb",
prefix=f"repo_{repository.id}_upload_bunzip2_",
dir=os.path.dirname(uploaded_file_name),
delete=False,
) as uncompressed, bz2.BZ2File(uploaded_file_name, "rb") as bzipped_file:
with (
tempfile.NamedTemporaryFile(
mode="wb",
prefix=f"repo_{repository.id}_upload_bunzip2_",
dir=os.path.dirname(uploaded_file_name),
delete=False,
) as uncompressed,
bz2.BZ2File(uploaded_file_name, "rb") as bzipped_file,
):
while 1:
try:
chunk = bzipped_file.read(basic_util.CHUNK_SIZE)
@@ -242,9 +245,15 @@ def handle_directory_changes(
def handle_gzip(repository, uploaded_file_name):
with tempfile.NamedTemporaryFile(
mode="wb", prefix=f"repo_{repository.id}_upload_gunzip_", dir=os.path.dirname(uploaded_file_name), delete=False
) as uncompressed, gzip.GzipFile(uploaded_file_name, "rb") as gzipped_file:
with (
tempfile.NamedTemporaryFile(
mode="wb",
prefix=f"repo_{repository.id}_upload_gunzip_",
dir=os.path.dirname(uploaded_file_name),
delete=False,
) as uncompressed,
gzip.GzipFile(uploaded_file_name, "rb") as gzipped_file,
):
while 1:
try:
chunk = gzipped_file.read(basic_util.CHUNK_SIZE)
+1 -2
View File
@@ -9,7 +9,6 @@ classifiers =
Natural Language :: English
Operating System :: POSIX
Programming Language :: Python :: 3
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
@@ -80,7 +79,7 @@ install_requires =
WebOb>=1.8.9
Whoosh
packages = find:
python_requires = >=3.8
python_requires = >=3.9
[options.entry_points]
console_scripts =
+1 -2
View File
@@ -9,7 +9,6 @@ classifiers =
Natural Language :: English
Operating System :: POSIX
Programming Language :: Python :: 3
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
@@ -36,7 +35,7 @@ install_requires =
galaxy-data
galaxy-util
packages = find:
python_requires = >=3.8
python_requires = >=3.9
[options.packages.find]
exclude =
+1 -2
View File
@@ -9,7 +9,6 @@ classifiers =
Natural Language :: English
Operating System :: POSIX
Programming Language :: Python :: 3
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
@@ -39,7 +38,7 @@ install_requires =
pykwalify
PyYAML
packages = find:
python_requires = >=3.8
python_requires = >=3.9
[options.entry_points]
console_scripts =
+1 -2
View File
@@ -9,7 +9,6 @@ classifiers =
Natural Language :: English
Operating System :: POSIX
Programming Language :: Python :: 3
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
@@ -63,7 +62,7 @@ install_requires =
tifffile
typing-extensions
packages = find:
python_requires = >=3.8
python_requires = >=3.9
[options.entry_points]
console_scripts =
+1 -2
View File
@@ -9,7 +9,6 @@ classifiers =
Natural Language :: English
Operating System :: POSIX
Programming Language :: Python :: 3
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
@@ -37,7 +36,7 @@ install_requires =
fs
typing-extensions
packages = find:
python_requires = >=3.8
python_requires = >=3.9
[options.packages.find]
exclude =
+1 -2
View File
@@ -9,7 +9,6 @@ classifiers =
Natural Language :: English
Operating System :: POSIX
Programming Language :: Python :: 3
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
@@ -41,7 +40,7 @@ install_requires =
MarkupSafe
SQLAlchemy>=2.0,<2.1,!=2.0.36
packages = find:
python_requires = >=3.8
python_requires = >=3.9
[options.entry_points]
console_scripts =
+1 -2
View File
@@ -10,7 +10,6 @@ classifiers =
Natural Language :: English
Operating System :: POSIX
Programming Language :: Python :: 3
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
@@ -35,7 +34,7 @@ version = 25.0.dev0
[options]
include_package_data = True
packages = find:
python_requires = >=3.8
python_requires = >=3.9
[options.extras_require]
postgresql =
+1 -2
View File
@@ -9,7 +9,6 @@ classifiers =
Natural Language :: English
Operating System :: POSIX
Programming Language :: Python :: 3
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
@@ -36,7 +35,7 @@ install_requires =
galaxy-util
PyYAML
packages = find:
python_requires = >=3.8
python_requires = >=3.9
[options.packages.find]
exclude =
+1 -2
View File
@@ -9,7 +9,6 @@ classifiers =
Natural Language :: English
Operating System :: POSIX
Programming Language :: Python :: 3
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
@@ -36,7 +35,7 @@ install_requires =
galaxy-util
pydantic[email]>=2.7.4
packages = find:
python_requires = >=3.8
python_requires = >=3.9
[options.packages.find]
exclude =
+1 -2
View File
@@ -9,7 +9,6 @@ classifiers =
Natural Language :: English
Operating System :: POSIX
Programming Language :: Python :: 3
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
@@ -40,7 +39,7 @@ install_requires =
requests
selenium!=4.11.0,!=4.11.1,!=4.11.2
packages = find:
python_requires = >=3.8
python_requires = >=3.9
[options.entry_points]
console_scripts =
+1 -2
View File
@@ -9,7 +9,6 @@ classifiers =
Natural Language :: English
Operating System :: POSIX
Programming Language :: Python :: 3
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
@@ -39,7 +38,7 @@ install_requires =
requests
tuspy
packages = find:
python_requires = >=3.8
python_requires = >=3.9
[options.extras_require]
driver =
+1 -2
View File
@@ -9,7 +9,6 @@ classifiers =
Natural Language :: English
Operating System :: POSIX
Programming Language :: Python :: 3
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
@@ -42,7 +41,7 @@ install_requires =
PyYAML
requests
packages = find:
python_requires = >=3.8
python_requires = >=3.9
[options.packages.find]
exclude =
+1 -2
View File
@@ -9,7 +9,6 @@ classifiers =
Natural Language :: English
Operating System :: POSIX
Programming Language :: Python :: 3
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
@@ -42,7 +41,7 @@ install_requires =
galaxy-web-apps
pytest
packages = find:
python_requires = >=3.8
python_requires = >=3.9
[options.packages.find]
exclude =
+1 -2
View File
@@ -9,7 +9,6 @@ classifiers =
Natural Language :: English
Operating System :: POSIX
Programming Language :: Python :: 3
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
@@ -44,7 +43,7 @@ install_requires =
requests
selenium!=4.11.0,!=4.11.1,!=4.11.2
packages = find:
python_requires = >=3.8
python_requires = >=3.9
[options.extras_require]
driver =
+1 -2
View File
@@ -9,7 +9,6 @@ classifiers =
Natural Language :: English
Operating System :: POSIX
Programming Language :: Python :: 3
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
@@ -61,7 +60,7 @@ install_requires =
WebOb
Whoosh
packages = find:
python_requires = >=3.8
python_requires = >=3.9
[options.packages.find]
exclude =
+1 -2
View File
@@ -9,7 +9,6 @@ classifiers =
Natural Language :: English
Operating System :: POSIX
Programming Language :: Python :: 3
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
@@ -37,7 +36,7 @@ install_requires =
pydantic>=2.7.4
PyYAML
packages = find:
python_requires = >=3.8
python_requires = >=3.9
[options.entry_points]
console_scripts =
+1 -2
View File
@@ -9,7 +9,6 @@ classifiers =
Natural Language :: English
Operating System :: POSIX
Programming Language :: Python :: 3
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
@@ -66,7 +65,7 @@ install_requires =
uvloop>=0.21.0
WebOb>=1.8.9
packages = find:
python_requires = >=3.8
python_requires = >=3.9
[options.entry_points]
console_scripts =
+1 -2
View File
@@ -9,7 +9,6 @@ classifiers =
Natural Language :: English
Operating System :: POSIX
Programming Language :: Python :: 3
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
@@ -45,7 +44,7 @@ install_requires =
WebOb
packages = find:
python_requires = >=3.8
python_requires = >=3.9
[options.packages.find]
exclude =
+1 -2
View File
@@ -9,7 +9,6 @@ classifiers =
Natural Language :: English
Operating System :: POSIX
Programming Language :: Python :: 3
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
@@ -37,7 +36,7 @@ install_requires =
galaxy-util
SQLAlchemy>=2.0,<2.1,!=2.0.36
packages = find:
python_requires = >=3.8
python_requires = >=3.9
[options.packages.find]
exclude =
+24 -14
View File
@@ -10,7 +10,7 @@ maintainers = [
]
license = {file = "LICENSE.txt"}
readme = "README.rst"
requires-python = ">=3.8"
requires-python = ">=3.9"
dependencies = [
"a2wsgi",
"aiofiles",
@@ -48,8 +48,7 @@ dependencies = [
"gunicorn",
"gxformat2",
"h5grove>=1.2.1",
"h5py", # Python 3.8 support
"h5py>=3.12 ; python_version>='3.9'", # Python 3.13 support
"h5py>=3.12", # Python 3.13 support
"importlib-resources ; python_version<'3.12'", # for importlib.{abc.Traversable,resources.{files, Package}}
"isa-rwval @ git+https://github.com/nsoranzo/isa-rwval.git@master", # https://github.com/ISA-tools/isa-rwval/pull/17
"isal>=1.7.0", # Python 3.13 support
@@ -63,8 +62,7 @@ dependencies = [
"mrcfile",
"msal",
"nodeenv",
"numpy",
"numpy>=1.26.0 ; python_version=='3.9'", # Python 3.12 support
"numpy>=1.26.0", # Python 3.12 support
"numpy>=2.1.0 ; python_version>='3.10'", # Python 3.13 support
"packaging",
"paramiko!=2.9.0,!=2.9.1", # https://github.com/paramiko/paramiko/issues/1961
@@ -149,7 +147,7 @@ dev = [
"pytest-postgresql!=3.0.0", # https://github.com/ClearcodeHQ/pytest-postgresql/issues/426
"pytest-shard",
"responses",
"rucio-clients>=33.6.0 ; python_version>='3.9'", # https://github.com/galaxyproject/galaxy/pull/17156
"rucio-clients>=33.6.0",
"selenium",
"seletools",
"Sphinx>=4.0", # support docutils 0.17
@@ -183,7 +181,7 @@ typecheck = [
[tool.black]
line-length = 120
target-version = ['py38']
target-version = ['py39']
include = '\.pyi?$'
extend-exclude = '''
^/(
@@ -196,7 +194,7 @@ extend-exclude = '''
isort = true
[tool.ruff]
target-version = "py38"
target-version = "py39"
exclude = [
"lib/tool_shed/test/test_data/repos"
]
@@ -212,7 +210,8 @@ select = ["E", "F", "B", "C4", "G", "ISC", "NPY", "UP"]
# E402 module level import not at top of file # TODO, we would like to improve this.
# E501 is line length (delegated to black)
# G* are TODOs
ignore = ["B008", "B9", "E402", "E501", "G001", "G002", "G004"]
# UP006 and UP035 are PEP 585 type annotations
ignore = ["B008", "B9", "E402", "E501", "G001", "G002", "G004", "UP006", "UP035"]
[tool.ruff.lint.flake8-comprehensions]
allow-dict-calls-with-keyword-arguments = true
@@ -231,11 +230,22 @@ keep-runtime-typing = true
# Don't check pyupgrade rules on tool scripts, which may use different Python versions
"test/functional/tools/*" = ["UP"]
"tools/*" = ["UP"]
# Don't check some pyupgrade rules on generated files
"lib/galaxy/schema/bco/*" = ["UP006", "UP007"]
"lib/galaxy/schema/drs/*" = ["UP006", "UP007"]
"lib/tool_shed_client/schema/trs.py" = ["UP006", "UP007"]
"lib/tool_shed_client/schema/trs_service_info.py" = ["UP006", "UP007"]
# Don't check pyupgrade rules on generated files
"lib/galaxy/schema/bco/*" = ["UP"]
"lib/galaxy/schema/drs/*" = ["UP"]
"lib/tool_shed_client/schema/trs.py" = ["UP"]
"lib/tool_shed_client/schema/trs_service_info.py" = ["UP"]
# Don't check some pyupgrade rules on packages for Pulsar, which need to stay compatible with Python 3.7
"lib/galaxy/exceptions/*" = ["UP006", "UP007", "UP033", "UP035", "UP036"]
"lib/galaxy/job_metrics/*" = ["UP006", "UP007", "UP033", "UP035", "UP036"]
"lib/galaxy/objectstore/*" = ["UP006", "UP007", "UP033", "UP035", "UP036"]
"lib/galaxy/tool_util/*" = ["UP006", "UP007", "UP033", "UP035", "UP036"]
"lib/galaxy/util/*" = ["UP006", "UP007", "UP033", "UP035", "UP036"]
"scripts/check_python.py" = ["UP006", "UP007", "UP010", "UP032", "UP033", "UP035", "UP036"]
"test/unit/job_metrics/*" = ["UP006", "UP007", "UP033", "UP035", "UP036"]
"test/unit/objectstore/*" = ["UP006", "UP007", "UP033", "UP035", "UP036"]
"test/unit/tool_util/*" = ["UP006", "UP007", "UP033", "UP035", "UP036"]
"test/unit/util/*" = ["UP006", "UP007", "UP033", "UP035", "UP036"]
[tool.uv]
constraint-dependencies = [
+10 -7
View File
@@ -3,25 +3,28 @@ If the current installed Python version is not supported, prints an error
message to stderr and returns 1
"""
from __future__ import print_function # noqa: UP010
from __future__ import print_function
import sys
MIN_VERSION_TUPLE = (3, 9)
def check_python():
if sys.version_info[:2] >= (3, 8): # noqa: UP036
if sys.version_info[:2] >= MIN_VERSION_TUPLE:
# supported
return
else:
version_string = ".".join(str(_) for _ in sys.version_info[:3])
msg = (
"""ERROR: Your Python version is: %s
Galaxy is currently supported on Python >=3.8 .
min_version_string = ".".join(str(_) for _ in MIN_VERSION_TUPLE)
msg = """ERROR: Your Python version is: {}
Galaxy is currently supported on Python >={} .
To run Galaxy, please install a supported Python version.
If a supported version is already installed but is not your default,
https://docs.galaxyproject.org/en/latest/admin/python.html contains instructions
on how to force Galaxy to use a different version.""" # noqa: UP031
% version_string
on how to force Galaxy to use a different version.""".format(
version_string,
min_version_string,
)
print(msg, file=sys.stderr)
raise Exception(msg)
+2 -2
View File
@@ -14,7 +14,7 @@ SKIP_NODE=${GALAXY_SKIP_NODE:-0}
INSTALL_PREBUILT_CLIENT=${GALAXY_INSTALL_PREBUILT_CLIENT:-0}
NODE_VERSION=${GALAXY_NODE_VERSION:-"$(cat client/.node_version)"}
: "${YARN_INSTALL_OPTS:=--network-timeout 300000 --check-files}"
: "${GALAXY_CONDA_PYTHON_VERSION:=3.8}"
: "${GALAXY_CONDA_PYTHON_VERSION:=3.9}"
for arg in "$@"; do
if [ "$arg" = "--skip-venv" ]; then
@@ -40,7 +40,7 @@ RMFILES="
lib/pkg_resources.pyc
"
MIN_PYTHON_VERSION=3.8
MIN_PYTHON_VERSION=3.9
MIN_PIP_VERSION=20.3
# return true if $1 is in $2 else false
@@ -33,5 +33,3 @@ class TestRucioObjectStoreIntegration(BaseRucioObjectStoreIntegrationTestCase):
instance = integration_util.integration_module_instance(TestRucioObjectStoreIntegration)
test_tools = integration_util.integration_tool_runner(TEST_TOOL_IDS)
integration_util.skip_for_older_python((3, 9))(test_tools)
+3 -2
View File
@@ -83,8 +83,9 @@ class TestGenomes(integration_util.IntegrationTestCase):
sequence = "test-value"
key = get_key()
with patch.object(self._app.genomes, "has_reference_data", return_value=True), patch.object(
self._app.genomes, "_get_reference_data", return_value=RefDataMock()
with (
patch.object(self._app.genomes, "has_reference_data", return_value=True),
patch.object(self._app.genomes, "_get_reference_data", return_value=RefDataMock()),
):
response = self._get(f"genomes/{key}/sequences")
self._assert_status_code_is(response, 200)
+4 -3
View File
@@ -26,9 +26,10 @@ def test_vcf_sniff():
def test_vcf_bgzip_set_meta():
vcf_bgzip_datatype = VcfGz()
with get_input_files("1.vcf_bgzip") as input_files, get_dataset(
input_files[0], index_attr="tabix_index"
) as dataset:
with (
get_input_files("1.vcf_bgzip") as input_files,
get_dataset(input_files[0], index_attr="tabix_index") as dataset,
):
vcf_bgzip_datatype.set_meta(dataset)
f = pysam.VariantFile(dataset.get_file_name(), index_filename=dataset.metadata.tabix_index.get_file_name())
assert isinstance(f.index, pysam.libcbcf.TabixIndex) is True
+8 -6
View File
@@ -60,9 +60,10 @@ VAULT_CONF_HASHICORP = os.path.join(os.path.dirname(__file__), "fixtures/vault_c
)
class TestHashicorpVault(AbstractTestCases.VaultTestBase):
def setUp(self) -> None:
with tempfile.NamedTemporaryFile(mode="w", prefix="vault_hashicorp", delete=False) as tempconf, open(
VAULT_CONF_HASHICORP
) as f:
with (
tempfile.NamedTemporaryFile(mode="w", prefix="vault_hashicorp", delete=False) as tempconf,
open(VAULT_CONF_HASHICORP) as f,
):
content = string.Template(f.read()).safe_substitute(
vault_address=os.environ.get("VAULT_ADDRESS"), vault_token=os.environ.get("VAULT_TOKEN")
)
@@ -120,9 +121,10 @@ VAULT_CONF_CUSTOS = os.path.join(os.path.dirname(__file__), "fixtures/vault_conf
)
class TestCustosVault(AbstractTestCases.VaultTestBase):
def setUp(self) -> None:
with tempfile.NamedTemporaryFile(mode="w", prefix="vault_custos", delete=False) as tempconf, open(
VAULT_CONF_CUSTOS
) as f:
with (
tempfile.NamedTemporaryFile(mode="w", prefix="vault_custos", delete=False) as tempconf,
open(VAULT_CONF_CUSTOS) as f,
):
content = string.Template(f.read()).safe_substitute(
custos_client_id=os.environ.get("CUSTOS_CLIENT_ID"),
custos_client_secret=os.environ.get("CUSTOS_CLIENT_SECRET"),