sprocket_bio.grammar

class sprocket_bio.grammar.Diagnostic

Bases: object

Represents a diagnostic to display to the user.

static error(message)

Creates a new diagnostic error with the given message.

static note(message)

Creates a new diagnostic node with the given message.

static warning(message)

Creates a new diagnostic warning with the given message.

with_fix(fix)

Sets the fix message for the diagnostic.

with_help(help)

Sets the help message for the diagnostic.

This is different from the fix message, as it only serves to provide more context to the issue, rather than a solution.

with_highlight(span)

Adds a highlight to the diagnostic.

This is equivalent to adding a label with an empty message.

The span for the highlight is expected to be for the same file as the diagnostic.

with_label(message, span)

Adds a label to the diagnostic.

The first label added is considered the primary label.

The span for the label is expected to be for the same file as the diagnostic.

with_rule(rule)

Sets the rule for the diagnostic.

with_severity(severity)

Sets the severity of the diagnostic.

fix

The optional fix suggestion for the diagnostic.

help

The optional help message.

labels

The labels for the diagnostic.

The first label in the collection is considered the primary label.

message

The diagnostic message.

rule

The optional rule associated with the diagnostic.

severity

The default severity of the diagnostic.

class sprocket_bio.grammar.Label(message, span)

Bases: object

Represents a label that annotates the source code.

message

The optional message of the label (may be empty).

span

The span of the label.

class sprocket_bio.grammar.Severity

Bases: object

Represents the severity of a diagnostic.

ERROR = Severity.ERROR
NOTE = Severity.NOTE
WARNING = Severity.WARNING
class sprocket_bio.grammar.Span(start, len)

Bases: object

Represents a span of source.

contains(offset)

Determines if the span contains the given offset.

intersect(other)

Calculates an intersection of two spans, if one exists.

If spans are adjacent, a zero-length span is returned.

Returns None if the two spans are disjoint.

Examples

>>> Span(0, 10).intersect(Span(5, 10))
Span(5..10)
is_empty()

Determines if the span is empty.

len()

Gets the length of the span.

end

The end of the span.

start

The start of the span.

class sprocket_bio.grammar.SupportedVersion

Bases: object

Represents a supported WDL version.

The Default implementation of this type returns the most recent fully-supported ratified version of WDL.

class V1(_0)

Bases: SupportedVersion

The document version is 1.x.

has_same_major_version(other)

Returns true if the other version has the same major version as this one.

>>> from sprocket_bio.grammar.version import SupportedVersion, V1
>>> SupportedVersion.V1(V1.ZERO).has_same_major_version(SupportedVersion.V1(V1.TWO))
True
class sprocket_bio.grammar.SyntaxKind

Bases: object

Represents the kind of syntax element (node or token) in a WDL concrete syntax tree (CST).

Nodes have at least one token child and represent a syntactic construct.

Tokens are terminal and represent any span of the source.

This enumeration is a union of all supported WDL tokens and nodes.

describe()

Describes the syntax kind.

Errors

This method will throw ValueError if the SyntaxKind is symbolic (when SyntaxKind.is_symbolic() returns true).

is_keyword()

Returns whether the SyntaxKind is a keyword.

NOTE: This does not include types, see SyntaxKind.is_type().

is_operator()

Returns whether the SyntaxKind is an operator.

is_symbolic()

Returns whether the token is a symbolic SyntaxKind.

Generally speaking, symbolic SyntaxKinds have special meanings during parsing—they are not real elements of the grammar but rather an implementation detail.

is_trivia()

Returns whether the SyntaxKind is trivia.

is_type()

Returns whether the SyntaxKind is a predefined type keyword.

ABANDONED = SyntaxKind.ABANDONED
ACCESS_EXPR_NODE = SyntaxKind.ACCESS_EXPR_NODE
ADDITION_EXPR_NODE = SyntaxKind.ADDITION_EXPR_NODE
AFTER_KEYWORD = SyntaxKind.AFTER_KEYWORD
ALIAS_KEYWORD = SyntaxKind.ALIAS_KEYWORD
ARRAY_TYPE_KEYWORD = SyntaxKind.ARRAY_TYPE_KEYWORD
ARRAY_TYPE_NODE = SyntaxKind.ARRAY_TYPE_NODE
ASSIGNMENT = SyntaxKind.ASSIGNMENT
ASTERISK = SyntaxKind.ASTERISK
AS_KEYWORD = SyntaxKind.AS_KEYWORD
BOOLEAN_TYPE_KEYWORD = SyntaxKind.BOOLEAN_TYPE_KEYWORD
BOUND_DECL_NODE = SyntaxKind.BOUND_DECL_NODE
CALL_AFTER_NODE = SyntaxKind.CALL_AFTER_NODE
CALL_ALIAS_NODE = SyntaxKind.CALL_ALIAS_NODE
CALL_EXPR_NODE = SyntaxKind.CALL_EXPR_NODE
CALL_INPUT_ITEM_NODE = SyntaxKind.CALL_INPUT_ITEM_NODE
CALL_KEYWORD = SyntaxKind.CALL_KEYWORD
CALL_STATEMENT_NODE = SyntaxKind.CALL_STATEMENT_NODE
CALL_TARGET_NODE = SyntaxKind.CALL_TARGET_NODE
CLOSE_BRACE = SyntaxKind.CLOSE_BRACE
CLOSE_BRACKET = SyntaxKind.CLOSE_BRACKET
CLOSE_HEREDOC = SyntaxKind.CLOSE_HEREDOC
CLOSE_PAREN = SyntaxKind.CLOSE_PAREN
COLON = SyntaxKind.COLON
COMMA = SyntaxKind.COMMA
COMMAND_KEYWORD = SyntaxKind.COMMAND_KEYWORD
COMMAND_SECTION_NODE = SyntaxKind.COMMAND_SECTION_NODE
COMMENT = SyntaxKind.COMMENT
CONDITIONAL_STATEMENT_CLAUSE_NODE = SyntaxKind.CONDITIONAL_STATEMENT_CLAUSE_NODE
CONDITIONAL_STATEMENT_NODE = SyntaxKind.CONDITIONAL_STATEMENT_NODE
DIRECTORY_TYPE_KEYWORD = SyntaxKind.DIRECTORY_TYPE_KEYWORD
DIVISION_EXPR_NODE = SyntaxKind.DIVISION_EXPR_NODE
DOT = SyntaxKind.DOT
DOUBLE_QUOTE = SyntaxKind.DOUBLE_QUOTE
ELSE_KEYWORD = SyntaxKind.ELSE_KEYWORD
ENUM_CHOICE_NODE = SyntaxKind.ENUM_CHOICE_NODE
ENUM_DEFINITION_NODE = SyntaxKind.ENUM_DEFINITION_NODE
ENUM_KEYWORD = SyntaxKind.ENUM_KEYWORD
ENUM_TYPE_PARAMETER_NODE = SyntaxKind.ENUM_TYPE_PARAMETER_NODE
ENV_KEYWORD = SyntaxKind.ENV_KEYWORD
EQUAL = SyntaxKind.EQUAL
EQUALITY_EXPR_NODE = SyntaxKind.EQUALITY_EXPR_NODE
EXCLAMATION = SyntaxKind.EXCLAMATION
EXPONENTIATION = SyntaxKind.EXPONENTIATION
EXPONENTIATION_EXPR_NODE = SyntaxKind.EXPONENTIATION_EXPR_NODE
FALSE_KEYWORD = SyntaxKind.FALSE_KEYWORD
FILE_TYPE_KEYWORD = SyntaxKind.FILE_TYPE_KEYWORD
FLOAT = SyntaxKind.FLOAT
FLOAT_TYPE_KEYWORD = SyntaxKind.FLOAT_TYPE_KEYWORD
FROM_KEYWORD = SyntaxKind.FROM_KEYWORD
GREATER = SyntaxKind.GREATER
GREATER_EQUAL = SyntaxKind.GREATER_EQUAL
GREATER_EQUAL_EXPR_NODE = SyntaxKind.GREATER_EQUAL_EXPR_NODE
GREATER_EXPR_NODE = SyntaxKind.GREATER_EXPR_NODE
HINTS_KEYWORD = SyntaxKind.HINTS_KEYWORD
IDENT = SyntaxKind.IDENT
IF_EXPR_NODE = SyntaxKind.IF_EXPR_NODE
IF_KEYWORD = SyntaxKind.IF_KEYWORD
IMPORT_ALIAS_NODE = SyntaxKind.IMPORT_ALIAS_NODE
IMPORT_KEYWORD = SyntaxKind.IMPORT_KEYWORD
IMPORT_MEMBERS_NODE = SyntaxKind.IMPORT_MEMBERS_NODE
IMPORT_MEMBER_NODE = SyntaxKind.IMPORT_MEMBER_NODE
IMPORT_STATEMENT_NODE = SyntaxKind.IMPORT_STATEMENT_NODE
INDEX_EXPR_NODE = SyntaxKind.INDEX_EXPR_NODE
INEQUALITY_EXPR_NODE = SyntaxKind.INEQUALITY_EXPR_NODE
INPUT_KEYWORD = SyntaxKind.INPUT_KEYWORD
INPUT_SECTION_NODE = SyntaxKind.INPUT_SECTION_NODE
INTEGER = SyntaxKind.INTEGER
INT_TYPE_KEYWORD = SyntaxKind.INT_TYPE_KEYWORD
IN_KEYWORD = SyntaxKind.IN_KEYWORD
LESS = SyntaxKind.LESS
LESS_EQUAL = SyntaxKind.LESS_EQUAL
LESS_EQUAL_EXPR_NODE = SyntaxKind.LESS_EQUAL_EXPR_NODE
LESS_EXPR_NODE = SyntaxKind.LESS_EXPR_NODE
LITERAL_ARRAY_NODE = SyntaxKind.LITERAL_ARRAY_NODE
LITERAL_BOOLEAN_NODE = SyntaxKind.LITERAL_BOOLEAN_NODE
LITERAL_COMMAND_TEXT = SyntaxKind.LITERAL_COMMAND_TEXT
LITERAL_FLOAT_NODE = SyntaxKind.LITERAL_FLOAT_NODE
LITERAL_HINTS_ITEM_NODE = SyntaxKind.LITERAL_HINTS_ITEM_NODE
LITERAL_HINTS_NODE = SyntaxKind.LITERAL_HINTS_NODE
LITERAL_INPUT_ITEM_NODE = SyntaxKind.LITERAL_INPUT_ITEM_NODE
LITERAL_INPUT_NODE = SyntaxKind.LITERAL_INPUT_NODE
LITERAL_INTEGER_NODE = SyntaxKind.LITERAL_INTEGER_NODE
LITERAL_MAP_ITEM_NODE = SyntaxKind.LITERAL_MAP_ITEM_NODE
LITERAL_MAP_NODE = SyntaxKind.LITERAL_MAP_NODE
LITERAL_NONE_NODE = SyntaxKind.LITERAL_NONE_NODE
LITERAL_NULL_NODE = SyntaxKind.LITERAL_NULL_NODE
LITERAL_OBJECT_ITEM_NODE = SyntaxKind.LITERAL_OBJECT_ITEM_NODE
LITERAL_OBJECT_NODE = SyntaxKind.LITERAL_OBJECT_NODE
LITERAL_OUTPUT_ITEM_NODE = SyntaxKind.LITERAL_OUTPUT_ITEM_NODE
LITERAL_OUTPUT_NODE = SyntaxKind.LITERAL_OUTPUT_NODE
LITERAL_PAIR_NODE = SyntaxKind.LITERAL_PAIR_NODE
LITERAL_STRING_NODE = SyntaxKind.LITERAL_STRING_NODE
LITERAL_STRING_TEXT = SyntaxKind.LITERAL_STRING_TEXT
LITERAL_STRUCT_ITEM_NODE = SyntaxKind.LITERAL_STRUCT_ITEM_NODE
LITERAL_STRUCT_NODE = SyntaxKind.LITERAL_STRUCT_NODE
LOGICAL_AND = SyntaxKind.LOGICAL_AND
LOGICAL_AND_EXPR_NODE = SyntaxKind.LOGICAL_AND_EXPR_NODE
LOGICAL_NOT_EXPR_NODE = SyntaxKind.LOGICAL_NOT_EXPR_NODE
LOGICAL_OR = SyntaxKind.LOGICAL_OR
LOGICAL_OR_EXPR_NODE = SyntaxKind.LOGICAL_OR_EXPR_NODE
MAP_TYPE_KEYWORD = SyntaxKind.MAP_TYPE_KEYWORD
MAP_TYPE_NODE = SyntaxKind.MAP_TYPE_NODE
MAX = SyntaxKind.MAX
METADATA_ARRAY_NODE = SyntaxKind.METADATA_ARRAY_NODE
METADATA_OBJECT_ITEM_NODE = SyntaxKind.METADATA_OBJECT_ITEM_NODE
METADATA_OBJECT_NODE = SyntaxKind.METADATA_OBJECT_NODE
METADATA_SECTION_NODE = SyntaxKind.METADATA_SECTION_NODE
META_KEYWORD = SyntaxKind.META_KEYWORD
MINUS = SyntaxKind.MINUS
MODULO_EXPR_NODE = SyntaxKind.MODULO_EXPR_NODE
MULTIPLICATION_EXPR_NODE = SyntaxKind.MULTIPLICATION_EXPR_NODE
NAME_REF_EXPR_NODE = SyntaxKind.NAME_REF_EXPR_NODE
NEGATION_EXPR_NODE = SyntaxKind.NEGATION_EXPR_NODE
NONE_KEYWORD = SyntaxKind.NONE_KEYWORD
NOT_EQUAL = SyntaxKind.NOT_EQUAL
NULL_KEYWORD = SyntaxKind.NULL_KEYWORD
OBJECT_KEYWORD = SyntaxKind.OBJECT_KEYWORD
OBJECT_TYPE_KEYWORD = SyntaxKind.OBJECT_TYPE_KEYWORD
OBJECT_TYPE_NODE = SyntaxKind.OBJECT_TYPE_NODE
OPEN_BRACE = SyntaxKind.OPEN_BRACE
OPEN_BRACKET = SyntaxKind.OPEN_BRACKET
OPEN_HEREDOC = SyntaxKind.OPEN_HEREDOC
OPEN_PAREN = SyntaxKind.OPEN_PAREN
OUTPUT_KEYWORD = SyntaxKind.OUTPUT_KEYWORD
OUTPUT_SECTION_NODE = SyntaxKind.OUTPUT_SECTION_NODE
PAIR_TYPE_KEYWORD = SyntaxKind.PAIR_TYPE_KEYWORD
PAIR_TYPE_NODE = SyntaxKind.PAIR_TYPE_NODE
PARAMETER_METADATA_SECTION_NODE = SyntaxKind.PARAMETER_METADATA_SECTION_NODE
PARAMETER_META_KEYWORD = SyntaxKind.PARAMETER_META_KEYWORD
PARENTHESIZED_EXPR_NODE = SyntaxKind.PARENTHESIZED_EXPR_NODE
PERCENT = SyntaxKind.PERCENT
PLACEHOLDER_DEFAULT_OPTION_NODE = SyntaxKind.PLACEHOLDER_DEFAULT_OPTION_NODE
PLACEHOLDER_NODE = SyntaxKind.PLACEHOLDER_NODE
PLACEHOLDER_OPEN = SyntaxKind.PLACEHOLDER_OPEN
PLACEHOLDER_SEP_OPTION_NODE = SyntaxKind.PLACEHOLDER_SEP_OPTION_NODE
PLACEHOLDER_TRUE_FALSE_OPTION_NODE = SyntaxKind.PLACEHOLDER_TRUE_FALSE_OPTION_NODE
PLUS = SyntaxKind.PLUS
PRIMITIVE_TYPE_NODE = SyntaxKind.PRIMITIVE_TYPE_NODE
QUESTION_MARK = SyntaxKind.QUESTION_MARK
REQUIREMENTS_ITEM_NODE = SyntaxKind.REQUIREMENTS_ITEM_NODE
REQUIREMENTS_KEYWORD = SyntaxKind.REQUIREMENTS_KEYWORD
REQUIREMENTS_SECTION_NODE = SyntaxKind.REQUIREMENTS_SECTION_NODE
ROOT_NODE = SyntaxKind.ROOT_NODE
RUNTIME_ITEM_NODE = SyntaxKind.RUNTIME_ITEM_NODE
RUNTIME_KEYWORD = SyntaxKind.RUNTIME_KEYWORD
RUNTIME_SECTION_NODE = SyntaxKind.RUNTIME_SECTION_NODE
SCATTER_KEYWORD = SyntaxKind.SCATTER_KEYWORD
SCATTER_STATEMENT_NODE = SyntaxKind.SCATTER_STATEMENT_NODE
SINGLE_QUOTE = SyntaxKind.SINGLE_QUOTE
SLASH = SyntaxKind.SLASH
STRING_TYPE_KEYWORD = SyntaxKind.STRING_TYPE_KEYWORD
STRUCT_DEFINITION_NODE = SyntaxKind.STRUCT_DEFINITION_NODE
STRUCT_KEYWORD = SyntaxKind.STRUCT_KEYWORD
SUBTRACTION_EXPR_NODE = SyntaxKind.SUBTRACTION_EXPR_NODE
SYMBOLIC_MODULE_PATH_NODE = SyntaxKind.SYMBOLIC_MODULE_PATH_NODE
TASK_DEFINITION_NODE = SyntaxKind.TASK_DEFINITION_NODE
TASK_HINTS_ITEM_NODE = SyntaxKind.TASK_HINTS_ITEM_NODE
TASK_HINTS_SECTION_NODE = SyntaxKind.TASK_HINTS_SECTION_NODE
TASK_KEYWORD = SyntaxKind.TASK_KEYWORD
THEN_KEYWORD = SyntaxKind.THEN_KEYWORD
TRUE_KEYWORD = SyntaxKind.TRUE_KEYWORD
TYPE_REF_NODE = SyntaxKind.TYPE_REF_NODE
UNBOUND_DECL_NODE = SyntaxKind.UNBOUND_DECL_NODE
UNKNOWN = SyntaxKind.UNKNOWN
UNPARSED = SyntaxKind.UNPARSED
VERSION = SyntaxKind.VERSION
VERSION_KEYWORD = SyntaxKind.VERSION_KEYWORD
VERSION_STATEMENT_NODE = SyntaxKind.VERSION_STATEMENT_NODE
WHITESPACE = SyntaxKind.WHITESPACE
WORKFLOW_DEFINITION_NODE = SyntaxKind.WORKFLOW_DEFINITION_NODE
WORKFLOW_HINTS_ARRAY_NODE = SyntaxKind.WORKFLOW_HINTS_ARRAY_NODE
WORKFLOW_HINTS_ITEM_NODE = SyntaxKind.WORKFLOW_HINTS_ITEM_NODE
WORKFLOW_HINTS_OBJECT_ITEM_NODE = SyntaxKind.WORKFLOW_HINTS_OBJECT_ITEM_NODE
WORKFLOW_HINTS_OBJECT_NODE = SyntaxKind.WORKFLOW_HINTS_OBJECT_NODE
WORKFLOW_HINTS_SECTION_NODE = SyntaxKind.WORKFLOW_HINTS_SECTION_NODE
WORKFLOW_KEYWORD = SyntaxKind.WORKFLOW_KEYWORD