# {py:mod}`simvx.core.scene_io.source._source_ast.spans` ```{py:module} simvx.core.scene_io.source._source_ast.spans ``` ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans :allowtitles: ``` ## Module Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`Span ` - ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.Span :summary: ``` * - {py:obj}`LineTable ` - ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.LineTable :summary: ``` * - {py:obj}`NameSpan ` - ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.NameSpan :summary: ``` * - {py:obj}`ValueSlot ` - ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.ValueSlot :summary: ``` * - {py:obj}`ArgumentSpans ` - ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.ArgumentSpans :summary: ``` * - {py:obj}`CallSpans ` - ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.CallSpans :summary: ``` ```` ### Functions ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`node_span ` - ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.node_span :summary: ``` * - {py:obj}`statement_span ` - ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.statement_span :summary: ``` * - {py:obj}`statement_spans ` - ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.statement_spans :summary: ``` * - {py:obj}`name_spans ` - ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.name_spans :summary: ``` * - {py:obj}`call_spans ` - ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.call_spans :summary: ``` * - {py:obj}`value_slot ` - ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.value_slot :summary: ``` * - {py:obj}`iter_child_statements ` - ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.iter_child_statements :summary: ``` ```` ### Data ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`__all__ ` - ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.__all__ :summary: ``` * - {py:obj}`ValueRole ` - ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.ValueRole :summary: ``` ```` ### API ````{py:data} __all__ :canonical: simvx.core.scene_io.source._source_ast.spans.__all__ :value: > ['ArgumentSpans', 'CallSpans', 'LineTable', 'NameSpan', 'Span', 'UnsupportedLineEnding', 'ValueRole'... ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.__all__ ``` ```` `````{py:exception} UnsupportedLineEnding() :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding Bases: {py:obj}`ValueError` ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.__init__ ``` ```{py:class} __cause__ :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.__cause__ ``` ```{py:class} __context__ :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.__context__ ``` ````{py:method} __delattr__() :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.__delattr__ ```` ````{py:method} __dir__() :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.__dir__ ```` ````{py:method} __eq__() :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.__eq__ ```` ````{py:method} __format__() :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.__format__ ```` ````{py:method} __ge__() :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.__ge__ ```` ````{py:method} __getattribute__() :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.__getattribute__ ```` ````{py:method} __getstate__() :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.__getstate__ ```` ````{py:method} __gt__() :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.__gt__ ```` ````{py:method} __hash__() :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.__hash__ ```` ````{py:method} __le__() :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.__le__ ```` ````{py:method} __lt__() :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.__lt__ ```` ````{py:method} __ne__() :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.__ne__ ```` ````{py:method} __new__() :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.__new__ ```` ````{py:method} __reduce__() :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.__reduce__ ```` ````{py:method} __reduce_ex__() :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.__reduce_ex__ ```` ````{py:method} __repr__() :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.__repr__ ```` ````{py:method} __setattr__() :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.__setattr__ ```` ````{py:method} __setstate__() :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.__setstate__ ```` ````{py:method} __sizeof__() :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.__sizeof__ ```` ````{py:method} __str__() :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.__str__ ```` ````{py:method} __subclasshook__() :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.__subclasshook__ ```` ```{py:class} __suppress_context__ :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.__suppress_context__ ``` ```{py:class} __traceback__ :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.__traceback__ ``` ````{py:method} add_note() :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.add_note ```` ```{py:class} args :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.args ``` ````{py:method} with_traceback() :canonical: simvx.core.scene_io.source._source_ast.spans.UnsupportedLineEnding.with_traceback ```` ````` ````{py:data} ValueRole :canonical: simvx.core.scene_io.source._source_ast.spans.ValueRole :value: > None ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.ValueRole ``` ```` `````{py:class} Span :canonical: simvx.core.scene_io.source._source_ast.spans.Span ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.Span ``` ````{py:attribute} start :canonical: simvx.core.scene_io.source._source_ast.spans.Span.start :type: int :value: > None ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.Span.start ``` ```` ````{py:attribute} stop :canonical: simvx.core.scene_io.source._source_ast.spans.Span.stop :type: int :value: > None ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.Span.stop ``` ```` ````{py:method} __post_init__() -> None :canonical: simvx.core.scene_io.source._source_ast.spans.Span.__post_init__ ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.Span.__post_init__ ``` ```` ````{py:method} __len__() -> int :canonical: simvx.core.scene_io.source._source_ast.spans.Span.__len__ ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.Span.__len__ ``` ```` ````{py:method} __bool__() -> bool :canonical: simvx.core.scene_io.source._source_ast.spans.Span.__bool__ ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.Span.__bool__ ``` ```` ````{py:method} text(source: str) -> str :canonical: simvx.core.scene_io.source._source_ast.spans.Span.text ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.Span.text ``` ```` ````{py:method} shift(delta: int) -> simvx.core.scene_io.source._source_ast.spans.Span :canonical: simvx.core.scene_io.source._source_ast.spans.Span.shift ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.Span.shift ``` ```` ````{py:method} contains(other: simvx.core.scene_io.source._source_ast.spans.Span) -> bool :canonical: simvx.core.scene_io.source._source_ast.spans.Span.contains ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.Span.contains ``` ```` ````` `````{py:class} LineTable(text: str) :canonical: simvx.core.scene_io.source._source_ast.spans.LineTable ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.LineTable ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.LineTable.__init__ ``` ````{py:attribute} __slots__ :canonical: simvx.core.scene_io.source._source_ast.spans.LineTable.__slots__ :value: > ('_text', '_starts', '_byte_maps') ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.LineTable.__slots__ ``` ```` ````{py:property} text :canonical: simvx.core.scene_io.source._source_ast.spans.LineTable.text :type: str ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.LineTable.text ``` ```` ````{py:property} line_count :canonical: simvx.core.scene_io.source._source_ast.spans.LineTable.line_count :type: int ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.LineTable.line_count ``` ```` ````{py:method} line_start(lineno: int) -> int :canonical: simvx.core.scene_io.source._source_ast.spans.LineTable.line_start ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.LineTable.line_start ``` ```` ````{py:method} line_span(lineno: int) -> simvx.core.scene_io.source._source_ast.spans.Span :canonical: simvx.core.scene_io.source._source_ast.spans.LineTable.line_span ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.LineTable.line_span ``` ```` ````{py:method} line_text(lineno: int) -> str :canonical: simvx.core.scene_io.source._source_ast.spans.LineTable.line_text ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.LineTable.line_text ``` ```` ````{py:method} offset(lineno: int, col_offset: int) -> int :canonical: simvx.core.scene_io.source._source_ast.spans.LineTable.offset ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.LineTable.offset ``` ```` ````{py:method} char_offset(lineno: int, column: int) -> int :canonical: simvx.core.scene_io.source._source_ast.spans.LineTable.char_offset ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.LineTable.char_offset ``` ```` ````{py:method} position(offset: int) -> tuple[int, int] :canonical: simvx.core.scene_io.source._source_ast.spans.LineTable.position ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.LineTable.position ``` ```` ````{py:method} char_position(offset: int) -> tuple[int, int] :canonical: simvx.core.scene_io.source._source_ast.spans.LineTable.char_position ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.LineTable.char_position ``` ```` ````{py:method} line_of(offset: int) -> int :canonical: simvx.core.scene_io.source._source_ast.spans.LineTable.line_of ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.LineTable.line_of ``` ```` ````{py:method} indent_of(offset: int) -> simvx.core.scene_io.source._source_ast.spans.Span :canonical: simvx.core.scene_io.source._source_ast.spans.LineTable.indent_of ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.LineTable.indent_of ``` ```` ````` ````{py:function} node_span(table: simvx.core.scene_io.source._source_ast.spans.LineTable, node: ast.AST) -> simvx.core.scene_io.source._source_ast.spans.Span :canonical: simvx.core.scene_io.source._source_ast.spans.node_span ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.node_span ``` ```` ````{py:function} statement_span(table: simvx.core.scene_io.source._source_ast.spans.LineTable, node: ast.stmt) -> simvx.core.scene_io.source._source_ast.spans.Span :canonical: simvx.core.scene_io.source._source_ast.spans.statement_span ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.statement_span ``` ```` ````{py:function} statement_spans(table: simvx.core.scene_io.source._source_ast.spans.LineTable, body: collections.abc.Sequence[ast.stmt]) -> list[simvx.core.scene_io.source._source_ast.spans.Span] :canonical: simvx.core.scene_io.source._source_ast.spans.statement_spans ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.statement_spans ``` ```` `````{py:class} NameSpan :canonical: simvx.core.scene_io.source._source_ast.spans.NameSpan ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.NameSpan ``` ````{py:attribute} span :canonical: simvx.core.scene_io.source._source_ast.spans.NameSpan.span :type: simvx.core.scene_io.source._source_ast.spans.Span :value: > None ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.NameSpan.span ``` ```` ````{py:attribute} name :canonical: simvx.core.scene_io.source._source_ast.spans.NameSpan.name :type: str :value: > None ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.NameSpan.name ``` ```` ````{py:attribute} context :canonical: simvx.core.scene_io.source._source_ast.spans.NameSpan.context :type: typing.Literal[load, store, delete] :value: > None ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.NameSpan.context ``` ```` ````` ````{py:function} name_spans(table: simvx.core.scene_io.source._source_ast.spans.LineTable, node: ast.AST, *, name: str | None = None) -> list[simvx.core.scene_io.source._source_ast.spans.NameSpan] :canonical: simvx.core.scene_io.source._source_ast.spans.name_spans ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.name_spans ``` ```` `````{py:class} ValueSlot :canonical: simvx.core.scene_io.source._source_ast.spans.ValueSlot ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.ValueSlot ``` ````{py:attribute} span :canonical: simvx.core.scene_io.source._source_ast.spans.ValueSlot.span :type: simvx.core.scene_io.source._source_ast.spans.Span :value: > None ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.ValueSlot.span ``` ```` ````{py:attribute} outer :canonical: simvx.core.scene_io.source._source_ast.spans.ValueSlot.outer :type: simvx.core.scene_io.source._source_ast.spans.Span :value: > None ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.ValueSlot.outer ``` ```` ````{py:attribute} role :canonical: simvx.core.scene_io.source._source_ast.spans.ValueSlot.role :type: simvx.core.scene_io.source._source_ast.spans.ValueRole :value: > None ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.ValueSlot.role ``` ```` ````{py:property} parenthesised :canonical: simvx.core.scene_io.source._source_ast.spans.ValueSlot.parenthesised :type: bool ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.ValueSlot.parenthesised ``` ```` ````{py:method} requires_parentheses(replacement: str) -> bool :canonical: simvx.core.scene_io.source._source_ast.spans.ValueSlot.requires_parentheses ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.ValueSlot.requires_parentheses ``` ```` ````{py:method} splice(replacement: str) -> tuple[simvx.core.scene_io.source._source_ast.spans.Span, str] :canonical: simvx.core.scene_io.source._source_ast.spans.ValueSlot.splice ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.ValueSlot.splice ``` ```` ````` `````{py:class} ArgumentSpans :canonical: simvx.core.scene_io.source._source_ast.spans.ArgumentSpans ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.ArgumentSpans ``` ````{py:attribute} role :canonical: simvx.core.scene_io.source._source_ast.spans.ArgumentSpans.role :type: typing.Literal[positional, keyword, star_args, star_kwargs] :value: > None ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.ArgumentSpans.role ``` ```` ````{py:attribute} name :canonical: simvx.core.scene_io.source._source_ast.spans.ArgumentSpans.name :type: str | None :value: > None ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.ArgumentSpans.name ``` ```` ````{py:attribute} span :canonical: simvx.core.scene_io.source._source_ast.spans.ArgumentSpans.span :type: simvx.core.scene_io.source._source_ast.spans.Span :value: > None ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.ArgumentSpans.span ``` ```` ````{py:attribute} value :canonical: simvx.core.scene_io.source._source_ast.spans.ArgumentSpans.value :type: simvx.core.scene_io.source._source_ast.spans.ValueSlot :value: > None ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.ArgumentSpans.value ``` ```` ````` `````{py:class} CallSpans :canonical: simvx.core.scene_io.source._source_ast.spans.CallSpans ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.CallSpans ``` ````{py:attribute} call :canonical: simvx.core.scene_io.source._source_ast.spans.CallSpans.call :type: simvx.core.scene_io.source._source_ast.spans.Span :value: > None ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.CallSpans.call ``` ```` ````{py:attribute} func :canonical: simvx.core.scene_io.source._source_ast.spans.CallSpans.func :type: simvx.core.scene_io.source._source_ast.spans.Span :value: > None ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.CallSpans.func ``` ```` ````{py:attribute} open_paren :canonical: simvx.core.scene_io.source._source_ast.spans.CallSpans.open_paren :type: int :value: > None ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.CallSpans.open_paren ``` ```` ````{py:attribute} close_paren :canonical: simvx.core.scene_io.source._source_ast.spans.CallSpans.close_paren :type: int :value: > None ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.CallSpans.close_paren ``` ```` ````{py:attribute} arguments :canonical: simvx.core.scene_io.source._source_ast.spans.CallSpans.arguments :type: tuple[simvx.core.scene_io.source._source_ast.spans.ArgumentSpans, ...] :value: > None ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.CallSpans.arguments ``` ```` ````{py:method} keyword(name: str) -> simvx.core.scene_io.source._source_ast.spans.ArgumentSpans | None :canonical: simvx.core.scene_io.source._source_ast.spans.CallSpans.keyword ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.CallSpans.keyword ``` ```` ````{py:method} positional(index: int) -> simvx.core.scene_io.source._source_ast.spans.ArgumentSpans | None :canonical: simvx.core.scene_io.source._source_ast.spans.CallSpans.positional ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.CallSpans.positional ``` ```` ````` ````{py:function} call_spans(table: simvx.core.scene_io.source._source_ast.spans.LineTable, call: ast.Call, *, comments: collections.abc.Iterable[simvx.core.scene_io.source._source_ast.spans.Span] = ()) -> simvx.core.scene_io.source._source_ast.spans.CallSpans :canonical: simvx.core.scene_io.source._source_ast.spans.call_spans ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.call_spans ``` ```` ````{py:function} value_slot(table: simvx.core.scene_io.source._source_ast.spans.LineTable, node: ast.expr, *, role: simvx.core.scene_io.source._source_ast.spans.ValueRole, bounds: simvx.core.scene_io.source._source_ast.spans.Span, comments: collections.abc.Iterable[simvx.core.scene_io.source._source_ast.spans.Span] = ()) -> simvx.core.scene_io.source._source_ast.spans.ValueSlot :canonical: simvx.core.scene_io.source._source_ast.spans.value_slot ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.value_slot ``` ```` ````{py:function} iter_child_statements(node: ast.AST) -> collections.abc.Iterator[tuple[str, list[ast.stmt]]] :canonical: simvx.core.scene_io.source._source_ast.spans.iter_child_statements ```{autodoc2-docstring} simvx.core.scene_io.source._source_ast.spans.iter_child_statements ``` ````