From 59b0074b1666e3a19b3de6814e7d202eabe450b1 Mon Sep 17 00:00:00 2001 From: Nicola Soranzo Date: Sun, 12 Apr 2026 19:50:19 +0100 Subject: [PATCH] Fix missing package dependencies --- lib/galaxy/tool_util/cwl/cwltool_deps.py | 10 ++++++++-- packages/app/setup.cfg | 4 +++- packages/data/setup.cfg | 1 + packages/files/setup.cfg | 1 + packages/schema/setup.cfg | 1 + packages/tool_shed/setup.cfg | 3 ++- packages/tool_util/setup.cfg | 3 ++- packages/tours/setup.cfg | 6 ++++++ packages/util/setup.cfg | 1 + test/unit/data/security/test_validate_user_input.py | 4 ++-- test/unit/selenium/test_has_driver.py | 2 +- 11 files changed, 28 insertions(+), 8 deletions(-) diff --git a/lib/galaxy/tool_util/cwl/cwltool_deps.py b/lib/galaxy/tool_util/cwl/cwltool_deps.py index a248152da71..43294205667 100644 --- a/lib/galaxy/tool_util/cwl/cwltool_deps.py +++ b/lib/galaxy/tool_util/cwl/cwltool_deps.py @@ -12,6 +12,14 @@ warnings.filterwarnings("ignore", message=r"[\n.]DEPRECATION: Python 2", module= from galaxy.util import requests +try: + from cwl_utils.types import CWLObjectType +except ImportError: + try: + from cwltool.utils import CWLObjectType # type: ignore[attr-defined, unused-ignore] + except ImportError: + CWLObjectType = object # type: ignore[assignment, misc] + try: from cwltool import ( main, @@ -67,13 +75,11 @@ except ImportError: try: from cwltool.utils import ( - CWLObjectType, JobsType, normalizeFilesDirs, visit_class, ) except ImportError: - CWLObjectType = object # type: ignore[assignment, misc] JobsType = object # type: ignore[misc, unused-ignore] visit_class = None # type: ignore[assignment] normalizeFilesDirs = None # type: ignore[assignment] diff --git a/packages/app/setup.cfg b/packages/app/setup.cfg index 408358ca758..4e710ef1263 100644 --- a/packages/app/setup.cfg +++ b/packages/app/setup.cfg @@ -41,7 +41,7 @@ install_requires = galaxy-tool-util[cwl,edam] galaxy-tool-shed-schema galaxy-tours - galaxy-util[image-util] + galaxy-util[image-util,jstree] galaxy-web-framework galaxy-web-stack Beaker @@ -91,6 +91,8 @@ test = pykwalify pytest pytest-asyncio + pytest-mock + responses testfixtures [options.entry_points] diff --git a/packages/data/setup.cfg b/packages/data/setup.cfg index 020021ede0b..1cde2b1c811 100644 --- a/packages/data/setup.cfg +++ b/packages/data/setup.cfg @@ -69,6 +69,7 @@ python_requires = >=3.10 [options.extras_require] test = + galaxy-config pytest roc-validator diff --git a/packages/files/setup.cfg b/packages/files/setup.cfg index 0d47832e1d6..eafd662972c 100644 --- a/packages/files/setup.cfg +++ b/packages/files/setup.cfg @@ -45,6 +45,7 @@ test = galaxy-test-base pytest gcsfs + responses s3fs>=2023.1.0 [options.entry_points] diff --git a/packages/schema/setup.cfg b/packages/schema/setup.cfg index b9e80d239d6..c19c5591319 100644 --- a/packages/schema/setup.cfg +++ b/packages/schema/setup.cfg @@ -31,6 +31,7 @@ version = 26.0.1.dev1 [options] include_package_data = True install_requires = + galaxy-tool-util-models galaxy-util pydantic[email]>=2.7.4 packages = find: diff --git a/packages/tool_shed/setup.cfg b/packages/tool_shed/setup.cfg index 0d774c50d1a..a1ed196532d 100644 --- a/packages/tool_shed/setup.cfg +++ b/packages/tool_shed/setup.cfg @@ -59,7 +59,8 @@ packages = find: python_requires = >=3.10 [options.extras_require] -test = +test = + galaxy-test-base pytest [options.packages.find] diff --git a/packages/tool_util/setup.cfg b/packages/tool_util/setup.cfg index 457b8e31ebb..49202b0a73b 100644 --- a/packages/tool_util/setup.cfg +++ b/packages/tool_util/setup.cfg @@ -34,7 +34,7 @@ version = 26.0.1.dev1 include_package_data = True install_requires = galaxy-tool-util-models - galaxy-util[image-util]>=22.1 + galaxy-util[template,image-util]>=22.1 conda-package-streaming lxml!=4.2.2 MarkupSafe @@ -64,6 +64,7 @@ console_scripts = [options.extras_require] cwl = + cwl-utils cwltool>=3.1.20230624081518 mulled = jinja2 diff --git a/packages/tours/setup.cfg b/packages/tours/setup.cfg index 2fefb67f627..d111a843088 100644 --- a/packages/tours/setup.cfg +++ b/packages/tours/setup.cfg @@ -32,6 +32,8 @@ version = 26.0.1.dev1 include_package_data = True install_requires = galaxy-navigation + galaxy-schema + galaxy-util pydantic>=2.7.4 PyYAML packages = find: @@ -41,6 +43,10 @@ python_requires = >=3.10 console_scripts = gx-validate-tours = galaxy.tours.validate:main +[options.extras_require] +test = + pytest + [options.packages.find] exclude = tests* diff --git a/packages/util/setup.cfg b/packages/util/setup.cfg index 5e0c541adc5..c73794a5217 100644 --- a/packages/util/setup.cfg +++ b/packages/util/setup.cfg @@ -56,6 +56,7 @@ template = fissix;python_version>='3.13' future>=1.0.0 config-template = + galaxy-tool-util-models Jinja2 pydantic>=2.7.4 test = diff --git a/test/unit/data/security/test_validate_user_input.py b/test/unit/data/security/test_validate_user_input.py index 4f9837500f8..3b46595bcd7 100644 --- a/test/unit/data/security/test_validate_user_input.py +++ b/test/unit/data/security/test_validate_user_input.py @@ -80,7 +80,7 @@ class TestIsEmailBanned: assert is_email_banned("ab+bar@gmail.com", "_", rules) assert not is_email_banned("ab-bar@gmail.com", "_", rules) # different sub-addressing delimiter - def test_no_canonical_rules(self, monkeypatch, appconfig): + def test_no_canonical_rules(self, monkeypatch): """No rules loaded.""" monkeypatch.setattr(validate_user_input, "_read_email_ban_list", lambda a: self.mock_ban_list) @@ -97,7 +97,7 @@ class TestIsEmailBanned: assert not is_email_banned("a.b@gmail.com", "_", rules) assert not is_email_banned("ab+bar@gmail.com", "_", rules) - def test_custom_canonical_rules(self, monkeypatch, appconfig): + def test_custom_canonical_rules(self, monkeypatch): """No rules loaded.""" monkeypatch.setattr(validate_user_input, "_read_email_ban_list", lambda a: self.mock_ban_list) diff --git a/test/unit/selenium/test_has_driver.py b/test/unit/selenium/test_has_driver.py index f157797bc38..f5d427aca50 100644 --- a/test/unit/selenium/test_has_driver.py +++ b/test/unit/selenium/test_has_driver.py @@ -888,7 +888,7 @@ class TestUtilityMethods: def test_prepend_timeout_message(self, has_driver_instance, request): """Test prepending message to timeout exception.""" backend = request.node.callspec.params.get("has_driver_instance") - if backend == "selenium": + if backend in ("selenium", "proxy-selenium"): original_selenium_exc = SeleniumTimeoutException(msg="original message") new_selenium_exception = has_driver_instance.prepend_timeout_message(original_selenium_exc, "New prefix:") assert "New prefix:" in new_selenium_exception.msg