Update type annotations to use PEP 604 union syntax, replacing older Optional and Union imports. This simplifies the codebase and aligns with modern Python standards while resolving linting issues.
The changes also include stubbing out missing methods in the base staging class to improve type consistency across subclasses.
Adapts existing workflow run tests to interact with the new modal upload interface instead of the embedded panel. Adjusts paste content expectations for newline handling and replaces direct upload calls with the new modal context API. Removes the deprecated `_upload_hello_world_for_input` helper to clean up the test suite.
Extracts common upload staging logic into a `_UploadStaging` base class to share state between panel and modal contexts. Introduces `UploadMethodModalContext` for workflow form inputs and adds an `upload_via_modal` convenience method. Removes verbose docstrings and inline comments throughout the helper classes to improve readability.
Strips out legacy embedded upload buttons and sections from workflow form components to streamline the interface. Adds a data attribute to upload method cards and updates navigation selectors to support the new modal-based upload flow. Prepares the frontend for consistent modal interactions.
Migrates integration tests to use the modern upload activity helper instead of legacy upload methods. This standardizes how files, pasted content, and remote resources are staged in selenium tests, improving maintainability and reliability of the test suite.
Adjusts the Selenium helper for rule-based uploads to match changes in the UI flow. Instead of confirming a selection dialog, the helper now waits for the dialog to close and explicitly advances the file set wizard to reach the rule builder step.
Migrates interactive tours from the legacy upload dialog to the new activity-based upload interface.
Updates component selectors and step descriptions across multiple core tours—including UI, History, and Visualizations—to reflect the current activity bar navigation. These changes ensure the tours remain functional and accurate for users interacting with the modernized Galaxy interface.
UP045 is enabled on dev but not on release_26.1, so these passed lint
where they were written and fail after the merge forward. `Optional`
import dropped with its last use.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Conflict: packages/tool_util/setup.cfg was deleted on dev by the
pyproject.toml migration (c329529e51) and modified on release_26.1 by
#23256, which moved jsonschema from install_requires to the test extra.
Kept the deletion and ported that move into packages/tool_util/pyproject.toml
so the dependency change isn't lost in the merge forward.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The mock app is deliberately partial, so typing it as Any keeps the stubbing readable
instead of casting each attribute, and the session stub gets a real cast.
My fault for not re-running mypy after turning this from an integration test into a unit
test -- CI runs `cd lib && mypy . ../test`, so it type checks test/ too.
check_for_container_rewrite arrives with galaxyproject/pulsar#475, which
is unreleased; the currently pinned pulsar-galaxy-lib (>=0.15.15) lacks
it. Fall back to a no-op via getattr so a rewrite_parameters destination
with an absolute Singularity image path does not raise AttributeError
against the pinned client.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>