gxformat2 package#
Subpackages#
- gxformat2.cytoscape package
- Submodules
- gxformat2.cytoscape.models module
- Module contents
- gxformat2.examples package
- gxformat2.mermaid package
- gxformat2.normalized package
- Module contents
ExpandedFormat2ExpandedNativeStepExpandedNativeWorkflowExpandedWorkflowStepNormalizedFormat2NormalizedFormat2.class_NormalizedFormat2.commentsNormalizedFormat2.creatorNormalizedFormat2.docNormalizedFormat2.inputsNormalizedFormat2.known_labelsNormalizedFormat2.labelNormalizedFormat2.licenseNormalizedFormat2.model_configNormalizedFormat2.outputsNormalizedFormat2.releaseNormalizedFormat2.reportNormalizedFormat2.resolve_source()NormalizedFormat2.stepsNormalizedFormat2.tagsNormalizedFormat2.unique_toolsNormalizedFormat2.uuid
NormalizedNativeStepNormalizedNativeStep.annotationNormalizedNativeStep.connected_pathsNormalizedNativeStep.content_idNormalizedNativeStep.content_sourceNormalizedNativeStep.errorsNormalizedNativeStep.idNormalizedNativeStep.in_NormalizedNativeStep.inline_tool_classNormalizedNativeStep.input_connectionsNormalizedNativeStep.inputsNormalizedNativeStep.is_inline_tool_stepNormalizedNativeStep.is_input_stepNormalizedNativeStep.is_pause_stepNormalizedNativeStep.is_pick_value_stepNormalizedNativeStep.is_subworkflow_stepNormalizedNativeStep.is_tool_stepNormalizedNativeStep.labelNormalizedNativeStep.model_configNormalizedNativeStep.nameNormalizedNativeStep.outputsNormalizedNativeStep.positionNormalizedNativeStep.post_job_actionsNormalizedNativeStep.subworkflowNormalizedNativeStep.tool_idNormalizedNativeStep.tool_representationNormalizedNativeStep.tool_shed_repositoryNormalizedNativeStep.tool_stateNormalizedNativeStep.tool_uuidNormalizedNativeStep.tool_versionNormalizedNativeStep.type_NormalizedNativeStep.uuidNormalizedNativeStep.whenNormalizedNativeStep.workflow_outputs
NormalizedNativeWorkflowNormalizedNativeWorkflow.a_galaxy_workflowNormalizedNativeWorkflow.annotationNormalizedNativeWorkflow.commentsNormalizedNativeWorkflow.creatorNormalizedNativeWorkflow.doiNormalizedNativeWorkflow.format_versionNormalizedNativeWorkflow.helpNormalizedNativeWorkflow.licenseNormalizedNativeWorkflow.logo_urlNormalizedNativeWorkflow.model_configNormalizedNativeWorkflow.nameNormalizedNativeWorkflow.readmeNormalizedNativeWorkflow.releaseNormalizedNativeWorkflow.reportNormalizedNativeWorkflow.source_metadataNormalizedNativeWorkflow.stepsNormalizedNativeWorkflow.subworkflowsNormalizedNativeWorkflow.tagsNormalizedNativeWorkflow.unique_toolsNormalizedNativeWorkflow.uuidNormalizedNativeWorkflow.version
NormalizedWorkflowStepNormalizedWorkflowStep.connected_pathsNormalizedWorkflowStep.docNormalizedWorkflowStep.errorsNormalizedWorkflowStep.idNormalizedWorkflowStep.in_NormalizedWorkflowStep.inline_tool_representationNormalizedWorkflowStep.is_inline_tool_stepNormalizedWorkflowStep.is_pause_stepNormalizedWorkflowStep.is_pick_value_stepNormalizedWorkflowStep.is_subworkflow_stepNormalizedWorkflowStep.is_tool_stepNormalizedWorkflowStep.labelNormalizedWorkflowStep.model_configNormalizedWorkflowStep.outNormalizedWorkflowStep.positionNormalizedWorkflowStep.post_job_actionsNormalizedWorkflowStep.runNormalizedWorkflowStep.runtime_inputsNormalizedWorkflowStep.stateNormalizedWorkflowStep.tool_idNormalizedWorkflowStep.tool_shed_repositoryNormalizedWorkflowStep.tool_stateNormalizedWorkflowStep.tool_versionNormalizedWorkflowStep.type_NormalizedWorkflowStep.uuidNormalizedWorkflowStep.when
SourceReferenceToolReferenceensure_format2()ensure_native()expanded_format2()expanded_native()native_input_to_format2_type()normalized_format2()normalized_native()resolve_source_reference()to_format2()to_native()
- Module contents
- gxformat2.schema package
- Submodules
- gxformat2.schema.gxformat2 module
ArraySchemaBaseCommentBaseCreatorBaseDataParameterBaseInputParameterCreatorOrganizationCreatorPersonDocumentedEnumSchemaFrameCommentFreehandCommentGalaxyTypeGalaxyWorkflowHasStepErrorsHasStepPositionHasUUIDIdentifiedInputParameterLabeledMarkdownCommentMinMaxOutputParameterParameterPrimitiveTypeProcessRecordFieldRecordFieldDefinitionRecordSchemaReferencesToolReportSampleSheetColumnDefinitionSampleSheetColumnDefinition.default_valueSampleSheetColumnDefinition.descriptionSampleSheetColumnDefinition.model_configSampleSheetColumnDefinition.nameSampleSheetColumnDefinition.optionalSampleSheetColumnDefinition.restrictionsSampleSheetColumnDefinition.suggestionsSampleSheetColumnDefinition.type_SampleSheetColumnDefinition.validators
SinkStepPositionTextCommentToolShedRepositoryWorkflowBooleanParameterWorkflowCollectionParameterWorkflowCollectionParameter.collection_typeWorkflowCollectionParameter.column_definitionsWorkflowCollectionParameter.defaultWorkflowCollectionParameter.docWorkflowCollectionParameter.fieldsWorkflowCollectionParameter.idWorkflowCollectionParameter.labelWorkflowCollectionParameter.model_configWorkflowCollectionParameter.optionalWorkflowCollectionParameter.positionWorkflowCollectionParameter.type_
WorkflowDataParameterWorkflowFloatParameterWorkflowInputParameterWorkflowInputParameter.collection_typeWorkflowInputParameter.column_definitionsWorkflowInputParameter.defaultWorkflowInputParameter.docWorkflowInputParameter.fieldsWorkflowInputParameter.idWorkflowInputParameter.labelWorkflowInputParameter.model_configWorkflowInputParameter.optionalWorkflowInputParameter.positionWorkflowInputParameter.restrictOnConnectionsWorkflowInputParameter.restrictionsWorkflowInputParameter.suggestionsWorkflowInputParameter.type_
WorkflowIntegerParameterWorkflowOutputParameterWorkflowStepWorkflowStepInputWorkflowStepOutputWorkflowStepTypeWorkflowTextOptionWorkflowTextParameterWorkflowTextParameter.defaultWorkflowTextParameter.docWorkflowTextParameter.idWorkflowTextParameter.labelWorkflowTextParameter.model_configWorkflowTextParameter.positionWorkflowTextParameter.restrictOnConnectionsWorkflowTextParameter.restrictionsWorkflowTextParameter.suggestionsWorkflowTextParameter.type_
input_parameter_class()load_document()parser_info()
- gxformat2.schema.gxformat2_strict module
ArraySchemaBaseCommentBaseCreatorBaseDataParameterBaseInputParameterCreatorOrganizationCreatorPersonDocumentedEnumSchemaFrameCommentFreehandCommentGalaxyTypeGalaxyWorkflowHasStepErrorsHasStepPositionHasUUIDIdentifiedInputParameterLabeledMarkdownCommentMinMaxOutputParameterParameterPrimitiveTypeProcessRecordFieldRecordFieldDefinitionRecordSchemaReferencesToolReportSampleSheetColumnDefinitionSampleSheetColumnDefinition.default_valueSampleSheetColumnDefinition.descriptionSampleSheetColumnDefinition.model_configSampleSheetColumnDefinition.nameSampleSheetColumnDefinition.optionalSampleSheetColumnDefinition.restrictionsSampleSheetColumnDefinition.suggestionsSampleSheetColumnDefinition.type_SampleSheetColumnDefinition.validators
SinkStepPositionTextCommentToolShedRepositoryWorkflowBooleanParameterWorkflowCollectionParameterWorkflowCollectionParameter.collection_typeWorkflowCollectionParameter.column_definitionsWorkflowCollectionParameter.defaultWorkflowCollectionParameter.docWorkflowCollectionParameter.fieldsWorkflowCollectionParameter.idWorkflowCollectionParameter.labelWorkflowCollectionParameter.model_configWorkflowCollectionParameter.optionalWorkflowCollectionParameter.positionWorkflowCollectionParameter.type_
WorkflowDataParameterWorkflowFloatParameterWorkflowInputParameterWorkflowInputParameter.collection_typeWorkflowInputParameter.column_definitionsWorkflowInputParameter.defaultWorkflowInputParameter.docWorkflowInputParameter.fieldsWorkflowInputParameter.idWorkflowInputParameter.labelWorkflowInputParameter.model_configWorkflowInputParameter.optionalWorkflowInputParameter.positionWorkflowInputParameter.restrictOnConnectionsWorkflowInputParameter.restrictionsWorkflowInputParameter.suggestionsWorkflowInputParameter.type_
WorkflowIntegerParameterWorkflowOutputParameterWorkflowStepWorkflowStepInputWorkflowStepOutputWorkflowStepTypeWorkflowTextOptionWorkflowTextParameterWorkflowTextParameter.defaultWorkflowTextParameter.docWorkflowTextParameter.idWorkflowTextParameter.labelWorkflowTextParameter.model_configWorkflowTextParameter.positionWorkflowTextParameter.restrictOnConnectionsWorkflowTextParameter.restrictionsWorkflowTextParameter.suggestionsWorkflowTextParameter.type_
input_parameter_class()load_document()parser_info()
- gxformat2.schema.json_schema module
- gxformat2.schema.native module
ArraySchemaBaseNativeCommentBaseNativeCreatorDocumentedEnumSchemaHasStepErrorsHasStepPositionHasUUIDNativeCreatorOrganizationNativeCreatorPersonNativeFrameCommentNativeFrameCommentDataNativeFreehandCommentNativeFreehandCommentDataNativeGalaxyWorkflowNativeGalaxyWorkflow.a_galaxy_workflowNativeGalaxyWorkflow.annotationNativeGalaxyWorkflow.class_NativeGalaxyWorkflow.commentsNativeGalaxyWorkflow.creatorNativeGalaxyWorkflow.doiNativeGalaxyWorkflow.format_versionNativeGalaxyWorkflow.helpNativeGalaxyWorkflow.licenseNativeGalaxyWorkflow.logo_urlNativeGalaxyWorkflow.model_configNativeGalaxyWorkflow.nameNativeGalaxyWorkflow.readmeNativeGalaxyWorkflow.releaseNativeGalaxyWorkflow.reportNativeGalaxyWorkflow.source_metadataNativeGalaxyWorkflow.stepsNativeGalaxyWorkflow.subworkflowsNativeGalaxyWorkflow.tagsNativeGalaxyWorkflow.version
NativeInputConnectionNativeMarkdownCommentNativeMarkdownCommentDataNativePostJobActionNativeReportNativeSourceMetadataNativeStepNativeStep.annotationNativeStep.content_idNativeStep.idNativeStep.in_NativeStep.input_connectionsNativeStep.inputsNativeStep.labelNativeStep.model_configNativeStep.nameNativeStep.outputsNativeStep.post_job_actionsNativeStep.subworkflowNativeStep.tool_representationNativeStep.tool_stateNativeStep.tool_uuidNativeStep.type_NativeStep.whenNativeStep.workflow_outputs
NativeStepInputNativeStepOutputNativeStepTypeNativeTextCommentNativeTextCommentDataNativeWorkflowOutputPrimitiveTypeRecordFieldRecordFieldDefinitionRecordSchemaReferencesToolSampleSheetColumnDefinitionSampleSheetColumnDefinition.default_valueSampleSheetColumnDefinition.descriptionSampleSheetColumnDefinition.model_configSampleSheetColumnDefinition.nameSampleSheetColumnDefinition.optionalSampleSheetColumnDefinition.restrictionsSampleSheetColumnDefinition.suggestionsSampleSheetColumnDefinition.type_SampleSheetColumnDefinition.validators
StepPositionToolShedRepositoryWorkflowTextOptionload_document()parser_info()
- gxformat2.schema.native_strict module
ArraySchemaBaseNativeCommentBaseNativeCreatorDocumentedEnumSchemaHasStepErrorsHasStepPositionHasUUIDNativeCreatorOrganizationNativeCreatorPersonNativeFrameCommentNativeFrameCommentDataNativeFreehandCommentNativeFreehandCommentDataNativeGalaxyWorkflowNativeGalaxyWorkflow.a_galaxy_workflowNativeGalaxyWorkflow.annotationNativeGalaxyWorkflow.class_NativeGalaxyWorkflow.commentsNativeGalaxyWorkflow.creatorNativeGalaxyWorkflow.doiNativeGalaxyWorkflow.format_versionNativeGalaxyWorkflow.helpNativeGalaxyWorkflow.licenseNativeGalaxyWorkflow.logo_urlNativeGalaxyWorkflow.model_configNativeGalaxyWorkflow.nameNativeGalaxyWorkflow.readmeNativeGalaxyWorkflow.releaseNativeGalaxyWorkflow.reportNativeGalaxyWorkflow.source_metadataNativeGalaxyWorkflow.stepsNativeGalaxyWorkflow.subworkflowsNativeGalaxyWorkflow.tagsNativeGalaxyWorkflow.version
NativeInputConnectionNativeMarkdownCommentNativeMarkdownCommentDataNativePostJobActionNativeReportNativeSourceMetadataNativeStepNativeStep.annotationNativeStep.content_idNativeStep.idNativeStep.in_NativeStep.input_connectionsNativeStep.inputsNativeStep.labelNativeStep.model_configNativeStep.nameNativeStep.outputsNativeStep.post_job_actionsNativeStep.subworkflowNativeStep.tool_representationNativeStep.tool_stateNativeStep.tool_uuidNativeStep.type_NativeStep.whenNativeStep.workflow_outputs
NativeStepInputNativeStepOutputNativeStepTypeNativeTextCommentNativeTextCommentDataNativeWorkflowOutputPrimitiveTypeRecordFieldRecordFieldDefinitionRecordSchemaReferencesToolSampleSheetColumnDefinitionSampleSheetColumnDefinition.default_valueSampleSheetColumnDefinition.descriptionSampleSheetColumnDefinition.model_configSampleSheetColumnDefinition.nameSampleSheetColumnDefinition.optionalSampleSheetColumnDefinition.restrictionsSampleSheetColumnDefinition.suggestionsSampleSheetColumnDefinition.type_SampleSheetColumnDefinition.validators
StepPositionToolShedRepositoryWorkflowTextOptionload_document()parser_info()
- gxformat2.schema.native_v0_1 module
AnyLoaderArraySchemaBaseNativeCommentBaseNativeCreatorDocumentedEnumSchemaHasStepErrorsHasStepPositionHasUUIDLoadingOptionsLoadingOptions.addl_metadataLoadingOptions.baseuriLoadingOptions.cacheLoadingOptions.containerLoadingOptions.fetcherLoadingOptions.fileuriLoadingOptions.graphLoadingOptions.idxLoadingOptions.importsLoadingOptions.includesLoadingOptions.namespacesLoadingOptions.no_link_checkLoadingOptions.original_docLoadingOptions.rvocabLoadingOptions.schemasLoadingOptions.vocab
NativeCreatorOrganizationNativeCreatorOrganizationTypeLoaderNativeCreatorPersonNativeCreatorPersonTypeLoaderNativeFrameCommentNativeFrameCommentDataNativeFreehandCommentNativeFreehandCommentDataNativeGalaxyWorkflowNativeInputConnectionNativeMarkdownCommentNativeMarkdownCommentDataNativePostJobActionNativeReportNativeSourceMetadataNativeStepNativeStepInputNativeStepOutputNativeStepTypeLoaderNativeTextCommentNativeTextCommentDataNativeWorkflowOutputPrimitiveTypeLoaderRecordFieldRecordFieldDefinitionRecordSchemaReferencesToolSampleSheetColumnDefinitionSaveableStepPositionToolShedRepositoryWorkflowTextOptionconvert_typing()expand_url()extract_type()file_uri()load_document()load_document_by_string()load_document_by_yaml()load_document_with_metadata()load_field()parse_errors()parser_info()prefix_url()save()save_relative_uri()save_with_metadata()shortname()
- gxformat2.schema.v19_09 module
AnyLoaderArraySchemaBaseCommentBaseCreatorBaseDataParameterBaseInputParameterCreatorOrganizationCreatorOrganizationTypeLoaderCreatorPersonCreatorPersonTypeLoaderDocumentedEnumSchemaFrameCommentFreehandCommentGalaxyTypeLoaderGalaxyWorkflowHasStepErrorsHasStepPositionHasUUIDIdentifiedInputParameterLabeledLoadingOptionsLoadingOptions.addl_metadataLoadingOptions.baseuriLoadingOptions.cacheLoadingOptions.containerLoadingOptions.fetcherLoadingOptions.fileuriLoadingOptions.graphLoadingOptions.idxLoadingOptions.importsLoadingOptions.includesLoadingOptions.namespacesLoadingOptions.no_link_checkLoadingOptions.original_docLoadingOptions.rvocabLoadingOptions.schemasLoadingOptions.vocab
MarkdownCommentMinMaxOutputParameterParameterPrimitiveTypeLoaderProcessRecordFieldRecordFieldDefinitionRecordSchemaReferencesToolReportSampleSheetColumnDefinitionSaveableSinkStepPositionTextCommentToolShedRepositoryWorkflowBooleanParameterWorkflowCollectionParameterWorkflowDataParameterWorkflowFloatParameterWorkflowInputParameterWorkflowIntegerParameterWorkflowOutputParameterWorkflowStepWorkflowStepInputWorkflowStepOutputWorkflowStepTypeLoaderWorkflowTextOptionWorkflowTextParameterconvert_typing()expand_url()extract_type()file_uri()load_document()load_document_by_string()load_document_by_yaml()load_document_with_metadata()load_field()parse_errors()parser_info()prefix_url()save()save_relative_uri()save_with_metadata()shortname()
- Module contents
Submodules#
gxformat2.abstract module#
Module for exporting Galaxy workflows to CWL abstract interface.
gxformat2.converter module#
Functionality for converting a Format 2 workflow into a standard Galaxy workflow.
This module provides dict-returning wrapper functions used by Galaxy and
Planemo. The typed API is gxformat2.normalized.to_native().
- gxformat2.converter.main(argv=None)[source]#
Entry point for script to conversion from Format 2 interface.
gxformat2.export module#
Functionality for converting a standard Galaxy workflow into a format 2 workflow.
This module provides dict-returning wrapper functions used by Galaxy and
Planemo. The typed API is gxformat2.normalized.to_format2().
- gxformat2.export.from_galaxy_native(native_workflow_dict: dict[str, Any] | NativeGalaxyWorkflow, tool_interface=None, json_wrapper: bool = False, compact: bool = False, convert_tool_state: Callable[[dict], dict[str, Any] | None] | None = None)[source]#
Convert native .ga workflow definition to a format2 workflow.
If
convert_tool_stateis provided it should be a callable accepting a native step dict and returning an optional dict representing the format2statefor that step. When the callable returns a dict, the step will carrystateinstead oftool_state; when it returnsNonethe defaulttool_statepassthrough is used.
gxformat2.interface module#
Compatibility shim for gxformat2.interface.
Deprecated since version 0.26.0: This module was removed in gxformat2 0.23 (PR #161) and has been restored solely as a compatibility shim for downstream consumers (notably Planemo). It may be removed again in a future release. New code should implement its own Galaxy importer interface or depend on Galaxy / BioBlend directly.
bioblend is no longer a hard dependency of gxformat2. Install the
bioblend extra (pip install gxformat2[bioblend]) or install
bioblend separately to use BioBlendImporterGalaxyInterface.
- class gxformat2.interface.BioBlendImporterGalaxyInterface(**kwds)[source]#
Bases:
ImporterGalaxyInterfaceImplementation of
ImporterGalaxyInterfaceusing bioblend.bioblendis imported lazily so importinggxformat2.interfacedoes not require it to be installed.
gxformat2.lint module#
Workflow linting entry point - main script.
- gxformat2.lint.lint_best_practices(lint_context, nf2: NormalizedFormat2)[source]#
Lint best practices for a Format2 workflow (top-level + format2 step-level).
- gxformat2.lint.lint_best_practices_format2(lint_context, workflow_dict)[source]#
Lint best practices for a Format2 Galaxy workflow.
- gxformat2.lint.lint_best_practices_ga(lint_context, workflow_dict)[source]#
Lint best practices for a native Galaxy workflow.
Runs top-level checks on NormalizedFormat2 (for shared doc/creator/license interpretation) plus step-level checks on NormalizedNativeWorkflow so step messages reference native ids / labels / annotations rather than format2 sentinels like
_unlabeled_step_1.
- gxformat2.lint.lint_format2(lint_context, nf2, raw_dict: dict | None = None, path=None)[source]#
Lint a Format 2 Galaxy workflow and populate the corresponding LintContext.
Backward-compat:
nf2may be a raw dict (legacy Planemo signature), in which case it is expanded toNormalizedFormat2internally.pathis accepted for Planemo compatibility and currently ignored.
- gxformat2.lint.lint_ga(lint_context, nnw, raw_dict: dict | None = None, path=None)[source]#
Lint a native Galaxy workflow and populate the corresponding LintContext.
Backward-compat:
nnwmay be a raw dict (legacy Planemo signature), in which case it is expanded toNormalizedNativeWorkflowinternally.pathis accepted for Planemo compatibility and currently ignored.
- gxformat2.lint.lint_pydantic_validation(lint_context, workflow_dict, format2=False)[source]#
Validate workflow dict against pydantic schema models.
Tries strict model (extra=forbid) first. If strict fails, falls back to the lax model (extra=allow) to distinguish fundamental type errors from merely having extra/unknown fields.
gxformat2.lint_profiles module#
Lint profile catalog loader.
Profiles group lint-rule IDs into named sets (structural,
best-practices, release). Unknown IDs are tolerated — audit tooling
compares against the registered Linter subclasses to flag unimplemented
entries as INFO.
- class gxformat2.lint_profiles.LintProfile(*, id: str, description: str = '', rules: list[str])[source]#
Bases:
BaseModelNamed set of lint-rule IDs loaded from lint_profiles.yml.
- model_config = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- gxformat2.lint_profiles.iwc_rule_ids() set[str][source]#
Union of structural, best-practices, and release rule IDs.
- gxformat2.lint_profiles.lint_profiles_by_id() dict[str, LintProfile][source]#
Return profiles keyed by id.
- gxformat2.lint_profiles.load_lint_profiles() list[LintProfile][source]#
Parse lint_profiles.yml into validated
LintProfilemodels.
gxformat2.lint_rules module#
Lint rule classes.
Each Linter subclass carries metadata only (severity, applies_to,
profile). Emission happens in gxformat2/lint.py via
LintContext.warn / LintContext.error with linter=<Subclass>.
gxformat2.linting module#
Generic utilities for linting.
Largely derived from galaxy.tool_util.lint. LintMessage is a str
subclass so existing code that treats warn_messages / error_messages
as lists of strings keeps working; new metadata (level, linter,
json_pointer) is accessible as attributes.
- class gxformat2.linting.LintContext(level='warn', training_topic=None, _pointer: str = '')[source]#
Bases:
objectTrack running status (state) of linting.
- child(pointer_segment) LintContext[source]#
Create child context whose default json_pointer is prefixed.
- error(message: str, *args, linter: type | str | None = None, json_pointer: str | None = None, **kwds) None[source]#
Track a linting error - a serious problem with the artifact preventing execution.
- error_messages: list[LintMessage]#
- warn(message: str, *args, linter: type | str | None = None, json_pointer: str | None = None, **kwds) None[source]#
Track a linting warning - a deviation from best practices.
- warn_messages: list[LintMessage]#
- class gxformat2.linting.LintLevel(*values)[source]#
-
Lint severity levels.
- ALL = 'all'#
- ERROR = 'error'#
- WARN = 'warn'#
- class gxformat2.linting.LintMessage(message: str, *, level: str = 'warn', linter: str | None = None, json_pointer: str = '')[source]#
Bases:
strA single lint emission: prose + structured metadata.
Subclassing
strkeeps"substring" in messageandstr(message)working for existing callers/tests.
gxformat2.markdown_parse module#
Utilities for parsing “Galaxy Flavored Markdown”.
See markdown_util.py for loading objects and interacting with the rest of Galaxy. This file is meant to be relatively self contained and just used to “parse” and validate Galaxy Markdown. Keeping things isolated to allow re-use of these utilities in other projects (e.g. gxformat2).
gxformat2.model module#
Abstractions for dealing with Format2 data.
- gxformat2.model.ensure_step_position(step: dict, order_index: int)[source]#
Ensure step contains a position definition.
Modifies the input step dictionary.
- gxformat2.model.get_native_step_type(gxformat2_step_dict: dict) Literal['subworkflow', 'data_input', 'data_collection_input', 'tool', 'pause', 'pick_value', 'parameter_input'][source]#
Infer native galaxy step type from the gxformat2 step as a dict.
- gxformat2.model.resolve_source_reference(value: str, known_labels: set | dict) tuple[source]#
Parse a source reference into (step_label_or_id, output_name).
Deprecated: use
gxformat2.normalized.resolve_source_referencedirectly.
- gxformat2.model.setup_connected_values(value, key: str = '', append_to: dict[str, list] | None = None) Any[source]#
Replace links with connected value.
- gxformat2.model.steps_as_list(format2_workflow: dict, add_ids: bool = False, inputs_offset: int = 0, mutate: bool = False) list[dict[str, Any]][source]#
Return steps as a list, converting ID map to list representation if needed.
This method does mutate the supplied steps, try to make progress toward not doing this.
Add keys as labels instead of IDs. Why am I doing this?
gxformat2.normalize module#
Convenience functions for accessing normalized workflow components.
steps(), inputs(), and outputs() return typed Pydantic
model lists from any workflow representation. The _normalized variants
return plain dicts for backward compatibility (used by Planemo).
- gxformat2.normalize.inputs(workflow_dict: dict[str, Any] | str | PathLike | NormalizedFormat2 | NormalizedNativeWorkflow | GalaxyWorkflow | NativeGalaxyWorkflow | None = None, workflow_path: str | PathLike | None = None, options: ConversionOptions | None = None, expand: bool = False) list[BaseInputParameter][source]#
Return normalized inputs as typed models.
- gxformat2.normalize.inputs_normalized(workflow_dict: dict[str, Any] | str | PathLike | NormalizedFormat2 | NormalizedNativeWorkflow | GalaxyWorkflow | NativeGalaxyWorkflow | None = None, workflow_path: str | PathLike | None = None, options: ConversionOptions | None = None, expand: bool = False) list[dict[str, Any]][source]#
Return normalized input steps as dicts.
Deprecated since version Use:
inputs()for typed model access.
- gxformat2.normalize.outputs(workflow_dict: dict[str, Any] | str | PathLike | NormalizedFormat2 | NormalizedNativeWorkflow | GalaxyWorkflow | NativeGalaxyWorkflow | None = None, workflow_path: str | PathLike | None = None, options: ConversionOptions | None = None, expand: bool = False) list[WorkflowOutputParameter][source]#
Return normalized outputs as typed models.
- gxformat2.normalize.outputs_normalized(workflow_dict: dict[str, Any] | str | PathLike | NormalizedFormat2 | NormalizedNativeWorkflow | GalaxyWorkflow | NativeGalaxyWorkflow | None = None, workflow_path: str | PathLike | None = None, options: ConversionOptions | None = None, expand: bool = False) list[dict[str, Any]][source]#
Return normalized outputs as dicts.
Deprecated since version Use:
outputs()for typed model access.
- gxformat2.normalize.steps(workflow_dict: dict[str, Any] | str | PathLike | NormalizedFormat2 | NormalizedNativeWorkflow | GalaxyWorkflow | NativeGalaxyWorkflow | None = None, workflow_path: str | PathLike | None = None, options: ConversionOptions | None = None, expand: bool = False) list[BaseInputParameter | NormalizedWorkflowStep][source]#
Return input parameters followed by steps as typed models.
- gxformat2.normalize.steps_normalized(workflow_dict: dict[str, Any] | str | PathLike | NormalizedFormat2 | NormalizedNativeWorkflow | GalaxyWorkflow | NativeGalaxyWorkflow | None = None, workflow_path: str | PathLike | None = None, options: ConversionOptions | None = None, expand: bool = False) list[dict[str, Any]][source]#
Walk over a normalized step rep. across workflow formats.
Deprecated since version Use:
steps()for typed model access.Returns a list of dicts — input steps followed by tool/subworkflow steps.
gxformat2.options module#
Conversion options and URL resolution for workflow format conversion.
- class gxformat2.options.ConversionOptions(workflow_directory: str | Path | None = None, encode_tool_state_json: bool = True, deduplicate_subworkflows: bool = False, state_encode_to_native: Callable[[dict, dict[str, Any]], dict[str, Any] | None] | None = None, state_encode_to_format2: Callable[[dict], dict[str, Any] | None] | None = None, compact: bool = False, url_resolver: Callable[[str], dict[str, Any]] | None = None, strict_structure: bool = False)[source]#
Bases:
objectOptions for workflow format conversion and expansion.
Controls native↔Format2 conversion, subworkflow expansion, and URL resolution.
- gxformat2.options.StateEncodeToFormat2Fn#
Callback to convert a native tool step’s tool_state to format2 state.
Accepts a native step dict (with tool_id, tool_version, tool_state). Returns a format2 state dict, or None to fall back to default tool_state passthrough.
- gxformat2.options.StateEncodeToNativeFn#
Callback to encode format2 state back to native tool_state.
Accepts (step, state) where step is the partially-built native step dict and state is the format2 state dict after setup_connected_values processing. Returns {param_name: encoded_value} as clean dicts for native tool_state, or None to fall back to default dict passthrough (no JSON encoding).
alias of
Callable[[dict,dict[str,Any]],dict[str,Any] |None] |None
- gxformat2.options.UrlResolverFn#
Callback to fetch a URL and return a parsed workflow dict.
Accepts a URL string, returns a parsed dict (native or format2). Galaxy provides its own with allowlists/policy; gxformat2 provides a default via
default_url_resolver().
gxformat2.schema_rules module#
Schema-rule catalog loader.
Schema rules describe checks already enforced by the pydantic decode layer. Each rule ships with positive and negative fixtures; the catalog contract is tested end-to-end by running fixtures through validators — not by inspecting ValidationError shapes.
- class gxformat2.schema_rules.AppliesTo(*values)[source]#
-
Which workflow format a schema rule applies to.
- format2 = 'format2'#
- native = 'native'#
- class gxformat2.schema_rules.SchemaRule(*, id: str, severity: Severity, applies_to: list[AppliesTo], scope: Scope, description: str = '', tests: SchemaRuleTests)[source]#
Bases:
BaseModelDeclarative schema-rule entry loaded from schema_rules.yml.
- model_config = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- tests: SchemaRuleTests#
- class gxformat2.schema_rules.SchemaRuleTests(*, positive: list[str], negative: list[str])[source]#
Bases:
BaseModelPositive/negative fixture references for a schema rule.
- model_config = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class gxformat2.schema_rules.Scope(*values)[source]#
-
Validator flavors that reject the negative fixture.
both: both lax and strict reject (e.g. missing required field).strict: only strict rejects (e.g. unknown extra field).lax: only lax rejects — unusual, reserved for completeness.
- both = 'both'#
- lax = 'lax'#
- strict = 'strict'#
- class gxformat2.schema_rules.Severity(*values)[source]#
-
Rule severity level.
- error = 'error'#
- warning = 'warning'#
- gxformat2.schema_rules.load_schema_rules() list[SchemaRule][source]#
Parse schema_rules.yml into validated SchemaRule models.
gxformat2.testing module#
Reusable declarative test harness for YAML-driven workflow operation tests.
Extracts the test infrastructure from gxformat2’s own declarative tests into an importable module. Callers inject their own operations dict and fixture loader, making this usable from any project (Galaxy, Planemo, etc.).
- Path element types for assertions:
str: dict key lookup (falls back to attribute access)
int: list index
“$length”: terminal, returns len(current object)
{field: value}: find first list item where item.field == value
- Assertion modes:
value: exact equality
value_contains: substring containment
value_any_contains: any element in a list contains substring
value_set: unordered set comparison
value_matches: regex match
value_truthy / value_falsy: boolean-ish checks
value_type: isinstance check (“dict”, “list”, “str”, “int”, “float”, “bool”)
value_absent: assert that path does NOT resolve (key/attribute missing)
- class gxformat2.testing.Assertion(*, path: list[str | int | dict[str, ~typing.Any]], value: ~typing.Any = <object object>, value_contains: str | None = None, value_any_contains: str | None = None, value_set: list[~typing.Any] | None = None, value_matches: str | None = None, value_truthy: bool | None = None, value_falsy: bool | None = None, value_type: str | None = None, value_absent: bool | None = None)[source]#
Bases:
BaseModelA single path-based assertion against an operation result.
- model_config = {'arbitrary_types_allowed': True}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class gxformat2.testing.DeclarativeTestSuite(operations: dict[str, Callable[[...], Any]], load_fixture: Callable[[str], Any], expectations_dir: str | None = None, cases: list[tuple[str, TestCase]] | None = None)[source]#
Bases:
objectBundles operations + fixture loader for declarative YAML tests.
Usage:
suite = DeclarativeTestSuite( operations={"normalize": normalize_fn}, load_fixture=my_loader, expectations_dir="/path/to/expectations", ) @suite.pytest_params() def test_declarative(test_id, case): suite.run(test_id, case)
- class gxformat2.testing.ExpectationSuite(*, root: dict[str, TestCase])[source]#
Bases:
BaseModelTop-level model: maps test IDs to test cases.
- classmethod from_yaml(path: str) ExpectationSuite[source]#
Load an expectation suite from a YAML file.
- model_config = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class gxformat2.testing.TestCase(*, fixture: str, operation: str, expect_error: bool = False, assertions: list[Assertion] = [])[source]#
Bases:
BaseModelA single declarative test case.
- model_config = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- gxformat2.testing.assert_value_any_contains(obj: Any, expected: str)[source]#
Assert that at least one element in obj contains expected as a substring.
- gxformat2.testing.assert_value_contains(obj: Any, expected: str)[source]#
Assert that expected is a substring of obj.
- gxformat2.testing.assert_value_matches(obj: Any, pattern: str)[source]#
Assert that obj matches the given regex pattern.
- gxformat2.testing.assert_value_set(obj: Any, expected_items: list)[source]#
Assert unordered set equality.
For frozensets of NamedTuples: converts each item via _asdict() and compares as sets of frozen key-value pairs. For frozensets of primitives: plain set comparison.
- gxformat2.testing.assert_value_type(obj: Any, expected_type: str)[source]#
Assert that obj is an instance of the named type.
- gxformat2.testing.load_expectation_cases(expectations_dir: str) Iterator[tuple[str, TestCase]][source]#
Yield (test_id, TestCase) for every expectation YAML in a directory.
Walk an object by a list of path elements.
- gxformat2.testing.run_assertion(obj: Any, assertion: Assertion)[source]#
Run a single assertion against a navigated object.
- gxformat2.testing.run_declarative_case(case: TestCase, operations: dict[str, Callable[[...], Any]], load_fixture: Callable[[str], Any])[source]#
Execute one declarative test case.
- Args:
case: TestCase with fixture, operation, and optionally assertions / expect_error operations: mapping of operation name to callable load_fixture: callable that takes a fixture name and returns the loaded workflow dict
gxformat2.validators module#
Shared pydantic-validator dispatch for workflow dict inputs.
Callers pass a parsed workflow dict and get a pydantic model back (or a ValidationError). Used by the declarative-operation runner and the schema-rule catalog runner.
- gxformat2.validators.validate_format2(wf_dict)[source]#
Validate a Format2 workflow dict with the lax (open) schema.
- gxformat2.validators.validate_format2_strict(wf_dict)[source]#
Validate a Format2 workflow dict with the strict (closed) schema.
- gxformat2.validators.validate_native(wf_dict)[source]#
Validate a native Galaxy workflow dict with the lax (open) schema.
gxformat2.yaml module#
YAML loading utilities for gxformat2.
- gxformat2.yaml.ordered_dump(data, stream=None, Dumper=<class 'yaml.dumper.SafeDumper'>, **kwds)[source]#
Safe and ordered dump of YAML to stream.
- gxformat2.yaml.ordered_dump_to_path(as_dict: dict, path: str)[source]#
Safe and ordered dump of YAML to path.
Module contents#
The public interface or entry point for the Format 2 workflow code.
- class gxformat2.ConversionOptions(workflow_directory: str | Path | None = None, encode_tool_state_json: bool = True, deduplicate_subworkflows: bool = False, state_encode_to_native: Callable[[dict, dict[str, Any]], dict[str, Any] | None] | None = None, state_encode_to_format2: Callable[[dict], dict[str, Any] | None] | None = None, compact: bool = False, url_resolver: Callable[[str], dict[str, Any]] | None = None, strict_structure: bool = False)[source]#
Bases:
objectOptions for workflow format conversion and expansion.
Controls native↔Format2 conversion, subworkflow expansion, and URL resolution.
- gxformat2.from_galaxy_native(native_workflow_dict: dict[str, Any] | NativeGalaxyWorkflow, tool_interface=None, json_wrapper: bool = False, compact: bool = False, convert_tool_state: Callable[[dict], dict[str, Any] | None] | None = None)[source]#
Convert native .ga workflow definition to a format2 workflow.
If
convert_tool_stateis provided it should be a callable accepting a native step dict and returning an optional dict representing the format2statefor that step. When the callable returns a dict, the step will carrystateinstead oftool_state; when it returnsNonethe defaulttool_statepassthrough is used.
- gxformat2.python_to_workflow(as_python, galaxy_interface=None, workflow_directory=None, import_options=None)[source]#
Convert a Format 2 workflow into standard Galaxy format from supplied dictionary.
- gxformat2.to_format2(workflow: dict[str, Any] | str | Path | PathLike[str] | NativeGalaxyWorkflow | NormalizedNativeWorkflow, options: ConversionOptions, expand: Literal[True]) ExpandedFormat2[source]#
- gxformat2.to_format2(workflow: dict[str, Any] | str | Path | PathLike[str] | NativeGalaxyWorkflow | NormalizedNativeWorkflow, options: ConversionOptions | None = None, expand: Literal[False] = False) NormalizedFormat2
Convert a native Galaxy workflow to Format2.
Returns
NormalizedFormat2by default, orExpandedFormat2whenexpand=True.
- gxformat2.to_native(workflow: dict[str, Any] | str | Path | PathLike[str] | NormalizedFormat2 | GalaxyWorkflow, options: ConversionOptions, expand: Literal[True]) ExpandedNativeWorkflow[source]#
- gxformat2.to_native(workflow: dict[str, Any] | str | Path | PathLike[str] | NormalizedFormat2 | GalaxyWorkflow, options: ConversionOptions | None = None, expand: Literal[False] = False) NormalizedNativeWorkflow
Convert a Format2 workflow to native Galaxy format.
Returns
NormalizedNativeWorkflowby default, orExpandedNativeWorkflowwhenexpand=True(resolving all URL/TRS/@import subworkflow references).