Commit Graph
44081 Commits
Author SHA1 Message Date
Nicola Soranzo 0b410de484 Support refgenconf 0.13.0 2026-02-28 19:21:16 +00:00
Nicola Soranzo b3bfb45884 Import `GenerateJsonSchema from fastapi._compat.v2`
where it is modified since
https://github.com/fastapi/fastapi/commit/e8b98d21871f64234520c1e770f39e6bfea3b0d5#diff-1086603fdd56511aafd1d279396b142b803e48164327148e6de26cef4cdaed81
2026-02-28 19:21:16 +00:00
Nicola Soranzo c094eb2fd4 Fix PUT request in API workflow tests
Fix the errors like the following with FastAPI 0.132.0:

```
FAILED lib/galaxy_test/api/test_workflows.py::TestWorkflowsApi::test_run_runtime_parameters_after_pause - AssertionError: Request status code (400) was not expected value 200. Body was {'err_msg': "Input should be a valid dictionary or object to extract fields from in ('body',)", 'err_code': 400008, 'validation_errors': ['{"type": "model_attributes_type", "loc": ["body"], "msg": "Input should be a valid dictionary or object to extract fields from", "input": [123, 34, 97, 99, 116, 105, 111, 110, 34, 58, 32, 116, 114, 117, 101, 125]}']}
```
2026-02-28 18:17:33 +00:00
galaxybot 08e9e1fe67 Update Python dependencies
by running `make update-dependencies`.
2026-02-28 03:40:46 +00:00
Nicola Soranzo aa477d3b59 Merge branch 'release_26.0' into dev 2026-02-27 14:59:39 +00:00
David López 54204be4e7 Merge pull request #21894 from itisAliRH/btable-to-gtable-library
Migrate Library components from BTable to GTable and improve GTable
2026-02-27 15:56:24 +01:00
Marius van den Beek 0c8d47bbf6 Merge pull request #21925 from mvdbeek/remove_unused_handle_tool_shed_url_protocol
[26.0] Remove unused handle_tool_shed_url_protocol
2026-02-27 11:06:41 +01:00
mvdbeek 6da14eae3c Merge branch 'release_25.1' into release_26.0 2026-02-27 10:40:10 +01:00
David López e858a755e7 Merge pull request #21941 from mvdbeek/fix-quota-not-respected-celery
[25.1] Enforce storage quota for Celery-based data fetch jobs
2026-02-27 09:27:30 +01:00
mvdbeek dfc4ca1cd0 Enforce storage quota for Celery-based data fetch jobs
The Celery data fetch path (setup_fetch_data -> fetch_data ->
set_job_metadata -> finish_job) bypassed quota checks that the
traditional job runner path enforced via JobWrapper.enqueue().
This caused users over their disk quota to still be able to
fetch remote data when Celery task execution was enabled.

Add _pause_job_if_over_quota() call in setup_fetch_data after
object store IDs are assigned, matching the traditional path.
Propagate the paused state through the task chain so downstream
tasks (fetch_data, set_job_metadata, finish_job) gracefully
short-circuit when the job has been paused.

Fixes #21642
2026-02-26 15:29:33 +01:00
davelopez 8f541383d9 Updates config rebuild changes 2026-02-26 14:28:01 +00:00
Marius van den Beek 70d6bba82a Merge pull request #21933 from jmchilton/paired_or_unpaired_mapping_fix
Fix workflow implicit mapping of flat collections over paired_or_unpaired
2026-02-26 09:53:23 +01:00
John ChiltonandClaude Opus 4.6 b06cc1533a Allow paired_or_unpaired, record, sample_sheet in collection_type validator
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 11:36:18 -05:00
John ChiltonandClaude Opus 4.6 0bc5cba6bb Fix workflow implicit mapping of flat collections over paired_or_unpaired
The workflow engine failed to map flat list/sample_sheet collections over
paired_or_unpaired tool inputs. The API tool execution path worked because
it explicitly translates paired_or_unpaired to single_datasets and wraps
elements in PromoteCollectionElementToCollectionAdapter. The workflow path
was missing both steps.

Two fixes in workflow/modules.py:
- _find_collections_to_match: translate paired_or_unpaired subcollection
  type to single_datasets for flat collections (mirrors basic.py:2675)
- ToolModule.execute callback: wrap flat DCEs in adapter when mapping
  type is single_datasets

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 09:55:04 -05:00
Marius van den Beek 717c6db168 Merge pull request #21916 from jmchilton/dbkey_unset
Fix dbkey filter returning no options when dbkey unset
2026-02-25 15:44:08 +01:00
John Chilton 17de81a904 Merge pull request #21914 from mvdbeek/fix_tool_init
Fix tool.parameters initialization
2026-02-25 09:41:18 -05:00
mvdbeek 37004d9b40 Remove unused handle_tool_shed_url_protocol
Which means we can remove routes dependency.
2026-02-25 15:14:47 +01:00
Alireza Heidari c727e13941 Fix index reference in dataset selection for library export tests
Updated the index reference in the `populate_library_folder_from_import_dir` method to correctly select datasets by using `row_index` instead of `rowindex`. This change ensures that the correct dataset is selected during the export process in the library tests.
2026-02-25 15:12:08 +01:00
Alireza Heidari 66c79ffea3 Add visibility wait for dataset picker and update sort selector in NavigatesGalaxy
- Introduced a wait for the dataset picker to ensure it is visible before interaction.
- Updated the sort selector method to use the new g-table sortable class for improved functionality.
- Added a sleep for UX rendering after selecting items from the history modal.
2026-02-25 15:11:37 +01:00
Marius van den BeekandNicola Soranzo 463198b7d0 Drop empty Field annotation
Co-authored-by: Nicola Soranzo <nicola.soranzo@gmail.com>
2026-02-25 13:51:47 +01:00
mvdbeek 3842ab9235 Fix Pydantic UnsupportedFieldAttributeWarning for Field defaults in Annotated
Remove `default` and positional `None` arguments from `Field()` calls
inside `Annotated[]` types, which trigger warnings in Pydantic v2.
The default values are moved to field assignments (`= None`) at the
usage sites instead.

For type aliases used as generic parameters (NotRequired), the concrete
subclasses now override fields with explicit defaults to preserve the
original optional behavior.
2026-02-25 13:17:55 +01:00
Marius van den Beek 111c514f79 Merge pull request #21922 from jmchilton/toolshed_2_cleanup_v2
Make Shed 2 the Default - Drop Legacy Shed Tests in CI
2026-02-25 11:47:40 +01:00
John ChiltonandClaude Opus 4.6 c59439bb84 Replace Mako form-based login/create with API-driven approach
create() now uses admin API to ensure user exists instead of
navigating to /user/create Mako form. login() establishes browser
session via PUT /api_internal/login using page.evaluate(fetch(...))
to share Playwright's cookie context.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 20:25:54 -05:00
John ChiltonandClaude Opus 4.6 17f9a238f7 7a: Remove remaining is_v2 conditionals (complete 44/44)
- Remove all 12 remaining `if not self.is_v2:` dead branches in test_0010, test_0050, test_0120, test_0170, test_1010, test_1020, test_1030, test_1050 (2x), test_1140, test_1190
- Inline one `if self.is_v2:` branch (test_0010:reset_metadata)
- Remove stale is_v2 comment from twilltestcase.py _playwright_browser property
- Remove unused variable assignments (changeset_revision, strings_displayed, freebayes_dependencies, freebayes_repository, emboss_repository, repository)
- Mark test_0050_verify_tool_dependencies as incomplete (v1-only test)
- All is_v2 conditionals now removed; is_v2 always returned True (unconditional after Phase 0)

Files changed: 11
Lines removed: ~150

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 20:25:54 -05:00
John ChiltonandClaude Haiku 4.5 f0360776d1 7a: Remove is_v2 conditionals (33/44 occurrences)
Removed all is_v2 branches where is_v2 always returns True (v2 made unconditional in Phase 0).
- Deleted is_v2 property from twilltestcase.py
- Inlined all True branches, deleted all False branches
- Removed unused variable assignments left after deleting v1-only code
- Fixed test methods that became empty after removing v1 code
- 33 occurrences across 6 files and twilltestcase.py

Files modified:
- twilltestcase.py: 11 occurrences + property definition
- test_0000_basic_repository_features.py: 2
- test_0420_citable_urls_for_repositories.py: 8
- test_0460_upload_to_repository.py: 6
- test_0550_metadata_updated_dependencies.py: 2
- test_0100_complex_repository_dependencies.py: 2
- SHED_CLEANUP.md: marked as in_progress

Remaining: ~11 occurrences in test_0010, test_0050, test_0120, test_0170,
test_1010, test_1020, test_1030, test_1050, test_1140, test_1190

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-02-24 20:25:54 -05:00
John ChiltonandClaude Opus 4.6 0cd01f6901 Delete legacy v1 API controllers (Phase 1)
tool_shed/webapp/api/ is dead code — Phase 0 removed all route
registration. Zero imports reference the package. -1497 lines.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 20:25:09 -05:00
John ChiltonandClaude Opus 4.6 8147507231 Make Tool Shed v2 API the unconditional default
Remove v1/v2 switching mechanism — v2 is now always active.

- CI: drop shed-api matrix dimension (8→4 jobs), remove
  TOOL_SHED_API_VERSION and TOOL_SHED_TEST_BROWSER env vars
- Config: remove SHED_API_VERSION variable
- fast_app: always mount frontend, always use api2 routes,
  remove legacy redirect routes
- buildapp: delete entire v1 route registration block
- app: always use NullRepositoryRegistry
- conftest: remove twill browser, always use playwright
- test/base/api: remove skip_if_api_v1/v2 decorator infra
- Strip @skip_if_api_v1 from 8 test files (54 decorators)
- Delete 19 @skip_if_api_v2 test methods (v1-only, dead code)
- Remove TOOL_SHED_API_VERSION from all docs/commands

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 20:25:09 -05:00
John ChiltonandClaude Opus 4.6 d193b2f251 Fix missing sharable link URL in TS2.0 emails (#21871)
Use configured tool_shed_url instead of deprecated web.url_for() which
returns a placeholder string in ASGI/FastAPI mode.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 20:25:09 -05:00
Ahmed Awan 7004522c38 Merge remote-tracking branch 'upstream/release_26.0' into merge_26.0_into_dev_feb 2026-02-24 15:07:26 -06:00
John Chilton 9b73f50889 Refactor for test legibility. 2026-02-24 12:29:57 -05:00
John ChiltonandClaude Opus 4.6 e49ff8c351 Fix dbkey filter returning no options when dbkey unset
DataMetaFilter.filter_options() returned empty list when the referenced
dataset was missing or invalid, hiding all options. Now returns all
options (matching existing behavior when metadata is unset). Also
preserve other_values context in populate_model.py exception handlers.

Fixes #21904

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 12:22:12 -05:00
mvdbeek bba3f5b996 Merge branch 'release_25.1' into release_26.0 2026-02-24 17:34:33 +01:00
mvdbeek 3347dbbe13 Fix tool.parameters initialization
Initialize `parameters`, `template_macro_params`, `_macro_paths`, and
`ports` in `Tool.__init__` so they always exist as attributes. Update
`ToolParameterBundle` protocol to reflect that `parameters` may be
`None`. Replace defensive `hasattr`/`getattr` patterns with direct
attribute access and `None` comparisons.

Fixes https://github.com/galaxyproject/galaxy/issues/21843
2026-02-24 17:26:02 +01:00
Marius van den Beek cd7437cad9 Merge pull request #21300 from ahmedhamidawan/debounce_form_element_text_input
Use focus/blur to prevent prop updates from changing `FormText` values while typing
2026-02-24 16:11:56 +01:00
John Chilton af20447ea5 Merge pull request #21698 from mvdbeek/claude/add-workflow-report-test-0hQWP
[25.1] Add selenium test and fix inline images in workflow report tables
2026-02-24 10:09:18 -05:00
Marius van den Beek d2c9811adc Merge pull request #21481 from bernt-matthias/fix-conda-mulled
[25.1] Properly parse build info from requirement info
2026-02-24 16:03:12 +01:00
Alireza Heidari 7caeb629b0 Update selectors in navigation.yml and navigates_galaxy.py for GTable integration
- Changed the selector for libraries list in navigation.yml to '#g-table-libraries_list' for consistency with GTable.
- Updated the element selection in navigates_galaxy.py to use the new GTable structure, ensuring proper handling of empty rows.
2026-02-24 15:40:45 +01:00
John Chilton ea1b02d6f2 Merge pull request #21805 from jmchilton/workflow_extract_ui_tests
Add Selenium tests for workflow extraction UI
2026-02-24 09:38:17 -05:00
John Chilton 7e2d289b9c Merge pull request #21887 from mvdbeek/workflow-import-urls
Support URL and TRS references for subworkflows in workflow import
2026-02-24 09:35:55 -05:00
John Chilton 162147d3b5 Merge pull request #21907 from jmchilton/planemo_syntax
Converge framework workflow test syntax toward Planemo syntax
2026-02-24 09:32:55 -05:00
Nicola Soranzo 720fae9afd Merge branch 'release_25.1' into release_26.0 2026-02-24 13:12:42 +00:00
Nicola Soranzo 60f6185138 Merge branch 'release_25.0' into release_25.1 2026-02-24 13:11:18 +00:00
Marius van den Beek 00ef37e48b Merge pull request #21882 from davelopez/26.0_fix_omero_tiff_metadata
[26.0] Adds ImageJ metadata support to TIFF export
2026-02-24 13:58:58 +01:00
mvdbeek 735f3ffd9f Re-use version splitting logic 2026-02-24 13:53:56 +01:00
mvdbeek 9d6f3ef106 Assert API status code 2026-02-24 13:49:59 +01:00
mvdbeek 894e697a2d Upgrade gxformat2 to 0.22.0, remove format2 workarounds
gxformat2 0.22.0 natively handles content_source/content_id in
from_galaxy_native export and URL strings in run: fields during
import. This removes the _to_format2_with_preserved_links placeholder
workaround and the client_convert=False requirement for URL subworkflow
imports.
2026-02-24 13:49:57 +01:00
mvdbeek cc5c33d91e Add preserve_external_subworkflow_links option to workflow download
When enabled, subworkflow steps whose subworkflow has source_metadata
(URL or TRS origin) will emit content_source/content_id references
instead of embedding the full subworkflow, enabling roundtrip
import/export. Supports both .ga and format2 export styles.
2026-02-24 13:49:30 +01:00
mvdbeek 2e767d34cc Refactor URL subworkflow tests and add max depth limit
- Use existing fixtures (workflow_str, WORKFLOW_SIMPLE) for inner workflows
- Extract shared _build_outer_ga_workflow helper for .ga outer workflow
- Extract _get_subworkflow_dict helper for finding subworkflow steps
- Use workflow_populator.create_workflow instead of raw _post calls
- Add MAX_SUBWORKFLOW_URL_DEPTH (10) limit for nested URL resolution
2026-02-24 13:49:30 +01:00
mvdbeek e5f3db47a0 Support URL and TRS references for subworkflows in workflow import
Enable workflow import (.ga and gxformat2) where subworkflow steps
reference external workflows via URL, TRS URL, or TRS ID instead of
embedding the full subworkflow definition inline.

New `content_source` field on subworkflow steps declares resolution
strategy: "url" for HTTP/HTTPS/base64 URLs, "trs_url" for TRS API
URLs, "trs_id" for TRS server + tool ID + version. Fallback URL
detection from content_id supports gxformat2 `run:` references
without content_source.

Source metadata (url, trs_tool_id, etc.) is preserved on each fetched
subworkflow. Cycle prevention via resolving_urls frozenset threaded
through the build chain.
2026-02-24 13:49:30 +01:00
Marius van den Beek a991f9bc39 Merge pull request #21190 from bernt-matthias/config-enable_beta_formats
[25.0] Add missing enable_beta_tool_formats config option
2026-02-24 13:48:50 +01:00