This tool converts sample sheet collections back to their corresponding
non-sample-sheet types by stripping the column_definitions and row
column metadata:
- sample_sheet -> list
- sample_sheet:paired -> list:paired
- sample_sheet:paired_or_unpaired -> list:paired_or_unpaired
- sample_sheet:record -> list:record
Useful when a sample sheet needs to be passed to a tool that expects
a regular list collection, or when discarding sample sheet metadata.
Handles Dataverse file-level persistent identifiers that themselves contain URI schemes and slashes, ensuring correct resolution of files with independent persistent IDs. Enhances parsing logic to support more complex Dataverse path structures and improves robustness when extracting dataset and file identifiers.
Replaces generic exceptions with Galaxy exceptions to surface the issues to the user. Those exceptions should be safe to surface since they are proxied from the Dataverse instance.
Updates RDM file source configuration fields to be optional, improving flexibility for cases where token or public_name may not be provided during initialization, like in public instances.
The `expire_populated_state()` method was only expiring the SQLAlchemy
`populated_state` attribute but not clearing the cached `_populated_optimized`
value. This caused a race condition during workflow scheduling:
1. `populated_optimized` was called and cached False (nested collection NEW)
2. Job thread marked the nested collection as OK
3. `waiting_for_elements` saw the new state (OK) and returned False
4. `expire_populated_state()` was called but didn't clear the cache
5. Second `populated` check returned the stale cached False
6. Workflow incorrectly failed with collection_failed
The fix ensures the cached value is cleared so the second populated check
gets fresh database state, preventing spurious collection_failed errors
for collections that are actively being populated.
Fixes flaky test: test_workflow_list_list_multi_data_map_over
Replace mock classes with real DatasetCollection instances and
reorganize tests into logical classes (TestWorkbookGeneration,
TestWorkbookParsing, TestListToSampleSheetCollectionType).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Improves Dataverse integration by handling file access for instances where FilePIDsEnabled is false and files use database IDs instead of persistent IDs.
Enhances path parsing, access URL construction, plugin URI generation, and file listing to robustly differentiate between persistent and database identifiers.
Refines error handling for authentication and not-found scenarios to improve reliability and clarity.
- Change "Expires soon!" to "Expires today" when less than 1 day remains
- Add proper singular handling ("Expires in 1 day" instead of "1 days")
- Show full date and time in tooltip using toLocaleString() instead of just
the date, so users can see the exact expiration time in their local timezone
Fixes https://github.com/galaxyproject/galaxy/issues/21559
HDAs where _state is set (indicating failed_metadata or setting_metadata)
were not being filtered out when looking for cached jobs. This change adds
checks to require _state to be NULL (which indicates metadata is OK) in the
following cache lookup methods:
- _build_stmt_for_hda: filters the requested input HDA
- _build_stmt_for_hdca: filters leaf HDAs in the reference collection
- _build_stmt_for_dce: filters leaf HDAs in both collection and direct
HDA cases
Also adds integration tests to verify that job cache lookups correctly
exclude HDAs and HDCA elements in failed_metadata state.