only directories in `lib/galaxy` & `packages/*/galaxy`
All other files removed or moved to their own module
All references to those files updated, especially galaxy/version.py
Fix underscore handling in semantics.py that caused "'_' allowed only
in math mode" errors in rendered HTML. Issues: CollectionDefinition
used bare escaped underscores outside \text{}, expression_to_latex had
double-replacement bugs (unpaired→\text{un\text{paired}}), and
sample_sheet was unhandled.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Convert 32 free-form then string expressions in collection_semantics.yml
to structured typed YAML with 14 Pydantic models and as_latex() methods.
Bug fix: NestedElements.elements typed as dict[str, "OutputBinding"]
with model_rebuild() to resolve forward ref (was dict[str, Any]).
Polish: discriminated unions via Annotated[..., Field(discriminator="type")]
on all 4 union type aliases, rename elements_to_latex to
_assumption_elements_to_latex.
61 tests (was 40): smoke tests for all as_latex() and generate_docs(),
unit tests for EllipsisMarker, DatasetListInput, NestedElements,
CollectionOutput with ellipsis, compound sub_collection_type,
MapOverThen producing DatasetOutput.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove the yarn install target from packages/web_client/Makefile since
client builds now use corepack/pnpm via the root Makefile, and fix a few
leftover yarn mentions in comments and docs.
Expand writing_tests.md with:
- Quick reference table and decision tree for test type selection
- Workflow framework tests section
- API test patterns: populators, decorators, fixtures, user switching
- Integration test patterns: config options, mixins, app access
- Selenium test patterns: smart components, accessibility, shared state
- When to use UI vs API methods in browser tests
Add client/README.md testing section:
- Test file structure and standard imports
- LocalVue setup and test data factories
- MSW/OpenAPI-MSW for type-safe API mocking
- Vue component testing patterns
A strict vs relaxed state for incoming requests lets us preserve some older behavior if it is needed for tests and such while also allowing us to default to "the correct thing".