[med-svn] [Git][med-team/cwltest][master] 6 commits: New upstream version
Michael R. Crusoe (@crusoe)
gitlab at salsa.debian.org
Wed Jan 7 14:36:33 GMT 2026
Michael R. Crusoe pushed to branch master at Debian Med / cwltest
Commits:
5725674d by Michael R. Crusoe at 2026-01-07T15:30:48+01:00
New upstream version
- - - - -
7933e852 by Michael R. Crusoe at 2026-01-07T15:30:49+01:00
New upstream version 2.6.20251216093331
- - - - -
9b855d6f by Michael R. Crusoe at 2026-01-07T15:30:50+01:00
Update upstream source from tag 'upstream/2.6.20251216093331'
Update to upstream version '2.6.20251216093331'
with Debian dir 1e265279e7fe61a8f42a1e3c16ba1816121851a5
- - - - -
8ebe951a by Michael R. Crusoe at 2026-01-07T15:30:50+01:00
Standards-Version: 4.7.3 (routine-update)
- - - - -
86da7994 by Michael R. Crusoe at 2026-01-07T15:31:00+01:00
debputy lint --auto-fix (routine-update)
- - - - -
22820bc2 by Michael R. Crusoe at 2026-01-07T15:35:34+01:00
routine-update: Ready to upload to unstable
- - - - -
23 changed files:
- .flake8
- .github/workflows/ci-tests.yml
- .github/workflows/codeql-analysis.yml
- Makefile
- PKG-INFO
- README.rst
- cwltest.egg-info/PKG-INFO
- cwltest.egg-info/requires.txt
- cwltest/_version.py
- cwltest/compare.py
- cwltest/hooks.py
- cwltest/main.py
- cwltest/plugin.py
- cwltest/utils.py
- debian/changelog
- debian/control
- dev-requirements.txt
- mypy-requirements.txt
- pyproject.toml
- requirements.txt
- test-requirements.txt
- tests/util.py
- tox.ini
Changes:
=====================================
.flake8
=====================================
@@ -2,8 +2,7 @@
ignore = E203,W503
max-line-length = 100
select = B,C,E,F,W,T4
-extend-ignore = E501,B905
-# when Python 3.10 is the minimum version, re-enable check B905 for zip + strict
+extend-ignore = E501
extend-select = B9
per-file-ignores=
./tests/test_badgedir.py:B950
=====================================
.github/workflows/ci-tests.yml
=====================================
@@ -22,7 +22,7 @@ jobs:
matrix:
# The README.rst file mentions the versions tested, please update it as well
py-ver-major: [3]
- py-ver-minor: [9, 10, 11, 12, 13, 14]
+ py-ver-minor: [10, 11, 12, 13, 14]
step: [lint, unit, mypy, bandit]
env:
@@ -30,12 +30,12 @@ jobs:
TOXENV: ${{ format('py{0}{1}-{2}', matrix.py-ver-major, matrix.py-ver-minor, matrix.step) }}
steps:
- - uses: actions/checkout at v5
+ - uses: actions/checkout at v6
with:
fetch-depth: 0
- name: Set up Python
- uses: actions/setup-python at v5
+ uses: actions/setup-python at v6
with:
python-version: ${{ env.py-semver }}
allow-prereleases: true
@@ -55,7 +55,7 @@ jobs:
- name: MyPy cache
if: ${{ matrix.step == 'mypy' }}
- uses: actions/cache at v4
+ uses: actions/cache at v5
with:
path: .mypy_cache/${{ env.py-semver }}
key: mypy-${{ env.py-semver }}
@@ -84,12 +84,12 @@ jobs:
TOXENV: ${{ format('py313-{0}', matrix.step) }}
steps:
- - uses: actions/checkout at v5
+ - uses: actions/checkout at v6
with:
fetch-depth: 0
- name: Set up Python
- uses: actions/setup-python at v5
+ uses: actions/setup-python at v6
with:
python-version: ${{ env.py-semver }}
cache: pip
@@ -116,10 +116,10 @@ jobs:
runs-on: ubuntu-24.04
steps:
- - uses: actions/checkout at v5
+ - uses: actions/checkout at v6
- name: Set up Python
- uses: actions/setup-python at v5
+ uses: actions/setup-python at v6
with:
python-version: "3.13"
cache: pip
=====================================
.github/workflows/codeql-analysis.yml
=====================================
@@ -19,7 +19,7 @@ jobs:
steps:
- name: Checkout repository
- uses: actions/checkout at v5
+ uses: actions/checkout at v6
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
@@ -32,9 +32,9 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
- uses: github/codeql-action/init at v3
+ uses: github/codeql-action/init at v4
with:
languages: python
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze at v3
+ uses: github/codeql-action/analyze at v4
=====================================
Makefile
=====================================
@@ -168,7 +168,7 @@ mypy: $(PYSOURCES)
MYPYPATH=$$MYPYPATH:mypy-stubs mypy $^
pyupgrade: $(filter-out schema_salad/metaschema.py,$(PYSOURCES))
- pyupgrade --exit-zero-even-if-changed --py39-plus $^
+ pyupgrade --exit-zero-even-if-changed --py310-plus $^
auto-walrus $^
release-test: FORCE
=====================================
PKG-INFO
=====================================
@@ -1,6 +1,6 @@
Metadata-Version: 2.4
Name: cwltest
-Version: 2.6.20250818005349
+Version: 2.6.20251216093331
Summary: Common Workflow Language testing framework
Author-email: Common workflow language working group <common-workflow-language at googlegroups.com>
License: Apache 2.0
@@ -12,19 +12,18 @@ Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: POSIX
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Development Status :: 5 - Production/Stable
-Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Typing :: Typed
-Requires-Python: <3.15,>=3.9
+Requires-Python: <3.15,>=3.10
Description-Content-Type: text/x-rst
License-File: LICENSE
Requires-Dist: schema-salad<9,>=5.0.20200220195218
Requires-Dist: junit-xml>=1.8
-Requires-Dist: pytest<9,>=7
+Requires-Dist: pytest<10,>=8.3
Requires-Dist: defusedxml
Provides-Extra: pytest-plugin
Requires-Dist: pytest; extra == "pytest-plugin"
@@ -64,7 +63,7 @@ This is a testing tool for checking the output of Tools and Workflows described
with the Common Workflow Language. Among other uses, it is used to run the CWL
conformance tests.
-This is written and tested for Python 3.9, 3.10, 3.11, 3.12, and 3.13.
+This is written and tested for Python 3.10, 3.11, 3.12, 3.13, and 3.14
.. contents:: Table of Contents
:local:
=====================================
README.rst
=====================================
@@ -32,7 +32,7 @@ This is a testing tool for checking the output of Tools and Workflows described
with the Common Workflow Language. Among other uses, it is used to run the CWL
conformance tests.
-This is written and tested for Python 3.9, 3.10, 3.11, 3.12, and 3.13.
+This is written and tested for Python 3.10, 3.11, 3.12, 3.13, and 3.14
.. contents:: Table of Contents
:local:
=====================================
cwltest.egg-info/PKG-INFO
=====================================
@@ -1,6 +1,6 @@
Metadata-Version: 2.4
Name: cwltest
-Version: 2.6.20250818005349
+Version: 2.6.20251216093331
Summary: Common Workflow Language testing framework
Author-email: Common workflow language working group <common-workflow-language at googlegroups.com>
License: Apache 2.0
@@ -12,19 +12,18 @@ Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: POSIX
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Development Status :: 5 - Production/Stable
-Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Typing :: Typed
-Requires-Python: <3.15,>=3.9
+Requires-Python: <3.15,>=3.10
Description-Content-Type: text/x-rst
License-File: LICENSE
Requires-Dist: schema-salad<9,>=5.0.20200220195218
Requires-Dist: junit-xml>=1.8
-Requires-Dist: pytest<9,>=7
+Requires-Dist: pytest<10,>=8.3
Requires-Dist: defusedxml
Provides-Extra: pytest-plugin
Requires-Dist: pytest; extra == "pytest-plugin"
@@ -64,7 +63,7 @@ This is a testing tool for checking the output of Tools and Workflows described
with the Common Workflow Language. Among other uses, it is used to run the CWL
conformance tests.
-This is written and tested for Python 3.9, 3.10, 3.11, 3.12, and 3.13.
+This is written and tested for Python 3.10, 3.11, 3.12, 3.13, and 3.14
.. contents:: Table of Contents
:local:
=====================================
cwltest.egg-info/requires.txt
=====================================
@@ -1,6 +1,6 @@
schema-salad<9,>=5.0.20200220195218
junit-xml>=1.8
-pytest<9,>=7
+pytest<10,>=8.3
defusedxml
[pytest-plugin]
=====================================
cwltest/_version.py
=====================================
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
commit_id: COMMIT_ID
__commit_id__: COMMIT_ID
-__version__ = version = '2.6.20250818005349'
-__version_tuple__ = version_tuple = (2, 6, 20250818005349)
+__version__ = version = '2.6.20251216093331'
+__version_tuple__ = version_tuple = (2, 6, 20251216093331)
__commit_id__ = commit_id = None
=====================================
cwltest/compare.py
=====================================
@@ -2,7 +2,8 @@
import hashlib
import json
-from typing import Any, Callable, Optional
+from collections.abc import Callable
+from typing import Any
import cwltest.stdfsaccess
@@ -14,7 +15,7 @@ class CompareFail(Exception):
@classmethod
def format(
- cls, expected: Any, actual: Any, cause: Optional[Any] = None
+ cls, expected: Any, actual: Any, cause: Any | None = None
) -> "CompareFail":
"""Load the difference details into the error message."""
message = "expected: {}\ngot: {}".format(
@@ -197,10 +198,7 @@ def _compare_checksum(expected: dict[str, Any], actual: dict[str, Any]) -> None:
def _compare_size(expected: dict[str, Any], actual: dict[str, Any]) -> None:
- if "path" in actual:
- path = actual["path"]
- else:
- path = actual["location"]
+ path = actual.get("path", actual["location"])
actual_size_on_disk = fs_access.size(path)
@@ -233,31 +231,32 @@ def compare(expected: Any, actual: Any, skip_details: bool = False) -> None:
raise CompareFail.format(expected, actual)
try:
- if isinstance(expected, dict):
- if not isinstance(actual, dict):
- raise CompareFail.format(expected, actual)
-
- if expected.get("class") == "File":
- _compare_file(expected, actual, skip_details)
- elif expected.get("class") == "Directory":
- _compare_directory(expected, actual, skip_details)
- else:
- _compare_dict(expected, actual, skip_details)
-
- elif isinstance(expected, list):
- if not isinstance(actual, list):
- raise CompareFail.format(expected, actual)
-
- if len(expected) != len(actual):
- raise CompareFail.format(expected, actual, "lengths don't match")
- for c in range(0, len(expected)):
- try:
- compare(expected[c], actual[c], skip_details)
- except CompareFail as e:
- raise CompareFail.format(expected, actual, e) from e
- else:
- if expected != actual:
- raise CompareFail.format(expected, actual)
+ match expected:
+ case dict():
+ if not isinstance(actual, dict):
+ raise CompareFail.format(expected, actual)
+
+ match expected.get("class"):
+ case "File":
+ _compare_file(expected, actual, skip_details)
+ case "Directory":
+ _compare_directory(expected, actual, skip_details)
+ case _:
+ _compare_dict(expected, actual, skip_details)
+ case list():
+ if not isinstance(actual, list):
+ raise CompareFail.format(expected, actual)
+
+ if len(expected) != len(actual):
+ raise CompareFail.format(expected, actual, "lengths don't match")
+ for c in range(0, len(expected)):
+ try:
+ compare(expected[c], actual[c], skip_details)
+ except CompareFail as e:
+ raise CompareFail.format(expected, actual, e) from e
+ case _:
+ if expected != actual:
+ raise CompareFail.format(expected, actual)
except Exception as e:
raise CompareFail(str(e)) from e
=====================================
cwltest/hooks.py
=====================================
@@ -1,13 +1,13 @@
"""Hooks for pytest-cwl users."""
-from typing import Any, Optional
+from typing import Any
from cwltest import utils
def pytest_cwl_execute_test( # type: ignore[empty-body]
- config: utils.CWLTestConfig, processfile: str, jobfile: Optional[str]
-) -> tuple[int, Optional[dict[str, Any]]]:
+ config: utils.CWLTestConfig, processfile: str, jobfile: str | None
+) -> tuple[int, dict[str, Any] | None]:
"""
Execute CWL test using a Python function instead of a command line runner.
=====================================
cwltest/main.py
=====================================
@@ -6,7 +6,7 @@ import os
import sys
from collections import Counter, defaultdict
from concurrent.futures import ThreadPoolExecutor
-from typing import Optional, cast
+from typing import cast
import junit_xml
import schema_salad.avro
@@ -119,7 +119,7 @@ def main() -> int:
failures = 0
unsupported = 0
suite_name, _ = os.path.splitext(os.path.basename(args.test))
- report: Optional[junit_xml.TestSuite] = junit_xml.TestSuite(suite_name, [])
+ report: junit_xml.TestSuite | None = junit_xml.TestSuite(suite_name, [])
load_optional_fsaccess_plugin()
=====================================
cwltest/plugin.py
=====================================
@@ -27,8 +27,8 @@ class TestRunner(Protocol):
"""Protocol to type-check test runner functions via the pluggy hook."""
def __call__(
- self, config: utils.CWLTestConfig, processfile: str, jobfile: Optional[str]
- ) -> list[Optional[dict[str, Any]]]:
+ self, config: utils.CWLTestConfig, processfile: str, jobfile: str | None
+ ) -> list[dict[str, Any] | None]:
"""Type signature for pytest_cwl_execute_test hook results."""
...
@@ -224,7 +224,7 @@ class CWLItem(pytest.Item):
)
)
- def reportinfo(self) -> tuple[Union["os.PathLike[str]", str], Optional[int], str]:
+ def reportinfo(self) -> tuple[Union["os.PathLike[str]", str], int | None, str]:
"""Status report."""
return self.path, 0, "cwl test: %s" % self.name
@@ -372,7 +372,7 @@ def _doc_options() -> argparse.ArgumentParser:
def pytest_collect_file(
file_path: Path, parent: pytest.Collector
-) -> Optional[pytest.Collector]:
+) -> pytest.Collector | None:
"""Is this file for us."""
if (
file_path.suffix == ".yml" or file_path.suffix == ".yaml"
@@ -393,7 +393,7 @@ def pytest_configure(config: pytest.Config) -> None:
def _zip_results(
cwl_results: list[tuple[dict[str, Any], utils.TestResult]],
) -> tuple[list[dict[str, Any]], list[utils.TestResult]]:
- tests, results = (list(item) for item in zip(*cwl_results))
+ tests, results = (list(item) for item in zip(*cwl_results, strict=True))
return tests, results
=====================================
cwltest/utils.py
=====================================
@@ -11,7 +11,7 @@ from collections import Counter, defaultdict
from collections.abc import Iterable, MutableMapping, MutableSequence
from importlib.metadata import EntryPoint, entry_points
from importlib.resources import files
-from typing import Any, Optional, Union, cast
+from typing import Any, cast
from urllib.parse import urljoin
import junit_xml
@@ -36,23 +36,23 @@ class CWLTestConfig:
self,
entry: str,
entry_line: str,
- basedir: Optional[str] = None,
- test_baseuri: Optional[str] = None,
- test_basedir: Optional[str] = None,
- outdir: Optional[str] = None,
- classname: Optional[str] = None,
- tool: Optional[str] = None,
- args: Optional[list[str]] = None,
- testargs: Optional[list[str]] = None,
- timeout: Optional[int] = None,
- verbose: Optional[bool] = None,
- runner_quiet: Optional[bool] = None,
+ basedir: str | None = None,
+ test_baseuri: str | None = None,
+ test_basedir: str | None = None,
+ outdir: str | None = None,
+ classname: str | None = None,
+ tool: str | None = None,
+ args: list[str] | None = None,
+ testargs: list[str] | None = None,
+ timeout: int | None = None,
+ verbose: bool | None = None,
+ runner_quiet: bool | None = None,
) -> None:
"""Initialize test configuration."""
self.basedir: str = basedir or os.getcwd()
self.test_baseuri: str = test_baseuri or "file://" + self.basedir
self.test_basedir: str = test_basedir or self.basedir
- self.outdir: Optional[str] = outdir
+ self.outdir: str | None = outdir
self.classname: str = classname or ""
self.entry = urljoin(
self.test_baseuri, os.path.basename(entry) + f"#L{entry_line}"
@@ -60,7 +60,7 @@ class CWLTestConfig:
self.tool: str = tool or "cwl-runner"
self.args: list[str] = args or []
self.testargs: list[str] = testargs or []
- self.timeout: Optional[int] = timeout
+ self.timeout: int | None = timeout
self.verbose: bool = verbose or False
self.runner_quiet: bool = runner_quiet or True
@@ -70,11 +70,11 @@ class CWLTestReport:
def __init__(
self,
- id: Union[int, str],
+ id: int | str,
category: list[str],
entry: str,
tool: str,
- job: Optional[str],
+ job: str | None,
) -> None:
"""Initialize a CWLTestReport object."""
self.id = id
@@ -96,7 +96,7 @@ class TestResult:
classname: str,
entry: str,
tool: str,
- job: Optional[str],
+ job: str | None,
message: str = "",
) -> None:
"""Initialize a TestResult object."""
@@ -240,7 +240,7 @@ def generate_badges(
def get_test_number_by_key(
tests: list[dict[str, str]], key: str, value: str
-) -> Optional[int]:
+) -> int | None:
"""Retrieve the test index from its name."""
for i, test in enumerate(tests):
if key in test and test[key] == value:
@@ -256,7 +256,7 @@ def load_and_validate_tests(path: str) -> tuple[Any, dict[str, Any]]:
"""
schema_resource = files("cwltest").joinpath("cwltest-schema.yml")
with schema_resource.open("r", encoding="utf-8") as fp:
- cache: Optional[dict[str, Union[str, Graph, bool]]] = {
+ cache: dict[str, str | Graph | bool] | None = {
"https://w3id.org/cwl/cwltest/cwltest-schema.yml": fp.read()
}
(
@@ -283,8 +283,8 @@ def load_and_validate_tests(path: str) -> tuple[Any, dict[str, Any]]:
def parse_results(
results: Iterable[TestResult],
tests: list[dict[str, Any]],
- suite_name: Optional[str] = None,
- report: Optional[junit_xml.TestSuite] = None,
+ suite_name: str | None = None,
+ report: junit_xml.TestSuite | None = None,
) -> tuple[
int, # total
int, # passed
@@ -294,7 +294,7 @@ def parse_results(
dict[str, list[CWLTestReport]], # passed for each tag
dict[str, list[CWLTestReport]], # failures for each tag
dict[str, list[CWLTestReport]], # unsupported for each tag
- Optional[junit_xml.TestSuite],
+ junit_xml.TestSuite | None,
]:
"""
Parse the results and return statistics and an optional report.
@@ -366,10 +366,10 @@ def parse_results(
def prepare_test_command(
tool: str,
args: list[str],
- testargs: Optional[list[str]],
+ testargs: list[str] | None,
test: dict[str, Any],
cwd: str,
- quiet: Optional[bool] = True,
+ quiet: bool | None = True,
) -> list[str]:
"""Turn the test into a command line."""
test_command = [tool]
@@ -407,7 +407,7 @@ def prepare_test_command(
def prepare_test_paths(
test: dict[str, str],
cwd: str,
-) -> tuple[str, Optional[str]]:
+) -> tuple[str, str | None]:
"""Determine the test path and the tool path."""
cwd = schema_salad.ref_resolver.file_uri(cwd)
processfile = test["tool"]
@@ -424,7 +424,7 @@ def prepare_test_paths(
def run_test_plain(
config: CWLTestConfig,
test: dict[str, str],
- test_number: Optional[int] = None,
+ test_number: int | None = None,
) -> TestResult:
"""Plain test runner."""
out: dict[str, Any] = {}
@@ -443,7 +443,7 @@ def run_test_plain(
if test_number is not None:
number = str(test_number)
- process: Optional[subprocess.Popen[str]] = None
+ process: subprocess.Popen[str] | None = None
try:
cwd = os.getcwd()
test_command = prepare_test_command(
@@ -668,7 +668,7 @@ def load_optional_fsaccess_plugin() -> None:
try:
# The interface to importlib.metadata.entry_points() changed
- # several times between Python 3.9 and 3.13; the code below
+ # several times between Python 3.10 and 3.13; the code below
# actually works fine on all of them but there's no single
# mypy annotation that works across of them. Explicitly cast
# it to a consistent type to make mypy shut up.
=====================================
debian/changelog
=====================================
@@ -1,3 +1,11 @@
+cwltest (2.6.20251216093331-1) unstable; urgency=medium
+
+ * New upstream version
+ * Standards-Version: 4.7.3 (routine-update)
+ * debputy lint --auto-fix (routine-update)
+
+ -- Michael R. Crusoe <crusoe at debian.org> Wed, 07 Jan 2026 15:31:02 +0100
+
cwltest (2.6.20250818005349-2) unstable; urgency=medium
* Team upload.
=====================================
debian/control
=====================================
@@ -2,6 +2,7 @@ Source: cwltest
Maintainer: Debian Med Packaging Team <debian-med-packaging at lists.alioth.debian.org>
Uploaders: Michael R. Crusoe <crusoe at debian.org>
Section: science
+Priority: optional
Build-Depends: debhelper-compat (= 13),
dh-sequence-python3,
python3,
@@ -22,7 +23,7 @@ Build-Depends: debhelper-compat (= 13),
cwltool <!nocheck>,
python3-typing-extensions <!nocheck> <!nodoc>,
help2man <!nodoc>
-Standards-Version: 4.7.2
+Standards-Version: 4.7.3
Vcs-Browser: https://salsa.debian.org/med-team/cwltest
Vcs-Git: https://salsa.debian.org/med-team/cwltest.git
Homepage: https://www.commonwl.org
@@ -35,7 +36,7 @@ Depends: ${python3:Depends},
python3-junit.xml,
python3-schema-salad,
python3-defusedxml,
- python3-ruamel.yaml,
+ python3-ruamel.yaml
Recommends: python3-pytest
Suggests: cwl-runner
Description: Common Workflow Language testing framework
=====================================
dev-requirements.txt
=====================================
@@ -1,5 +1,5 @@
diff_cover
-black ~= 25.1
+black ~= 25.12
pylint
pep257
pydocstyle
=====================================
mypy-requirements.txt
=====================================
@@ -1,5 +1,4 @@
-mypy==1.17.1
-pytest >= 8.3, < 9
+mypy==1.19.1
types-setuptools
types-requests
types-PyYAML
=====================================
pyproject.toml
=====================================
@@ -17,7 +17,6 @@ classifiers = [
"Operating System :: POSIX",
"Operating System :: MacOS :: MacOS X",
"Development Status :: 5 - Production/Stable",
- "Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
@@ -25,7 +24,7 @@ classifiers = [
"Programming Language :: Python :: 3.14",
"Typing :: Typed",
]
-requires-python = ">=3.9,<3.15"
+requires-python = ">=3.10,<3.15"
dynamic = ["version", "dependencies"]
[project.readme]
=====================================
requirements.txt
=====================================
@@ -1,4 +1,4 @@
schema-salad >= 5.0.20200220195218, < 9
junit-xml >= 1.8
-pytest >= 7, < 9
+pytest >= 8.3, < 10
defusedxml
=====================================
test-requirements.txt
=====================================
@@ -1,5 +1,4 @@
cwlref-runner
cwltool
-pytest >= 7, < 9
pytest-cov
pytest-xdist
=====================================
tests/util.py
=====================================
@@ -6,7 +6,6 @@ import subprocess # nosec
from contextlib import ExitStack
from importlib.resources import as_file, files
from pathlib import Path
-from typing import Optional
def get_data(filename: str) -> str:
@@ -28,7 +27,7 @@ def get_data(filename: str) -> str:
def run_with_mock_cwl_runner(
- args: list[str], cwl_runner: Optional[str] = None
+ args: list[str], cwl_runner: str | None = None
) -> tuple[int, str, str]:
"""Bind a mock cwlref-runner implementation to cwltest."""
if cwl_runner is None:
=====================================
tox.ini
=====================================
@@ -1,9 +1,9 @@
[tox]
envlist =
- py3{9,10,11,12,13,14}-lint,
- py3{9,10,11,12,13,14}-unit,
- py3{9,10,11,12,13,14}-bandit,
- py3{9,10,11,12,13,14}-mypy,
+ py3{10,11,12,13,14}-lint,
+ py3{10,11,12,13,14}-unit,
+ py3{10,11,12,13,14}-bandit,
+ py3{10,11,12,13,14}-mypy,
py312-lintreadme,
py312-pydocstyle
@@ -17,7 +17,6 @@ testpaths = tests
[gh-actions]
python =
- 3.9: py39
3.10: py310
3.11: py311
3.12: py312
@@ -26,13 +25,13 @@ python =
[testenv]
skipsdist =
- py3{9,10,11,12,13,14}-!{unit,mypy,lintreadme} = True
+ py3{10,11,12,13,14}-!{unit,mypy,lintreadme} = True
description =
- py3{9,10,11,12,13,14}-unit: Run the unit tests
- py3{9,10,11,12,13,14}-lint: Lint the Python code
- py3{9,10,11,12,13,14}-bandit: Search for common security issues
- py3{9,10,11,12,13,14}-mypy: Check for type safety
+ py3{10,11,12,13,14}-unit: Run the unit tests
+ py3{10,11,12,13,14}-lint: Lint the Python code
+ py3{10,11,12,13,14}-bandit: Search for common security issues
+ py3{10,11,12,13,14}-mypy: Check for type safety
py313-pydocstyle: docstring style checker
py313-lintreadme: Lint the README.rst->.md conversion
@@ -41,36 +40,36 @@ passenv =
GITHUB_*
deps =
- py3{9,10,11,12,13,14}-{unit,mypy}: -rrequirements.txt
- py3{9,10,11,12,13,14}-{unit,mypy}: -rtest-requirements.txt
- py3{9,10,11,12,13,14}-lint: flake8-bugbear
- py3{9,10,11,12,13,14}-lint: black~=23.1
- py3{9,10,11,12,13,14}-bandit: bandit
- py3{9,10,11,12,13,14}-mypy: -rmypy-requirements.txt
+ py3{10,11,12,13,14}-{unit,mypy}: -rrequirements.txt
+ py3{10,11,12,13,14}-{unit,mypy}: -rtest-requirements.txt
+ py3{10,11,12,13,14}-lint: flake8-bugbear
+ py3{10,11,12,13,14}-lint: black~=23.1
+ py3{10,11,12,13,14}-bandit: bandit
+ py3{10,11,12,13,14}-mypy: -rmypy-requirements.txt
set_env =
- py3{9,10,11,12,13,14}-unit: LC_ALL = C.UTF-8
+ py3{10,11,12,13,14}-unit: LC_ALL = C.UTF-8
COV_CORE_SOURCE=cwltest
COV_CORE_CONFIG={toxinidir}/.coveragerc
COV_CORE_DATAFILE={toxinidir}/.coverage.eager
commands =
- py3{9,10,11,12,13,14}-unit: python -m pip install -U pip setuptools wheel
- py3{9,10,11,12,13,14}-unit: python -m pytest --cov --cov-config={toxinidir}/.coveragerc --cov-append {posargs}
- py3{9,10,11,12,13,14}-unit: coverage xml
- py3{9,10,11,12,13,14}-bandit: bandit --recursive cwltest
- py3{9,10,11,12,13,14}-lint: make flake8
- py3{9,10,11,12,13,14}-lint: make format-check
- py3{9,10,11,12,13,14}-mypy: make mypy
+ py3{10,11,12,13,14}-unit: python -m pip install -U pip setuptools wheel
+ py3{10,11,12,13,14}-unit: python -m pytest --cov --cov-config={toxinidir}/.coveragerc --cov-append {posargs}
+ py3{10,11,12,13,14}-unit: coverage xml
+ py3{10,11,12,13,14}-bandit: bandit --recursive cwltest
+ py3{10,11,12,13,14}-lint: make flake8
+ py3{10,11,12,13,14}-lint: make format-check
+ py3{10,11,12,13,14}-mypy: make mypy
allowlist_externals =
- py3{9,10,11,12,13,14}-lint: flake8
- py3{9,10,11,12,13,14}-lint: black
- py3{9,10,11,12,13,14}-{mypy,shellcheck,lint,unit}: make
+ py3{10,11,12,13,14}-lint: flake8
+ py3{10,11,12,13,14}-lint: black
+ py3{10,11,12,13,14}-{mypy,shellcheck,lint,unit}: make
skip_install =
- py3{9,10,11,12,13,14}-lint: true
- py3{9,10,11,12,13,14}-bandit: true
+ py3{10,11,12,13,14}-lint: true
+ py3{10,11,12,13,14}-bandit: true
[testenv:py313-pydocstyle]
View it on GitLab: https://salsa.debian.org/med-team/cwltest/-/compare/4a5b1272ee2151cefa7dd469346271e90a6c4ca2...22820bc23e124f61055ab84d0df0f3ab0e51adb9
--
View it on GitLab: https://salsa.debian.org/med-team/cwltest/-/compare/4a5b1272ee2151cefa7dd469346271e90a6c4ca2...22820bc23e124f61055ab84d0df0f3ab0e51adb9
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20260107/f77a5f9e/attachment-0001.htm>
More information about the debian-med-commit
mailing list