Commit Graph
89527 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 715ed1cb50 Merge pull request #21940 from davelopez/config_rebuild_update
Updates config rebuild changes
2026-02-27 09:30:37 +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
Alireza Heidari 1d8544c05e Refactor FolderDetails component to use BButton, BModal, and BAlert for consistency
Updated the FolderDetails.vue file to replace lowercase component tags with their uppercase counterparts for better adherence to Vue component naming conventions. This change enhances code readability and maintains consistency across the project.
2026-02-26 16:06:19 +01:00
Alireza Heidari 98131b4717 Refactor buttons to use BButton and BFormInput components for consistency
Updated the LibraryDataset.vue file to replace all instances of native button and form input elements with BButton and BFormInput components from Bootstrap Vue. This change enhances the UI consistency and leverages Bootstrap Vue's styling capabilities.
2026-02-26 16:06:11 +01:00
Alireza Heidari e276adb45c Refactor LibraryEditField component to use BFormTextarea and improve text handling
- Updated the textarea component to use BFormTextarea for consistency.
- Added spacing and formatting adjustments for better readability.
- Enhanced the toggle functionality for expanded text display.
2026-02-26 16:05:59 +01:00
Alireza Heidari 945328b752 Add break-word class to peek view div for better text handling
This change ensures that the content within the peek view div is properly wrapped, improving readability when the text exceeds the available width.
2026-02-26 15:59:56 +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
Dannon 453efdf0e2 Merge pull request #21780 from hujambo-dunia/fix-toolform-helptext
Restores visual hierarchy for ReStructuredText headers in tool form's help section
2026-02-25 20:05:14 -05: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
Alireza Heidari 5929e969ca Update selectors for libraries in navigation.yml to align with new g-table structure
Modified the selectors for selecting all, one, and specific datasets in the libraries section to match the updated g-table structure.
2026-02-25 17:09:34 +01:00
David López 0b95f1c889 Merge pull request #21923 from mvdbeek/fix_default_none_pydantic
[26.0] Fix Pydantic UnsupportedFieldAttributeWarning for Field defaults in Annotated
2026-02-25 16:51:32 +01:00
Ahmed Hamid Awan 5e37ccb8fe Merge pull request #21909 from ahmedhamidawan/render_history_collections_as_image
Render collections as images via the element picker in reports
2026-02-25 09:22:47 -06: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 c66d0b60b8 Update default sort direction to false in GTable component
Changed the default value of sortDesc from true to false to ensure that the table does not sort in descending order by default. This improves the initial user experience when interacting with the table.
2026-02-25 15:12:21 +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
Alireza Heidari 50eaabcea0 Update selectors for libraries in navigation.yml to align with new g-table structure
- Changed select_all, select_one, and select_dataset selectors to match the updated g-table implementation.
2026-02-25 15:11:23 +01:00
Alireza Heidari efe2cdbb49 Refactor pagination components to streamline code and remove unnecessary attributes
- Simplified BPagination component in LibrariesList.vue by consolidating props.
- Removed aria-controls attribute from BPagination in LibraryFolder.vue for cleaner markup.
2026-02-25 15:11:12 +01:00
Ahmed Awan b561f86cee render collections as images via the element picker in reports 2026-02-25 07:11:08 -06:00
David López 84b7011a46 Merge pull request #21920 from dannon/fix/keyed-cache-retry-handling
Fix infinite request loops in cached stores with retry-aware error handling
2026-02-25 14:09:45 +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
Dannon Baker 99e2a4fac6 Update HistoryView test mock for GalaxyApiResult return type
getHistoryByIdFromServer now returns GalaxyApiResult so the mock needs
to wrap the history in { data, error } shape.
2026-02-25 07:01:12 -05:00
Nicola Soranzo ce7c321691 Merge pull request #16970 from mr-c/galaxy_mit_license
Switch to only MIT license
2026-02-25 10:52:33 +00: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
Marius van den Beek 744ee1e20c Merge pull request #21918 from ahmedhamidawan/fix_create_new_in_wf_editor
[25.1] Fix "Create New" in workflow editor not resetting editor state
2026-02-25 11:34:17 +01:00
Dannon Baker 21854f0b75 Add retry logic to collectionElementsStore and fix callers
fetchCollectionDetails now returns GalaxyApiResult instead of throwing,
which lets collectionElementsStore track errors as ApiError with HTTP
status codes. getCollectionById and getDetailedCollectionById now gate on
existing errors with retry logic for transient statuses (429, 5xx),
matching the pattern from keyedCache and historyStore. Updated all
callers of fetchCollectionDetails and loadHistoryById to handle the new
return types.
2026-02-24 21:31:19 -05:00
Dannon Baker a7775f6a20 Fix historyStore infinite request loop on fetch failure
getHistoryById triggers loadHistoryById when a history is missing, but if
the fetch fails the error was thrown via rethrowSimple without being
tracked. The computed would re-trigger the fetch on every render, causing
an infinite request loop. Now getHistoryByIdFromServer returns a
GalaxyApiResult instead of throwing, loadHistoryById tracks errors in
historyLoadErrors, and getHistoryById gates on existing errors with retry
logic for transient HTTP status codes (429, 5xx).
2026-02-24 21:03:30 -05: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
Dannon Baker a25016da90 Extract shared retry helpers and add GalaxyApiResult type to simple-error
Move RETRYABLE_STATUSES, MAX_RETRIES, and isRetryableApiError from
keyedCache.ts into simple-error.ts so they can be reused by other stores
that need the same retry logic. Also add GalaxyApiResult<T> discriminated
union type which makes API errors visible in function signatures instead
of relying on thrown exceptions.
2026-02-24 19:59:26 -05:00
Dannon Baker 557666e9de Show error state in DatasetView instead of infinite spinner
When a dataset fetch fails permanently (e.g. 404 or 403), the view now
displays an error alert instead of spinning forever waiting for data that
will never arrive.
2026-02-24 19:28:28 -05:00
Dannon Baker f7e404b4e9 Update all useKeyedCache fetch handlers to preserve HTTP status codes
Switches the 12 cache-backed fetch handlers across 6 store/api files
from rethrowSimple to rethrowSimpleWithStatus so that the keyedCache
retry logic can distinguish retryable server errors from permanent
client errors. The cancelWorkflowScheduling handler (a DELETE, not a
cache handler) keeps using rethrowSimple.
2026-02-24 19:28:28 -05:00