All docs
Docs/ API Reference/ lsdtools.extend reference
API Reference

lsdtools.extend reference

Generated public SDK reference for lsdtools.extend.

SDK distribution 1.0.0; API contract 1.0; generator 1.0.0.

Product source digest: 4ea39055732e8883c03ccfecf12af6ccebd2041a12ce1b843e4a769e200f5ef9.

Generated from declared public exports and source syntax. Signatures and annotations are declaration spellings; decorators, factories and annotations are never executed. Class members below are declared members; base classes remain explicit. Source docstrings describe their owning implementation; they do not grant app permissions.

Native Hub owns Core/Store/URL acquisition and removal. PackageManager worker methods require its private authority. Opening a project is data-only; only the human Enable project code control can authorize adjacent code. Local source edits require a fresh Desktop process.

text
``lsdtools.extend`` — the extension surface: the registries and substrate a package calls to
teach the product a new capability without forking it.

The top-level :mod:`lsdtools` names (``Tool``, ``Context``, ``Table``, ``View``, ``param`` …) are all
a package needs to *build a pipeline and a panel*. This module is the door to the *extension seams* —
the component registries the charter puts on every view kind (``register_chart_kind``,
``register_cell_renderer``, ``register_param_control``, ``register_layer_kind``, the diagram
``register_diagram_layout`` / ``register_diagram_preset``), the symbology seams (contributed
style assets through ``register_style_asset`` / ``StyleAssetSpec`` and the standard style for a
package's own data through ``register_default_style``), the data-format
registry (``register_table_reader``), the file-import template/source seams — plus the raw engine
substrate (``LoadStep`` / ``EventBus`` / ``ParameterInfo`` / contribution plumbing …) the declarative
``@tool.*`` API sits on.

It replaces the old ``lsdtools.advanced``: same surface (the substrate below the curated top level) but
an honest name and — unlike ``advanced`` — **declared and charter-enforced**. Every seam that lives in a
view/service package is reached lazily through a whitelisted bridge (see ``LAZY_BRIDGES`` in
``core/lsd/tests/test_architecture_charter.py``); the ``_EXPORTS`` table below IS that surface, and the
charter asserts each entry maps to a foundation (`lsd`) or a bridge. Importing this module loads
nothing; resolving a name imports its owner on demand.

One law still holds: a package imports ``lsdtools`` and its submodules — never a product-internal
package directly. ``from lsd_view_chart import register_chart_kind`` is the old, ungoverned path;
``from lsdtools.extend import register_chart_kind`` is the governed one.

lsdtools.extend.Author#

Kind: class. Source: core/git/src/lsd_git/commits.py:25.

Source docstring:

text
Who made a commit. Plain data — collab adapts its ``Participant`` to this.

Implementation alias: lsd_git.commits.Author.

lsdtools.extend.Author.id#

Kind: attribute. Source: core/git/src/lsd_git/commits.py:28.

Python
id: str

lsdtools.extend.Author.name#

Kind: attribute. Source: core/git/src/lsd_git/commits.py:29.

Python
name: str

lsdtools.extend.Author.email#

Kind: attribute. Source: core/git/src/lsd_git/commits.py:30.

Python
email: Optional[str]
Python
email = None

lsdtools.extend.Author.kind#

Kind: attribute. Source: core/git/src/lsd_git/commits.py:31.

Python
kind: str
Python
kind = 'human'

lsdtools.extend.Author.to_dict#

Kind: method. Source: core/git/src/lsd_git/commits.py:33.

Python
to_dict(self) -> Dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.Author.from_dict#

Kind: method. Source: core/git/src/lsd_git/commits.py:37.

Python
from_dict(cls, d: Dict[str, Any]) -> 'Author'
Python
cls: (unannotated)
d: Dict[str, Any]

lsdtools.extend.Author.local#

Kind: method. Source: core/git/src/lsd_git/commits.py:48.

Python
local(cls) -> 'Author'
Python
cls: (unannotated)

Source docstring:

text
The current local identity, headlessly.

Derivation intentionally matches ``lsd_collab.identity.Participant.from_profile``
(id = ``sha1(email)[:16]`` when a profile email exists, else the stable per-install
``device_id``) so the same human gets the same author id in both worlds.

lsdtools.extend.COLUMNMAP_WIDGET#

Kind: value. Source: core/lsd/src/lsd/core/columnmap.py:27.

Python
COLUMNMAP_WIDGET = 'columnmap'

Implementation alias: lsd.core.columnmap.COLUMNMAP_WIDGET.

lsdtools.extend.CameraView#

Kind: class. Source: views/runtime/src/lsd_runtime_view/camera_view.py:141.

Python
CameraView(self, *, view_id: str, reader_factory: Callable[..., Any] | None=None, input_factory: Callable[[], Any] | None=None, camera_eid: Optional[int]=None, actor_eid: Optional[int]=None, bus=None, engine=None, persist: Callable[[], object] | None=None, request_entity_unbind: Callable[[str], object] | None=None, shader_programs: Any=None, min_width: int=360, min_height: int=240, profiler_hud: bool=True, runtime_hud: bool=True, seat_state_key: str=SEAT_STATE_KEY, legacy_seat_state_keys: Iterable[str]=()) -> None

Source docstring:

text
A desktop main view: one runtime camera, one actor's input, per-window profiling.

Implementation alias: lsd_runtime_view.camera_view.CameraView.

Declared bases: Gtk.Box.

lsdtools.extend.CameraView.DEFAULT_SEAT_STATE_KEY#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/camera_view.py:145.

Python
DEFAULT_SEAT_STATE_KEY = SEAT_STATE_KEY

lsdtools.extend.CameraView.__init__#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:152.

Python
__init__(self, *, view_id: str, reader_factory: Callable[..., Any] | None=None, input_factory: Callable[[], Any] | None=None, camera_eid: Optional[int]=None, actor_eid: Optional[int]=None, bus=None, engine=None, persist: Callable[[], object] | None=None, request_entity_unbind: Callable[[str], object] | None=None, shader_programs: Any=None, min_width: int=360, min_height: int=240, profiler_hud: bool=True, runtime_hud: bool=True, seat_state_key: str=SEAT_STATE_KEY, legacy_seat_state_keys: Iterable[str]=()) -> None
Python
actor_eid: Optional[int]
bus: (unannotated)
camera_eid: Optional[int]
engine: (unannotated)
input_factory: Callable[[], Any] | None
legacy_seat_state_keys: Iterable[str]
min_height: int
min_width: int
persist: Callable[[], object] | None
profiler_hud: bool
reader_factory: Callable[..., Any] | None
request_entity_unbind: Callable[[str], object] | None
runtime_hud: bool
seat_state_key: str
self: (unannotated)
shader_programs: Any
view_id: str

lsdtools.extend.CameraView.seat_state_key#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:400.

Python
seat_state_key(self) -> str
Python
self: (unannotated)

Source docstring:

text
Qualified provider-state key this CameraView writes for its output seat.

lsdtools.extend.CameraView.legacy_seat_state_keys#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:406.

Python
legacy_seat_state_keys(self) -> tuple[str, ...]
Python
self: (unannotated)

Source docstring:

text
Ordered read-only aliases removed after seat restoration or persistence.

lsdtools.extend.CameraView.describe_fps_diagnostic#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:411.

Python
describe_fps_diagnostic(self) -> dict[str, Any]
Python
self: (unannotated)

Source docstring:

text
Describe the inherited viewport's lightweight FPS/stats overlay.

lsdtools.extend.CameraView.set_fps_diagnostic#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:425.

Python
set_fps_diagnostic(self, enabled: bool) -> dict[str, Any]
Python
enabled: bool
self: (unannotated)

Source docstring:

text
Toggle GLSurface's existing stats overlay with at most one requested repaint.

The surface's timer remains event-driven: this does not install a tick callback or make an
idle camera render continuously. Enabling requests one frame to populate the labels;
disabling clears those labels and redraws only the overlay plane.

lsdtools.extend.CameraView.camera_eid#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:508.

Python
camera_eid(self) -> Optional[int]
Python
self: (unannotated)

lsdtools.extend.CameraView.actor_eid#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:512.

Python
actor_eid(self) -> Optional[int]
Python
self: (unannotated)

lsdtools.extend.CameraView.bind_seat#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:515.

Python
bind_seat(self, *, camera_eid: Optional[int]=None, actor_eid: Optional[int]=None) -> dict
Python
actor_eid: Optional[int]
camera_eid: Optional[int]
self: (unannotated)

Source docstring:

text
Point this window at another camera and/or actor of the bound scene (persisted).

lsdtools.extend.CameraView.describe_seat#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:539.

Python
describe_seat(self) -> dict
Python
self: (unannotated)

lsdtools.extend.CameraView.reconcile_input#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:554.

Python
reconcile_input(self) -> bool
Python
self: (unannotated)

Source docstring:

text
Build and atomically bind the current input provider.

The existing service remains authoritative until its replacement has been built.
A missing/failed provider therefore leaves a working seat untouched.  Once the port
has swapped successfully, this view owns closing the displaced service.  A project-owned
channel deliberately keeps its identity across generation swaps; receiving that same
facade is still successful reconciliation because its manager has already committed the
new generation.

lsdtools.extend.CameraView.watch_entity#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:687.

Python
watch_entity(self, entity_id, payloads=None) -> None
Python
entity_id: (unannotated)
payloads: (unannotated)
self: (unannotated)

Source docstring:

text
Bind one entity (cardinality one): release the previous lease, lease this scene.

lsdtools.extend.CameraView.unwatch_entity#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:701.

Python
unwatch_entity(self, entity_id) -> None
Python
entity_id: (unannotated)
self: (unannotated)

lsdtools.extend.CameraView.watched_entities#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:711.

Python
watched_entities(self) -> List[str]
Python
self: (unannotated)

lsdtools.extend.CameraView.attach_bus#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:714.

Python
attach_bus(self, bus) -> None
Python
bus: (unannotated)
self: (unannotated)

lsdtools.extend.CameraView.session#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:726.

Python
session(self) -> Any
Python
self: (unannotated)

lsdtools.extend.CameraView.state#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:730.

Python
state(self) -> str
Python
self: (unannotated)

lsdtools.extend.CameraView.loaded#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:738.

Python
loaded(self) -> bool
Python
self: (unannotated)

lsdtools.extend.CameraView.error#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:742.

Python
error(self) -> Optional[str]
Python
self: (unannotated)

lsdtools.extend.CameraView.runtime_profiler_control#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:749.

Python
runtime_profiler_control(self) -> Any
Python
self: (unannotated)

lsdtools.extend.CameraView.profiler_lane#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:754.

Python
profiler_lane(self) -> Any
Python
self: (unannotated)

lsdtools.extend.CameraView.on_session_changed#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:785.

Python
on_session_changed(self) -> None
Python
self: (unannotated)

Source docstring:

text
The host says the session changed (transport elsewhere, a rebuild): resync and pull once.

lsdtools.extend.CameraView.set_lighting_quality#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:843.

Python
set_lighting_quality(self, preset: str, *, samples_per_pixel: int=4, shadow_steps: int=24, resolution_divisor: int=2, volume_steps: int=4, shadow_resolution: int=1024) -> dict
Python
preset: str
resolution_divisor: int
samples_per_pixel: int
self: (unannotated)
shadow_resolution: int
shadow_steps: int
volume_steps: int

Source docstring:

text
Apply this output's quality policy without changing the scene lights.

lsdtools.extend.CameraView.preview_lighting_environment#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:866.

Python
preview_lighting_environment(self, entity_id: str, *, draft_id: str, draft_revision: int, environment) -> bool
Python
draft_id: str
draft_revision: int
entity_id: str
environment: (unannotated)
self: (unannotated)

Source docstring:

text
Queue a host-authorized draft for this Camera's single bound scene.

lsdtools.extend.CameraView.clear_lighting_environment_preview#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:878.

Python
clear_lighting_environment_preview(self, entity_id: str, *, draft_id: str) -> bool
Python
draft_id: str
entity_id: str
self: (unannotated)

lsdtools.extend.CameraView.preview_lighting_setup#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:887.

Python
preview_lighting_setup(self, entity_id: str, *, snapshot, draft_id: str, draft_revision: int, environment) -> bool
Python
draft_id: str
draft_revision: int
entity_id: str
environment: (unannotated)
self: (unannotated)
snapshot: (unannotated)

lsdtools.extend.CameraView.commit_lighting_environment_preview#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:898.

Python
commit_lighting_environment_preview(self, entity_id: str, *, draft_id: str, draft_revision: int) -> bool
Python
draft_id: str
draft_revision: int
entity_id: str
self: (unannotated)

lsdtools.extend.CameraView.add_frame_listener#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:1077.

Python
add_frame_listener(self, listener: Callable[[float], Any]) -> None
Python
listener: Callable[[float], Any]
self: (unannotated)

lsdtools.extend.CameraView.remove_frame_listener#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:1080.

Python
remove_frame_listener(self, listener: Callable[[float], Any]) -> None
Python
listener: Callable[[float], Any]
self: (unannotated)

lsdtools.extend.CameraView.add_present_listener#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:1084.

Python
add_present_listener(self, listener: Callable[[Any], Any]) -> None
Python
listener: Callable[[Any], Any]
self: (unannotated)

lsdtools.extend.CameraView.remove_present_listener#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:1087.

Python
remove_present_listener(self, listener: Callable[[Any], Any]) -> None
Python
listener: Callable[[Any], Any]
self: (unannotated)

lsdtools.extend.CameraView.describe_viewer#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:1223.

Python
describe_viewer(self) -> dict
Python
self: (unannotated)

lsdtools.extend.CameraView.set_theme#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:1269.

Python
set_theme(self, name: str) -> None
Python
name: str
self: (unannotated)

lsdtools.extend.CameraView.dispose#

Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:1294.

Python
dispose(self) -> None
Python
self: (unannotated)

lsdtools.extend.CameraView.view_id#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/camera_view.py:176.

Python
view_id: str
Python
view_id = view_id

lsdtools.extend.CameraView.target_id#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/camera_view.py:177.

Python
target_id: str
Python
target_id = view_id

lsdtools.extend.CameraView.lease#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/camera_view.py:189.

Python
lease: Any
Python
lease = None

lsdtools.extend.CameraView.input_port#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/camera_view.py:215.

Python
input_port: (unannotated)
Python
input_port = InputPort()

lsdtools.extend.CameraView.emitter#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/camera_view.py:221.

Python
emitter: (unannotated)
Python
emitter = EventEmitter(bus, target_id=view_id)

lsdtools.extend.CameraView.scene#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/camera_view.py:222.

Python
scene: (unannotated)
Python
scene = Scene(f'camera:{view_id}')

lsdtools.extend.CameraView.surface#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/camera_view.py:223.

Python
surface: (unannotated)
Python
surface = GLSurface(scene_graph=self.scene, emitter=self.emitter)

lsdtools.extend.CameraView.bodies#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/camera_view.py:237.

Python
bodies: (unannotated)
Python
bodies = BodySceneBinding(self.scene)

lsdtools.extend.CameraView.lighting#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/camera_view.py:239.

Python
lighting: (unannotated)
Python
lighting = RuntimeLightingBinding(self.surface.renderer)

lsdtools.extend.CameraView.profiler_control#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/camera_view.py:242.

Python
profiler_control: (unannotated)
Python
profiler_control = None

lsdtools.extend.CameraView.profiler_hud#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/camera_view.py:243.

Python
profiler_hud: (unannotated)
Python
profiler_hud = None

lsdtools.extend.CameraView.runtime_hud#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/camera_view.py:267.

Python
runtime_hud: (unannotated)
Python
runtime_hud = RuntimeHudSink(canvas_fn=lambda: getattr(self.surface, 'canvas', None), model_fn=self._hud_model, request_redraw=self.surface.queue_redraw)

lsdtools.extend.CameraView.loop#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/camera_view.py:291.

Python
loop: (unannotated)
Python
loop = RuntimeFrameLoop(is_mapped=self._is_mapped, is_playing=lambda: self.state == 'playing', pull_frame=self._pull_frame, present=self._present, queue_redraw=self.surface.queue_redraw, schedule_timeout_fn=GLib.timeout_add, cancel_timeout_fn=GLib.source_remove, schedule_idle_fn=GLib.idle_add, on_tick=self._host_tick)

lsdtools.extend.CameraView.input_capture#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/camera_view.py:304.

Python
input_capture: InputCapture | None
Python
input_capture = InputCapture(self.input_port, on_focus_changed=self._on_input_focus_changed)

lsdtools.extend.CameraView.hud#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/camera_view.py:321.

Python
hud: (unannotated)
Python
hud = None

lsdtools.extend.Capability#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:150.

Source docstring:

text
A versioned semantic viewer capability, such as ``viewer.sectioning@1``.

Implementation alias: lsd.packages.viewer_extensions.Capability.

lsdtools.extend.Capability.name#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:153.

Python
name: str

lsdtools.extend.Capability.version#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:154.

Python
version: int
Python
version = 1

lsdtools.extend.Capability.key#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:163.

Python
key(self) -> str
Python
self: (unannotated)

lsdtools.extend.Capability.parse#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:167.

Python
parse(cls, value: str) -> 'Capability'
Python
cls: (unannotated)
value: str

lsdtools.extend.ChartSpec#

Kind: class. Source: views/chart/src/lsd_view_chart/spec.py:47.

Implementation alias: lsd_view_chart.spec.ChartSpec.

lsdtools.extend.ChartSpec.kind#

Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:48.

Python
kind: str

lsdtools.extend.ChartSpec.title#

Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:49.

Python
title: str
Python
title = ''

lsdtools.extend.ChartSpec.x_label#

Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:50.

Python
x_label: str
Python
x_label = ''

lsdtools.extend.ChartSpec.y_label#

Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:51.

Python
y_label: str
Python
y_label = ''

lsdtools.extend.ChartSpec.series#

Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:52.

Python
series: List[Series]
Python
series = field(default_factory=list)

lsdtools.extend.ChartSpec.categories#

Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:53.

Python
categories: List[str]
Python
categories = field(default_factory=list)

lsdtools.extend.ChartSpec.bin_edges#

Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:54.

Python
bin_edges: List[float]
Python
bin_edges = field(default_factory=list)

lsdtools.extend.ChartSpec.box_stats#

Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:55.

Python
box_stats: List[dict]
Python
box_stats = field(default_factory=list)

lsdtools.extend.ChartSpec.matrix#

Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:56.

Python
matrix: List[List[float]]
Python
matrix = field(default_factory=list)

lsdtools.extend.ChartSpec.z_range#

Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:57.

Python
z_range: Tuple[float, float]
Python
z_range = (0.0, 1.0)

lsdtools.extend.ChartSpec.x_range#

Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:58.

Python
x_range: Tuple[float, float]
Python
x_range = (0.0, 1.0)

lsdtools.extend.ChartSpec.y_range#

Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:59.

Python
y_range: Tuple[float, float]
Python
y_range = (0.0, 1.0)

lsdtools.extend.ChartSpec.x_ticks#

Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:60.

Python
x_ticks: List[float]
Python
x_ticks = field(default_factory=list)

lsdtools.extend.ChartSpec.y_ticks#

Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:61.

Python
y_ticks: List[float]
Python
y_ticks = field(default_factory=list)

lsdtools.extend.ChartSpec.legend#

Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:62.

Python
legend: bool
Python
legend = True

lsdtools.extend.ChartSpec.selection#

Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:63.

Python
selection: Optional[dict]
Python
selection = None

lsdtools.extend.CliCommand#

Kind: class. Source: core/lsd/src/lsd/packages/contributions.py:462.

Source docstring:

text
A ``lsd <name> …`` subcommand. ``configure(parser)`` adds args; ``run(args)`` executes.

Implementation alias: lsd.packages.contributions.CliCommand.

lsdtools.extend.CliCommand.name#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:464.

Python
name: str

lsdtools.extend.CliCommand.help#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:465.

Python
help: str

lsdtools.extend.CliCommand.configure#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:466.

Python
configure: Callable[[Any], None]
Python
configure = lambda parser: None

lsdtools.extend.CliCommand.run#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:467.

Python
run: Callable[[Any], int]
Python
run = lambda args: 0

lsdtools.extend.CliCommand.package#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:468.

Python
package: Optional[str]
Python
package = None

lsdtools.extend.Configurable#

Kind: class. Source: core/lsd/src/lsd/core/configurable.py:337.

Python
Configurable(self, *, id: Optional[str]=None, metadata: Optional[Dict[str, Any]]=None, event_bus: Optional['EventBus']=None, **kwargs: Any) -> None

Source docstring:

text
Base class for all configurable objects: Steps, Entities, Engine.

Subclasses declare parameters with ``param()``; serialization, validation,
introspection, and event emission are inherited automatically.

Implementation alias: lsd.core.configurable.Configurable.

lsdtools.extend.Configurable.type_id#

Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:346.

Python
type_id: ClassVar[str]
Python
type_id = ''

lsdtools.extend.Configurable.serialized_fields#

Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:347.

Python
serialized_fields: ClassVar[frozenset[str]]
Python
serialized_fields = frozenset()

lsdtools.extend.Configurable.param_group_order#

Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:350.

Python
param_group_order: ClassVar[List[str]]
Python
param_group_order = []

lsdtools.extend.Configurable.serialized_type_id#

Kind: method. Source: core/lsd/src/lsd/core/configurable.py:353.

Python
serialized_type_id(self) -> str
Python
self: (unannotated)

Source docstring:

text
Stable type identity written to and restored from project data.

A live variant instance keeps the identity of the configurable it
replaces.  Consumers that bind declarations to project nodes must use
this public coordinate rather than the concrete provider class or the
private deserialization marker.

lsdtools.extend.Configurable.serialized_field_names#

Kind: method. Source: core/lsd/src/lsd/core/configurable.py:368.

Python
serialized_field_names(cls) -> frozenset[str]
Python
cls: (unannotated)

Source docstring:

text
Exact persisted fields understood by this class in the current schema.

lsdtools.extend.Configurable.register_variant#

Kind: method. Source: core/lsd/src/lsd/core/configurable.py:425.

Python
register_variant(cls, identity: str, provider: str, klass: type, mode: str='replace') -> None
Python
cls: (unannotated)
identity: str
klass: type
mode: str
provider: str

Source docstring:

text
Register *klass* (from *provider*) as a variant of node *identity* (see the note above).

lsdtools.extend.Configurable.resolve_class#

Kind: method. Source: core/lsd/src/lsd/core/configurable.py:459.

Python
resolve_class(cls, type_name: Optional[str], *, variant_state: 'Optional[Dict[str, dict]]'=None) -> Optional[type]
Python
cls: (unannotated)
type_name: Optional[str]
variant_state: 'Optional[Dict[str, dict]]'

Source docstring:

text
Resolve an exact type under an explicit or scoped project selection.

lsdtools.extend.Configurable.variant_providers#

Kind: method. Source: core/lsd/src/lsd/core/configurable.py:496.

Python
variant_providers(cls, identity: str) -> 'List[str]'
Python
cls: (unannotated)
identity: str

Source docstring:

text
Provider keys that offer a variant of *identity* (empty if none).

lsdtools.extend.Configurable.validate_variant_state#

Kind: method. Source: core/lsd/src/lsd/core/configurable.py:501.

Python
validate_variant_state(cls, state: 'Optional[Dict[str, dict]]') -> 'Dict[str, dict]'
Python
cls: (unannotated)
state: 'Optional[Dict[str, dict]]'

Source docstring:

text
Validate and normalize one project's exact variant selection.

lsdtools.extend.Configurable.variant_scope#

Kind: method. Source: core/lsd/src/lsd/core/configurable.py:549.

Python
variant_scope(cls, state: 'Optional[Dict[str, dict]]') -> Generator[None, None, None]
Python
cls: (unannotated)
state: 'Optional[Dict[str, dict]]'

Source docstring:

text
Apply one validated project selection only within the current task/thread.

lsdtools.extend.Configurable.unregister#

Kind: method. Source: core/lsd/src/lsd/core/configurable.py:559.

Python
unregister(cls, name: str) -> bool
Python
cls: (unannotated)
name: str

Source docstring:

text
Remove an exact type id from the registry. Returns True if it was present.

Used on package reload/disable so step/entity classes deleted from a
package's source disappear from ``available_steps()`` instead of lingering.
Any variant implemented by the removed class is purged as well.

lsdtools.extend.Configurable.__init__#

Kind: method. Source: core/lsd/src/lsd/core/configurable.py:580.

Python
__init__(self, *, id: Optional[str]=None, metadata: Optional[Dict[str, Any]]=None, event_bus: Optional['EventBus']=None, **kwargs: Any) -> None
Python
event_bus: Optional['EventBus']
id: Optional[str]
kwargs: Any
metadata: Optional[Dict[str, Any]]
self: (unannotated)

lsdtools.extend.Configurable.set_parameter#

Kind: method. Source: core/lsd/src/lsd/core/configurable.py:692.

Python
set_parameter(self, name: str, value: Any, *, coerce: bool=False) -> List[ValidationError]
Python
coerce: bool
name: str
self: (unannotated)
value: Any

Source docstring:

text
Set a parameter by name. Returns error list (empty = success). Never raises.

lsdtools.extend.Configurable.set_parameters#

Kind: method. Source: core/lsd/src/lsd/core/configurable.py:716.

Python
set_parameters(self, values: Dict[str, Any], *, coerce: bool=False) -> List[ValidationError]
Python
coerce: bool
self: (unannotated)
values: Dict[str, Any]

Source docstring:

text
Validate and apply several parameters atomically.

Every name, coercion, and value is checked before the first mutation.
On success values are committed in mapping order and ordinary callers
receive one batch-change event; on validation failure the instance is
unchanged and no event is emitted.  When invoked inside an existing
:meth:`batch_update`, changes join that outer batch.

lsdtools.extend.Configurable.get_parameter#

Kind: method. Source: core/lsd/src/lsd/core/configurable.py:776.

Python
get_parameter(self, name: str) -> Any
Python
name: str
self: (unannotated)

lsdtools.extend.Configurable.set_output#

Kind: method. Source: core/lsd/src/lsd/core/configurable.py:782.

Python
set_output(self, name: str, value: Any) -> None
Python
name: str
self: (unannotated)
value: Any

Source docstring:

text
Store a computed output value from within run() without firing change events.

Safe to call from background threads. Use for output=True params only.

lsdtools.extend.Configurable.get_outputs#

Kind: method. Source: core/lsd/src/lsd/core/configurable.py:797.

Python
get_outputs(self) -> Dict[str, Any]
Python
self: (unannotated)

Source docstring:

text
Return {name: value} for all output=True params.

Called by the runner after step execution to include in STEP_FINISHED event data.
Any subscriber (UI, CLI, logging) can read computed results from that event.

lsdtools.extend.Configurable.get_parameters#

Kind: method. Source: core/lsd/src/lsd/core/configurable.py:811.

Python
get_parameters(self) -> List[ParameterInfo]
Python
self: (unannotated)

Source docstring:

text
Snapshot of all parameters for inspector / CLI generation.

lsdtools.extend.Configurable.parameter_groups#

Kind: method. Source: core/lsd/src/lsd/core/configurable.py:836.

Python
parameter_groups(self) -> OrderedDict
Python
self: (unannotated)

Source docstring:

text
Parameters grouped by their ``group`` value.

Returns an ``OrderedDict[group_name, list[ParameterInfo]]``.
Groups appear in ``cls.param_group_order`` order first, then in
first-seen order for any groups not listed there.

lsdtools.extend.Configurable.parameter_schema#

Kind: method. Source: core/lsd/src/lsd/core/configurable.py:851.

Python
parameter_schema(cls) -> Dict[str, Any]
Python
cls: (unannotated)

Source docstring:

text
Return a JSON Schema ``object`` for all non-hidden, non-output parameters.

Used by agents to build and validate tool call payloads without source inspection::

    schema = MyStep.parameter_schema()
    # → {"type": "object", "properties": {...}, "required": [...]}

lsdtools.extend.Configurable.validate#

Kind: method. Source: core/lsd/src/lsd/core/configurable.py:893.

Python
validate(self) -> ValidationResult
Python
self: (unannotated)

Source docstring:

text
Validate all parameters. Returns structured result, never raises.

lsdtools.extend.Configurable.batch_update#

Kind: method. Source: core/lsd/src/lsd/core/configurable.py:905.

Python
batch_update(self) -> Generator[None, None, None]
Python
self: (unannotated)

Source docstring:

text
Suppress per-field events; emit one batch event on exit.

lsdtools.extend.Configurable.to_dict#

Kind: method. Source: core/lsd/src/lsd/core/configurable.py:923.

Python
to_dict(self) -> Dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.Configurable.validate_serialized_record#

Kind: method. Source: core/lsd/src/lsd/core/configurable.py:951.

Python
validate_serialized_record(cls, data: Dict[str, Any], *, path: str='configurable', validate_parameters: bool=True) -> None
Python
cls: (unannotated)
data: Dict[str, Any]
path: str
validate_parameters: bool

Source docstring:

text
Validate the current persisted contract without constructing an object.

lsdtools.extend.Configurable.from_dict#

Kind: method. Source: core/lsd/src/lsd/core/configurable.py:1009.

Python
from_dict(cls, data: Dict[str, Any]) -> 'Configurable'
Python
cls: (unannotated)
data: Dict[str, Any]

Source docstring:

text
Restore one validated current-schema record.

lsdtools.extend.Configurable.set_metadata#

Kind: method. Source: core/lsd/src/lsd/core/configurable.py:1029.

Python
set_metadata(self, key: str, value: Any) -> None
Python
key: str
self: (unannotated)
value: Any

lsdtools.extend.Configurable.remove_metadata#

Kind: method. Source: core/lsd/src/lsd/core/configurable.py:1045.

Python
remove_metadata(self, key: str) -> None
Python
key: str
self: (unannotated)

lsdtools.extend.Configurable.clear_metadata#

Kind: method. Source: core/lsd/src/lsd/core/configurable.py:1059.

Python
clear_metadata(self) -> None
Python
self: (unannotated)

lsdtools.extend.Configurable.get_metadata#

Kind: method. Source: core/lsd/src/lsd/core/configurable.py:1066.

Python
get_metadata(self, key: str, default: Any=None) -> Any
Python
default: Any
key: str
self: (unannotated)

lsdtools.extend.Container#

Kind: class. Source: core/lsd/src/lsd/core/container.py:23.

Source docstring:

text
Ordered collection mixin. Wire to a ``Configurable`` subclass.

Implementation alias: lsd.core.container.Container.

Declared bases: Generic[C].

lsdtools.extend.Container.add#

Kind: method. Source: core/lsd/src/lsd/core/container.py:29.

Python
add(self, child: C) -> 'Container[C]'
Python
child: C
self: (unannotated)

Source docstring:

text
Attach a child. Returns ``self`` for chaining.

lsdtools.extend.Container.get#

Kind: method. Source: core/lsd/src/lsd/core/container.py:35.

Python
get(self, child_type: type) -> Optional[C]
Python
child_type: type
self: (unannotated)

Source docstring:

text
First child matching the type (isinstance), or None.

lsdtools.extend.Container.has#

Kind: method. Source: core/lsd/src/lsd/core/container.py:42.

Python
has(self, child_type: type) -> bool
Python
child_type: type
self: (unannotated)

lsdtools.extend.Container.remove#

Kind: method. Source: core/lsd/src/lsd/core/container.py:45.

Python
remove(self, child: C) -> None
Python
child: C
self: (unannotated)

lsdtools.extend.Container.children#

Kind: method. Source: core/lsd/src/lsd/core/container.py:51.

Python
children(self) -> 'List[C]'
Python
self: (unannotated)

lsdtools.extend.Container.reorder#

Kind: method. Source: core/lsd/src/lsd/core/container.py:54.

Python
reorder(self, child: C, index: int) -> None
Python
child: C
index: int
self: (unannotated)

lsdtools.extend.Container.move_up#

Kind: method. Source: core/lsd/src/lsd/core/container.py:63.

Python
move_up(self, child: C) -> bool
Python
child: C
self: (unannotated)

lsdtools.extend.Container.move_down#

Kind: method. Source: core/lsd/src/lsd/core/container.py:73.

Python
move_down(self, child: C) -> bool
Python
child: C
self: (unannotated)

lsdtools.extend.CycleError#

Kind: class. Source: core/lsd/src/lsd/tree/graph.py:16.

Python
CycleError(self, cycle: Sequence[str]) -> None

Source docstring:

text
Entity dependencies form a cycle and cannot be ordered.

Implementation alias: lsd.tree.graph.CycleError.

Declared bases: ValueError.

lsdtools.extend.CycleError.__init__#

Kind: method. Source: core/lsd/src/lsd/tree/graph.py:19.

Python
__init__(self, cycle: Sequence[str]) -> None
Python
cycle: Sequence[str]
self: (unannotated)

lsdtools.extend.CycleError.cycle#

Kind: attribute. Source: core/lsd/src/lsd/tree/graph.py:20.

Python
cycle: (unannotated)
Python
cycle = list(cycle)

lsdtools.extend.DataProfile#

Kind: class. Source: core/lsd/src/lsd/symbology/profile.py:66.

Source docstring:

text
A strict JSON description of one externally selected scalar value source.

It deliberately contains no field name or binding. Consumers select the source field;
symbology compilation uses only this value distribution and never serializes it into a style.

Implementation alias: lsd.symbology.profile.DataProfile.

lsdtools.extend.DataProfile.kind#

Kind: attribute. Source: core/lsd/src/lsd/symbology/profile.py:73.

Python
kind: str

lsdtools.extend.DataProfile.count#

Kind: attribute. Source: core/lsd/src/lsd/symbology/profile.py:74.

Python
count: int

lsdtools.extend.DataProfile.range#

Kind: attribute. Source: core/lsd/src/lsd/symbology/profile.py:75.

Python
range: Optional[Tuple[float, float]]
Python
range = None

lsdtools.extend.DataProfile.quantiles#

Kind: attribute. Source: core/lsd/src/lsd/symbology/profile.py:76.

Python
quantiles: Tuple[Tuple[float, float], ...]
Python
quantiles = field(default_factory=tuple)

lsdtools.extend.DataProfile.histogram#

Kind: attribute. Source: core/lsd/src/lsd/symbology/profile.py:77.

Python
histogram: Tuple[HistogramBin | Tuple[float, float, int], ...]
Python
histogram = field(default_factory=tuple)

lsdtools.extend.DataProfile.categories#

Kind: attribute. Source: core/lsd/src/lsd/symbology/profile.py:78.

Python
categories: Tuple[Tuple[JSONValue, int], ...]
Python
categories = field(default_factory=tuple)

lsdtools.extend.DataProfile.measured#

Kind: attribute. Source: core/lsd/src/lsd/symbology/profile.py:84.

Python
measured: Optional[int]
Python
measured = None

lsdtools.extend.DataProfile.is_numeric#

Kind: method. Source: core/lsd/src/lsd/symbology/profile.py:201.

Python
is_numeric(self) -> bool
Python
self: (unannotated)

lsdtools.extend.DataProfile.minimum#

Kind: method. Source: core/lsd/src/lsd/symbology/profile.py:205.

Python
minimum(self) -> float
Python
self: (unannotated)

lsdtools.extend.DataProfile.maximum#

Kind: method. Source: core/lsd/src/lsd/symbology/profile.py:211.

Python
maximum(self) -> float
Python
self: (unannotated)

lsdtools.extend.DataProfile.to_range_percent#

Kind: method. Source: core/lsd/src/lsd/symbology/profile.py:216.

Python
to_range_percent(self, value: float) -> float
Python
self: (unannotated)
value: float

Source docstring:

text
Project one concrete numeric input into this profile's unbounded range percent.

lsdtools.extend.DataProfile.from_range_percent#

Kind: method. Source: core/lsd/src/lsd/symbology/profile.py:227.

Python
from_range_percent(self, percent: float) -> float
Python
percent: float
self: (unannotated)

Source docstring:

text
Resolve an unbounded range percent to a concrete numeric input.

lsdtools.extend.DataProfile.from_dict#

Kind: method. Source: core/lsd/src/lsd/symbology/profile.py:239.

Python
from_dict(cls, data: Mapping[str, JSONValue]) -> 'DataProfile'
Python
cls: (unannotated)
data: Mapping[str, JSONValue]

lsdtools.extend.DataProfile.from_json#

Kind: method. Source: core/lsd/src/lsd/symbology/profile.py:306.

Python
from_json(cls, text: str) -> 'DataProfile'
Python
cls: (unannotated)
text: str

lsdtools.extend.DataProfile.to_dict#

Kind: method. Source: core/lsd/src/lsd/symbology/profile.py:315.

Python
to_dict(self) -> Dict[str, JSONValue]
Python
self: (unannotated)

lsdtools.extend.DataProfile.to_json#

Kind: method. Source: core/lsd/src/lsd/symbology/profile.py:342.

Python
to_json(self, *, indent: Optional[int]=2) -> str
Python
indent: Optional[int]
self: (unannotated)

lsdtools.extend.DataProfile.clone#

Kind: method. Source: core/lsd/src/lsd/symbology/profile.py:345.

Python
clone(self) -> 'DataProfile'
Python
self: (unannotated)

lsdtools.extend.DatasetBinding#

Kind: class. Source: core/lsd/src/lsd/packages/dataset_editors.py:453.

Source docstring:

text
One declaration sealed to an exact anchor and upstream table output.

Implementation alias: lsd.packages.dataset_editors.DatasetBinding.

lsdtools.extend.DatasetBinding.editor_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:456.

Python
editor_id: OwnedContributionId

lsdtools.extend.DatasetBinding.entity_type#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:457.

Python
entity_type: str

lsdtools.extend.DatasetBinding.entity_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:458.

Python
entity_id: str

lsdtools.extend.DatasetBinding.source#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:459.

Python
source: _DatasetSourceSpec

lsdtools.extend.DatasetBinding.anchor_step_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:460.

Python
anchor_step_id: str

lsdtools.extend.DatasetBinding.upstream_output#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:461.

Python
upstream_output: OutputRef

lsdtools.extend.DatasetBinding.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/dataset_editors.py:490.

Python
to_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.DatasetBinding.digest#

Kind: method. Source: core/lsd/src/lsd/packages/dataset_editors.py:501.

Python
digest(self) -> str
Python
self: (unannotated)

lsdtools.extend.DatasetBoundInputSourceSpec#

Kind: class. Source: core/lsd/src/lsd/packages/dataset_editors.py:290.

Source docstring:

text
Select the upstream artifact bound to one exact consumer input.

This is the authored-input seam.  The consumer is an auditable semantic
anchor (for example ``RenderScene``); its producer may be any step.  The
host follows the persisted ``bind_from`` edge to the producer's exact
:class:`OutputRef` and never substitutes the consumer's derived output.

Implementation alias: lsd.packages.dataset_editors.DatasetBoundInputSourceSpec.

lsdtools.extend.DatasetBoundInputSourceSpec.anchor_step_type#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:299.

Python
anchor_step_type: str

lsdtools.extend.DatasetBoundInputSourceSpec.input_port#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:300.

Python
input_port: str

lsdtools.extend.DatasetBoundInputSourceSpec.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/dataset_editors.py:309.

Python
to_dict(self) -> dict[str, str]
Python
self: (unannotated)

lsdtools.extend.DatasetColumnKind#

Kind: class. Source: core/lsd/src/lsd/packages/dataset_editors.py:91.

Source docstring:

text
Host-rendered scalar types supported by the v1 table editor.

Implementation alias: lsd.packages.dataset_editors.DatasetColumnKind.

Declared bases: str, Enum.

lsdtools.extend.DatasetColumnKind.TEXT#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:94.

Python
TEXT = 'text'

lsdtools.extend.DatasetColumnKind.BOOLEAN#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:95.

Python
BOOLEAN = 'boolean'

lsdtools.extend.DatasetColumnKind.INTEGER#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:96.

Python
INTEGER = 'integer'

lsdtools.extend.DatasetColumnKind.NUMBER#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:97.

Python
NUMBER = 'number'

lsdtools.extend.DatasetColumnKind.DATE#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:98.

Python
DATE = 'date'

lsdtools.extend.DatasetColumnKind.DATETIME#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:99.

Python
DATETIME = 'datetime'

lsdtools.extend.DatasetColumnSpec#

Kind: class. Source: core/lsd/src/lsd/packages/dataset_editors.py:152.

Source docstring:

text
One typed dataset field exposed by the host-owned editor.

``filter_operators`` is an explicit package capability declaration.  An
empty tuple means that the host must not offer a predicate for this column.
Stable-key constraints are checked by :class:`DatasetEditorSpec`, which has
the complete key tuple.

Implementation alias: lsd.packages.dataset_editors.DatasetColumnSpec.

lsdtools.extend.DatasetColumnSpec.field#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:161.

Python
field: str

lsdtools.extend.DatasetColumnSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:162.

Python
title: str

lsdtools.extend.DatasetColumnSpec.kind#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:163.

Python
kind: DatasetColumnKind

lsdtools.extend.DatasetColumnSpec.editable#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:164.

Python
editable: bool
Python
editable = True

lsdtools.extend.DatasetColumnSpec.nullable#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:165.

Python
nullable: bool
Python
nullable = True

lsdtools.extend.DatasetColumnSpec.visible#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:166.

Python
visible: bool
Python
visible = True

lsdtools.extend.DatasetColumnSpec.filter_operators#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:167.

Python
filter_operators: tuple[DatasetFilterOperator, ...]
Python
filter_operators = ()

lsdtools.extend.DatasetColumnSpec.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/dataset_editors.py:214.

Python
to_dict(self) -> dict[str, Any]
Python
self: (unannotated)

Source docstring:

text
Return a detached action-catalog representation.

lsdtools.extend.DatasetEditorSpec#

Kind: class. Source: core/lsd/src/lsd/packages/dataset_editors.py:513.

Source docstring:

text
One package-owned v1 editor for one exact authored dataset source.

``entity_types`` is a closed, bounded set of exact serialized container
types.  It exists for one source contract intentionally hosted by more than
one container type (for example ``Entity`` and ``RuntimeEntity``); it is
neither subtype matching nor a wildcard.

``source`` is either a producer output or an upstream artifact reached
through one exact consumer input.  Both use stable step types in the
declaration and runtime ids only in the resolved :class:`DatasetBinding`.
Zero or multiple anchors are errors; there is no terminal, position,
loader-type, or similarly named port fallback.

``max_editable_rows`` optionally bounds the complete canonical output.  It
is an edit-capability fence, not a paging hint: the host may keep an
oversized table observable but must refuse its edit lease and mutations.

Implementation alias: lsd.packages.dataset_editors.DatasetEditorSpec.

lsdtools.extend.DatasetEditorSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:532.

Python
id: OwnedContributionId

lsdtools.extend.DatasetEditorSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:533.

Python
title: str

lsdtools.extend.DatasetEditorSpec.entity_types#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:534.

Python
entity_types: tuple[str, ...]

lsdtools.extend.DatasetEditorSpec.source#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:535.

Python
source: _DatasetSourceSpec

lsdtools.extend.DatasetEditorSpec.key_columns#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:536.

Python
key_columns: tuple[str, ...]

lsdtools.extend.DatasetEditorSpec.feature#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:537.

Python
feature: DatasetFeatureReferenceSpec

lsdtools.extend.DatasetEditorSpec.columns#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:538.

Python
columns: tuple[DatasetColumnSpec, ...]

lsdtools.extend.DatasetEditorSpec.patch#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:539.

Python
patch: DatasetPatchSpec

lsdtools.extend.DatasetEditorSpec.max_editable_rows#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:540.

Python
max_editable_rows: int | None
Python
max_editable_rows = None

lsdtools.extend.DatasetEditorSpec.version#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:541.

Python
version: str
Python
version = '1.0'

lsdtools.extend.DatasetEditorSpec.matches_entity_type#

Kind: method. Source: core/lsd/src/lsd/packages/dataset_editors.py:631.

Python
matches_entity_type(self, entity_type: str) -> bool
Python
entity_type: str
self: (unannotated)

Source docstring:

text
Whether this declaration names this exact serialized type id.

lsdtools.extend.DatasetEditorSpec.bind_source#

Kind: method. Source: core/lsd/src/lsd/packages/dataset_editors.py:636.

Python
bind_source(self, *, entity_id: str, entity_type: str, anchor_step_id: str, anchor_step_type: str, upstream_output: OutputRef) -> DatasetBinding
Python
anchor_step_id: str
anchor_step_type: str
entity_id: str
entity_type: str
self: (unannotated)
upstream_output: OutputRef

Source docstring:

text
Validate and seal one host-resolved source coordinate.

lsdtools.extend.DatasetEditorSpec.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/dataset_editors.py:673.

Python
to_dict(self) -> dict[str, Any]
Python
self: (unannotated)

Source docstring:

text
Return a detached, callback-free action-catalog representation.

lsdtools.extend.DatasetFeatureKeyBinding#

Kind: class. Source: core/lsd/src/lsd/packages/dataset_editors.py:318.

Source docstring:

text
Map one dataset key column to one Viewer semantic-reference field.

Implementation alias: lsd.packages.dataset_editors.DatasetFeatureKeyBinding.

lsdtools.extend.DatasetFeatureKeyBinding.dataset_field#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:321.

Python
dataset_field: str

lsdtools.extend.DatasetFeatureKeyBinding.reference_field#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:322.

Python
reference_field: str

lsdtools.extend.DatasetFeatureKeyBinding.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/dataset_editors.py:328.

Python
to_dict(self) -> dict[str, str]
Python
self: (unannotated)

lsdtools.extend.DatasetFeatureReferenceSpec#

Kind: class. Source: core/lsd/src/lsd/packages/dataset_editors.py:336.

Source docstring:

text
Bridge table row keys to one exact Viewer semantic reference.

``key_bindings`` must consume every stable dataset key exactly once.
``layer_constant_fields`` covers reference fields such as a scene id that
are absent from an authored component table but constant across one exact
resident layer generation.  The Viewer publishes only constants it has
verified across every resident; the table never performs partial matching.

Implementation alias: lsd.packages.dataset_editors.DatasetFeatureReferenceSpec.

lsdtools.extend.DatasetFeatureReferenceSpec.namespace#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:346.

Python
namespace: str

lsdtools.extend.DatasetFeatureReferenceSpec.key_bindings#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:347.

Python
key_bindings: tuple[DatasetFeatureKeyBinding, ...]

lsdtools.extend.DatasetFeatureReferenceSpec.layer_constant_fields#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:348.

Python
layer_constant_fields: tuple[str, ...]
Python
layer_constant_fields = ()

lsdtools.extend.DatasetFeatureReferenceSpec.contract_version#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:349.

Python
contract_version: str
Python
contract_version = '1.0'

lsdtools.extend.DatasetFeatureReferenceSpec.reference_fields#

Kind: method. Source: core/lsd/src/lsd/packages/dataset_editors.py:405.

Python
reference_fields(self) -> tuple[str, ...]
Python
self: (unannotated)

lsdtools.extend.DatasetFeatureReferenceSpec.validate_key_columns#

Kind: method. Source: core/lsd/src/lsd/packages/dataset_editors.py:411.

Python
validate_key_columns(self, key_columns: tuple[str, ...]) -> None
Python
key_columns: tuple[str, ...]
self: (unannotated)

lsdtools.extend.DatasetFeatureReferenceSpec.reference_for#

Kind: method. Source: core/lsd/src/lsd/packages/dataset_editors.py:418.

Python
reference_for(self, key: dict[str, Any], *, layer_constants: dict[str, Any]) -> dict[str, Any]
Python
key: dict[str, Any]
layer_constants: dict[str, Any]
self: (unannotated)

lsdtools.extend.DatasetFeatureReferenceSpec.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/dataset_editors.py:440.

Python
to_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.DatasetFilterOperator#

Kind: class. Source: core/lsd/src/lsd/packages/dataset_editors.py:102.

Source docstring:

text
Closed v1 predicate vocabulary for one declared column.

Implementation alias: lsd.packages.dataset_editors.DatasetFilterOperator.

Declared bases: str, Enum.

lsdtools.extend.DatasetFilterOperator.EQ#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:105.

Python
EQ = 'eq'

lsdtools.extend.DatasetFilterOperator.NE#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:106.

Python
NE = 'ne'

lsdtools.extend.DatasetFilterOperator.LT#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:107.

Python
LT = 'lt'

lsdtools.extend.DatasetFilterOperator.LE#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:108.

Python
LE = 'le'

lsdtools.extend.DatasetFilterOperator.GT#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:109.

Python
GT = 'gt'

lsdtools.extend.DatasetFilterOperator.GE#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:110.

Python
GE = 'ge'

lsdtools.extend.DatasetFilterOperator.BETWEEN#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:111.

Python
BETWEEN = 'between'

lsdtools.extend.DatasetFilterOperator.CONTAINS#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:112.

Python
CONTAINS = 'contains'

lsdtools.extend.DatasetFilterOperator.STARTS_WITH#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:113.

Python
STARTS_WITH = 'starts_with'

lsdtools.extend.DatasetFilterOperator.IN#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:114.

Python
IN = 'in'

lsdtools.extend.DatasetFilterOperator.IS_NULL#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:115.

Python
IS_NULL = 'is_null'

lsdtools.extend.DatasetOutputSourceSpec#

Kind: class. Source: core/lsd/src/lsd/packages/dataset_editors.py:267.

Source docstring:

text
Select one exact table output produced by the edited entity.

The step type is its stable serialized identity, never its instance id.
Runtime resolution must find exactly one matching producer.

Implementation alias: lsd.packages.dataset_editors.DatasetOutputSourceSpec.

lsdtools.extend.DatasetOutputSourceSpec.step_type#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:274.

Python
step_type: str

lsdtools.extend.DatasetOutputSourceSpec.output_port#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:275.

Python
output_port: str

lsdtools.extend.DatasetOutputSourceSpec.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/dataset_editors.py:281.

Python
to_dict(self) -> dict[str, str]
Python
self: (unannotated)

lsdtools.extend.DatasetPatchSpec#

Kind: class. Source: core/lsd/src/lsd/packages/dataset_editors.py:229.

Source docstring:

text
The exact feature-adapter operation for canonical bulk field patches.

The host supplies stable key objects under ``target.keys`` and only the
explicitly touched fields under ``value.changes``.  Adapter schemas remain
the authoritative validation and domain-invariant boundary.

Implementation alias: lsd.packages.dataset_editors.DatasetPatchSpec.

lsdtools.extend.DatasetPatchSpec.adapter_kind#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:237.

Python
adapter_kind: str

lsdtools.extend.DatasetPatchSpec.operation#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:238.

Python
operation: str

lsdtools.extend.DatasetPatchSpec.contract_version#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:239.

Python
contract_version: str
Python
contract_version = '1.0'

lsdtools.extend.DatasetPatchSpec.TARGET_KEYS_FIELD#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:241.

Python
TARGET_KEYS_FIELD: ClassVar[str]
Python
TARGET_KEYS_FIELD = 'keys'

lsdtools.extend.DatasetPatchSpec.VALUE_CHANGES_FIELD#

Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:242.

Python
VALUE_CHANGES_FIELD: ClassVar[str]
Python
VALUE_CHANGES_FIELD = 'changes'

lsdtools.extend.DatasetPatchSpec.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/dataset_editors.py:254.

Python
to_dict(self) -> dict[str, Any]
Python
self: (unannotated)

Source docstring:

text
Return the operation identity and its fixed v1 envelope.

lsdtools.extend.DeliverStep#

Kind: class. Source: core/lsd/src/lsd/flow/steps.py:1598.

Source docstring:

text
Base for delivery / export steps.

Subclass and implement ``run(inputs)``.
Return ``None`` for a pure side-effect (write to DB, POST to API, etc.).
Return a ``pa.Table`` to save the result as a Parquet artifact.

    class SaveToFile(DeliverStep):
        out_path = param(str, required=True, label="Output File", widget="file")

        def run(self, inputs: Tables) -> None:
            import pyarrow.csv as pac
            pac.write_csv(inputs.main, self.out_path)

DeliverStep is a sink by default — ``output_ports = []``.
If your deliver step produces a table artifact, override::

    class TransformAndSave(DeliverStep):
        output_ports = ["output"]
        def run(self, inputs): ...

Implementation alias: lsd.flow.steps.DeliverStep.

Declared bases: _Step.

lsdtools.extend.DeliverStep.output_ports#

Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:1621.

Python
output_ports: ClassVar[List[str]]
Python
output_ports = []

lsdtools.extend.DeliverStep.run#

Kind: method. Source: core/lsd/src/lsd/flow/steps.py:1623.

Python
run(self, inputs: Tables) -> Union[pa.Table, StepOutputs, None]
Python
inputs: Tables
self: (unannotated)

lsdtools.extend.DeviceDescription#

Kind: class. Source: services/input/src/lsd_input/layouts.py:299.

Source docstring:

text
Bounded hardware facts reported by a backend; all matcher comparisons are exact.

Implementation alias: lsd_input.layouts.DeviceDescription.

lsdtools.extend.DeviceDescription.interface#

Kind: attribute. Source: services/input/src/lsd_input/layouts.py:302.

Python
interface: str

lsdtools.extend.DeviceDescription.device_class#

Kind: attribute. Source: services/input/src/lsd_input/layouts.py:303.

Python
device_class: str
Python
device_class = ''

lsdtools.extend.DeviceDescription.manufacturer#

Kind: attribute. Source: services/input/src/lsd_input/layouts.py:304.

Python
manufacturer: str
Python
manufacturer = ''

lsdtools.extend.DeviceDescription.product#

Kind: attribute. Source: services/input/src/lsd_input/layouts.py:305.

Python
product: str
Python
product = ''

lsdtools.extend.DeviceDescription.serial#

Kind: attribute. Source: services/input/src/lsd_input/layouts.py:306.

Python
serial: str
Python
serial = ''

lsdtools.extend.DeviceDescription.version#

Kind: attribute. Source: services/input/src/lsd_input/layouts.py:307.

Python
version: str
Python
version = ''

lsdtools.extend.DeviceDescription.capabilities#

Kind: attribute. Source: services/input/src/lsd_input/layouts.py:308.

Python
capabilities: Mapping[str, Any]
Python
capabilities = field(default_factory=dict)

lsdtools.extend.DeviceDescription.usages#

Kind: attribute. Source: services/input/src/lsd_input/layouts.py:309.

Python
usages: tuple[str, ...]
Python
usages = ()

lsdtools.extend.DeviceDescription.to_dict#

Kind: method. Source: services/input/src/lsd_input/layouts.py:332.

Python
to_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.DiagnosticSeverity#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:478.

Implementation alias: lsd.packages.viewer_extensions.DiagnosticSeverity.

Declared bases: str, Enum.

lsdtools.extend.DiagnosticSeverity.INFO#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:479.

Python
INFO = 'info'

lsdtools.extend.DiagnosticSeverity.WARNING#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:480.

Python
WARNING = 'warning'

lsdtools.extend.DiagnosticSeverity.ERROR#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:481.

Python
ERROR = 'error'

lsdtools.extend.EditOp#

Kind: class. Source: core/git/src/lsd_git/editops.py:202.

Source docstring:

text
One durable change to one dataset, stated so any layer can carry it.

``target`` addresses what inside the dataset changes (``{"feature_id": 3,
"vertex_index": 2}`` for a polyline vertex, ``{"row": 91}`` for a block-model cell) and
``value`` says what it becomes. Both are kind-specific by design: the adapter for a kind
decides what it accepts, so a new kind needs no change here.

Implementation alias: lsd_git.editops.EditOp.

lsdtools.extend.EditOp.op#

Kind: attribute. Source: core/git/src/lsd_git/editops.py:211.

Python
op: str

lsdtools.extend.EditOp.kind#

Kind: attribute. Source: core/git/src/lsd_git/editops.py:212.

Python
kind: str

lsdtools.extend.EditOp.contract_version#

Kind: attribute. Source: core/git/src/lsd_git/editops.py:213.

Python
contract_version: str

lsdtools.extend.EditOp.context#

Kind: attribute. Source: core/git/src/lsd_git/editops.py:214.

Python
context: MutationContext

lsdtools.extend.EditOp.dataset#

Kind: attribute. Source: core/git/src/lsd_git/editops.py:215.

Python
dataset: str

lsdtools.extend.EditOp.target#

Kind: attribute. Source: core/git/src/lsd_git/editops.py:216.

Python
target: Mapping[str, Any]

lsdtools.extend.EditOp.value#

Kind: attribute. Source: core/git/src/lsd_git/editops.py:217.

Python
value: Mapping[str, Any]

lsdtools.extend.EditOp.previous#

Kind: attribute. Source: core/git/src/lsd_git/editops.py:218.

Python
previous: Mapping[str, Any]

lsdtools.extend.EditOp.version#

Kind: attribute. Source: core/git/src/lsd_git/editops.py:219.

Python
version: int
Python
version = field(default=EDIT_OP_VERSION)

lsdtools.extend.EditOp.to_dict#

Kind: method. Source: core/git/src/lsd_git/editops.py:240.

Python
to_dict(self) -> Dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.EditOp.from_dict#

Kind: method. Source: core/git/src/lsd_git/editops.py:255.

Python
from_dict(cls, data: Any) -> 'EditOp'
Python
cls: (unannotated)
data: Any

lsdtools.extend.EditOp.reseal_actor#

Kind: method. Source: core/git/src/lsd_git/editops.py:283.

Python
reseal_actor(self, actor: Author) -> 'EditOp'
Python
actor: Author
self: (unannotated)

Source docstring:

text
Return the same durable intent attributed to an authenticated session author.

lsdtools.extend.EditOp.reseal_context#

Kind: method. Source: core/git/src/lsd_git/editops.py:288.

Python
reseal_context(self, context: MutationContext) -> 'EditOp'
Python
context: MutationContext
self: (unannotated)

Source docstring:

text
Return the same intent with one complete authority-owned context.

lsdtools.extend.EditOp.to_commit_op#

Kind: method. Source: core/git/src/lsd_git/editops.py:296.

Python
to_commit_op(self) -> Dict[str, Any]
Python
self: (unannotated)

Source docstring:

text
This op as the ``{event_type, data, status}`` record a commit already stores.

lsdtools.extend.EditOp.from_commit_op#

Kind: method. Source: core/git/src/lsd_git/editops.py:301.

Python
from_commit_op(cls, record: Any) -> 'EditOp'
Python
cls: (unannotated)
record: Any

lsdtools.extend.EntityTemplate#

Kind: class. Source: core/lsd/src/lsd/packages/contributions.py:595.

Source docstring:

text
A package's recipe for turning dropped file(s) into a pre-wired import unit.

The required import service (``lsd_wizard``) matches a file to a template by ``extensions`` **and** content
(``sniff`` / the role alias tables), maps columns, validates, then calls
``build(host, *, files, mapping, **opts) -> Entity`` to create + attach the entity. lsd core carries
only data + callables; the import service holds the matching/mapping/validation logic and the
front-ends (desktop dialog, CLI, agent) drive it. This is the single data-import contribution.

- ``extensions``  lowercase suffixes incl. the dot (``(".csv",)``); ``("*",)`` is the catch-all.
- ``roles``       the data slots (``()`` ⇒ single file, no column mapping).
- ``build``       ``build(host, *, files: dict[role,str], mapping: dict[role,dict], **opts) -> Entity``.
- ``sniff``       optional content scorer ``sniff(probe) -> float`` (0..1); default derives from roles.
- ``priority``    higher wins when several templates accept a file.
- ``params``      optional ``Configurable`` **subclass** declaring construction parameters (a row
                  filter, an x/y/z mapping, options…). The wizard renders its ``param()`` fields with
                  the standard inspector and passes the harvested ``{name: value}`` dict to ``build``
                  as ``params=`` — so a template author exposes exactly the options they want, and the
                  result is the same entity you could build by hand. Omit it for a fixed pipeline.
- ``preview``     the wizard's left-pane preview kind: ``"table"`` (sample rows — always available),
                  ``"points3d"`` (a small 3D snapshot of the warmed entity's rendered geometry), or
                  ``"auto"`` (default — 3D when the warmed entity produced renderable geometry, else
                  the table).
- ``present_in``  optional stable ``MainViewType.kind`` to present the committed entity in. This is
                  a best-effort shell hint: headless imports ignore it, and it never activates a
                  package or names an exact live view instance.
- ``present_command``  optional stable command action to invoke in that exact presented view after
                       the imported entity has produced visible geometry. The view owns the command;
                       core and the import service only carry its identifier.

Implementation alias: lsd.packages.contributions.EntityTemplate.

lsdtools.extend.EntityTemplate.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:625.

Python
id: str

lsdtools.extend.EntityTemplate.label#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:626.

Python
label: str

lsdtools.extend.EntityTemplate.extensions#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:627.

Python
extensions: Tuple[str, ...]

lsdtools.extend.EntityTemplate.build#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:628.

Python
build: Callable[..., Any]

lsdtools.extend.EntityTemplate.roles#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:629.

Python
roles: Tuple[FileRole, ...]
Python
roles = ()

lsdtools.extend.EntityTemplate.sniff#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:630.

Python
sniff: Optional[Callable[[Any], float]]
Python
sniff = None

lsdtools.extend.EntityTemplate.priority#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:631.

Python
priority: int
Python
priority = 0

lsdtools.extend.EntityTemplate.icon#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:632.

Python
icon: Optional[str]
Python
icon = None

lsdtools.extend.EntityTemplate.params#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:633.

Python
params: Optional[type]
Python
params = None

lsdtools.extend.EntityTemplate.preview#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:634.

Python
preview: str
Python
preview = 'auto'

lsdtools.extend.EntityTemplate.package#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:635.

Python
package: Optional[str]
Python
package = None

lsdtools.extend.EntityTemplate.present_in#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:636.

Python
present_in: Optional[str]
Python
present_in = None

lsdtools.extend.EntityTemplate.present_command#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:637.

Python
present_command: Optional[str]
Python
present_command = None

lsdtools.extend.EntityTypeSpec#

Kind: class. Source: core/lsd/src/lsd/packages/contributions.py:137.

Source docstring:

text
One package-owned entity type users may create.

Entity classes contain domain state and behaviour only.  Creation discovery,
naming, and presentation belong to this mounted contribution instead:

- ``type_id`` is the exact serialized type id.
- ``title`` is the human creation label.
- ``entity_class`` supplies the parameter schema used by authoring UIs/CLI.
- ``factory(name=..., **params)`` creates a fresh instance.
- ``icon`` is optional creation-surface presentation.  Entity trees remain
  neutral unless a package contributes a :class:`TreeDecorationSpec`.

Each project's contribution scope filters this declaration with all other declarations owned
by the package, so every authoring surface in that project sees the same active catalog.

Implementation alias: lsd.packages.contributions.EntityTypeSpec.

lsdtools.extend.EntityTypeSpec.type_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:154.

Python
type_id: str

lsdtools.extend.EntityTypeSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:155.

Python
title: str

lsdtools.extend.EntityTypeSpec.entity_class#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:156.

Python
entity_class: type

lsdtools.extend.EntityTypeSpec.factory#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:157.

Python
factory: Callable[..., Any]

lsdtools.extend.EntityTypeSpec.icon#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:158.

Python
icon: Optional[str]
Python
icon = None

lsdtools.extend.EntityTypeSpec.package#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:159.

Python
package: Optional[str]
Python
package = None

lsdtools.extend.EntityTypeSpec.create#

Kind: method. Source: core/lsd/src/lsd/packages/contributions.py:193.

Python
create(self, name: str, **params: Any) -> Any
Python
name: str
params: Any
self: (unannotated)

Source docstring:

text
Create one entity through the declaration's exact factory.

lsdtools.extend.Event#

Kind: class. Source: core/lsd/src/lsd/core/event_bus.py:244.

Source docstring:

text
Immutable event payload delivered to subscribers.

Implementation alias: lsd.core.event_bus.Event.

lsdtools.extend.Event.event_type#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:246.

Python
event_type: str

lsdtools.extend.Event.data#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:247.

Python
data: Mapping[str, Any]

lsdtools.extend.Event.data_snapshot#

Kind: method. Source: core/lsd/src/lsd/core/event_bus.py:261.

Python
data_snapshot(self) -> Dict[str, Any]
Python
self: (unannotated)

Source docstring:

text
Return detached structured data suitable for an integration boundary.

Subscribers read :attr:`data` directly.  A bridge that persists or
serializes an event uses this snapshot so nested immutable mappings
remain mappings instead of being coerced to their string repr.

lsdtools.extend.EventBus#

Kind: class. Source: core/lsd/src/lsd/core/event_bus.py:288.

Python
EventBus(self) -> None

Source docstring:

text
Async publish/subscribe event bus.

Handlers receive an Event(event_type, data) and run in priority order
(lower number = called first). Errors in one handler are logged and
do not stop the remaining handlers.

``_subs`` is kept sorted by priority at all times; ``_cache`` maps
event_type strings to the pre-filtered matching subscription list so
repeated emit() calls pay O(1) lookup instead of O(n) scan.

``_lock`` guards the short subscribe/unsubscribe/cache-fill sections so
on/off/emit are safe from worker threads. Handlers always run OUTSIDE the
lock, over a snapshot list that on/off never mutate in place — so an
unsubscribed handler may still receive one in-flight event (today's
single-threaded semantics, preserved).

Implementation alias: lsd.core.event_bus.EventBus.

lsdtools.extend.EventBus.__init__#

Kind: method. Source: core/lsd/src/lsd/core/event_bus.py:308.

Python
__init__(self) -> None
Python
self: (unannotated)

lsdtools.extend.EventBus.on#

Kind: method. Source: core/lsd/src/lsd/core/event_bus.py:315.

Python
on(self, pattern: str, handler: Handler, priority: int=100) -> None
Python
handler: Handler
pattern: str
priority: int
self: (unannotated)

Source docstring:

text
Subscribe an async handler to events matching pattern.

lsdtools.extend.EventBus.off#

Kind: method. Source: core/lsd/src/lsd/core/event_bus.py:345.

Python
off(self, pattern: str, handler: Handler) -> None
Python
handler: Handler
pattern: str
self: (unannotated)

Source docstring:

text
Unsubscribe a handler from a pattern.

The handler may be given as a different reference to the same callable — notably a
bound method re-accessed from its object.

lsdtools.extend.EventBus.emit#

Kind: method. Source: core/lsd/src/lsd/core/event_bus.py:371.

Python
emit(self, event_type: str, **data: Any) -> None
Python
data: Any
event_type: str
self: (unannotated)

Source docstring:

text
Fire event to all matching handlers. Errors are logged, not raised.

lsdtools.extend.EventBus.emit_collect#

Kind: method. Source: core/lsd/src/lsd/core/event_bus.py:385.

Python
emit_collect(self, event_type: str, **data: Any) -> List[Any]
Python
data: Any
event_type: str
self: (unannotated)

Source docstring:

text
Fire event and collect non-None return values (plugin/contribution pattern).

lsdtools.extend.Events#

Kind: class. Source: core/lsd/src/lsd/core/event_bus.py:406.

Source docstring:

text
Canonical lifecycle event names with their payload fields.

Subscribe via ``bus.on(Events.STEP_FINISHED, handler)`` or with a glob
(e.g. ``bus.on("pipeline/step/**", h)``). Every payload includes the
keys documented here; unknown extra keys are forward-compatible additions.

Payload values are exact JSON — dict/list/str/bool/int/finite-float/None
with string keys; anything else is refused when the Event is constructed.
Live objects never ride an event: emitters convert first (ids, names,
``to_dict()`` snapshots), which is why the ``entity``/``configurable``
payloads below are dicts.

Engine / run_all level
----------------------
RUN_STARTED     run_id, engine_id, order:list[entity_id], entity_names:mapping[id,name],
                parallel:int, entity_count:int
RUN_FINISHED    run_id, engine_id, ok:bool, ran:int, failed:int, blocked:int,
                duration_s:float, error:str|None
ENTITY_STARTED  run_id, name, entity_id
ENTITY_FINISHED run_id, name, entity_id, ok:bool, rows:int, duration_s:float,
                error:str|None
                (``entity_id`` is how a watching View identifies the entity across a
                 rename — see ``lsd.core.view.View.watch``)
ENTITY_BLOCKED  run_id, name, entity_id, upstream:list[entity_id]

Workspace entity forest and Engine view presentation
-----------------------------------------------------
WORKSPACE_ENTITY_ADDED    workspace_id, entity_id, parent_id, name,
                          attached_entity_ids:list[entity_id],
                          entity:dict — the entity's validated ``to_dict()``
                          snapshot, captured before the mutation commits
WORKSPACE_ENTITY_REMOVED  workspace_id, entity_id, parent_id, name,
                          detached_entity_ids, entity:dict
WORKSPACE_ENTITY_MOVED    workspace_id, entity_id, old_parent_id,
                          new_parent_id, name
WORKSPACE_ENTITY_REPLACED workspace_id, entity_id, parent_id, name,
                          detached_entity_ids, attached_entity_ids,
                          entity:dict, replaced_entity:dict (``to_dict()``
                          snapshots of the replacement and replaced subtrees)
WORKSPACE_ENTITY_REORDERED workspace_id, entity_id, parent_id, old_index, new_index
PROJECT_SEMANTICS_CHANGED workspace_id, version:1, expected_revision, revision,
                          variables:dict, symbology:dict
PROJECT_STYLES_CHANGED    workspace_id, version:1, styles:list
PROJECT_SHADERS_CHANGED   workspace_id, version:1, revision, shaders:list
METADATA_CHANGED        type, id, entity_id, workspace_id, key,
                        old_value, new_value
ENTITY_TRAITS_CHANGED   type, id, entity_id, workspace_id, old_traits,
                        new_traits, added, removed
VIEW_ADDED             engine_id, view_id, name
VIEW_REMOVED           engine_id, view_id, name
VIEW_SHOWN             engine_id, count:int, mode:str   (Engine.show over all views)
                       view_id, name, mode:str          (View.show for one view)
CONFIGURABLE_ADDED     entity_id, entity_name, configurable_id,
                       configurable:dict (its ``to_dict()`` snapshot),
                       configurable_type
CONFIGURABLE_REMOVED   entity_id, entity_name, configurable_id,
                       configurable:dict, configurable_type

Pipeline level (one pipeline per entity)
-----------------------------------------
PIPELINE_STARTED   run_id, entity_id, entity_name, step_count:int
PIPELINE_FINISHED  run_id, entity_id, ok:bool, ran:int, skipped:int, rows:int,
                   duration_s:float, error_step:str|None

Step level (all carry ``entity_id`` so consumers attribute steps correctly
when entities run concurrently under ``max_parallel > 1``)
----------
STEP_STARTED   run_id, step_class, step_id, entity_id, index:int, total:int
STEP_PROGRESS  run_id, step_id, entity_id, fraction:float, message:str
STEP_SKIPPED   run_id, step_class, step_id, entity_id, rows:int, output_paths:dict, outputs:dict,
               reason:str — either a cache decision ("cached"), or a GATE reason from
               ``runner._gate_reason``: "package-missing" (a Missing* placeholder),
               "package-disabled" (its package is off for this project), or the package's
               own freeze string (e.g. "seat-exceeded") when the host set one.
STEP_MATERIALIZED run_id, step_class, step_id, entity_id, output_paths:dict
                  - fresh artifacts have been written but their paths have not yet been
                  published to viewer/other consumers. Host-owned materialization transforms
                  run at this boundary, never after publication.
TRIP_UPDATED   run_id, step_class, step_id, entity_id, output_port, trip_id, version_key,
               layout:int, versions:dict, num_rows:int, handle, tick:int, final:bool,
               snapshot:str|None, snapshot_id:str|None
               - a system committed a new Trip value. Nothing was written: the value is
               resident and reachable through ``lsd.trip.registry`` by ``handle``. ``final``
               is False for a preview tick inside a system group; ``snapshot`` is set once
               the runner has written the Trip's parquet snapshot (a second TRIP_UPDATED with
               the same versions), which is the only form that survives a restart.
STEP_FINISHED  run_id, step_class, step_id, entity_id, rows:int, duration_s:float,
               output_paths:dict, outputs:dict
STEP_FAILED    run_id, step_class, step_id, entity_id, error:str, duration_s:float

Structure level (the Workspace-owned facts every tree/inspector consumes)
----------
WORKSPACE_ENTITY_ADDED / _REMOVED / _MOVED / _REPLACED / _REORDERED
CONFIGURABLE_ADDED / _REMOVED / _REORDERED
STEP_INPUT_CHANGED   one step output re-bound to another step's input

Note: STEP_FINISHED/STEP_SKIPPED carry BOTH ``output_paths`` (manifest paths
on disk, dict name->path) and ``outputs`` (the step's declared output values
via ``get_outputs()``). UI consumers (for example ``lsd-view-pipeline``) read
``outputs``; both keys are present on both events.

Implementation alias: lsd.core.event_bus.Events.

lsdtools.extend.Events.RUN_STARTED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:510.

Python
RUN_STARTED = 'engine/run/started'

lsdtools.extend.Events.RUN_FINISHED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:511.

Python
RUN_FINISHED = 'engine/run/finished'

lsdtools.extend.Events.ENTITY_STARTED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:512.

Python
ENTITY_STARTED = 'engine/entity/started'

lsdtools.extend.Events.ENTITY_FINISHED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:513.

Python
ENTITY_FINISHED = 'engine/entity/finished'

lsdtools.extend.Events.ENTITY_BLOCKED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:514.

Python
ENTITY_BLOCKED = 'engine/entity/blocked'

lsdtools.extend.Events.WORKSPACE_ENTITY_ADDED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:517.

Python
WORKSPACE_ENTITY_ADDED = 'workspace/entity/added'

lsdtools.extend.Events.WORKSPACE_ENTITY_REMOVED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:518.

Python
WORKSPACE_ENTITY_REMOVED = 'workspace/entity/removed'

lsdtools.extend.Events.WORKSPACE_ENTITY_MOVED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:519.

Python
WORKSPACE_ENTITY_MOVED = 'workspace/entity/moved'

lsdtools.extend.Events.WORKSPACE_ENTITY_REPLACED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:520.

Python
WORKSPACE_ENTITY_REPLACED = 'workspace/entity/replaced'

lsdtools.extend.Events.WORKSPACE_ENTITY_REORDERED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:521.

Python
WORKSPACE_ENTITY_REORDERED = 'workspace/entity/reordered'

lsdtools.extend.Events.PROJECT_SEMANTICS_CHANGED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:522.

Python
PROJECT_SEMANTICS_CHANGED = 'workspace/project-semantics/changed'

lsdtools.extend.Events.PROJECT_STYLES_CHANGED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:526.

Python
PROJECT_STYLES_CHANGED = 'workspace/project-styles/changed'

lsdtools.extend.Events.PROJECT_SHADERS_CHANGED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:527.

Python
PROJECT_SHADERS_CHANGED = 'workspace/project-shaders/changed'

lsdtools.extend.Events.CONFIGURABLE_ADDED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:528.

Python
CONFIGURABLE_ADDED = 'entity/configurable/added'

lsdtools.extend.Events.CONFIGURABLE_REMOVED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:529.

Python
CONFIGURABLE_REMOVED = 'entity/configurable/removed'

lsdtools.extend.Events.CONFIGURABLE_REORDERED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:530.

Python
CONFIGURABLE_REORDERED = 'entity/configurable/reordered'

lsdtools.extend.Events.STEP_INPUT_CHANGED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:531.

Python
STEP_INPUT_CHANGED = 'pipeline/step/input/changed'

lsdtools.extend.Events.VIEW_ADDED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:532.

Python
VIEW_ADDED = 'engine/view/added'

lsdtools.extend.Events.VIEW_REMOVED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:533.

Python
VIEW_REMOVED = 'engine/view/removed'

lsdtools.extend.Events.VIEW_SHOWN#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:534.

Python
VIEW_SHOWN = 'engine/view/shown'

lsdtools.extend.Events.PIPELINE_STARTED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:537.

Python
PIPELINE_STARTED = 'pipeline/started'

lsdtools.extend.Events.PIPELINE_FINISHED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:538.

Python
PIPELINE_FINISHED = 'pipeline/finished'

lsdtools.extend.Events.STEP_STARTED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:541.

Python
STEP_STARTED = 'pipeline/step/started'

lsdtools.extend.Events.STEP_PROGRESS#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:542.

Python
STEP_PROGRESS = 'pipeline/step/progress'

lsdtools.extend.Events.STEP_SKIPPED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:543.

Python
STEP_SKIPPED = 'pipeline/step/skipped'

lsdtools.extend.Events.STEP_MATERIALIZED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:544.

Python
STEP_MATERIALIZED = 'pipeline/step/materialized'

lsdtools.extend.Events.TRIP_UPDATED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:546.

Python
TRIP_UPDATED = 'pipeline/trip/updated'

lsdtools.extend.Events.STEP_FINISHED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:547.

Python
STEP_FINISHED = 'pipeline/step/finished'

lsdtools.extend.Events.STEP_FAILED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:548.

Python
STEP_FAILED = 'pipeline/step/failed'

lsdtools.extend.Events.ENTITY_RENAMED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:551.

Python
ENTITY_RENAMED = 'entity/renamed'

lsdtools.extend.Events.ENTITY_TRAITS_CHANGED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:552.

Python
ENTITY_TRAITS_CHANGED = 'entity/traits/changed'

lsdtools.extend.Events.PACKAGE_VERSION_MISMATCH#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:555.

Python
PACKAGE_VERSION_MISMATCH = 'package/version/mismatch'

lsdtools.extend.Events.FILE_CHANGED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:558.

Python
FILE_CHANGED = 'file/changed'

lsdtools.extend.Events.PARAMETER_CHANGED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:561.

Python
PARAMETER_CHANGED = 'configurable/parameter/changed'

lsdtools.extend.Events.PARAMETER_BATCH_CHANGED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:562.

Python
PARAMETER_BATCH_CHANGED = 'configurable/parameter/batch_changed'

lsdtools.extend.Events.METADATA_CHANGED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:563.

Python
METADATA_CHANGED = 'configurable/metadata/changed'

lsdtools.extend.Events.VIEW_ACTION_INVOKED#

Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:566.

Python
VIEW_ACTION_INVOKED = 'view/action/invoked'

lsdtools.extend.ExtensionSemantics#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:181.

Implementation alias: lsd.packages.viewer_extensions.ExtensionSemantics.

Declared bases: str, Enum.

lsdtools.extend.ExtensionSemantics.PROVIDE#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:182.

Python
PROVIDE = 'provide'

lsdtools.extend.ExtensionSemantics.AUGMENT#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:183.

Python
AUGMENT = 'augment'

lsdtools.extend.ExtensionSemantics.ADD#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:184.

Python
ADD = 'add'

lsdtools.extend.FIELD_UNIT_METADATA_KEY#

Kind: value. Source: core/lsd/src/lsd/core/table_profile.py:58.

Python
FIELD_UNIT_METADATA_KEY = b'lsd:unit'

Implementation alias: lsd.core.table_profile.FIELD_UNIT_METADATA_KEY.

lsdtools.extend.FamilyPresetPayload#

Kind: class. Source: core/style/src/lsd_style/assets.py:284.

Source docstring:

text
A complete standard document for one engineering family and table role.

Implementation alias: lsd_style.assets.FamilyPresetPayload.

Declared bases: StyleAssetPayload.

lsdtools.extend.FamilyPresetPayload.document#

Kind: attribute. Source: core/style/src/lsd_style/assets.py:287.

Python
document: Dict[str, Any]

lsdtools.extend.FamilyPresetPayload.family#

Kind: attribute. Source: core/style/src/lsd_style/assets.py:288.

Python
family: str

lsdtools.extend.FamilyPresetPayload.role#

Kind: attribute. Source: core/style/src/lsd_style/assets.py:289.

Python
role: Optional[str]
Python
role = None

lsdtools.extend.FamilyPresetPayload.kind#

Kind: attribute. Source: core/style/src/lsd_style/assets.py:290.

Python
kind = 'family_preset'

lsdtools.extend.FamilyPresetPayload.to_bytes#

Kind: method. Source: core/style/src/lsd_style/assets.py:303.

Python
to_bytes(self) -> bytes
Python
self: (unannotated)

lsdtools.extend.FamilyPresetPayload.from_parts#

Kind: method. Source: core/style/src/lsd_style/assets.py:308.

Python
from_parts(cls, header: Mapping[str, Any], arrays: Sequence[np.ndarray]) -> 'FamilyPresetPayload'
Python
arrays: Sequence[np.ndarray]
cls: (unannotated)
header: Mapping[str, Any]

lsdtools.extend.FeatureAdapter#

Kind: class. Source: core/git/src/lsd_git/featureadapters.py:223.

Source docstring:

text
How one kind of feature is edited.

``observe(table, op) -> object`` reports the current adapter-owned precondition and
``apply(table, op) -> table`` returns the changed table; both receive the same immutable
``op.context`` stamped by the owning session/host, so package logic may read authenticated
actor identity and the canonical UTC mutation instant without accepting either through its
target or value schema. The adapter must not mutate the table it was given, so a session can
hold an unedited copy to discard back to. ``sentence(op) -> str``
phrases the change for history — the kind knows how to say what it did, the renderer does
not. Callers always ask through :meth:`describe`, which falls back to a plain statement.
``layer_kinds`` maps delivered/render vocabulary to this durable feature kind; it defaults
to ``(kind,)`` when both vocabularies already agree. ``target_for_feature(feature_id)`` is
required when a package-defined semantic feature can be selected individually; whole-layer
editing intentionally leaves the operation's record selector to the adapter verb.

Implementation alias: lsd_git.featureadapters.FeatureAdapter.

lsdtools.extend.FeatureAdapter.kind#

Kind: attribute. Source: core/git/src/lsd_git/featureadapters.py:240.

Python
kind: str

lsdtools.extend.FeatureAdapter.operations#

Kind: attribute. Source: core/git/src/lsd_git/featureadapters.py:241.

Python
operations: Tuple[FeatureOperation, ...]

lsdtools.extend.FeatureAdapter.observe#

Kind: attribute. Source: core/git/src/lsd_git/featureadapters.py:242.

Python
observe: Callable[[Any, EditOp], Mapping[str, Any]]

lsdtools.extend.FeatureAdapter.apply#

Kind: attribute. Source: core/git/src/lsd_git/featureadapters.py:243.

Python
apply: Callable[[Any, EditOp], Any]

lsdtools.extend.FeatureAdapter.sentence#

Kind: attribute. Source: core/git/src/lsd_git/featureadapters.py:244.

Python
sentence: Optional[Callable[[EditOp], str]]
Python
sentence = None

lsdtools.extend.FeatureAdapter.layer_kinds#

Kind: attribute. Source: core/git/src/lsd_git/featureadapters.py:245.

Python
layer_kinds: Optional[Tuple[str, ...]]
Python
layer_kinds = None

lsdtools.extend.FeatureAdapter.target_for_feature#

Kind: attribute. Source: core/git/src/lsd_git/featureadapters.py:246.

Python
target_for_feature: Optional[Callable[[Any], Mapping[str, Any]]]
Python
target_for_feature = None

lsdtools.extend.FeatureAdapter.supports#

Kind: method. Source: core/git/src/lsd_git/featureadapters.py:281.

Python
supports(self, op: str) -> bool
Python
op: str
self: (unannotated)

lsdtools.extend.FeatureAdapter.ops#

Kind: method. Source: core/git/src/lsd_git/featureadapters.py:285.

Python
ops(self) -> Tuple[str, ...]
Python
self: (unannotated)

Source docstring:

text
Concise verb inventory; use :meth:`operation_contracts` for agent schemas.

lsdtools.extend.FeatureAdapter.operation#

Kind: method. Source: core/git/src/lsd_git/featureadapters.py:289.

Python
operation(self, op: str) -> FeatureOperation
Python
op: str
self: (unannotated)

Source docstring:

text
Return the exact declared contract for *op*, or refuse the unknown verb.

lsdtools.extend.FeatureAdapter.operation_at#

Kind: method. Source: core/git/src/lsd_git/featureadapters.py:299.

Python
operation_at(self, op: str, contract_version: str) -> FeatureOperation
Python
contract_version: str
op: str
self: (unannotated)

Source docstring:

text
Return *op* only when the caller names the declaration loaded right now.

lsdtools.extend.FeatureAdapter.operation_contracts#

Kind: method. Source: core/git/src/lsd_git/featureadapters.py:312.

Python
operation_contracts(self) -> List[Mapping[str, Any]]
Python
self: (unannotated)

Source docstring:

text
Detached versioned operation contracts in declaration order.

lsdtools.extend.FeatureAdapter.feature_target#

Kind: method. Source: core/git/src/lsd_git/featureadapters.py:316.

Python
feature_target(self, feature_id: Any) -> Optional[Mapping[str, Any]]
Python
feature_id: Any
self: (unannotated)

Source docstring:

text
Return the adapter-owned fixed target for one selected semantic feature.

A whole-layer subject can intentionally address several records and needs no fixed
target.  A selected feature cannot be left to caller-supplied target fields: packages
whose semantic identity differs from the renderer declare that mapping here once.

lsdtools.extend.FeatureAdapter.check#

Kind: method. Source: core/git/src/lsd_git/featureadapters.py:332.

Python
check(self, op: EditOp) -> None
Python
op: EditOp
self: (unannotated)

Source docstring:

text
Raise unless this adapter can carry out *op*.

lsdtools.extend.FeatureAdapter.operation_result#

Kind: method. Source: core/git/src/lsd_git/featureadapters.py:348.

Python
operation_result(self, op: EditOp) -> Mapping[str, Any]
Python
op: EditOp
self: (unannotated)

Source docstring:

text
Canonical successful stage result declared by this operation's result schema.

lsdtools.extend.FeatureAdapter.describe#

Kind: method. Source: core/git/src/lsd_git/featureadapters.py:363.

Python
describe(self, op: EditOp) -> str
Python
op: EditOp
self: (unannotated)

Source docstring:

text
The sentence for history, falling back to a plain statement of the op.

lsdtools.extend.FeatureAdapter.observe_current#

Kind: method. Source: core/git/src/lsd_git/featureadapters.py:373.

Python
observe_current(self, table: Any, op: EditOp) -> Mapping[str, Any]
Python
op: EditOp
self: (unannotated)
table: Any

Source docstring:

text
Return this adapter's canonical JSON precondition for *op* against *table*.

The adapter owns the meaning of staleness. Absolute operations can observe the exact
value they replace; relative operations can observe stable structure so replay over a
regenerated value remains intentional.

lsdtools.extend.FeatureAdapter.check_previous#

Kind: method. Source: core/git/src/lsd_git/featureadapters.py:384.

Python
check_previous(self, table: Any, op: EditOp) -> Mapping[str, Any]
Python
op: EditOp
self: (unannotated)
table: Any

Source docstring:

text
Raise :class:`EditPreconditionError` unless *op* still targets what it observed.

lsdtools.extend.FeatureOperation#

Kind: class. Source: core/git/src/lsd_git/featureadapters.py:171.

Source docstring:

text
One agent-discoverable, versioned verb contract for a feature kind.

``target_schema`` and ``value_schema`` describe the canonical operation after the resident
subject's fixed target fields have been merged. ``result_schema`` describes the operation's
successful stage result. All three are closed JSON-object schemas: packages must make the
contract precise once instead of relying on prose, examples, or adapter exceptions.

Implementation alias: lsd_git.featureadapters.FeatureOperation.

lsdtools.extend.FeatureOperation.op#

Kind: attribute. Source: core/git/src/lsd_git/featureadapters.py:180.

Python
op: str

lsdtools.extend.FeatureOperation.version#

Kind: attribute. Source: core/git/src/lsd_git/featureadapters.py:181.

Python
version: str

lsdtools.extend.FeatureOperation.description#

Kind: attribute. Source: core/git/src/lsd_git/featureadapters.py:182.

Python
description: str

lsdtools.extend.FeatureOperation.target_schema#

Kind: attribute. Source: core/git/src/lsd_git/featureadapters.py:183.

Python
target_schema: Mapping[str, Any]

lsdtools.extend.FeatureOperation.value_schema#

Kind: attribute. Source: core/git/src/lsd_git/featureadapters.py:184.

Python
value_schema: Mapping[str, Any]

lsdtools.extend.FeatureOperation.result_schema#

Kind: attribute. Source: core/git/src/lsd_git/featureadapters.py:185.

Python
result_schema: Mapping[str, Any]

lsdtools.extend.FeatureOperation.to_dict#

Kind: method. Source: core/git/src/lsd_git/featureadapters.py:210.

Python
to_dict(self) -> Mapping[str, Any]
Python
self: (unannotated)

Source docstring:

text
Return detached JSON for action catalogs and agent observations.

lsdtools.extend.FileRole#

Kind: class. Source: core/lsd/src/lsd/packages/contributions.py:533.

Source docstring:

text
One data slot an :class:`EntityTemplate` consumes (e.g. a drillhole's ``collar`` CSV).

``fields`` are the target columns the wizard maps to; ``aliases`` is the per-field alias table the
auto-mapper (:func:`lsd.core.columnmap.resolve_column_map`) uses to detect them; ``rules`` is
lsd-data validation text (e.g. ``"hole_id unique\nrequire x y z"``). A single-file template needs no
roles — its file is loaded as-is.

Implementation alias: lsd.packages.contributions.FileRole.

lsdtools.extend.FileRole.name#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:541.

Python
name: str

lsdtools.extend.FileRole.fields#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:542.

Python
fields: Tuple[str, ...]
Python
fields = ()

lsdtools.extend.FileRole.aliases#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:543.

Python
aliases: Mapping[str, Tuple[str, ...]]
Python
aliases = field(default_factory=dict)

lsdtools.extend.FileRole.rules#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:544.

Python
rules: str
Python
rules = ''

lsdtools.extend.FileRole.required#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:545.

Python
required: bool
Python
required = True

lsdtools.extend.FileSourceConfig#

Kind: class. Source: core/lsd/src/lsd/core/source.py:115.

Source docstring:

text
Config for a file source: explicit files and/or a folder + glob, plus a combine mode.

Implementation alias: lsd.core.source.FileSourceConfig.

Declared bases: Configurable.

lsdtools.extend.FileSourceConfig.files#

Kind: attribute. Source: core/lsd/src/lsd/core/source.py:117.

Python
files = param(str, default='', widget='textarea', group='Source', label='Files', description='Explicit file paths, one per line')

lsdtools.extend.FileSourceConfig.folder#

Kind: attribute. Source: core/lsd/src/lsd/core/source.py:119.

Python
folder = param(str, default='', widget='dir', group='Source', label='Folder', description='Folder to scan (optional)')

lsdtools.extend.FileSourceConfig.patterns#

Kind: attribute. Source: core/lsd/src/lsd/core/source.py:121.

Python
patterns = param(str, default='', group='Source', label='Patterns', description='Glob patterns, e.g. *.csv, *.tsv')

lsdtools.extend.FileSourceConfig.recursive#

Kind: attribute. Source: core/lsd/src/lsd/core/source.py:123.

Python
recursive = param(bool, default=False, group='Source', label='Recurse subfolders')

lsdtools.extend.FileSourceConfig.combine#

Kind: attribute. Source: core/lsd/src/lsd/core/source.py:124.

Python
combine = param(str, default='concat', choices=['concat', 'recent', 'strict'], group='Source', label='Combine', description='How multiple files become one table')

lsdtools.extend.FormControl#

Kind: class. Source: views/widgets/forms/src/lsd_forms/controls.py:56.

Python
FormControl(self, *, label_placement: str='beside') -> None

Source docstring:

text
Base class for all form controls.

Subclasses must implement ``_build_widget()``, ``value`` and
``set_value()``.  They call ``self._notify_change(value)`` whenever
the user makes a change.

Implementation alias: lsd_forms.controls.FormControl.

lsdtools.extend.FormControl.__init__#

Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:64.

Python
__init__(self, *, label_placement: str='beside') -> None
Python
label_placement: str
self: (unannotated)

lsdtools.extend.FormControl.label_placement#

Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:75.

Python
label_placement(self) -> str
Python
self: (unannotated)

Source docstring:

text
Where a FormPanel places this control's label; composite fields can opt into above.

lsdtools.extend.FormControl.value#

Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:98.

Python
value(self) -> Any
Python
self: (unannotated)

lsdtools.extend.FormControl.set_value#

Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:101.

Python
set_value(self, v: Any) -> None
Python
self: (unannotated)
v: Any

lsdtools.extend.FormControl.connect_changed#

Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:104.

Python
connect_changed(self, cb: Callable[[Any], None]) -> None
Python
cb: Callable[[Any], None]
self: (unannotated)

lsdtools.extend.FormControl.set_enabled#

Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:118.

Python
set_enabled(self, enabled: bool) -> None
Python
enabled: bool
self: (unannotated)

Source docstring:

text
Enable or disable this control (grays it out when disabled).

lsdtools.extend.FormControl.enabled#

Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:124.

Python
enabled(self) -> bool
Python
self: (unannotated)

Source docstring:

text
True if the control is currently interactive.

lsdtools.extend.FormControl.widget#

Kind: attribute. Source: views/widgets/forms/src/lsd_forms/controls.py:70.

Python
widget: Optional['Gtk.Widget']
Python
widget = None

lsdtools.extend.FrameSnapshot#

Kind: class. Source: views/runtime/src/lsd_runtime_view/protocols.py:48.

Source docstring:

text
One published pose frame, validated once at the boundary.

``position (n,3) f32``, ``orientation (n,4) f32`` (xyzw), ``half_extent (n,3) f32``,
``kind (n,) u8`` (``lsd_render.geometry.BodyKind`` values), ``alive (n,) u8``, and one
immutable shader resource id per row.

Implementation alias: lsd_runtime_view.protocols.FrameSnapshot.

lsdtools.extend.FrameSnapshot.position#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/protocols.py:56.

Python
position: np.ndarray

lsdtools.extend.FrameSnapshot.orientation#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/protocols.py:57.

Python
orientation: np.ndarray

lsdtools.extend.FrameSnapshot.half_extent#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/protocols.py:58.

Python
half_extent: np.ndarray

lsdtools.extend.FrameSnapshot.kind#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/protocols.py:59.

Python
kind: np.ndarray

lsdtools.extend.FrameSnapshot.alive#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/protocols.py:60.

Python
alive: np.ndarray

lsdtools.extend.FrameSnapshot.shader#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/protocols.py:61.

Python
shader: tuple[str, ...]
Python
shader = ()

lsdtools.extend.FrameSnapshot.frame_index#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/protocols.py:62.

Python
frame_index: int
Python
frame_index = 0

lsdtools.extend.FrameSnapshot.sim_time#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/protocols.py:63.

Python
sim_time: float
Python
sim_time = 0.0

lsdtools.extend.FrameSnapshot.stats#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/protocols.py:64.

Python
stats: Mapping[str, int]
Python
stats = None

lsdtools.extend.FrameSnapshot.lighting#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/protocols.py:65.

Python
lighting: Any
Python
lighting = None

lsdtools.extend.FrameSnapshot.rows#

Kind: method. Source: views/runtime/src/lsd_runtime_view/protocols.py:90.

Python
rows(self) -> int
Python
self: (unannotated)

lsdtools.extend.FrameSnapshot.from_driver_frame#

Kind: method. Source: views/runtime/src/lsd_runtime_view/protocols.py:94.

Python
from_driver_frame(cls, frame: Any) -> 'FrameSnapshot'
Python
cls: (unannotated)
frame: Any

Source docstring:

text
Adapt a driver's frame object (duck-typed: the same attribute names).

lsdtools.extend.GizmoColor#

Kind: value. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1777.

Python
GizmoColor = tuple[float, float, float, float]

Implementation alias: lsd.packages.viewer_extensions.GizmoColor.

lsdtools.extend.GizmoConstraint#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:436.

Source docstring:

text
Host-owned world query used to turn pointer motion into a preview.

Implementation alias: lsd.packages.viewer_extensions.GizmoConstraint.

Declared bases: str, Enum.

lsdtools.extend.GizmoConstraint.NONE#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:439.

Python
NONE = 'none'

lsdtools.extend.GizmoConstraint.AXIS#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:440.

Python
AXIS = 'axis'

lsdtools.extend.GizmoConstraint.ROTATION#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:441.

Python
ROTATION = 'rotation'

lsdtools.extend.GizmoConstraint.PLANE#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:442.

Python
PLANE = 'plane'

lsdtools.extend.GizmoConstraint.SURFACE#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:443.

Python
SURFACE = 'surface'

lsdtools.extend.GizmoConstraint.GRID#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:444.

Python
GRID = 'grid'

lsdtools.extend.GizmoConstraint.FEATURE#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:445.

Python
FEATURE = 'feature'

lsdtools.extend.GizmoCursor#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:420.

Source docstring:

text
Toolkit-neutral pointer feedback understood by viewer hosts.

Implementation alias: lsd.packages.viewer_extensions.GizmoCursor.

Declared bases: str, Enum.

lsdtools.extend.GizmoCursor.DEFAULT#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:423.

Python
DEFAULT = 'default'

lsdtools.extend.GizmoCursor.POINTER#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:424.

Python
POINTER = 'pointer'

lsdtools.extend.GizmoCursor.CROSSHAIR#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:425.

Python
CROSSHAIR = 'crosshair'

lsdtools.extend.GizmoCursor.MOVE#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:426.

Python
MOVE = 'move'

lsdtools.extend.GizmoCursor.GRAB#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:427.

Python
GRAB = 'grab'

lsdtools.extend.GizmoCursor.GRABBING#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:428.

Python
GRABBING = 'grabbing'

lsdtools.extend.GizmoCursor.RESIZE_X#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:429.

Python
RESIZE_X = 'resize_x'

lsdtools.extend.GizmoCursor.RESIZE_Y#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:430.

Python
RESIZE_Y = 'resize_y'

lsdtools.extend.GizmoCursor.RESIZE_Z#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:431.

Python
RESIZE_Z = 'resize_z'

lsdtools.extend.GizmoCursor.ROTATE#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:432.

Python
ROTATE = 'rotate'

lsdtools.extend.GizmoCursor.NOT_ALLOWED#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:433.

Python
NOT_ALLOWED = 'not_allowed'

lsdtools.extend.GizmoDatasetActionSpec#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2164.

Source docstring:

text
One small, host-hit-tested add/remove gizmo action.

This is a semantic click target, never a drag handle and never an
interactive preview primitive. Viewer3D renders a fixed plus/minus hotspot
in the canonical add/remove colour and invokes ``operation`` once only
when press and release stay on a click-sized gesture. Packages cannot
supply a private icon, color, screen hit box, or toolkit callback. A
semantic handle preview may recompute ``position`` while every action
identity/capture field remains fixed.

Implementation alias: lsd.packages.viewer_extensions.GizmoDatasetActionSpec.

lsdtools.extend.GizmoDatasetActionSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2176.

Python
id: str

lsdtools.extend.GizmoDatasetActionSpec.label#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2177.

Python
label: str

lsdtools.extend.GizmoDatasetActionSpec.operation#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2178.

Python
operation: str

lsdtools.extend.GizmoDatasetActionSpec.position#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2179.

Python
position: GizmoPoint

lsdtools.extend.GizmoDatasetActionSpec.role#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2180.

Python
role: ViewerDatasetActionRole

lsdtools.extend.GizmoDatasetActionSpec.enabled#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2181.

Python
enabled: bool
Python
enabled = True

lsdtools.extend.GizmoDatasetActionSpec.visible#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2182.

Python
visible: bool
Python
visible = True

lsdtools.extend.GizmoDatasetActionSpec.metadata#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2183.

Python
metadata: tuple[tuple[str, GizmoScalar], ...]
Python
metadata = ()

lsdtools.extend.GizmoDatasetActionSpec.as_dict#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2217.

Python
as_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.GizmoHandleSpec#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2005.

Source docstring:

text
One host-hit-tested manipulation affordance in a gizmo model.

An axis-constrained handle carries its normalized world ``axis``. For a
plane-constrained handle, ``axis`` is the normalized plane normal. A
rotation or plane handle may also declare its normalized in-plane
``reference`` so its visible first basis direction is semantic instead of
camera/arbitrary.
On release the host invokes ``operation`` with a pinned, world-space
intent; packages never receive renderer events or screen coordinates.
Rotation deltas are signed by the right-hand rule around ``axis``. Their
sign is therefore stable in world space and independent of the camera.
``shift_snap_increment`` is an optional, unit-relative precision affordance:
while Shift is held, axis displacement, both plane-basis displacements, or
rotation degrees are rounded to this increment by the host before both
preview and release. Keeping that policy declarative gives every renderer
and input route the same behavior.

Implementation alias: lsd.packages.viewer_extensions.GizmoHandleSpec.

lsdtools.extend.GizmoHandleSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2024.

Python
id: str

lsdtools.extend.GizmoHandleSpec.label#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2025.

Python
label: str

lsdtools.extend.GizmoHandleSpec.cursor#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2026.

Python
cursor: GizmoCursor
Python
cursor = GizmoCursor.DEFAULT

lsdtools.extend.GizmoHandleSpec.constraint#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2027.

Python
constraint: GizmoConstraint
Python
constraint = GizmoConstraint.NONE

lsdtools.extend.GizmoHandleSpec.operation#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2028.

Python
operation: str | None
Python
operation = None

lsdtools.extend.GizmoHandleSpec.position#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2029.

Python
position: GizmoPoint | None
Python
position = None

lsdtools.extend.GizmoHandleSpec.axis#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2030.

Python
axis: GizmoPoint | None
Python
axis = None

lsdtools.extend.GizmoHandleSpec.reference#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2031.

Python
reference: GizmoPoint | None
Python
reference = None

lsdtools.extend.GizmoHandleSpec.preview#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2032.

Python
preview: GizmoPreviewPolicy
Python
preview = GizmoPreviewPolicy.MEASUREMENT_ONLY

lsdtools.extend.GizmoHandleSpec.unit#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2033.

Python
unit: str
Python
unit = ''

lsdtools.extend.GizmoHandleSpec.shift_snap_increment#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2034.

Python
shift_snap_increment: float | None
Python
shift_snap_increment = None

lsdtools.extend.GizmoHandleSpec.enabled#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2035.

Python
enabled: bool
Python
enabled = True

lsdtools.extend.GizmoHandleSpec.visible#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2036.

Python
visible: bool
Python
visible = True

lsdtools.extend.GizmoHandleSpec.metadata#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2037.

Python
metadata: tuple[tuple[str, GizmoScalar], ...]
Python
metadata = ()

lsdtools.extend.GizmoHandleSpec.as_dict#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2142.

Python
as_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.GizmoModel#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2234.

Source docstring:

text
Immutable, strict-JSON projection produced by a gizmo factory.

A model is a revision snapshot, not a process-lifetime object. The viewer
may call the owning factory again when its context or provider revision
changes and atomically replace the previous model.

Implementation alias: lsd.packages.viewer_extensions.GizmoModel.

lsdtools.extend.GizmoModel.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2242.

Python
id: OwnedContributionId

lsdtools.extend.GizmoModel.revision#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2243.

Python
revision: int
Python
revision = 0

lsdtools.extend.GizmoModel.visible#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2244.

Python
visible: bool
Python
visible = True

lsdtools.extend.GizmoModel.primitives#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2245.

Python
primitives: tuple[GizmoPrimitiveSpec, ...]
Python
primitives = ()

lsdtools.extend.GizmoModel.handles#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2246.

Python
handles: tuple[GizmoHandleSpec, ...]
Python
handles = ()

lsdtools.extend.GizmoModel.dataset_actions#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2247.

Python
dataset_actions: tuple[GizmoDatasetActionSpec, ...]
Python
dataset_actions = ()

lsdtools.extend.GizmoModel.target#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2248.

Python
target: str | None
Python
target = None

lsdtools.extend.GizmoModel.generation#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2249.

Python
generation: str | int | None
Python
generation = None

lsdtools.extend.GizmoModel.state#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2250.

Python
state: str
Python
state = 'idle'

lsdtools.extend.GizmoModel.description#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2251.

Python
description: tuple[tuple[str, GizmoScalar], ...]
Python
description = ()

lsdtools.extend.GizmoModel.as_dict#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2329.

Python
as_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.GizmoPoint#

Kind: value. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1776.

Python
GizmoPoint = tuple[float, float, float]

Implementation alias: lsd.packages.viewer_extensions.GizmoPoint.

lsdtools.extend.GizmoPreviewPolicy#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:448.

Source docstring:

text
How the host visualizes one manipulation before it is released.

Preview is deliberately separate from the semantic ``operation``.  It is
transient, never stages data, and may be cancelled without notifying the
package.  ``SEMANTIC`` asks the owning runtime for another immutable
:class:`GizmoModel`; this is the correct choice when a parameter change
deforms geometry instead of applying one rigid transform.

Implementation alias: lsd.packages.viewer_extensions.GizmoPreviewPolicy.

Declared bases: str, Enum.

lsdtools.extend.GizmoPreviewPolicy.MEASUREMENT_ONLY#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:458.

Python
MEASUREMENT_ONLY = 'measurement_only'

lsdtools.extend.GizmoPreviewPolicy.RIGID#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:459.

Python
RIGID = 'rigid'

lsdtools.extend.GizmoPreviewPolicy.ENDPOINT#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:460.

Python
ENDPOINT = 'endpoint'

lsdtools.extend.GizmoPreviewPolicy.SEMANTIC#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:461.

Python
SEMANTIC = 'semantic'

lsdtools.extend.GizmoPrimitiveKind#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:464.

Source docstring:

text
Renderer-neutral primitive vocabulary for immutable gizmo models.

Implementation alias: lsd.packages.viewer_extensions.GizmoPrimitiveKind.

Declared bases: str, Enum.

lsdtools.extend.GizmoPrimitiveKind.POINT#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:467.

Python
POINT = 'point'

lsdtools.extend.GizmoPrimitiveKind.SEGMENT#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:468.

Python
SEGMENT = 'segment'

lsdtools.extend.GizmoPrimitiveKind.POLYLINE#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:469.

Python
POLYLINE = 'polyline'

lsdtools.extend.GizmoPrimitiveKind.ARROW#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:470.

Python
ARROW = 'arrow'

lsdtools.extend.GizmoPrimitiveKind.BOX#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:471.

Python
BOX = 'box'

lsdtools.extend.GizmoPrimitiveKind.PLANE#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:472.

Python
PLANE = 'plane'

lsdtools.extend.GizmoPrimitiveKind.RING#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:473.

Python
RING = 'ring'

lsdtools.extend.GizmoPrimitiveKind.LABEL#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:474.

Python
LABEL = 'label'

lsdtools.extend.GizmoPrimitiveKind.FILL#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:475.

Python
FILL = 'fill'

lsdtools.extend.GizmoPrimitiveSpec#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1829.

Source docstring:

text
One immutable world-space or HUD primitive in a :class:`GizmoModel`.

``RING`` points are ``(centre, normal endpoint, rim point)``. ``BOX``
points are its axis-aligned minimum and maximum. A viewer may report an
unsupported kind, but it must never silently reinterpret one.

Implementation alias: lsd.packages.viewer_extensions.GizmoPrimitiveSpec.

lsdtools.extend.GizmoPrimitiveSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1837.

Python
id: str

lsdtools.extend.GizmoPrimitiveSpec.kind#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1838.

Python
kind: GizmoPrimitiveKind

lsdtools.extend.GizmoPrimitiveSpec.points#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1839.

Python
points: tuple[GizmoPoint, ...]

lsdtools.extend.GizmoPrimitiveSpec.text#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1840.

Python
text: str | None
Python
text = None

lsdtools.extend.GizmoPrimitiveSpec.theme_role#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1841.

Python
theme_role: str
Python
theme_role = 'gizmo.default'

lsdtools.extend.GizmoPrimitiveSpec.color#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1842.

Python
color: GizmoColor | None
Python
color = None

lsdtools.extend.GizmoPrimitiveSpec.width#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1843.

Python
width: float
Python
width = 1.0

lsdtools.extend.GizmoPrimitiveSpec.size#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1844.

Python
size: float
Python
size = 1.0

lsdtools.extend.GizmoPrimitiveSpec.visible#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1845.

Python
visible: bool
Python
visible = True

lsdtools.extend.GizmoPrimitiveSpec.metadata#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1846.

Python
metadata: tuple[tuple[str, GizmoScalar], ...]
Python
metadata = ()

lsdtools.extend.GizmoPrimitiveSpec.as_dict#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1989.

Python
as_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.GizmoScalar#

Kind: value. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1775.

Python
GizmoScalar = str | int | float | bool | None

Implementation alias: lsd.packages.viewer_extensions.GizmoScalar.

lsdtools.extend.HapticsRequest#

Kind: class. Source: services/input/src/lsd_input/provider_protocol.py:291.

Source docstring:

text
A host-authorized output request delivered to exactly one provider device.

Implementation alias: lsd_input.provider_protocol.HapticsRequest.

lsdtools.extend.HapticsRequest.provider_id#

Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:294.

Python
provider_id: str

lsdtools.extend.HapticsRequest.device_id#

Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:295.

Python
device_id: str

lsdtools.extend.HapticsRequest.stable_id#

Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:296.

Python
stable_id: str

lsdtools.extend.HapticsRequest.channel#

Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:297.

Python
channel: str

lsdtools.extend.HapticsRequest.amplitude#

Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:298.

Python
amplitude: float

lsdtools.extend.HapticsRequest.duration_ns#

Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:299.

Python
duration_ns: int

lsdtools.extend.HapticsRequest.timestamp_ns#

Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:300.

Python
timestamp_ns: int

lsdtools.extend.INPUT_ACTION_ASSET_SCHEMA#

Kind: value. Source: services/input/src/lsd_input/asset.py:34.

Python
INPUT_ACTION_ASSET_SCHEMA = 'lsd-input.action-asset.v2'

Implementation alias: lsd_input.asset.SCHEMA_V2.

lsdtools.extend.INPUT_DEVICES_CAPABILITY_V1#

Kind: value. Source: services/input/src/lsd_input/provider_protocol.py:30.

Python
INPUT_DEVICES_CAPABILITY_V1 = 'input.devices@1'

Implementation alias: lsd_input.provider_protocol.INPUT_DEVICES_CAPABILITY_V1.

lsdtools.extend.INPUT_EXTENSION_SCHEMA#

Kind: value. Source: core/lsd/src/lsd/packages/input_extensions.py:21.

Python
INPUT_EXTENSION_SCHEMA = 'lsd-input.extension.v1'

Implementation alias: lsd.packages.input_extensions.INPUT_EXTENSION_SCHEMA.

lsdtools.extend.INPUT_HAPTICS_CAPABILITY_V1#

Kind: value. Source: services/input/src/lsd_input/provider_protocol.py:31.

Python
INPUT_HAPTICS_CAPABILITY_V1 = 'input.haptics@1'

Implementation alias: lsd_input.provider_protocol.INPUT_HAPTICS_CAPABILITY_V1.

lsdtools.extend.INPUT_PROVIDER_CONTEXT_V1#

Kind: value. Source: services/input/src/lsd_input/provider_protocol.py:29.

Python
INPUT_PROVIDER_CONTEXT_V1 = 'lsd-input.provider-context.v1'

Implementation alias: lsd_input.provider_protocol.INPUT_PROVIDER_CONTEXT_V1.

lsdtools.extend.INPUT_PROVIDER_PROTOCOL_V1#

Kind: value. Source: services/input/src/lsd_input/provider_protocol.py:28.

Python
INPUT_PROVIDER_PROTOCOL_V1 = 'lsd-input.provider.v1'

Implementation alias: lsd_input.provider_protocol.INPUT_PROVIDER_PROTOCOL_V1.

lsdtools.extend.InactiveViewerExtension#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2820.

Implementation alias: lsd.packages.viewer_extensions.InactiveViewerExtension.

lsdtools.extend.InactiveViewerExtension.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2821.

Python
id: OwnedContributionId

lsdtools.extend.InactiveViewerExtension.reasons#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2822.

Python
reasons: tuple[str, ...]

lsdtools.extend.InputActionAsset#

Kind: class. Source: services/input/src/lsd_input/asset.py:511.

Implementation alias: lsd_input.asset.InputActionAsset.

lsdtools.extend.InputActionAsset.name#

Kind: attribute. Source: services/input/src/lsd_input/asset.py:512.

Python
name: str

lsdtools.extend.InputActionAsset.maps#

Kind: attribute. Source: services/input/src/lsd_input/asset.py:513.

Python
maps: tuple[InputActionMap, ...]
Python
maps = ()

lsdtools.extend.InputActionAsset.control_schemes#

Kind: attribute. Source: services/input/src/lsd_input/asset.py:514.

Python
control_schemes: tuple[ControlScheme, ...]
Python
control_schemes = ()

lsdtools.extend.InputActionAsset.schema#

Kind: attribute. Source: services/input/src/lsd_input/asset.py:515.

Python
schema: str
Python
schema = SCHEMA

lsdtools.extend.InputActionAsset.asset_id#

Kind: attribute. Source: services/input/src/lsd_input/asset.py:516.

Python
asset_id: str | None
Python
asset_id = field(default=None, kw_only=True)

lsdtools.extend.InputActionAsset.map#

Kind: method. Source: services/input/src/lsd_input/asset.py:573.

Python
map(self, name: str) -> InputActionMap
Python
name: str
self: (unannotated)

lsdtools.extend.InputActionAsset.map_by_id#

Kind: method. Source: services/input/src/lsd_input/asset.py:579.

Python
map_by_id(self, map_id: str) -> InputActionMap
Python
map_id: str
self: (unannotated)

lsdtools.extend.InputActionAsset.action#

Kind: method. Source: services/input/src/lsd_input/asset.py:586.

Python
action(self, ref: str) -> InputAction
Python
ref: str
self: (unannotated)

Source docstring:

text
``"Map/action"`` -> the action.

lsdtools.extend.InputActionAsset.action_by_id#

Kind: method. Source: services/input/src/lsd_input/asset.py:594.

Python
action_by_id(self, map_id: str, action_id: str) -> InputAction
Python
action_id: str
map_id: str
self: (unannotated)

lsdtools.extend.InputActionAsset.identity_for#

Kind: method. Source: services/input/src/lsd_input/asset.py:597.

Python
identity_for(self, ref: str) -> tuple[str, str]
Python
ref: str
self: (unannotated)

Source docstring:

text
Return the stable ``(map_id, action_id)`` behind a human-readable action ref.

lsdtools.extend.InputActionAsset.action_refs#

Kind: method. Source: services/input/src/lsd_input/asset.py:608.

Python
action_refs(self) -> tuple[str, ...]
Python
self: (unannotated)

lsdtools.extend.InputActionAsset.scheme#

Kind: method. Source: services/input/src/lsd_input/asset.py:611.

Python
scheme(self, name: str) -> ControlScheme
Python
name: str
self: (unannotated)

lsdtools.extend.InputActionAsset.with_binding_path#

Kind: method. Source: services/input/src/lsd_input/asset.py:617.

Python
with_binding_path(self, ref: str, binding_id: str, path: str) -> 'InputActionAsset'
Python
binding_id: str
path: str
ref: str
self: (unannotated)

Source docstring:

text
A new asset with one binding's path (or one composite part, ``id:part``) replaced.

lsdtools.extend.InputActionAsset.with_binding_path_by_id#

Kind: method. Source: services/input/src/lsd_input/asset.py:665.

Python
with_binding_path_by_id(self, map_id: str, action_id: str, binding_id: str, path: str) -> 'InputActionAsset'
Python
action_id: str
binding_id: str
map_id: str
path: str
self: (unannotated)

Source docstring:

text
ID-addressed counterpart to :meth:`with_binding_path`.

lsdtools.extend.InputActionAsset.to_dict#

Kind: method. Source: services/input/src/lsd_input/asset.py:682.

Python
to_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.InputActionAsset.from_dict#

Kind: method. Source: services/input/src/lsd_input/asset.py:692.

Python
from_dict(cls, data: Mapping[str, Any]) -> 'InputActionAsset'
Python
cls: (unannotated)
data: Mapping[str, Any]

lsdtools.extend.InputActionAsset.fingerprint#

Kind: method. Source: services/input/src/lsd_input/asset.py:715.

Python
fingerprint(self) -> str
Python
self: (unannotated)

lsdtools.extend.InputExtensionSpec#

Kind: class. Source: core/lsd/src/lsd/packages/input_extensions.py:177.

Source docstring:

text
One package-local input extension envelope.

``manifest`` is detached and deeply immutable.  Core validates only its safe transport shape,
schema marker, and resource bounds; semantic validation belongs to ``lsd_input``.  A
``capabilities`` are set-like, versioned ``input.*@1`` tokens canonicalized into sorted order.
``provider_factory`` is merely retained here.  The Desktop may invoke it only after the owning
package is trusted and active, so the field itself makes no trust claim.

``name`` is local to the owner.  :attr:`qualified_id` becomes available after explicit package
ownership or ``Tool.mount`` attribution, allowing different packages to reuse local names.

Implementation alias: lsd.packages.input_extensions.InputExtensionSpec.

lsdtools.extend.InputExtensionSpec.name#

Kind: attribute. Source: core/lsd/src/lsd/packages/input_extensions.py:190.

Python
name: str

lsdtools.extend.InputExtensionSpec.manifest#

Kind: attribute. Source: core/lsd/src/lsd/packages/input_extensions.py:191.

Python
manifest: Mapping[str, Any]

lsdtools.extend.InputExtensionSpec.revision#

Kind: attribute. Source: core/lsd/src/lsd/packages/input_extensions.py:193.

Python
revision: int
Python
revision = 1

lsdtools.extend.InputExtensionSpec.capabilities#

Kind: attribute. Source: core/lsd/src/lsd/packages/input_extensions.py:194.

Python
capabilities: Tuple[str, ...]
Python
capabilities = ()

lsdtools.extend.InputExtensionSpec.provider_factory#

Kind: attribute. Source: core/lsd/src/lsd/packages/input_extensions.py:195.

Python
provider_factory: Optional[Callable[..., Any]]
Python
provider_factory = None

lsdtools.extend.InputExtensionSpec.package#

Kind: attribute. Source: core/lsd/src/lsd/packages/input_extensions.py:196.

Python
package: Optional[str]
Python
package = None

lsdtools.extend.InputExtensionSpec.qualified_id#

Kind: method. Source: core/lsd/src/lsd/packages/input_extensions.py:243.

Python
qualified_id(self) -> str
Python
self: (unannotated)

Source docstring:

text
The owner-qualified registry identity, ``<package>/<name>``.

lsdtools.extend.InputExtensionSpec.manifest_dict#

Kind: method. Source: core/lsd/src/lsd/packages/input_extensions.py:252.

Python
manifest_dict(self) -> dict[str, Any]
Python
self: (unannotated)

Source docstring:

text
Return a detached ordinary-JSON snapshot for a semantic consumer.

lsdtools.extend.InputPort#

Kind: class. Source: views/runtime/src/lsd_runtime_view/input_port.py:107.

Python
InputPort(self, *, clock_ns: Callable[[], int]=time.perf_counter_ns, edge_capacity: int=DEFAULT_EDGE_CAPACITY) -> None

Source docstring:

text
Bind a ``runtime.input@1`` service; delegate feeds, frames and updates; arm replays.

``frame`` is the compatibility snapshot and may be read by observers.  The simulation's one
consumer uses ``consume_frame()`` instead: every host-update edge checkpoint is queued in a
bounded cursor while continuous action values always come from the newest frame.  If the
driver falls behind the cursor capacity, or the bound service's update fails, the cursor drops
all pending edges and returns neutral input until it observes a clean (nothing pressed) frame.
That is cancellation, never a synthetic release or a delayed press after authority was lost.

Implementation alias: lsd_runtime_view.input_port.InputPort.

lsdtools.extend.InputPort.__init__#

Kind: method. Source: views/runtime/src/lsd_runtime_view/input_port.py:120.

Python
__init__(self, *, clock_ns: Callable[[], int]=time.perf_counter_ns, edge_capacity: int=DEFAULT_EDGE_CAPACITY) -> None
Python
clock_ns: Callable[[], int]
edge_capacity: int
self: (unannotated)

lsdtools.extend.InputPort.service#

Kind: method. Source: views/runtime/src/lsd_runtime_view/input_port.py:154.

Python
service(self) -> Any
Python
self: (unannotated)

lsdtools.extend.InputPort.bound#

Kind: method. Source: views/runtime/src/lsd_runtime_view/input_port.py:159.

Python
bound(self) -> bool
Python
self: (unannotated)

lsdtools.extend.InputPort.bind#

Kind: method. Source: views/runtime/src/lsd_runtime_view/input_port.py:163.

Python
bind(self, service: Any) -> Any
Python
self: (unannotated)
service: Any

Source docstring:

text
Swap the live service (None unbinds); returns the previous one, which stays open.

A service may expose the structural ``bind_frame_consumer(callback) -> unbind`` seam.  Its
registration call must synchronously send the current frame as the first baseline callback;
later callbacks are update checkpoints whose edges enter the simulation cursor.  The port
registers and unregisters that callback with the service lifetime, without importing the
input package or requiring the view's own update/render loop to run.

lsdtools.extend.InputPort.bind_frame_observer#

Kind: method. Source: views/runtime/src/lsd_runtime_view/input_port.py:283.

Python
bind_frame_observer(self, callback: Callable[[Any], None]) -> Callable[[], None]
Python
callback: Callable[[Any], None]
self: (unannotated)

Source docstring:

text
Observe accepted producer frames after cursor capture; return an identity-safe unbind.

Observers do not consume edges and are never called under the cursor lock.  Failures are
contained and retire only the broken observer.  Registration itself emits no baseline;
the next producer frame (including ``None`` authority cancellation) is the first callback.

lsdtools.extend.InputPort.frame#

Kind: method. Source: views/runtime/src/lsd_runtime_view/input_port.py:319.

Python
frame(self) -> Any
Python
self: (unannotated)

lsdtools.extend.InputPort.update#

Kind: method. Source: views/runtime/src/lsd_runtime_view/input_port.py:327.

Python
update(self, now_ns: int | None=None) -> Any
Python
now_ns: int | None
self: (unannotated)

lsdtools.extend.InputPort.consume_frame#

Kind: method. Source: views/runtime/src/lsd_runtime_view/input_port.py:349.

Python
consume_frame(self) -> Any
Python
self: (unannotated)

Source docstring:

text
Return one simulation sample: latest values and the oldest unconsumed edge checkpoint.

There is exactly one consumer per port.  Edge checkpoints are removed atomically here;
reading the compatibility ``frame`` property neither consumes nor acknowledges them.

lsdtools.extend.InputPort.cancel_pending#

Kind: method. Source: views/runtime/src/lsd_runtime_view/input_port.py:366.

Python
cancel_pending(self, *, until_neutral: bool=False) -> None
Python
self: (unannotated)
until_neutral: bool

Source docstring:

text
Discard unconsumed edges; optionally gate values until a clean frame arrives.

Used for overflow and producer failure.  Cancellation deliberately exposes no ``up`` edge:
release-triggered interactions must not perform after the cursor lost exact history.

lsdtools.extend.InputPort.feed_key#

Kind: method. Source: views/runtime/src/lsd_runtime_view/input_port.py:505.

Python
feed_key(self, key: str, pressed: bool, timestamp_ns: int | None=None, *, repeat: bool=False) -> None
Python
key: str
pressed: bool
repeat: bool
self: (unannotated)
timestamp_ns: int | None

lsdtools.extend.InputPort.feed_pointer#

Kind: method. Source: views/runtime/src/lsd_runtime_view/input_port.py:508.

Python
feed_pointer(self, x: float, y: float, dx: float=0.0, dy: float=0.0, timestamp_ns: int | None=None) -> None
Python
dx: float
dy: float
self: (unannotated)
timestamp_ns: int | None
x: float
y: float

lsdtools.extend.InputPort.feed_pointer_button#

Kind: method. Source: views/runtime/src/lsd_runtime_view/input_port.py:511.

Python
feed_pointer_button(self, button: int, pressed: bool, x: float=0.0, y: float=0.0, timestamp_ns: int | None=None) -> None
Python
button: int
pressed: bool
self: (unannotated)
timestamp_ns: int | None
x: float
y: float

lsdtools.extend.InputPort.feed_scroll#

Kind: method. Source: views/runtime/src/lsd_runtime_view/input_port.py:515.

Python
feed_scroll(self, dx: float, dy: float, timestamp_ns: int | None=None) -> None
Python
dx: float
dy: float
self: (unannotated)
timestamp_ns: int | None

lsdtools.extend.InputPort.feed_focus#

Kind: method. Source: views/runtime/src/lsd_runtime_view/input_port.py:518.

Python
feed_focus(self, focused: bool, timestamp_ns: int | None=None) -> None
Python
focused: bool
self: (unannotated)
timestamp_ns: int | None

lsdtools.extend.InputPort.feeds#

Kind: method. Source: views/runtime/src/lsd_runtime_view/input_port.py:522.

Python
feeds(self) -> bool
Python
self: (unannotated)

Source docstring:

text
Whether the bound service accepts every ``InputSink`` feed.

lsdtools.extend.InputPort.replaying#

Kind: method. Source: views/runtime/src/lsd_runtime_view/input_port.py:530.

Python
replaying(self) -> bool
Python
self: (unannotated)

lsdtools.extend.InputPort.replay_trace#

Kind: method. Source: views/runtime/src/lsd_runtime_view/input_port.py:533.

Python
replay_trace(self, samples: Iterable[Any]) -> TraceSamples
Python
samples: Iterable[Any]
self: (unannotated)

Source docstring:

text
Arm a recorded trace: from now the driver samples it by fixed-step index.

lsdtools.extend.InputPort.end_replay#

Kind: method. Source: views/runtime/src/lsd_runtime_view/input_port.py:542.

Python
end_replay(self) -> dict[str, int]
Python
self: (unannotated)

Source docstring:

text
Disarm the trace; returns how much of it the driver consumed.

lsdtools.extend.InputPort.schedule_events#

Kind: method. Source: views/runtime/src/lsd_runtime_view/input_port.py:552.

Python
schedule_events(self, events: Iterable[Any], *, base_ns: int | None=None) -> int
Python
base_ns: int | None
events: Iterable[Any]
self: (unannotated)

Source docstring:

text
Queue ``{key, pressed, at_ms}`` key events relative to ``base_ns`` (now by default).

lsdtools.extend.InputPort.pump#

Kind: method. Source: views/runtime/src/lsd_runtime_view/input_port.py:568.

Python
pump(self, now_ns: int | None=None) -> int
Python
now_ns: int | None
self: (unannotated)

Source docstring:

text
Feed every scheduled key event that is due; called from the host tick before ``update``.

lsdtools.extend.InputPort.clear_events#

Kind: method. Source: views/runtime/src/lsd_runtime_view/input_port.py:580.

Python
clear_events(self) -> int
Python
self: (unannotated)

lsdtools.extend.InputPort.describe#

Kind: method. Source: views/runtime/src/lsd_runtime_view/input_port.py:587.

Python
describe(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.InputPort.edge_overflows#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/input_port.py:142.

Python
edge_overflows: (unannotated)
Python
edge_overflows = 0

lsdtools.extend.InputPort.edge_cancellations#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/input_port.py:143.

Python
edge_cancellations: (unannotated)
Python
edge_cancellations = 0

lsdtools.extend.InputPort.dropped_edges#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/input_port.py:144.

Python
dropped_edges: (unannotated)
Python
dropped_edges = 0

lsdtools.extend.InputPort.dropped_feeds#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/input_port.py:147.

Python
dropped_feeds: (unannotated)
Python
dropped_feeds = 0

lsdtools.extend.InputPort.replays#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/input_port.py:148.

Python
replays: (unannotated)
Python
replays = 0

lsdtools.extend.InputPort.pumped#

Kind: attribute. Source: views/runtime/src/lsd_runtime_view/input_port.py:149.

Python
pumped: (unannotated)
Python
pumped = 0

lsdtools.extend.InputProviderV1#

Kind: class. Source: services/input/src/lsd_input/provider_protocol.py:420.

Source docstring:

text
Structural documentation for the exact v1 pull protocol.

Implementation alias: lsd_input.provider_protocol.InputProviderV1.

Declared bases: Protocol.

lsdtools.extend.InputProviderV1.protocol#

Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:423.

Python
protocol: str

lsdtools.extend.InputProviderV1.enumerate_devices#

Kind: method. Source: services/input/src/lsd_input/provider_protocol.py:425.

Python
enumerate_devices(self, *, max_devices: int) -> Iterable[ProviderDeviceDescription]
Python
max_devices: int
self: (unannotated)

lsdtools.extend.InputProviderV1.poll#

Kind: method. Source: services/input/src/lsd_input/provider_protocol.py:427.

Python
poll(self, *, max_events: int) -> Iterable[ProviderEvent]
Python
max_events: int
self: (unannotated)

lsdtools.extend.InputProviderV1.close#

Kind: method. Source: services/input/src/lsd_input/provider_protocol.py:429.

Python
close(self) -> None
Python
self: (unannotated)

lsdtools.extend.KERNEL_OWNER#

Kind: value. Source: core/platform/src/lsd_platform/components.py:30.

Python
KERNEL_OWNER = '_kernel'

Implementation alias: lsd_platform.components.KERNEL_COMPONENT_OWNER.

lsdtools.extend.LargeCsvConfig#

Kind: class. Source: core/lsd/src/lsd/core/largecsv.py:297.

Source docstring:

text
Config for a streamed large CSV: the file + projection / filter / cap (the 'query').

Implementation alias: lsd.core.largecsv.LargeCsvConfig.

Declared bases: Configurable.

lsdtools.extend.LargeCsvConfig.file#

Kind: attribute. Source: core/lsd/src/lsd/core/largecsv.py:299.

Python
file = param(str, default='', widget='file', group='Source', label='CSV file', description='Path to a large .csv / .tsv')

lsdtools.extend.LargeCsvConfig.columns#

Kind: attribute. Source: core/lsd/src/lsd/core/largecsv.py:301.

Python
columns = param(str, default='', group='Source', label='Columns', description='Comma-separated columns to keep (blank = all) — projection speeds up wide files')

lsdtools.extend.LargeCsvConfig.row_filter#

Kind: attribute. Source: core/lsd/src/lsd/core/largecsv.py:303.

Python
row_filter = param(str, default='', group='Source', label='Row filter', description='Simple predicate, e.g. au > 0.5 (AND/OR; blank = all rows)')

lsdtools.extend.LargeCsvConfig.max_rows#

Kind: attribute. Source: core/lsd/src/lsd/core/largecsv.py:305.

Python
max_rows = param(int, default=0, min=0, group='Source', label='Max rows', description='Cap the number of rows (0 = all)')

lsdtools.extend.LargeCsvConfig.delimiter#

Kind: attribute. Source: core/lsd/src/lsd/core/largecsv.py:307.

Python
delimiter = param(str, default=',', group='Source', label='Delimiter')

lsdtools.extend.LargeCsvSourceKind#

Kind: class. Source: core/lsd/src/lsd/core/largecsv.py:310.

Implementation alias: lsd.core.largecsv.LargeCsvSourceKind.

Declared bases: SourceKind.

lsdtools.extend.LargeCsvSourceKind.name#

Kind: attribute. Source: core/lsd/src/lsd/core/largecsv.py:311.

Python
name = 'largecsv'

lsdtools.extend.LargeCsvSourceKind.label#

Kind: attribute. Source: core/lsd/src/lsd/core/largecsv.py:312.

Python
label = 'Large CSV (streamed)'

lsdtools.extend.LargeCsvSourceKind.config_cls#

Kind: attribute. Source: core/lsd/src/lsd/core/largecsv.py:313.

Python
config_cls = LargeCsvConfig

lsdtools.extend.LargeCsvSourceKind.paths#

Kind: method. Source: core/lsd/src/lsd/core/largecsv.py:325.

Python
paths(self, cfg: Configurable) -> List[str]
Python
cfg: Configurable
self: (unannotated)

lsdtools.extend.LargeCsvSourceKind.cache_path#

Kind: method. Source: core/lsd/src/lsd/core/largecsv.py:329.

Python
cache_path(self, cfg: Configurable) -> str
Python
cfg: Configurable
self: (unannotated)

lsdtools.extend.LargeCsvSourceKind.ensure_cache#

Kind: method. Source: core/lsd/src/lsd/core/largecsv.py:332.

Python
ensure_cache(self, cfg: Configurable, *, progress=None) -> Optional[str]
Python
cfg: Configurable
progress: (unannotated)
self: (unannotated)

Source docstring:

text
Convert the CSV → its Parquet cache if not already present (the expensive step).

Returns the cache path, or ``None`` if a cancelling *progress* (returns ``False``) aborted the convert
before completion (the partial output is discarded, leaving no cache).

lsdtools.extend.LargeCsvSourceKind.read#

Kind: method. Source: core/lsd/src/lsd/core/largecsv.py:356.

Python
read(self, cfg: Configurable, read_one: Callable[[str], Any]) -> Any
Python
cfg: Configurable
read_one: Callable[[str], Any]
self: (unannotated)

lsdtools.extend.LargeCsvSourceKind.fingerprint#

Kind: method. Source: core/lsd/src/lsd/core/largecsv.py:360.

Python
fingerprint(self, cfg: Configurable) -> str
Python
cfg: Configurable
self: (unannotated)

lsdtools.extend.Lease#

Kind: class. Source: core/lsd/src/lsd/packages/resources.py:19.

Python
Lease(self, dispose: Dispose, *, label: str='') -> None

Source docstring:

text
One idempotent resource lease.

Implementation alias: lsd.packages.resources.Lease.

lsdtools.extend.Lease.__init__#

Kind: method. Source: core/lsd/src/lsd/packages/resources.py:24.

Python
__init__(self, dispose: Dispose, *, label: str='') -> None
Python
dispose: Dispose
label: str
self: (unannotated)

lsdtools.extend.Lease.disposed#

Kind: method. Source: core/lsd/src/lsd/packages/resources.py:32.

Python
disposed(self) -> bool
Python
self: (unannotated)

lsdtools.extend.Lease.dispose#

Kind: method. Source: core/lsd/src/lsd/packages/resources.py:35.

Python
dispose(self) -> None
Python
self: (unannotated)

Source docstring:

text
Release the resource exactly once.

Teardown failures are logged and contained so one broken package cannot
prevent later resources in the same owner scope from being released.

lsdtools.extend.Lease.close#

Kind: attribute. Source: core/lsd/src/lsd/packages/resources.py:53.

Python
close = dispose

lsdtools.extend.Lease.__enter__#

Kind: method. Source: core/lsd/src/lsd/packages/resources.py:55.

Python
__enter__(self) -> 'Lease'
Python
self: (unannotated)

lsdtools.extend.Lease.__exit__#

Kind: method. Source: core/lsd/src/lsd/packages/resources.py:58.

Python
__exit__(self, *_exc: object) -> None
Python
_exc: object
self: (unannotated)

lsdtools.extend.Lease.label#

Kind: attribute. Source: core/lsd/src/lsd/packages/resources.py:29.

Python
label: (unannotated)
Python
label = str(label)

lsdtools.extend.LoadStep#

Kind: class. Source: core/lsd/src/lsd/flow/steps.py:1432.

Python
LoadStep(self, *, path: Optional[str]=None, **kwargs: Any) -> None

Source docstring:

text
Base for data-loading steps.

Subclass and implement ``run()`` — return a ``pa.Table``.
The source can be anything: database, API, file, stream, generator.

    class LoadFromCSV(LoadStep):
        file_path = param(str, required=True, label="File", widget="file")

        def run(self) -> pa.Table:
            return pa.csv.read_csv(self.file_path)

Implementation alias: lsd.flow.steps.LoadStep.

Declared bases: _Step.

lsdtools.extend.LoadStep.accepted_source_kinds#

Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:1452.

Python
accepted_source_kinds: ClassVar[tuple]
Python
accepted_source_kinds = ('file',)

lsdtools.extend.LoadStep.source#

Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:1453.

Python
source = source_param(group='Source', label='Source')

lsdtools.extend.LoadStep.varmap#

Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:1455.

Python
varmap = varmap_param(group='Variables', label='Variables')

lsdtools.extend.LoadStep.__init__#

Kind: method. Source: core/lsd/src/lsd/flow/steps.py:1457.

Python
__init__(self, *, path: Optional[str]=None, **kwargs: Any) -> None
Python
kwargs: Any
path: Optional[str]
self: (unannotated)

lsdtools.extend.LoadStep.run#

Kind: method. Source: core/lsd/src/lsd/flow/steps.py:1468.

Python
run(self) -> Union[pa.Table, StepOutputs]
Python
self: (unannotated)

lsdtools.extend.LoadStep.source_obj#

Kind: method. Source: core/lsd/src/lsd/flow/steps.py:1507.

Python
source_obj(self) -> 'ResolvedSource'
Python
self: (unannotated)

lsdtools.extend.LoadStep.source_one#

Kind: method. Source: core/lsd/src/lsd/flow/steps.py:1514.

Python
source_one(self) -> str
Python
self: (unannotated)

Source docstring:

text
The single resolved input file (single-file format loaders). Raises if none resolves.

lsdtools.extend.LoadStep.source_table#

Kind: method. Source: core/lsd/src/lsd/flow/steps.py:1521.

Python
source_table(self, read_one: 'Callable[[str], Any]')
Python
read_one: 'Callable[[str], Any]'
self: (unannotated)

Source docstring:

text
The resolved raw table (tabular loaders): the file kind reads+combines via *read_one*; sql queries.

lsdtools.extend.LoadStep.watch_targets#

Kind: method. Source: core/lsd/src/lsd/flow/steps.py:1525.

Python
watch_targets(self) -> List[str]
Python
self: (unannotated)

Source docstring:

text
Files the watcher polls: the source's targets, else every ``widget="file"`` param (so a multi-role
loader like drillholes, which keeps its own collar/survey/assay params, still watches them).

lsdtools.extend.LoadStep.watch_frequency#

Kind: method. Source: core/lsd/src/lsd/flow/steps.py:1539.

Python
watch_frequency(self) -> str
Python
self: (unannotated)

Source docstring:

text
The poll cadence ("off"/"5s"/… ) declared on the source.

lsdtools.extend.LoadStep.get_parameters#

Kind: method. Source: core/lsd/src/lsd/flow/steps.py:1543.

Python
get_parameters(self)
Python
self: (unannotated)

Source docstring:

text
Inject this loader's ``accepted_source_kinds`` into the ``source`` param's widget hint so the
inspector's kind-picker offers exactly the kinds this loader supports.

lsdtools.extend.MAX_SHADER_SOURCE_BYTES#

Kind: value. Source: core/lsd/src/lsd/packages/shader_programs.py:26.

Python
MAX_SHADER_SOURCE_BYTES = 64 * 1024

Implementation alias: lsd.packages.shader_programs.MAX_SHADER_SOURCE_BYTES.

lsdtools.extend.MAX_SHADER_UNIFORMS#

Kind: value. Source: core/lsd/src/lsd/packages/shader_programs.py:27.

Python
MAX_SHADER_UNIFORMS = 64

Implementation alias: lsd.packages.shader_programs.MAX_SHADER_UNIFORMS.

lsdtools.extend.MAX_TIMELINE_EDITOR_BINDINGS#

Kind: value. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:17.

Python
MAX_TIMELINE_EDITOR_BINDINGS = 256

Implementation alias: lsd.packages.timeline_editor_bindings.MAX_TIMELINE_EDITOR_BINDINGS.

lsdtools.extend.MAX_TIMELINE_EVENT_FIELDS#

Kind: value. Source: core/lsd/src/lsd/packages/timeline_extensions.py:20.

Python
MAX_TIMELINE_EVENT_FIELDS = 32

Implementation alias: lsd.packages.timeline_extensions.MAX_TIMELINE_EVENT_FIELDS.

lsdtools.extend.MAX_TIMELINE_TRACKS#

Kind: value. Source: core/lsd/src/lsd/packages/timeline_extensions.py:19.

Python
MAX_TIMELINE_TRACKS = 256

Implementation alias: lsd.packages.timeline_extensions.MAX_TIMELINE_TRACKS.

lsdtools.extend.MainViewType#

Kind: class. Source: core/lsd/src/lsd/packages/contributions.py:221.

Source docstring:

text
A *kind* of editor-area "main view" a package registers (3D viewer, code editor, pipeline…).

The desktop's main-view manager instantiates this declaration only through an explicit open,
one-shot delivery, default-open, or binding operation. Core never chooses a view kind for an
entity and remains GTK-free: ``factory`` carries the callable only.

- ``kind``          stable id, e.g. ``"viewer3d"`` / ``"code"`` / ``"pipeline"``.
- ``factory``       ``factory(host, *, entity=None, view_id: str) -> widget | View |``
                    ``ViewPresentation``; the shell always supplies the exact live identity.
                    ``ViewPresentation`` pairs bespoke native rendering with a normal ``View``
                    semantic model without adding a second renderer contract.
- ``instance_policy`` controls identity and reuse:
  ``"single"`` ⇒ one shared ``main:{kind}`` view;
  ``"reusable"`` ⇒ an unlocked ``main:{kind}`` target plus optional frozen
  ``main:{kind}#N`` views; ``"per_entity"`` ⇒ exactly one
  ``main:{kind}:{url-encoded-entity-id}`` view for each stable entity id.
- ``route_parameter`` optionally adds one required string coordinate to a
  ``per_entity`` identity. Its value is encoded after the entity id and is
  passed to the factory under that exact keyword. It is identity, not
  presentation state, so layout restoration needs no side cache.
- ``accepts_entity`` optional ``predicate(entity) -> bool`` for every entity-targeting
                    operation; ``None`` accepts every entity. It is independent of binding
                    cardinality and is exposed through :meth:`accepts`.
- ``binding_cardinality`` controls live entity links: ``"none"`` rejects bindings,
  ``"one"`` replaces the current binding, and ``"many"`` retains an ordered set.
- ``default_open``  explicitly opens one static, single-instance editor view when its package
                    activates.
- ``deliver_entity``  ``(widget, entity) -> None`` is the one-shot drop hook reserved for
                     cardinality-``"none"`` views. A non-``"none"`` cardinality is itself the
                     complete live-binding/drop signal.

Every active declaration is discoverable in the compact app-logo command menu's ``View`` group.
Generic declarations also appear as plain commands in the Activity Bar's **Add View** catalog:
repeatedly adding a ``reusable`` kind creates fresh tabs, while ``per_entity`` kinds require an
exact entity route and are therefore omitted from that generic catalog.

Implementation alias: lsd.packages.contributions.MainViewType.

lsdtools.extend.MainViewType.kind#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:258.

Python
kind: str

lsdtools.extend.MainViewType.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:259.

Python
title: str

lsdtools.extend.MainViewType.factory#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:260.

Python
factory: Callable[..., Any]

lsdtools.extend.MainViewType.icon#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:261.

Python
icon: Optional[str]
Python
icon = None

lsdtools.extend.MainViewType.instance_policy#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:262.

Python
instance_policy: str
Python
instance_policy = 'reusable'

lsdtools.extend.MainViewType.default_open#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:263.

Python
default_open: bool
Python
default_open = False

lsdtools.extend.MainViewType.deliver_entity#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:264.

Python
deliver_entity: Optional[Callable[..., Any]]
Python
deliver_entity = None

lsdtools.extend.MainViewType.binding_cardinality#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:265.

Python
binding_cardinality: str
Python
binding_cardinality = 'none'

lsdtools.extend.MainViewType.accepts_entity#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:266.

Python
accepts_entity: Optional[Callable[[Any], bool]]
Python
accepts_entity = None

lsdtools.extend.MainViewType.route_parameter#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:267.

Python
route_parameter: Optional[str]
Python
route_parameter = None

lsdtools.extend.MainViewType.package#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:268.

Python
package: Optional[str]
Python
package = None

lsdtools.extend.MainViewType.accepts#

Kind: method. Source: core/lsd/src/lsd/packages/contributions.py:327.

Python
accepts(self, entity: Any) -> bool
Python
entity: Any
self: (unannotated)

Source docstring:

text
Whether this declaration supports an entity, independent of binding cardinality.

lsdtools.extend.MainViewType.accepts_binding#

Kind: method. Source: core/lsd/src/lsd/packages/contributions.py:340.

Python
accepts_binding(self, entity: Any) -> bool
Python
entity: Any
self: (unannotated)

Source docstring:

text
Whether this declaration permits a persistent binding to ``entity``.

lsdtools.extend.MainViewType.lockable#

Kind: method. Source: core/lsd/src/lsd/packages/contributions.py:345.

Python
lockable(self) -> bool
Python
self: (unannotated)

Source docstring:

text
Only reusable views can be frozen to make the next open create another instance.

lsdtools.extend.MainViewType.accepts_drop#

Kind: method. Source: core/lsd/src/lsd/packages/contributions.py:350.

Python
accepts_drop(self) -> bool
Python
self: (unannotated)

Source docstring:

text
Whether this kind accepts a live-binding drop or one-shot entity delivery.

lsdtools.extend.MenuItem#

Kind: class. Source: core/lsd/src/lsd/packages/contributions.py:489.

Source docstring:

text
A command a package places in one group of Desktop's compact app-logo menu.

``command_id`` is the package-local stable identity used by the shell action; changing its label
or moving it between groups never retargets a conversation, shortcut, or restored command.
``section``/``order``/``accelerator`` tell the shell how to place the item — a named ``section``
within the ``menu`` group, a sort ``order`` inside that section, and an optional accelerator
string. Groups exist only while active contributions occupy them; this declaration does not add
a classic menu bar or a permanent File/Edit/Run/View skeleton. The always-available Settings gear
is a separate host bootstrap, not a :class:`MenuItem`.

Implementation alias: lsd.packages.contributions.MenuItem.

lsdtools.extend.MenuItem.command_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:500.

Python
command_id: str

lsdtools.extend.MenuItem.label#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:501.

Python
label: str

lsdtools.extend.MenuItem.callback#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:502.

Python
callback: Callable[[], None]

lsdtools.extend.MenuItem.menu#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:503.

Python
menu: str

lsdtools.extend.MenuItem.icon#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:504.

Python
icon: Optional[str]
Python
icon = None

lsdtools.extend.MenuItem.section#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:505.

Python
section: str
Python
section = ''

lsdtools.extend.MenuItem.order#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:506.

Python
order: int
Python
order = 0

lsdtools.extend.MenuItem.accelerator#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:507.

Python
accelerator: Optional[str]
Python
accelerator = None

lsdtools.extend.MenuItem.package#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:508.

Python
package: Optional[str]
Python
package = None

lsdtools.extend.MutationContext#

Kind: class. Source: core/git/src/lsd_git/editops.py:144.

Source docstring:

text
Host-owned attribution available to every feature adapter.

The actor is the authenticated :class:`Author` used by the owning edit session. ``timestamp``
is stamped once when the intent enters that session and survives observation, apply,
undo/redo, collaboration review, replay, and commit. Package target/value schemas never carry
either field, so package code can consume these facts but cannot manufacture them.

Implementation alias: lsd_git.editops.MutationContext.

lsdtools.extend.MutationContext.actor#

Kind: attribute. Source: core/git/src/lsd_git/editops.py:153.

Python
actor: Author

lsdtools.extend.MutationContext.timestamp#

Kind: attribute. Source: core/git/src/lsd_git/editops.py:154.

Python
timestamp: str

lsdtools.extend.MutationContext.version#

Kind: attribute. Source: core/git/src/lsd_git/editops.py:155.

Python
version: str
Python
version = MUTATION_CONTEXT_VERSION

lsdtools.extend.MutationContext.stamp#

Kind: method. Source: core/git/src/lsd_git/editops.py:173.

Python
stamp(cls, actor: Author) -> 'MutationContext'
Python
actor: Author
cls: (unannotated)

Source docstring:

text
Stamp one new context from a session-owned author and the host UTC clock.

lsdtools.extend.MutationContext.reseal_actor#

Kind: method. Source: core/git/src/lsd_git/editops.py:178.

Python
reseal_actor(self, actor: Author) -> 'MutationContext'
Python
actor: Author
self: (unannotated)

Source docstring:

text
Bind authenticated proposal authorship without changing the observed instant.

lsdtools.extend.MutationContext.to_dict#

Kind: method. Source: core/git/src/lsd_git/editops.py:183.

Python
to_dict(self) -> Dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.MutationContext.from_dict#

Kind: method. Source: core/git/src/lsd_git/editops.py:191.

Python
from_dict(cls, data: Any) -> 'MutationContext'
Python
cls: (unannotated)
data: Any

lsdtools.extend.OBJECT_CONTEXT_ACTION_VERSION#

Kind: value. Source: core/lsd/src/lsd/packages/object_explorer.py:46.

Python
OBJECT_CONTEXT_ACTION_VERSION = '1.0'

Implementation alias: lsd.packages.object_explorer.OBJECT_CONTEXT_ACTION_VERSION.

lsdtools.extend.OBJECT_CONTEXT_SELECTION_LIMIT#

Kind: value. Source: core/lsd/src/lsd/packages/object_explorer.py:47.

Python
OBJECT_CONTEXT_SELECTION_LIMIT = 10000

Implementation alias: lsd.packages.object_explorer.OBJECT_CONTEXT_SELECTION_LIMIT.

lsdtools.extend.OUTPUT_KEY#

Kind: value. Source: core/lsd/src/lsd/flow/steps.py:188.

Python
OUTPUT_KEY = 'output'

Implementation alias: lsd.flow.steps.OUTPUT_KEY.

lsdtools.extend.ObjectContextActionRole#

Kind: class. Source: core/lsd/src/lsd/packages/object_explorer.py:111.

Source docstring:

text
Required semantic consequence of one host-rendered context action.

Hosts use this closed author-declared role for the shared action palette:
additions are greenish-cyan, removals are purple, and neutral operations
do not masquerade as either.  Presentation must never infer consequence
from a package-provided label or command id.

Implementation alias: lsd.packages.object_explorer.ObjectContextActionRole.

Declared bases: str, Enum.

lsdtools.extend.ObjectContextActionRole.NEUTRAL#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:120.

Python
NEUTRAL = 'neutral'

lsdtools.extend.ObjectContextActionRole.ADD#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:121.

Python
ADD = 'add'

lsdtools.extend.ObjectContextActionRole.REMOVE#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:122.

Python
REMOVE = 'remove'

lsdtools.extend.ObjectContextActionSpec#

Kind: class. Source: core/lsd/src/lsd/packages/object_explorer.py:248.

Source docstring:

text
Place one existing same-package Viewer command in an object menu.

The declaration contains no callback and cannot name a Tool route or a
global wire action.  ``command_id`` is the exact id of a
:class:`ViewerCommandSpec` owned by the package that owns this declaration.
Resolution quarantines the action unless that command is present exactly
once in the active Viewer plan.

``role`` is required author intent for the product-owned consequence
palette. Hosts must not derive add/remove meaning from arbitrary package
labels or command ids.

Both cardinality bounds are finite.  The host offers the action only when
``min_selection <= len(selection) <= max_selection`` and invokes its command
with the closed v1 envelope::

    {
      "version": "1.0",
      "object_type": "package/type",
      "selection": [
        {"feature_namespace": "package/object@1", "reference": {...}}
      ],
      "selection_digest": "<sha256>"
    }

Implementation alias: lsd.packages.object_explorer.ObjectContextActionSpec.

lsdtools.extend.ObjectContextActionSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:275.

Python
id: OwnedContributionId

lsdtools.extend.ObjectContextActionSpec.object_type#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:276.

Python
object_type: OwnedContributionId

lsdtools.extend.ObjectContextActionSpec.command_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:277.

Python
command_id: OwnedContributionId

lsdtools.extend.ObjectContextActionSpec.label#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:278.

Python
label: str

lsdtools.extend.ObjectContextActionSpec.group#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:279.

Python
group: str

lsdtools.extend.ObjectContextActionSpec.role#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:280.

Python
role: ObjectContextActionRole

lsdtools.extend.ObjectContextActionSpec.min_selection#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:281.

Python
min_selection: int
Python
min_selection = 1

lsdtools.extend.ObjectContextActionSpec.max_selection#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:282.

Python
max_selection: int
Python
max_selection = 1

lsdtools.extend.ObjectContextActionSpec.version#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:283.

Python
version: str
Python
version = OBJECT_CONTEXT_ACTION_VERSION

lsdtools.extend.ObjectContextActionSpec.accepts_selection#

Kind: method. Source: core/lsd/src/lsd/packages/object_explorer.py:320.

Python
accepts_selection(self, count: int) -> bool
Python
count: int
self: (unannotated)

lsdtools.extend.ObjectContextActionSpec.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/object_explorer.py:325.

Python
to_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ObjectExplorerDiagnostic#

Kind: class. Source: core/lsd/src/lsd/packages/object_explorer.py:340.

Implementation alias: lsd.packages.object_explorer.ObjectExplorerDiagnostic.

lsdtools.extend.ObjectExplorerDiagnostic.severity#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:341.

Python
severity: ObjectExplorerDiagnosticSeverity

lsdtools.extend.ObjectExplorerDiagnostic.code#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:342.

Python
code: str

lsdtools.extend.ObjectExplorerDiagnostic.message#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:343.

Python
message: str

lsdtools.extend.ObjectExplorerDiagnostic.subjects#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:344.

Python
subjects: tuple[str, ...]
Python
subjects = ()

lsdtools.extend.ObjectExplorerDiagnostic.blocks_plan#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:345.

Python
blocks_plan: bool
Python
blocks_plan = False

lsdtools.extend.ObjectExplorerDiagnostic.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/object_explorer.py:367.

Python
to_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ObjectExplorerDiagnosticSeverity#

Kind: class. Source: core/lsd/src/lsd/packages/object_explorer.py:104.

Source docstring:

text
Closed severity vocabulary emitted by Object Explorer resolution.

Implementation alias: lsd.packages.object_explorer.ObjectExplorerDiagnosticSeverity.

Declared bases: str, Enum.

lsdtools.extend.ObjectExplorerDiagnosticSeverity.WARNING#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:107.

Python
WARNING = 'warning'

lsdtools.extend.ObjectExplorerDiagnosticSeverity.ERROR#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:108.

Python
ERROR = 'error'

lsdtools.extend.ObjectExplorerParentBindingSpec#

Kind: class. Source: core/lsd/src/lsd/packages/object_explorer.py:126.

Source docstring:

text
Map one canonical parent-reference field to one resident source field.

This is deliberately distinct from :class:`ObjectPropertyKeyBinding`.
Property bindings join an object reference to a writable dataset key;
Explorer parent bindings read a parent reference from the already-resident
object's detached source properties.  Reusing the dataset contract made the
source of hierarchy identity ambiguous and exposed the wrong
``dataset_field`` vocabulary to packages.

Implementation alias: lsd.packages.object_explorer.ObjectExplorerParentBindingSpec.

lsdtools.extend.ObjectExplorerParentBindingSpec.reference_field#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:137.

Python
reference_field: str

lsdtools.extend.ObjectExplorerParentBindingSpec.source_field#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:138.

Python
source_field: str

lsdtools.extend.ObjectExplorerParentBindingSpec.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/object_explorer.py:150.

Python
to_dict(self) -> dict[str, str]
Python
self: (unannotated)

lsdtools.extend.ObjectExplorerSpec#

Kind: class. Source: core/lsd/src/lsd/packages/object_explorer.py:158.

Source docstring:

text
One tab projection for one exact canonical object type.

Exactly one active declaration may target an object type. Its qualified
contribution ``id`` is also the tab identity, so packages cannot collide
through an unqualified presentation alias and a resident has one canonical
explorer projection.

``label_field`` and ``group_field`` are names in the resident's source
dataset. Missing optional values use the host's generic label and flat-list
presentation. ``parent_key_bindings`` is either empty or a complete mapping
from every canonical object-reference field to the child row field holding
that field of its parent. Complete mappings make composite identities
unambiguous (for example ``scene_id -> scene_id`` and
``oid -> parent_oid``). Any null/empty mapped component denotes a root; a
parent identity is never guessed from a partial key. The host owns cycle detection,
and the inspectable top-level fallback for invalid runtime relationships.

Implementation alias: lsd.packages.object_explorer.ObjectExplorerSpec.

lsdtools.extend.ObjectExplorerSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:177.

Python
id: OwnedContributionId

lsdtools.extend.ObjectExplorerSpec.object_type#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:178.

Python
object_type: OwnedContributionId

lsdtools.extend.ObjectExplorerSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:179.

Python
title: str

lsdtools.extend.ObjectExplorerSpec.label_field#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:180.

Python
label_field: str | None
Python
label_field = None

lsdtools.extend.ObjectExplorerSpec.group_field#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:181.

Python
group_field: str | None
Python
group_field = None

lsdtools.extend.ObjectExplorerSpec.parent_key_bindings#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:182.

Python
parent_key_bindings: tuple[ObjectExplorerParentBindingSpec, ...]
Python
parent_key_bindings = ()

lsdtools.extend.ObjectExplorerSpec.version#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:183.

Python
version: str
Python
version = '1.0'

lsdtools.extend.ObjectExplorerSpec.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/object_explorer.py:233.

Python
to_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ObjectPropertyChoiceSpec#

Kind: class. Source: core/lsd/src/lsd/packages/object_properties.py:364.

Source docstring:

text
One callback-free stored value and its human-facing label.

Implementation alias: lsd.packages.object_properties.ObjectPropertyChoiceSpec.

lsdtools.extend.ObjectPropertyChoiceSpec.value#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:367.

Python
value: str | int | float | bool

lsdtools.extend.ObjectPropertyChoiceSpec.label#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:368.

Python
label: str

lsdtools.extend.ObjectPropertyChoiceSpec.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:374.

Python
to_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ObjectPropertyComponentSpec#

Kind: class. Source: core/lsd/src/lsd/packages/object_properties.py:173.

Source docstring:

text
Declare host-owned membership operations for one component section.

Packages name the two bounded adapter operations and nothing about their
presentation or selection.  The Object Editor derives canonical dataset
keys from the current Viewer selection, renders its own Add/Remove
controls, and submits the exact closed envelopes::

    target = {"keys": [{"oid": "..."}, ...]}
    value = {}

Both operations must expose those schemas at runtime.  There is no label,
colour, CSS class, callback, or package-owned selection in this contract.

Implementation alias: lsd.packages.object_properties.ObjectPropertyComponentSpec.

lsdtools.extend.ObjectPropertyComponentSpec.add_operation#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:188.

Python
add_operation: str

lsdtools.extend.ObjectPropertyComponentSpec.remove_operation#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:189.

Python
remove_operation: str

lsdtools.extend.ObjectPropertyComponentSpec.contract_version#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:190.

Python
contract_version: str
Python
contract_version = '1.0'

lsdtools.extend.ObjectPropertyComponentSpec.TARGET_KEYS_FIELD#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:192.

Python
TARGET_KEYS_FIELD: ClassVar[str]
Python
TARGET_KEYS_FIELD = 'keys'

lsdtools.extend.ObjectPropertyComponentSpec.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:213.

Python
to_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ObjectPropertyDatasetBindingSpec#

Kind: class. Source: core/lsd/src/lsd/packages/object_properties.py:223.

Source docstring:

text
Bind a property section to one feature-adapter dataset.

``adapter_kind`` selects the dataset family.  The host resolves the exact
dataset inside the selected object's entity/session and maps the resident's
semantic reference through ``key_bindings``.  A writable binding names the
one canonical ``patch_rows`` operation accepting the v1 envelope::

    target = {"keys": [{"oid": "..."}, ...]}
    value = {"changes": {"density": 1.2}}

Leaving ``patch_operation`` as ``None`` makes the section read-only.  There
is no callback escape hatch: every mutation is staged through the host's
shared edit workspace before approval, undo/redo, and commit.

Implementation alias: lsd.packages.object_properties.ObjectPropertyDatasetBindingSpec.

lsdtools.extend.ObjectPropertyDatasetBindingSpec.adapter_kind#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:239.

Python
adapter_kind: str

lsdtools.extend.ObjectPropertyDatasetBindingSpec.key_bindings#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:240.

Python
key_bindings: tuple[ObjectPropertyKeyBinding, ...]

lsdtools.extend.ObjectPropertyDatasetBindingSpec.patch_operation#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:241.

Python
patch_operation: str | None
Python
patch_operation = None

lsdtools.extend.ObjectPropertyDatasetBindingSpec.contract_version#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:242.

Python
contract_version: str
Python
contract_version = '1.0'

lsdtools.extend.ObjectPropertyDatasetBindingSpec.component#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:243.

Python
component: ObjectPropertyComponentSpec | None
Python
component = None

lsdtools.extend.ObjectPropertyDatasetBindingSpec.TARGET_KEYS_FIELD#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:245.

Python
TARGET_KEYS_FIELD: ClassVar[str]
Python
TARGET_KEYS_FIELD = 'keys'

lsdtools.extend.ObjectPropertyDatasetBindingSpec.VALUE_CHANGES_FIELD#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:246.

Python
VALUE_CHANGES_FIELD: ClassVar[str]
Python
VALUE_CHANGES_FIELD = 'changes'

lsdtools.extend.ObjectPropertyDatasetBindingSpec.writable#

Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:302.

Python
writable(self) -> bool
Python
self: (unannotated)

lsdtools.extend.ObjectPropertyDatasetBindingSpec.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:305.

Python
to_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ObjectPropertyDiagnostic#

Kind: class. Source: core/lsd/src/lsd/packages/object_properties.py:736.

Implementation alias: lsd.packages.object_properties.ObjectPropertyDiagnostic.

lsdtools.extend.ObjectPropertyDiagnostic.severity#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:737.

Python
severity: ObjectPropertyDiagnosticSeverity

lsdtools.extend.ObjectPropertyDiagnostic.code#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:738.

Python
code: str

lsdtools.extend.ObjectPropertyDiagnostic.message#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:739.

Python
message: str

lsdtools.extend.ObjectPropertyDiagnostic.subjects#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:740.

Python
subjects: tuple[str, ...]
Python
subjects = ()

lsdtools.extend.ObjectPropertyDiagnostic.blocks_plan#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:741.

Python
blocks_plan: bool
Python
blocks_plan = False

lsdtools.extend.ObjectPropertyDiagnostic.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:762.

Python
to_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ObjectPropertyDiagnosticSeverity#

Kind: class. Source: core/lsd/src/lsd/packages/object_properties.py:135.

Source docstring:

text
Closed severity vocabulary emitted by property-plan resolution.

Implementation alias: lsd.packages.object_properties.ObjectPropertyDiagnosticSeverity.

Declared bases: str, Enum.

lsdtools.extend.ObjectPropertyDiagnosticSeverity.WARNING#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:138.

Python
WARNING = 'warning'

lsdtools.extend.ObjectPropertyDiagnosticSeverity.ERROR#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:139.

Python
ERROR = 'error'

lsdtools.extend.ObjectPropertyFieldKind#

Kind: class. Source: core/lsd/src/lsd/packages/object_properties.py:142.

Source docstring:

text
Host-rendered scalar field kinds supported by the 1.0 object editor.

Implementation alias: lsd.packages.object_properties.ObjectPropertyFieldKind.

Declared bases: str, Enum.

lsdtools.extend.ObjectPropertyFieldKind.TEXT#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:145.

Python
TEXT = 'text'

lsdtools.extend.ObjectPropertyFieldKind.BOOLEAN#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:146.

Python
BOOLEAN = 'boolean'

lsdtools.extend.ObjectPropertyFieldKind.INTEGER#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:147.

Python
INTEGER = 'integer'

lsdtools.extend.ObjectPropertyFieldKind.NUMBER#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:148.

Python
NUMBER = 'number'

lsdtools.extend.ObjectPropertyFieldKind.CHOICE#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:149.

Python
CHOICE = 'choice'

lsdtools.extend.ObjectPropertyFieldKind.DATE#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:150.

Python
DATE = 'date'

lsdtools.extend.ObjectPropertyFieldKind.DATETIME#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:151.

Python
DATETIME = 'datetime'

lsdtools.extend.ObjectPropertyFieldSpec#

Kind: class. Source: core/lsd/src/lsd/packages/object_properties.py:379.

Source docstring:

text
One typed field in a host-rendered object-property section.

Implementation alias: lsd.packages.object_properties.ObjectPropertyFieldSpec.

lsdtools.extend.ObjectPropertyFieldSpec.MAX_CHOICES#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:382.

Python
MAX_CHOICES: ClassVar[int]
Python
MAX_CHOICES = 64

lsdtools.extend.ObjectPropertyFieldSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:384.

Python
id: str

lsdtools.extend.ObjectPropertyFieldSpec.source_field#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:385.

Python
source_field: str

lsdtools.extend.ObjectPropertyFieldSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:386.

Python
title: str

lsdtools.extend.ObjectPropertyFieldSpec.kind#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:387.

Python
kind: ObjectPropertyFieldKind

lsdtools.extend.ObjectPropertyFieldSpec.editable#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:388.

Python
editable: bool
Python
editable = True

lsdtools.extend.ObjectPropertyFieldSpec.nullable#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:389.

Python
nullable: bool
Python
nullable = True

lsdtools.extend.ObjectPropertyFieldSpec.multi_edit#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:390.

Python
multi_edit: bool
Python
multi_edit = True

lsdtools.extend.ObjectPropertyFieldSpec.description#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:391.

Python
description: str
Python
description = ''

lsdtools.extend.ObjectPropertyFieldSpec.unit#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:392.

Python
unit: str
Python
unit = ''

lsdtools.extend.ObjectPropertyFieldSpec.minimum#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:393.

Python
minimum: int | float | None
Python
minimum = None

lsdtools.extend.ObjectPropertyFieldSpec.maximum#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:394.

Python
maximum: int | float | None
Python
maximum = None

lsdtools.extend.ObjectPropertyFieldSpec.step#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:395.

Python
step: int | float | None
Python
step = None

lsdtools.extend.ObjectPropertyFieldSpec.choices#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:396.

Python
choices: tuple[ObjectPropertyChoiceSpec, ...]
Python
choices = ()

lsdtools.extend.ObjectPropertyFieldSpec.default#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:397.

Python
default: str | int | float | bool | None
Python
default = None

lsdtools.extend.ObjectPropertyFieldSpec.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:555.

Python
to_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ObjectPropertyKeyBinding#

Kind: class. Source: core/lsd/src/lsd/packages/object_properties.py:155.

Source docstring:

text
Map one canonical object-reference field to one dataset key field.

Implementation alias: lsd.packages.object_properties.ObjectPropertyKeyBinding.

lsdtools.extend.ObjectPropertyKeyBinding.reference_field#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:158.

Python
reference_field: str

lsdtools.extend.ObjectPropertyKeyBinding.dataset_field#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:159.

Python
dataset_field: str

lsdtools.extend.ObjectPropertyKeyBinding.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:165.

Python
to_dict(self) -> dict[str, str]
Python
self: (unannotated)

lsdtools.extend.ObjectPropertyResidentBindingSpec#

Kind: class. Source: core/lsd/src/lsd/packages/object_properties.py:321.

Source docstring:

text
Read fields from the exact selected resident's property sidecar.

The source is the bounded, detached ``feature_properties`` mapping carried
by a generation-qualified Viewer3D resident.  It deliberately has no
adapter, dataset keys, patch operation, or callback: resident metadata is
an observation surface, never a mutation authority.

Implementation alias: lsd.packages.object_properties.ObjectPropertyResidentBindingSpec.

lsdtools.extend.ObjectPropertyResidentBindingSpec.contract_version#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:330.

Python
contract_version: str
Python
contract_version = '1.0'

lsdtools.extend.ObjectPropertyResidentBindingSpec.writable#

Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:339.

Python
writable(self) -> bool
Python
self: (unannotated)

lsdtools.extend.ObjectPropertyResidentBindingSpec.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:342.

Python
to_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ObjectPropertySectionSpec#

Kind: class. Source: core/lsd/src/lsd/packages/object_properties.py:615.

Source docstring:

text
One package-owned property section augmenting one exact object type.

``id`` belongs to the contributing package.  ``object_type`` may belong to
another package; this is the explicit cross-package augmentation seam used
by components such as physics and scheduling.

Implementation alias: lsd.packages.object_properties.ObjectPropertySectionSpec.

lsdtools.extend.ObjectPropertySectionSpec.MAX_FIELDS#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:623.

Python
MAX_FIELDS: ClassVar[int]
Python
MAX_FIELDS = 64

lsdtools.extend.ObjectPropertySectionSpec.MAX_ORDER_ANCHORS#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:624.

Python
MAX_ORDER_ANCHORS: ClassVar[int]
Python
MAX_ORDER_ANCHORS = 64

lsdtools.extend.ObjectPropertySectionSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:626.

Python
id: OwnedContributionId

lsdtools.extend.ObjectPropertySectionSpec.object_type#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:627.

Python
object_type: OwnedContributionId

lsdtools.extend.ObjectPropertySectionSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:628.

Python
title: str

lsdtools.extend.ObjectPropertySectionSpec.fields#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:629.

Python
fields: tuple[ObjectPropertyFieldSpec, ...]

lsdtools.extend.ObjectPropertySectionSpec.binding#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:630.

Python
binding: ObjectPropertyDatasetBindingSpec | ObjectPropertyResidentBindingSpec

lsdtools.extend.ObjectPropertySectionSpec.before#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:631.

Python
before: tuple[OwnedContributionId, ...]
Python
before = ()

lsdtools.extend.ObjectPropertySectionSpec.after#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:632.

Python
after: tuple[OwnedContributionId, ...]
Python
after = ()

lsdtools.extend.ObjectPropertySectionSpec.version#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:633.

Python
version: str
Python
version = '1.0'

lsdtools.extend.ObjectPropertySectionSpec.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:722.

Python
to_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ObjectTypeSpec#

Kind: class. Source: core/lsd/src/lsd/packages/object_properties.py:575.

Source docstring:

text
A canonical selected-object identity contributed by its owning package.

Implementation alias: lsd.packages.object_properties.ObjectTypeSpec.

lsdtools.extend.ObjectTypeSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:578.

Python
id: OwnedContributionId

lsdtools.extend.ObjectTypeSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:579.

Python
title: str

lsdtools.extend.ObjectTypeSpec.feature_namespace#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:580.

Python
feature_namespace: str

lsdtools.extend.ObjectTypeSpec.reference_fields#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:581.

Python
reference_fields: tuple[str, ...]

lsdtools.extend.ObjectTypeSpec.version#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:582.

Python
version: str
Python
version = '1.0'

lsdtools.extend.ObjectTypeSpec.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:604.

Python
to_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.OffscreenAgentView#

Kind: class. Source: views/viewer3d/src/lsd_viewer/agent.py:1722.

Python
OffscreenAgentView(self, *, bus=None, camera=None, edit_workspace_authority: Any=None, object_types: Any=(), object_property_sections: Any=(), object_explorers: Any=(), object_context_actions: Any=(), viewer_commands: Any=(), viewer_command_invoker: Callable[..., Any] | None=None, viewer_command_validator: Callable[[str, str], Any] | None=None, schedule_timeout_fn: Optional[Callable[[int, Callable[[], bool]], Any]]=None, cancel_timeout_fn: Optional[Callable[[Any], None]]=None) -> None

Source docstring:

text
A windowless viewer an agent/collab drives + snapshots — no GTK widgets, no display surface.

Pipeline ``viewer/layer/set`` deliveries populate it (``attach_bus``); :attr:`control` is a ready
``ControlSurface``; :meth:`snapshot_png` renders the scene offscreen.

Implementation alias: lsd_viewer.agent.OffscreenAgentView.

lsdtools.extend.OffscreenAgentView.__init__#

Kind: method. Source: views/viewer3d/src/lsd_viewer/agent.py:1729.

Python
__init__(self, *, bus=None, camera=None, edit_workspace_authority: Any=None, object_types: Any=(), object_property_sections: Any=(), object_explorers: Any=(), object_context_actions: Any=(), viewer_commands: Any=(), viewer_command_invoker: Callable[..., Any] | None=None, viewer_command_validator: Callable[[str, str], Any] | None=None, schedule_timeout_fn: Optional[Callable[[int, Callable[[], bool]], Any]]=None, cancel_timeout_fn: Optional[Callable[[Any], None]]=None) -> None
Python
bus: (unannotated)
camera: (unannotated)
cancel_timeout_fn: Optional[Callable[[Any], None]]
edit_workspace_authority: Any
object_context_actions: Any
object_explorers: Any
object_property_sections: Any
object_types: Any
schedule_timeout_fn: Optional[Callable[[int, Callable[[], bool]], Any]]
self: (unannotated)
viewer_command_invoker: Callable[..., Any] | None
viewer_command_validator: Callable[[str, str], Any] | None
viewer_commands: Any

lsdtools.extend.OffscreenAgentView.add_gizmo#

Kind: method. Source: views/viewer3d/src/lsd_viewer/agent.py:1902.

Python
add_gizmo(self, gizmo: Any) -> Any
Python
gizmo: Any
self: (unannotated)

Source docstring:

text
Mount one offscreen overlay gizmo through the viewer-owned registry.

lsdtools.extend.OffscreenAgentView.remove_gizmo#

Kind: method. Source: views/viewer3d/src/lsd_viewer/agent.py:1914.

Python
remove_gizmo(self, gizmo_id: str) -> None
Python
gizmo_id: str
self: (unannotated)

Source docstring:

text
Unmount one gizmo and every primitive it declared.

lsdtools.extend.OffscreenAgentView.describe_gizmos#

Kind: method. Source: views/viewer3d/src/lsd_viewer/agent.py:1929.

Python
describe_gizmos(self) -> dict[str, Any]
Python
self: (unannotated)

Source docstring:

text
Describe the offscreen registry through the native Viewer3D schema.

lsdtools.extend.OffscreenAgentView.set_viewer_object_properties#

Kind: method. Source: views/viewer3d/src/lsd_viewer/agent.py:2166.

Python
set_viewer_object_properties(self, section_id: str, changes: Mapping[str, Any], *, expected_selection_digest: str, expected_plan_digest: str, actor: str='') -> dict[str, Any]
Python
actor: str
changes: Mapping[str, Any]
expected_plan_digest: str
expected_selection_digest: str
section_id: str
self: (unannotated)

Source docstring:

text
Stage fields through the same fenced Object Editor as a native view.

lsdtools.extend.OffscreenAgentView.set_viewer_object_component#

Kind: method. Source: views/viewer3d/src/lsd_viewer/agent.py:2185.

Python
set_viewer_object_component(self, section_id: str, present: bool, *, expected_selection_digest: str, expected_plan_digest: str, actor: str='') -> dict[str, Any]
Python
actor: str
expected_plan_digest: str
expected_selection_digest: str
present: bool
section_id: str
self: (unannotated)

Source docstring:

text
Stage component membership through the canonical Object Editor.

lsdtools.extend.OffscreenAgentView.attach_bus#

Kind: method. Source: views/viewer3d/src/lsd_viewer/agent.py:2204.

Python
attach_bus(self, bus) -> None
Python
bus: (unannotated)
self: (unannotated)

lsdtools.extend.OffscreenAgentView.perceive#

Kind: method. Source: views/viewer3d/src/lsd_viewer/agent.py:2208.

Python
perceive(self) -> dict
Python
self: (unannotated)

Source docstring:

text
What an agent sees: ``describe_scene`` layers + the addressable polyline features per layer.

Equivalent to dispatching ``describe_scene`` then ``list_features`` for each layer — the calls a
collab peer or MCP client would make to understand the scene before acting.

lsdtools.extend.OffscreenAgentView.add_layer#

Kind: method. Source: views/viewer3d/src/lsd_viewer/agent.py:2222.

Python
add_layer(self, layer_id: str, kind: str, path: str, *, style: Optional[dict]=None, **extra) -> dict
Python
extra: (unannotated)
kind: str
layer_id: str
path: str
self: (unannotated)
style: Optional[dict]

Source docstring:

text
Deliver a ``viewer/layer/set`` synchronously — the headless analog of a pipeline emit.

*kind* is ``"lines"|"mesh"|"points"|"octree"|"terrain"|"sdf"``; *path* is the primary
parquet (``faces_path`` / ``voxels_path`` / ``tiles_path`` / ``cells_path`` / optional
semantic ``features_path``,
``properties_path`` and ``quantities_path`` go in **extra**).
A mesh may opt into the public resident batching/CPU-instancing seam with
``feature_mesh={"version": 1, "mode": "batch"|"instances", ...}``.
A point layer gains per-row interaction only through the explicit
``feature_points={"version": 1, ...}`` seam, canonical integer ``point_id``
rows, an exactly matching ``features_path``, and a separate
``feature_reference`` whose feature-id column is ``point_id``. The renderer
address may be regenerated; only that semantic reference preserves identity.
Populates the scene so the agent can then describe/snapshot it.

Builds the :class:`~lsd.flow.payload.LayerPayload` wire shape the sink now reads:
``{layer, spec:{kind,style}, paths:{"path"[, "faces_path"|"voxels_path"|"cells_path"]}}``.

lsdtools.extend.OffscreenAgentView.remove_layer#

Kind: method. Source: views/viewer3d/src/lsd_viewer/agent.py:2258.

Python
remove_layer(self, layer_id: str) -> None
Python
layer_id: str
self: (unannotated)

lsdtools.extend.OffscreenAgentView.frame_all#

Kind: method. Source: views/viewer3d/src/lsd_viewer/agent.py:2261.

Python
frame_all(self, *, padding: float=0.2, azimuth: float=0.8, elevation: float=0.5) -> None
Python
azimuth: float
elevation: float
padding: float
self: (unannotated)

Source docstring:

text
Frame all geometry from a 3/4 (isometric-ish) view so meshes aren't seen edge-on.

``fit_bounds`` reuses the camera's current orbit angles, which default to a straight-on axis
view (a flat snapshot). Setting an orbit azimuth/elevation first gives a representative render.

lsdtools.extend.OffscreenAgentView.snapshot_png#

Kind: method. Source: views/viewer3d/src/lsd_viewer/agent.py:2284.

Python
snapshot_png(self, width: int=1024, height: int=768, *, overlay: bool=True) -> bytes
Python
height: int
overlay: bool
self: (unannotated)
width: int

Source docstring:

text
The scene as PNG bytes; with *overlay* the label layers are composited on top.

lsdtools.extend.OffscreenAgentView.save_snapshot#

Kind: method. Source: views/viewer3d/src/lsd_viewer/agent.py:2314.

Python
save_snapshot(self, path: str, width: int=1024, height: int=768) -> str
Python
height: int
path: str
self: (unannotated)
width: int

Source docstring:

text
Render the scene offscreen and write the PNG to *path* (returns *path*).

lsdtools.extend.OffscreenAgentView.dispose#

Kind: method. Source: views/viewer3d/src/lsd_viewer/agent.py:2320.

Python
dispose(self) -> None
Python
self: (unannotated)

Source docstring:

text
Release the headless surface without settling any participant draft.

lsdtools.extend.OffscreenAgentView.scene#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/agent.py:1755.

Python
scene: (unannotated)
Python
scene = Scene(name='agent')

lsdtools.extend.OffscreenAgentView.camera#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/agent.py:1756.

Python
camera: (unannotated)
Python
camera = camera or Camera()

lsdtools.extend.OffscreenAgentView.gizmos#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/agent.py:1759.

Python
gizmos: (unannotated)
Python
gizmos = None

lsdtools.extend.OffscreenAgentView.sink#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/agent.py:1764.

Python
sink: (unannotated)
Python
sink = GeometryLayerSink(self._surface)

lsdtools.extend.OffscreenAgentView.surface#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/agent.py:1770.

Python
surface: (unannotated)
Python
surface = self._surface

lsdtools.extend.OffscreenAgentView.selection#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/agent.py:1772.

Python
selection: (unannotated)
Python
selection = selection_controller_for(sink=self.sink, viewer=self, surface=self._surface, redraw_fn=self._surface.queue_redraw)

lsdtools.extend.OffscreenAgentView.control#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/agent.py:1782.

Python
control: (unannotated)
Python
control = ControlSurface()

lsdtools.extend.OffscreenAgentView.editing#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/agent.py:1797.

Python
editing: (unannotated)
Python
editing = EditController(workspace_authority=edit_workspace_authority, surface_id=self._edit_surface_id, subject_resolver=lambda layer_id, feature_id, expected_generation, feature_kind=None: resolve_resident_edit_subject(self.sink, dataset_resolver, layer_id, feature_id, expected_generation, feature_kind=feature_kind))

lsdtools.extend.OffscreenAgentView.object_editor#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/agent.py:1814.

Python
object_editor: (unannotated)
Python
object_editor = ObjectEditorHost(self, data_editor_host=self._data_editor_host, object_types=object_types, property_sections=object_property_sections)

lsdtools.extend.OffscreenAgentView.scene_commands#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/agent.py:1831.

Python
scene_commands: (unannotated)
Python
scene_commands = SceneCommandController(sectioning_fn=lambda: self._sectioning, camera_fn=lambda: self.camera, redraw_fn=self._surface.queue_redraw, schedule_timeout_fn=schedule_timeout_fn, cancel_timeout_fn=cancel_timeout_fn)

lsdtools.extend.OffscreenAgentView.object_explorer#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/agent.py:1845.

Python
object_explorer: (unannotated)
Python
object_explorer = ObjectExplorerHost(self, object_types=object_types, explorers=object_explorers, context_actions=object_context_actions, viewer_commands=viewer_commands, command_invoker=viewer_command_invoker if viewer_command_invoker is not None else self.scene_commands.invoke, command_validator=viewer_command_validator)

lsdtools.extend.OwnedContributionId#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:118.

Source docstring:

text
A package-qualified contribution id.

``package`` is the package coordinate from ``lsd_package.json``.
``local_id`` may contain slash-separated namespaces, so its canonical
serialized form is ``package/local-id``.

Implementation alias: lsd.packages.viewer_extensions.OwnedContributionId.

lsdtools.extend.OwnedContributionId.package#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:126.

Python
package: str

lsdtools.extend.OwnedContributionId.local_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:127.

Python
local_id: str

lsdtools.extend.OwnedContributionId.qualified#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:135.

Python
qualified(self) -> str
Python
self: (unannotated)

lsdtools.extend.OwnedContributionId.parse#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:139.

Python
parse(cls, value: str) -> 'OwnedContributionId'
Python
cls: (unannotated)
value: str

lsdtools.extend.PackageHost#

Kind: class. Source: core/lsd/src/lsd/packages/host.py:30.

Python
PackageHost(self, bus: Any=None, *, services: Optional[Dict[str, Callable]]=None) -> None

Source docstring:

text
Wraps an event bus and exposes optional host services to a package.

Service callables (all optional) are passed in ``services``:
  * ``engine``        : ``() -> Engine | None``     — the current project's engine
  * ``project_dir``   : ``() -> str | None``        — the open project's folder
  * ``notify``        : ``(message: str, level: str) -> None`` — surface a message
  * ``open_in_editor``: ``(path: str | None) -> None`` — open a file/folder in the editor
  * ``request_reload``: ``() -> None``              — ask the host to reload scripts

Implementation alias: lsd.packages.host.PackageHost.

lsdtools.extend.PackageHost.__init__#

Kind: method. Source: core/lsd/src/lsd/packages/host.py:41.

Python
__init__(self, bus: Any=None, *, services: Optional[Dict[str, Callable]]=None) -> None
Python
bus: Any
self: (unannotated)
services: Optional[Dict[str, Callable]]

lsdtools.extend.PackageHost.wrap#

Kind: method. Source: core/lsd/src/lsd/packages/host.py:56.

Python
wrap(cls, obj: Any, services: Optional[Dict[str, Callable]]=None) -> 'PackageHost'
Python
cls: (unannotated)
obj: Any
services: Optional[Dict[str, Callable]]

Source docstring:

text
Return a PackageHost for *obj*. If it's already a host, return it unchanged
(new *services* are added); otherwise wrap the bus.

lsdtools.extend.PackageHost.for_package#

Kind: method. Source: core/lsd/src/lsd/packages/host.py:75.

Python
for_package(self, package: str) -> '_PackageBoundHost'
Python
package: str
self: (unannotated)

Source docstring:

text
Return a permanent package-owned facade for runtime callbacks.

Unlike :meth:`mounting`, this retains ownership after mount returns, so late services and
subscriptions participate in disable, reload, and unmount lifecycle operations.

lsdtools.extend.PackageHost.bus#

Kind: method. Source: core/lsd/src/lsd/packages/host.py:84.

Python
bus(self) -> Any
Python
self: (unannotated)

Source docstring:

text
The underlying event bus (or ``None``).

lsdtools.extend.PackageHost.service#

Kind: method. Source: core/lsd/src/lsd/packages/host.py:88.

Python
service(self, name: str, default: Any=None) -> Any
Python
default: Any
name: str
self: (unannotated)

Source docstring:

text
Resolve a named host service by calling its zero-arg provider.

Returns *default* when the service isn't provided or its provider raises. This is the
generic accessor behind the named properties (``engine``/``project_dir``); front-ends use
it for app-specific capabilities they register — e.g. ``host.service("cache")`` for a
shared package cache. Keeps the core generic (no gui/app names baked into these properties).

The front-end's constructor ``services`` take precedence; a package-registered provider
(:meth:`register_service`) resolves as a fallback.

lsdtools.extend.PackageHost.register_service#

Kind: method. Source: core/lsd/src/lsd/packages/host.py:112.

Python
register_service(self, name: str, provider: Callable, *, package: Optional[str]=None) -> None
Python
name: str
package: Optional[str]
provider: Callable
self: (unannotated)

Source docstring:

text
Register a named host service *provider* (a zero-arg callable) a package supplies.

Symmetric to :meth:`service` (consumption): a package can *provide* a handle other packages
resolve by name (e.g. a shared cache, a domain client). The provider is stored with its owning
*package* so :meth:`unregister_package_services` can drop exactly that package's providers on
disable/reload. One name has one owner and provider; replaying that exact declaration is
idempotent.

lsdtools.extend.PackageHost.unregister_package_services#

Kind: method. Source: core/lsd/src/lsd/packages/host.py:139.

Python
unregister_package_services(self, package: Optional[str]) -> None
Python
package: Optional[str]
self: (unannotated)

Source docstring:

text
Drop every service a *package* registered via :meth:`register_service`.

lsdtools.extend.PackageHost.unmount_package#

Kind: method. Source: core/lsd/src/lsd/packages/host.py:143.

Python
unmount_package(self, package: str) -> None
Python
package: str
self: (unannotated)

Source docstring:

text
Remove every runtime binding owned by *package*.

Disabling is reversible and therefore only gates bindings. Unmounting is the terminal
lifecycle boundary used by reload/removal: callbacks leave the bus, services disappear,
and no inactive marker survives to affect a later fresh mount.

lsdtools.extend.PackageHost.mounting#

Kind: method. Source: core/lsd/src/lsd/packages/host.py:158.

Python
mounting(self, package: str)
Python
package: str
self: (unannotated)

Source docstring:

text
Attribute subscriptions/services created while one package Tool mounts.

lsdtools.extend.PackageHost.set_package_active#

Kind: method. Source: core/lsd/src/lsd/packages/host.py:167.

Python
set_package_active(self, package: str, active: bool) -> None
Python
active: bool
package: str
self: (unannotated)

Source docstring:

text
Atomically gate a package's host services and event handlers.

lsdtools.extend.PackageHost.snapshot_runtime_state#

Kind: method. Source: core/lsd/src/lsd/packages/host.py:174.

Python
snapshot_runtime_state(self) -> dict
Python
self: (unannotated)

Source docstring:

text
Capture package-owned host state for an activation transaction.

lsdtools.extend.PackageHost.restore_runtime_state#

Kind: method. Source: core/lsd/src/lsd/packages/host.py:183.

Python
restore_runtime_state(self, state: dict) -> None
Python
self: (unannotated)
state: dict

Source docstring:

text
Restore the exact handler/service state captured by :meth:`snapshot_runtime_state`.

lsdtools.extend.PackageHost.on#

Kind: method. Source: core/lsd/src/lsd/packages/host.py:202.

Python
on(self, pattern: str, handler: Callable, priority: int=100) -> Any
Python
handler: Callable
pattern: str
priority: int
self: (unannotated)

lsdtools.extend.PackageHost.off#

Kind: method. Source: core/lsd/src/lsd/packages/host.py:225.

Python
off(self, pattern: str, handler: Callable) -> None
Python
handler: Callable
pattern: str
self: (unannotated)

lsdtools.extend.PackageHost.emit#

Kind: method. Source: core/lsd/src/lsd/packages/host.py:250.

Python
emit(self, *args: Any, **kwargs: Any) -> Any
Python
args: Any
kwargs: Any
self: (unannotated)

lsdtools.extend.PackageHost.emit_collect#

Kind: method. Source: core/lsd/src/lsd/packages/host.py:255.

Python
emit_collect(self, *args: Any, **kwargs: Any) -> Any
Python
args: Any
kwargs: Any
self: (unannotated)

lsdtools.extend.PackageHost.engine#

Kind: method. Source: core/lsd/src/lsd/packages/host.py:263.

Python
engine(self) -> Any
Python
self: (unannotated)

Source docstring:

text
The current project's engine, or ``None`` if unavailable.

lsdtools.extend.PackageHost.project_dir#

Kind: method. Source: core/lsd/src/lsd/packages/host.py:275.

Python
project_dir(self) -> Optional[str]
Python
self: (unannotated)

Source docstring:

text
The open project's folder (where its ``.lsd`` and scripts live), or ``None``.

lsdtools.extend.PackageHost.notify#

Kind: method. Source: core/lsd/src/lsd/packages/host.py:286.

Python
notify(self, message: str, level: str='info') -> None
Python
level: str
message: str
self: (unannotated)

Source docstring:

text
Surface a short message to the user (falls back to logging).

lsdtools.extend.PackageHost.open_in_editor#

Kind: method. Source: core/lsd/src/lsd/packages/host.py:297.

Python
open_in_editor(self, path: Optional[str]=None) -> None
Python
path: Optional[str]
self: (unannotated)

Source docstring:

text
Ask the host to open *path* in the code editor (no-op if unsupported).

With no *path*, opens the project folder. A relative path resolves against it.

lsdtools.extend.PackageHost.request_reload#

Kind: method. Source: core/lsd/src/lsd/packages/host.py:311.

Python
request_reload(self) -> None
Python
self: (unannotated)

Source docstring:

text
Ask the host to reload the project's scripts (no-op if unsupported).

lsdtools.extend.PackageInfo#

Kind: class. Source: core/lsd/src/lsd/packages/manifest.py:332.

Source docstring:

text
Metadata snapshot for an installed or available lsd package.

Implementation alias: lsd.packages.manifest.PackageInfo.

lsdtools.extend.PackageInfo.name#

Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:335.

Python
name: str

lsdtools.extend.PackageInfo.version#

Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:336.

Python
version: str

lsdtools.extend.PackageInfo.display_name#

Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:337.

Python
display_name: str
Python
display_name = ''

lsdtools.extend.PackageInfo.description#

Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:338.

Python
description: str
Python
description = ''

lsdtools.extend.PackageInfo.author#

Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:339.

Python
author: str
Python
author = ''

lsdtools.extend.PackageInfo.publisher#

Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:340.

Python
publisher: str
Python
publisher = ''

lsdtools.extend.PackageInfo.keywords#

Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:341.

Python
keywords: List[str]
Python
keywords = field(default_factory=list)

lsdtools.extend.PackageInfo.min_lsd#

Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:342.

Python
min_lsd: str
Python
min_lsd = '1.0.0'

lsdtools.extend.PackageInfo.dependencies#

Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:343.

Python
dependencies: Dict[str, str]
Python
dependencies = field(default_factory=dict)

lsdtools.extend.PackageInfo.runtime_dependencies#

Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:346.

Python
runtime_dependencies: Dict[str, str]
Python
runtime_dependencies = field(default_factory=dict)

lsdtools.extend.PackageInfo.tier#

Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:350.

Python
tier: str
Python
tier = 'domain'

lsdtools.extend.PackageInfo.group#

Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:351.

Python
group: str
Python
group = ''

lsdtools.extend.PackageInfo.code#

Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:353.

Python
code: Optional[str]
Python
code = None

lsdtools.extend.PackageInfo.tool#

Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:355.

Python
tool: Optional[str]
Python
tool = None

lsdtools.extend.PackageInfo.sealed#

Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:357.

Python
sealed: bool
Python
sealed = False

lsdtools.extend.PackageInfo.paid#

Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:358.

Python
paid: bool
Python
paid = False

lsdtools.extend.PackageInfo.key_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:359.

Python
key_id: Optional[str]
Python
key_id = None

lsdtools.extend.PackageInfo.artifact_sha256#

Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:360.

Python
artifact_sha256: Optional[str]
Python
artifact_sha256 = None

lsdtools.extend.PackageInfo.resources#

Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:361.

Python
resources: List[str]
Python
resources = field(default_factory=list)

lsdtools.extend.PackageInfo.path#

Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:364.

Python
path: Optional[str]
Python
path = None

lsdtools.extend.PackageInfo.installed_at#

Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:365.

Python
installed_at: Optional[str]
Python
installed_at = None

lsdtools.extend.PackageInfo.source#

Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:368.

Python
source: str
Python
source = 'local'

lsdtools.extend.PackageInfo.distribution#

Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:371.

Python
distribution: Optional[str]
Python
distribution = None

lsdtools.extend.PackageInfo.to_manifest_dict#

Kind: method. Source: core/lsd/src/lsd/packages/manifest.py:373.

Python
to_manifest_dict(self) -> dict
Python
self: (unannotated)

Source docstring:

text
Return the serialisable lsd_package.json content (v1).

lsdtools.extend.PackageInfo.from_dict#

Kind: method. Source: core/lsd/src/lsd/packages/manifest.py:405.

Python
from_dict(cls, data: dict) -> 'PackageInfo'
Python
cls: (unannotated)
data: dict

Source docstring:

text
Parse the one supported v1 manifest schema; reject every other shape.

lsdtools.extend.PackageManager#

Kind: class. Source: core/lsd/src/lsd/packages/manager.py:850.

Python
PackageManager(self, workspace_dir: Optional[str]=None, extra_search_paths: 'Sequence[Path]'=(), trusted_shell_paths: 'Sequence[Path]'=(), trusted_shell_packages: 'Optional[Mapping[str, Path]]'=None) -> None

Source docstring:

text
Manage the lsd package lifecycle.

Typical usage in lsd-desktop — NOT ``load_all``: the desktop opens one project at a time, so
``lsd_desktop.packages_runtime.PackageRuntime`` drives this manager per project and activates
only the graphs that project declares (``activate_graph`` / ``load`` / ``load_locked``), then
filters them for the session through its own ``ContributionScope``::

    pm = PackageManager(workspace_dir=Path(project_file).parent)
    runtime = PackageRuntime(pm, host)          # desktop-owned, one per project session
    runtime.activate_graph(name, bus=desktop_bus)

``load_all`` is the load-everything path, used by headless callers with no project scope
(today: lsd-cli).

Typical usage in lsd-cli::

    pm = PackageManager()
    for info in pm.installed():
        print(info.name, info.version)

Implementation alias: lsd.packages.manager.PackageManager.

lsdtools.extend.PackageManager.__init__#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:872.

Python
__init__(self, workspace_dir: Optional[str]=None, extra_search_paths: 'Sequence[Path]'=(), trusted_shell_paths: 'Sequence[Path]'=(), trusted_shell_packages: 'Optional[Mapping[str, Path]]'=None) -> None
Python
extra_search_paths: 'Sequence[Path]'
self: (unannotated)
trusted_shell_packages: 'Optional[Mapping[str, Path]]'
trusted_shell_paths: 'Sequence[Path]'
workspace_dir: Optional[str]

lsdtools.extend.PackageManager.blocked#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:940.

Python
blocked(self) -> 'dict[str, str]'
Python
self: (unannotated)

Source docstring:

text
Packages found but not loaded (e.g. min_lsd too high), name -> reason.

lsdtools.extend.PackageManager.licenses#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:944.

Python
licenses(self) -> 'dict[str, dict]'
Python
self: (unannotated)

Source docstring:

text
Lease terms for loaded paid packages, name -> {seats, delivery, exp, plan}.

lsdtools.extend.PackageManager.license_of#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:948.

Python
license_of(self, name: str) -> 'Optional[dict]'
Python
name: str
self: (unannotated)

lsdtools.extend.PackageManager.dependency_report#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:951.

Python
dependency_report(self, name: str) -> Optional[DepReport]
Python
name: str
self: (unannotated)

Source docstring:

text
Check artifact and selected-runtime requirements for one installed root.

lsdtools.extend.PackageManager.runtime_package_infos#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:982.

Python
runtime_package_infos(self) -> 'dict[str, PackageInfo]'
Python
self: (unannotated)

Source docstring:

text
Return the exact provider inventory owned by this selected Desktop runtime.

Installed runtimes resolve the generated document from the extracted, native-authenticated
``app.pak`` tree. Source Desktop runs resolve only the same three checkout-owned policy
coordinates. Neither branch consults installed.json, package discovery, entry points, or a
network service, and callers receive fresh objects that cannot mutate retained authority.

lsdtools.extend.PackageManager.runtime_dependency_report#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:1028.

Python
runtime_dependency_report(self, info: Any) -> DepReport
Python
info: Any
self: (unannotated)

Source docstring:

text
Check an object's ``runtime_dependencies`` against the selected runtime inventory.

The object may be a :class:`PackageInfo` or a pre-download graph-row adapter. A corrupt
runtime inventory raises; ordinary compatibility misses are represented in ``DepReport``.

lsdtools.extend.PackageManager.require_runtime_dependencies#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:1055.

Python
require_runtime_dependencies(self, owner: str, requirements: Mapping[str, str]) -> None
Python
owner: str
requirements: Mapping[str, str]
self: (unannotated)

Source docstring:

text
Raise unless one pre-download package row fits this exact Desktop runtime.

lsdtools.extend.PackageManager.dependency_closure#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:1122.

Python
dependency_closure(self, names: Iterable[str]) -> 'list[str]'
Python
names: Iterable[str]
self: (unannotated)

Source docstring:

text
Resolve local package roots to a validated dependency-first activation order.

This is the shared answer used by a live host when it changes project state: enabling a
root must also unpark already-resident dependencies, while disabling a dependency must know
which active roots still require it. Missing, mismatched and cyclic graphs fail before the
caller mutates UI or project state.

lsdtools.extend.PackageManager.search_paths#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:1236.

Python
search_paths(self) -> List[Path]
Python
self: (unannotated)

Source docstring:

text
Directories searched for packages, in priority order.

Includes a **bundled** ``packages/`` dir sitting beside the ``lsd`` package
when present — this is how the standalone app ships first-party packages
without pip metadata: a thin directory manifest there loads the bundled module
by import. Marketplace packages are never placed there. In a
normal dev/pip layout that path doesn't exist, so it's simply skipped.

Generic ``extra_search_paths`` are discovery-only and cannot grant shell trust.
``trusted_shell_paths`` are explicit host-owned bundled roots; their names are reserved and
their local code origins are verified during shell activation. Exact
``trusted_shell_packages`` are intentionally not added as search roots: only the bound
name/path pair is discoverable through that authority.

lsdtools.extend.PackageManager.trusted_shell_infos#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:1291.

Python
trusted_shell_infos(self) -> List[PackageInfo]
Python
self: (unannotated)

Source docstring:

text
Bound first-party shell candidates; untrusted manifest claims are excluded.

lsdtools.extend.PackageManager.installed#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:1373.

Python
installed(self) -> List[PackageInfo]
Python
self: (unannotated)

Source docstring:

text
Return PackageInfo for every package in the installed record.

lsdtools.extend.PackageManager.is_trusted_shell_package#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:1390.

Python
is_trusted_shell_package(self, name: str) -> bool
Python
name: str
self: (unannotated)

Source docstring:

text
Whether *name* is a host-authorized bundled shell package.

Trust identifies code origin and authority only. It does not exempt a package from
project-scoped activation or any other project package gate.

lsdtools.extend.PackageManager.loaded_names#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:1398.

Python
loaded_names(self) -> List[str]
Python
self: (unannotated)

Source docstring:

text
Names of packages currently loaded into the registry (active this session).

lsdtools.extend.PackageManager.loaded_package_infos#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:1402.

Python
loaded_package_infos(self) -> 'dict[str, PackageInfo]'
Python
self: (unannotated)

Source docstring:

text
Return the complete exact execution inventory resident in this manager.

This is the attestation/read seam for a live host.  It deliberately reports resident
modules, including packages parked by a project switch, because their code remains in
this process.  A partial internal inventory is an invariant failure rather than a reason
to omit a package from the result.

lsdtools.extend.PackageManager.loaded_coordinates#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:1423.

Python
loaded_coordinates(self) -> 'dict[str, tuple[str, str]]'
Python
self: (unannotated)

Source docstring:

text
Exact ``(version, artifact hash)`` of each resident Store package.

lsdtools.extend.PackageManager.exact_info#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:1427.

Python
exact_info(self, name: str, version: str, artifact_sha256: str) -> Optional[PackageInfo]
Python
artifact_sha256: str
name: str
self: (unannotated)
version: str

Source docstring:

text
Resolve one immutable Store build; never fall back to the machine current pointer.

lsdtools.extend.PackageManager.preflight_compatibility#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:1470.

Python
preflight_compatibility(self, info: PackageInfo) -> None
Python
info: PackageInfo
self: (unannotated)

Source docstring:

text
Prove one discovered package can execute in this runtime without executing it.

The check is intentionally data-only: ordinary packages use their manifest ``min_lsd``
floor, while sealed packages additionally authenticate the retained artifact and compare
its signed Python cache tag and bytecode magic with this interpreter.  No package module is
imported and no encrypted payload or paid content key is opened.

Raises ``RuntimeError`` with a user-facing reason when the package is incompatible.

lsdtools.extend.PackageManager.discard_exact_cache#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:1520.

Python
discard_exact_cache(self, name: str, version: str, artifact_sha256: str) -> None
Python
artifact_sha256: str
name: str
self: (unannotated)
version: str

Source docstring:

text
Remove one newly-created immutable coordinate after a failed graph transaction.

The current machine pointer is a hard reference and makes removal illegal. Callers must
also prove the coordinate did not predate their transaction; this method deliberately
cannot infer that historical fact.

lsdtools.extend.PackageManager.load_locked#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:1573.

Python
load_locked(self, package_lock: dict, bus: Any=None) -> List[str]
Python
bus: Any
package_lock: dict
self: (unannotated)

Source docstring:

text
Load one exact graph atomically; raise without residue when any member fails.

lsdtools.extend.PackageManager.activate_graph#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:1619.

Python
activate_graph(self, *, root: str, names: Iterable[str]=(), package_lock: Optional[dict]=None, bus: Any=None, finalize: Optional[Callable[[tuple[str, ...]], None]]=None) -> PackageActivationReport
Python
bus: Any
finalize: Optional[Callable[[tuple[str, ...]], None]]
names: Iterable[str]
package_lock: Optional[dict]
root: str
self: (unannotated)

Source docstring:

text
Preflight and atomically activate one root dependency closure.

Atomicity covers LSD-managed registries, ownership, contributions, PackageHost
services/subscriptions, loaded bookkeeping, and package module trees. Arbitrary external
side effects performed by publisher code require process isolation and are outside this
in-process contract.

A host may finalize its project realization after all graph members load, while the old
module/resource trees are still recoverable. Raising from ``finalize(planned)`` rolls back
this same transaction. The host restores its own project state after a failed report;
it must not unload/reimport the package state this manager already restored.

lsdtools.extend.PackageManager.invalidate_catalog#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:1822.

Python
invalidate_catalog(self) -> None
Python
self: (unannotated)

Source docstring:

text
Drop cached discovery metadata after an install, removal, or filesystem event.

Callers never receive the retained objects themselves, so mutating a displayed
:class:`PackageInfo` cannot poison later activation planning.

lsdtools.extend.PackageManager.is_project_local#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:1832.

Python
is_project_local(self, name: str) -> bool
Python
name: str
self: (unannotated)

Source docstring:

text
Whether package *name* is discovered from this workspace's own ``packages/`` directory.

Such code ships with the project rather than through the Store or a bundled root, so a
collaborator asking the host to run it is asking the host to run the project's code.

lsdtools.extend.PackageManager.set_workspace_dir#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:1846.

Python
set_workspace_dir(self, workspace_dir: Optional[str]) -> None
Python
self: (unannotated)
workspace_dir: Optional[str]

Source docstring:

text
Point project-local discovery at ``<workspace_dir>/packages``.

A Desktop manager outlives individual projects, so its project root cannot be fixed at
construction time. Changing it is a discovery boundary and invalidates the cached catalog.

lsdtools.extend.PackageManager.available#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:1891.

Python
available(self, *, refresh: bool=False) -> List[PackageInfo]
Python
refresh: bool
self: (unannotated)

Source docstring:

text
Every package the app can load, merged by name — pip entry-point packages, search-path
package dirs, and the hand-installed record. This is what the Packages panel lists: both
explicitly configured directory-package roots and genuine pip-channel distributions stay
visible without requiring a managed install receipt.

lsdtools.extend.PackageManager.load_trusted_shells#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:1932.

Python
load_trusted_shells(self, bus: Any=None) -> List[str]
Python
bus: Any
self: (unannotated)

Source docstring:

text
Load only host-authorized bundled shell packages from their bound paths.

Goes through :meth:`_load_bound_info`, which loads the preflighted candidate rather than
rescanning by name and forces local-module origin verification, so a Store, workspace, or
site-package with the same name/code module cannot shadow a Desktop surface.

A shell package that depends on anything outside the trusted set is refused rather than
given trusted authority by association. One bad package is recorded in ``blocked()`` and
skipped; the rest still load. Idempotent — already-loaded packages are left alone.

lsdtools.extend.PackageManager.load_all#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:1967.

Python
load_all(self, bus: Any=None) -> List[str]
Python
bus: Any
self: (unannotated)

Source docstring:

text
Load every package found in the search paths.

Imports each package's entry module (triggering configurable registration)
and mounts the manifest's declared ``Tool``.

Args:
    bus: optional event bus or an existing :class:`PackageHost`.

Returns:
    Sorted list of newly registered type ids.

lsdtools.extend.PackageManager.load#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:2699.

Python
load(self, names: Iterable[str], bus: Any=None) -> List[str]
Python
bus: Any
names: Iterable[str]
self: (unannotated)

Source docstring:

text
Atomically activate each requested ordinary root dependency closure.

Unrelated roots are independent: one broken package remains off without undoing a healthy
root. Within a root, however, preflight or import/mount failure leaves no partial package,
contribution, service, or callback residue.

lsdtools.extend.PackageManager.reload#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:2757.

Python
reload(self, name: str, bus: Any=None) -> ReloadResult
Python
bus: Any
name: str
self: (unannotated)

Source docstring:

text
Exercise an explicit reload transaction for one loaded directory package.

This is an internal/test seam for registration replacement and rollback, not a supported
Desktop, Hub, or public-CLI authoring workflow. A linked Local package is never watched or
reimported in a running Desktop; use a fresh Desktop process after editing its source.

Finds the package on the search paths (or installed record) and delegates
to :meth:`reload_path`. Sealed/pip packages are not directory-reloadable;
for those this is a no-op returning an empty result.

lsdtools.extend.PackageManager.reload_exact#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:2786.

Python
reload_exact(self, name: str, version: str, artifact_sha256: str, bus: Any=None) -> ReloadResult
Python
artifact_sha256: str
bus: Any
name: str
self: (unannotated)
version: str

Source docstring:

text
Reload one immutable Store coordinate, including non-root dependencies.

lsdtools.extend.PackageManager.reload_path#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:2836.

Python
reload_path(self, package_dir: Any, bus: Any=None, *, expected_name: Optional[str]=None) -> ReloadResult
Python
bus: Any
expected_name: Optional[str]
package_dir: Any
self: (unannotated)

Source docstring:

text
Reload the directory package at *package_dir* in place (see :meth:`reload`).

``expected_name`` binds a user-selected Local source coordinate to this transaction. A
changed/removed manifest or a conversion to a sealed build then fails instead of loading a
different package from the selected folder.

lsdtools.extend.PackageManager.load_project_scripts#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:2923.

Python
load_project_scripts(self, project_dir: Any, bus: Any=None, *, source_dir: Any=None) -> ReloadResult
Python
bus: Any
project_dir: Any
self: (unannotated)
source_dir: Any

Source docstring:

text
Load (or reload) loose ``.py`` step files next to a project's ``.lsd``.

The zero-config on-ramp: drop a ``steps.py`` (or any top-level ``*.py``, or files
under a ``scripts/`` subdir) beside your project and its ``@load``/``@shape``/
``@deliver`` or class-based steps register automatically — no manifest. Call again
after an edit (hot-reload): classes deleted from the source are unregistered,
edited classes pick up the new code, new ones appear. ``source_dir`` may provide a private
execution snapshot while package ownership remains bound to logical ``project_dir``.
Returns a :class:`ReloadResult`.

lsdtools.extend.PackageManager.unload_project_scripts#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:2979.

Python
unload_project_scripts(self, project_dir: Any) -> None
Python
project_dir: Any
self: (unannotated)

Source docstring:

text
Remove every class, contribution, and module owned by one project's loose scripts.

lsdtools.extend.PackageManager.owned_type_ids#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:3049.

Python
owned_type_ids(name: str) -> List[str]
Python
name: str

Source docstring:

text
Exact Configurable type ids currently attributed to package *name*.

lsdtools.extend.PackageManager.unload#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:3053.

Python
unload(self, name: str) -> None
Python
name: str
self: (unannotated)

Source docstring:

text
Drop a package's classes, contributions, and modules so a fresh import re-execs.

Removes its Configurable subclasses from the registry and ``_TYPE_OWNER``,
UI/CLI contributions, host callbacks/services, and its ``lsd_pkg_<name>`` module tree
from ``sys.modules`` — then marks it not-loaded so ``_load_one`` re-imports it.

lsdtools.extend.PackageManager.release_finished_activations#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:3104.

Python
release_finished_activations(self) -> List[str]
Python
self: (unannotated)

Source docstring:

text
Release process-wide package mounts left behind by a runtime that has ended.

Contributions live in one process-wide registry, but each is mounted against one
runtime's host, and :meth:`Tool.mount` refuses to hand an existing mount to a second
host — otherwise a package's callbacks would fire against the wrong runtime. That guard
is about runtimes that are *live*.

A process can also mount packages with no runtime behind them at all: resolving a
contributed CLI command means importing every installed package against a throwaway
host, which is discarded moments later. Nothing owns those mounts afterwards, yet they
still hold the claim, so the next runtime in the same process is refused its own
packages — silently, because a failed mount only leaves the package inactive.
An :class:`Engine` releases what it activated (see
``Engine._release_owned_package_activations``); an ownerless load has nobody to do it.

Call this when starting a runtime that is the only one in its process, before
activating. Packages this manager itself has resident are left untouched, so it can
never pull a mount out from under a runtime it is serving.

lsdtools.extend.PackageManager.store_transaction#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:3156.

Python
store_transaction()

Source docstring:

text
Graph-wide cross-process mutation scope (same-thread re-entrant).

lsdtools.extend.PackageManager.install#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:3160.

Python
install(self, source: str, *, distribution: Optional[str]=None, register: bool=True) -> Optional[PackageInfo]
Python
distribution: Optional[str]
register: bool
self: (unannotated)
source: str

Source docstring:

text
Install one package through the authenticated native Hub worker.

Args:
    source: path to a package directory, source ``.zip``, or sealed
        ``.lsdpackage`` delivered by the Store.

Returns:
    PackageInfo on success, None on failure.

lsdtools.extend.PackageManager.snapshot#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:3178.

Python
snapshot(self, source: str) -> Optional[PackageInfo]
Python
self: (unannotated)
source: str

Source docstring:

text
Copy one source directory/ZIP into managed storage for source-development tests.

This is the explicit implementation seam behind ``lsd package snapshot``. It is not a
sealed-package, Core, Store, URL, removal, or packaged-runtime acquisition path.

lsdtools.extend.PackageManager.snapshot_install#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:3230.

Python
snapshot_install(self, name: str) -> InstallSnapshot
Python
name: str
self: (unannotated)

Source docstring:

text
Capture the current machine pointer without duplicating package trees.

The immutable cache lives below ``.store-cache`` while Local/snapshot packages live at the
legacy-visible name root. A Store selection therefore cannot mutate either old tree; its
rollback needs only the exact installed.json entry.

lsdtools.extend.PackageManager.discard_install_snapshot#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:3250.

Python
discard_install_snapshot(self, snapshot: InstallSnapshot) -> None
Python
self: (unannotated)
snapshot: InstallSnapshot

lsdtools.extend.PackageManager.install_snapshot_unchanged#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:3257.

Python
install_snapshot_unchanged(self, snapshot: InstallSnapshot) -> bool
Python
self: (unannotated)
snapshot: InstallSnapshot

Source docstring:

text
Whether a pre-install failure left the snapshot coordinate untouched.

lsdtools.extend.PackageManager.install_snapshot_matches#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:3265.

Python
install_snapshot_matches(self, snapshot: InstallSnapshot, version: str) -> bool
Python
self: (unannotated)
snapshot: InstallSnapshot
version: str

Source docstring:

text
CAS guard: this transaction's exact installed build is still current.

lsdtools.extend.PackageManager.record_install_graph#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:3278.

Python
record_install_graph(self, root: str, version: str, graph: dict) -> None
Python
graph: dict
root: str
self: (unannotated)
version: str

Source docstring:

text
Durably select the coordinate's sole graph as the machine default.

The server binds one immutable resolved graph to each exact root name/version. A different
graph for the same exact root is therefore a contract violation, not an update. The graph
receipt is flushed first; ``installed.json`` is the only mutable pointer and advances in
one atomic replace afterwards. A process death can leave only an unreferenced safe receipt,
never a pointer to missing graph bytes.

lsdtools.extend.PackageManager.exact_root_graph#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:3469.

Python
exact_root_graph(self, root: str, version: str, artifact_sha256: str) -> tuple[list[str], dict]
Python
artifact_sha256: str
root: str
self: (unannotated)
version: str

Source docstring:

text
Return the unique exact lock for a retained published root, even if not current.

lsdtools.extend.PackageManager.installed_root_graph#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:3478.

Python
installed_root_graph(self, root: str) -> tuple[list[str], dict]
Python
root: str
self: (unannotated)

Source docstring:

text
Return a dependency-first exact lock for one installed sealed root.

Server-acquired Core/Store roots are bound to their authenticated graph receipt.  A
user-explicit offline ``.lsdpackage`` has no server receipt on the destination machine, so
its graph is rebuilt only from the currently selected, individually signed exact artifacts.
That fallback never admits a mutable/local dependency and the resulting exact coordinates
are persisted into the project by Desktop before the package can be reopened.

lsdtools.extend.PackageManager.restore_install_snapshot#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:3578.

Python
restore_install_snapshot(self, snapshot: InstallSnapshot, failed_version: Optional[str]=None) -> None
Python
failed_version: Optional[str]
self: (unannotated)
snapshot: InstallSnapshot

Source docstring:

text
Atomically restore the old machine pointer from *snapshot*.

Store cache acquisition never mutates the previous directory, so rollback intentionally
leaves every verified exact coordinate and mutable package tree in place.

lsdtools.extend.PackageManager.install_url#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:3610.

Python
install_url(self, url: str) -> Optional[PackageInfo]
Python
self: (unannotated)
url: str

Source docstring:

text
Install one bounded package archive from HTTPS, loopback, or a GitHub repository.

Every redirect is revalidated. Source ZIPs are expanded only through the portable,
bounded archive contract in :meth:`_install_zip`. Package content is acquired through
the independent Hub content store, never inferred from a sibling URL.

lsdtools.extend.PackageManager.add_local#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:3688.

Python
add_local(self, source: str) -> PackageInfo
Python
self: (unannotated)
source: str

Source docstring:

text
Register one manifest-validated Local package **by reference** (no copy).

Unlike :meth:`install` (which copies into the packages dir), the folder stays where it is.
The exact path is recorded in the installed record with ``source="local"`` so a fresh
process reads that folder (via :meth:`_load_installed_dirs`). Source changes are not watched
automatically, and a running Desktop intentionally does not reimport resident modules.
Point LSD at one real package directory. The Local operation supplies the lane; the
package manifest must explicitly satisfy Local publisher/tier/paid policy.

lsdtools.extend.PackageManager.remove#

Kind: method. Source: core/lsd/src/lsd/packages/manager.py:3952.

Python
remove(self, name: str) -> bool
Python
name: str
self: (unannotated)

lsdtools.extend.PalettePayload#

Kind: class. Source: core/style/src/lsd_style/assets.py:170.

Source docstring:

text
A qualitative palette: ordered RGBA swatches, optionally named for known values.

Implementation alias: lsd_style.assets.PalettePayload.

Declared bases: StyleAssetPayload.

lsdtools.extend.PalettePayload.colors#

Kind: attribute. Source: core/style/src/lsd_style/assets.py:173.

Python
colors: Tuple[RGBA, ...]

lsdtools.extend.PalettePayload.named#

Kind: attribute. Source: core/style/src/lsd_style/assets.py:174.

Python
named: Tuple[Tuple[str, RGBA], ...]
Python
named = ()

lsdtools.extend.PalettePayload.kind#

Kind: attribute. Source: core/style/src/lsd_style/assets.py:175.

Python
kind = 'palette'

lsdtools.extend.PalettePayload.color_for#

Kind: method. Source: core/style/src/lsd_style/assets.py:185.

Python
color_for(self, value: Any, index: int) -> RGBA
Python
index: int
self: (unannotated)
value: Any

lsdtools.extend.PalettePayload.categories_mapping#

Kind: method. Source: core/style/src/lsd_style/assets.py:192.

Python
categories_mapping(self, values: Sequence[Any], *, fallback: Any=None) -> Dict[str, Any]
Python
fallback: Any
self: (unannotated)
values: Sequence[Any]

lsdtools.extend.PalettePayload.to_bytes#

Kind: method. Source: core/style/src/lsd_style/assets.py:202.

Python
to_bytes(self) -> bytes
Python
self: (unannotated)

lsdtools.extend.PalettePayload.from_parts#

Kind: method. Source: core/style/src/lsd_style/assets.py:207.

Python
from_parts(cls, header: Mapping[str, Any], arrays: Sequence[np.ndarray]) -> 'PalettePayload'
Python
arrays: Sequence[np.ndarray]
cls: (unannotated)
header: Mapping[str, Any]

lsdtools.extend.ParameterInfo#

Kind: class. Source: core/lsd/src/lsd/core/configurable.py:213.

Source docstring:

text
Immutable snapshot of one parameter — consumed by inspector / CLI builder.

Implementation alias: lsd.core.configurable.ParameterInfo.

lsdtools.extend.ParameterInfo.name#

Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:215.

Python
name: str

lsdtools.extend.ParameterInfo.label#

Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:216.

Python
label: str

lsdtools.extend.ParameterInfo.description#

Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:217.

Python
description: str

lsdtools.extend.ParameterInfo.current_value#

Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:218.

Python
current_value: Any

lsdtools.extend.ParameterInfo.default#

Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:219.

Python
default: Any

lsdtools.extend.ParameterInfo.param_type#

Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:220.

Python
param_type: type

lsdtools.extend.ParameterInfo.required#

Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:221.

Python
required: bool

lsdtools.extend.ParameterInfo.choices#

Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:222.

Python
choices: Optional[List[Any]]

lsdtools.extend.ParameterInfo.min#

Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:223.

Python
min: Optional[Any]

lsdtools.extend.ParameterInfo.max#

Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:224.

Python
max: Optional[Any]

lsdtools.extend.ParameterInfo.widget#

Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:225.

Python
widget: Optional[str]

lsdtools.extend.ParameterInfo.visibility#

Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:226.

Python
visibility: str

lsdtools.extend.ParameterInfo.group#

Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:227.

Python
group: str

lsdtools.extend.ParameterInfo.graph#

Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:228.

Python
graph: bool
Python
graph = False

lsdtools.extend.ParameterInfo.output#

Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:229.

Python
output: bool
Python
output = False

lsdtools.extend.ParameterInfo.step#

Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:230.

Python
step: Optional[float]
Python
step = None

lsdtools.extend.ParameterInfo.digits#

Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:231.

Python
digits: Optional[int]
Python
digits = None

lsdtools.extend.ParameterInfo.to_json_schema#

Kind: method. Source: core/lsd/src/lsd/core/configurable.py:233.

Python
to_json_schema(self) -> Dict[str, Any]
Python
self: (unannotated)

Source docstring:

text
Return a JSON Schema property dict for this parameter.

lsdtools.extend.ParameterInspector#

Kind: class. Source: views/inspector/src/lsd_view_inspector/inspector.py:147.

Python
ParameterInspector(self) -> None

Source docstring:

text
Tabbed parameter editor for any ``Configurable``.

Call ``load(configurable)`` to populate the notebook.

Implementation alias: lsd_view_inspector.inspector.ParameterInspector.

Declared bases: Gtk.Box if _HAS_GTK else object.

lsdtools.extend.ParameterInspector.__init__#

Kind: method. Source: views/inspector/src/lsd_view_inspector/inspector.py:153.

Python
__init__(self) -> None
Python
self: (unannotated)

lsdtools.extend.ParameterInspector.connect_any_changed#

Kind: method. Source: views/inspector/src/lsd_view_inspector/inspector.py:181.

Python
connect_any_changed(self, cb) -> None
Python
cb: (unannotated)
self: (unannotated)

Source docstring:

text
Register cb(param_name, new_value) fired after any parameter change.

lsdtools.extend.ParameterInspector.current_configurable#

Kind: method. Source: views/inspector/src/lsd_view_inspector/inspector.py:188.

Python
current_configurable(self) -> Optional['Configurable']
Python
self: (unannotated)

Source docstring:

text
The object currently presented by the Inspector, or ``None``.

lsdtools.extend.ParameterInspector.set_edit_handler_factory#

Kind: method. Source: views/inspector/src/lsd_view_inspector/inspector.py:192.

Python
set_edit_handler_factory(self, factory: Optional[Callable[[Any], Any]]) -> None
Python
factory: Optional[Callable[[Any], Any]]
self: (unannotated)

Source docstring:

text
Let the host choose the write seam for whatever this inspector is asked to show.

``factory(configurable) -> handler | None``. A host that owns the project directly
supplies nothing and the ordinary local edit path stands; a host realizing this
inspector for a collaborator returns a handler that carries that person's authority, so
a change from a shared session is reviewed rather than applied behind the owner's back.
An explicit ``load(edit_handler=...)`` still wins -- Pipeline stages into its own draft.

lsdtools.extend.ParameterInspector.load#

Kind: method. Source: views/inspector/src/lsd_view_inspector/inspector.py:207.

Python
load(self, configurable: 'Configurable', *, edit_handler: Optional[Callable[[str, Any], Any]]=None, values: Optional[Mapping[str, Any]]=None, read_only: bool=False) -> None
Python
configurable: 'Configurable'
edit_handler: Optional[Callable[[str, Any], Any]]
read_only: bool
self: (unannotated)
values: Optional[Mapping[str, Any]]

Source docstring:

text
Populate the notebook from *configurable*'s declared parameters.

``edit_handler(name, value)`` is the sole write seam for an attached
non-Entity Configurable. ``values`` projects a detached draft without
changing the object used for schema and presentation metadata.

lsdtools.extend.ParameterInspector.set_style_editor_opener#

Kind: method. Source: views/inspector/src/lsd_view_inspector/inspector.py:334.

Python
set_style_editor_opener(self, opener) -> None
Python
opener: (unannotated)
self: (unannotated)

Source docstring:

text
Tell the inspector how the host opens a layer's style editor.

A symbology parameter is a layer's appearance, and appearance is edited
in one place. The inspector therefore hands its symbology button to the
host rather than opening a second, data-less window of its own.

lsdtools.extend.ParameterInspector.clear#

Kind: method. Source: views/inspector/src/lsd_view_inspector/inspector.py:369.

Python
clear(self) -> None
Python
self: (unannotated)

Source docstring:

text
Remove the loaded configurable.

lsdtools.extend.ParameterInspector.refresh#

Kind: method. Source: views/inspector/src/lsd_view_inspector/inspector.py:384.

Python
refresh(self) -> None
Python
self: (unannotated)

Source docstring:

text
Reload current values from the configurable (e.g. after external change).

lsdtools.extend.PatternMaskPayload#

Kind: class. Source: core/style/src/lsd_style/assets.py:214.

Source docstring:

text
A unit-periodic R8 coverage tile (255 = line, 0 = background).

Implementation alias: lsd_style.assets.PatternMaskPayload.

Declared bases: StyleAssetPayload.

lsdtools.extend.PatternMaskPayload.mask#

Kind: attribute. Source: core/style/src/lsd_style/assets.py:217.

Python
mask: np.ndarray

lsdtools.extend.PatternMaskPayload.kind#

Kind: attribute. Source: core/style/src/lsd_style/assets.py:218.

Python
kind = 'pattern_mask'

lsdtools.extend.PatternMaskPayload.to_bytes#

Kind: method. Source: core/style/src/lsd_style/assets.py:223.

Python
to_bytes(self) -> bytes
Python
self: (unannotated)

lsdtools.extend.PatternMaskPayload.from_parts#

Kind: method. Source: core/style/src/lsd_style/assets.py:227.

Python
from_parts(cls, header: Mapping[str, Any], arrays: Sequence[np.ndarray]) -> 'PatternMaskPayload'
Python
arrays: Sequence[np.ndarray]
cls: (unannotated)
header: Mapping[str, Any]

lsdtools.extend.PipelineResult#

Kind: class. Source: core/lsd/src/lsd/runtime/runner.py:136.

Source docstring:

text
Outcome of ``entity.run()`` / ``engine.run()``.

Implementation alias: lsd.runtime.runner.PipelineResult.

lsdtools.extend.PipelineResult.ok#

Kind: attribute. Source: core/lsd/src/lsd/runtime/runner.py:138.

Python
ok: bool

lsdtools.extend.PipelineResult.step_results#

Kind: attribute. Source: core/lsd/src/lsd/runtime/runner.py:139.

Python
step_results: List[StepResult]

lsdtools.extend.PipelineResult.error#

Kind: attribute. Source: core/lsd/src/lsd/runtime/runner.py:140.

Python
error: Optional[Exception]

lsdtools.extend.PipelineResult.error_step#

Kind: attribute. Source: core/lsd/src/lsd/runtime/runner.py:141.

Python
error_step: Optional[str]

lsdtools.extend.PipelineResult.total_duration_s#

Kind: attribute. Source: core/lsd/src/lsd/runtime/runner.py:142.

Python
total_duration_s: float

lsdtools.extend.PipelineResult.output#

Kind: method. Source: core/lsd/src/lsd/runtime/runner.py:145.

Python
output(self) -> Optional[pa.Table]
Python
self: (unannotated)

Source docstring:

text
The ``'output'`` table from the last step that produced one.

lsdtools.extend.PipelineResult.artifacts#

Kind: method. Source: core/lsd/src/lsd/runtime/runner.py:153.

Python
artifacts(self) -> dict
Python
self: (unannotated)

Source docstring:

text
Tracked files/directories from the last step that delivered any.

lsdtools.extend.PipelineResult.raise_on_error#

Kind: method. Source: core/lsd/src/lsd/runtime/runner.py:161.

Python
raise_on_error(self) -> 'PipelineResult'
Python
self: (unannotated)

Source docstring:

text
Re-raise a failed run's exception instead of returning ``ok=False``.

data = entity.run().raise_on_error().output

lsdtools.extend.PointerToolPrompt#

Kind: class. Source: views/viewer3d/src/lsd_viewer/states/tool.py:33.

Source docstring:

text
Human- and agent-readable description of the next gesture.

Implementation alias: lsd_viewer.states.tool.PointerToolPrompt.

lsdtools.extend.PointerToolPrompt.instruction#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/tool.py:36.

Python
instruction: str

lsdtools.extend.PointerToolPrompt.cursor#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/tool.py:37.

Python
cursor: str
Python
cursor = 'default'

lsdtools.extend.PointerToolPrompt.primary_gesture#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/tool.py:38.

Python
primary_gesture: str
Python
primary_gesture = ''

lsdtools.extend.PointerToolPrompt.cancel_gesture#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/tool.py:39.

Python
cancel_gesture: str
Python
cancel_gesture = 'Escape cancels the current preview'

lsdtools.extend.PointerToolPrompt.phase#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/tool.py:40.

Python
phase: str
Python
phase = 'ready'

lsdtools.extend.PointerToolPrompt.as_dict#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:54.

Python
as_dict(self) -> dict[str, str]
Python
self: (unannotated)

lsdtools.extend.ProjectStatusBindings#

Kind: class. Source: core/lsd/src/lsd/packages/status_extensions.py:668.

Implementation alias: lsd.packages.status_extensions.ProjectStatusBindings.

lsdtools.extend.ProjectStatusBindings.providers#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:669.

Python
providers: Mapping[Capability | str, OwnedContributionId | str]
Python
providers = field(default_factory=dict)

lsdtools.extend.ProjectStatusBindings.provider_for#

Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:683.

Python
provider_for(self, capability: Capability) -> OwnedContributionId | None
Python
capability: Capability
self: (unannotated)

lsdtools.extend.ProjectStatusBindings.from_mapping#

Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:687.

Python
from_mapping(cls, values: Mapping[Capability | str, OwnedContributionId | str]) -> 'ProjectStatusBindings'
Python
cls: (unannotated)
values: Mapping[Capability | str, OwnedContributionId | str]

lsdtools.extend.ProjectStatusBindings.as_dict#

Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:693.

Python
as_dict(self) -> dict[str, str]
Python
self: (unannotated)

lsdtools.extend.ProjectStyleImportCandidate#

Kind: class. Source: core/lsd/src/lsd/project_semantics.py:895.

Source docstring:

text
One immutable style plus its exact destination state.

Implementation alias: lsd.project_semantics.ProjectStyleImportCandidate.

lsdtools.extend.ProjectStyleImportCandidate.style#

Kind: attribute. Source: core/lsd/src/lsd/project_semantics.py:898.

Python
style: StyleDefinition

lsdtools.extend.ProjectStyleImportCandidate.status#

Kind: attribute. Source: core/lsd/src/lsd/project_semantics.py:899.

Python
status: ProjectStyleImportStatus

lsdtools.extend.ProjectStyleImportConflictError#

Kind: class. Source: core/lsd/src/lsd/project_semantics.py:902.

Python
ProjectStyleImportConflictError(self, style_ids: Iterable[str]) -> None

Source docstring:

text
A batch contains identities already owned by different project styles.

Implementation alias: lsd.project_semantics.ProjectStyleImportConflictError.

Declared bases: ValueError.

lsdtools.extend.ProjectStyleImportConflictError.__init__#

Kind: method. Source: core/lsd/src/lsd/project_semantics.py:905.

Python
__init__(self, style_ids: Iterable[str]) -> None
Python
self: (unannotated)
style_ids: Iterable[str]

lsdtools.extend.ProjectStyleImportConflictError.style_ids#

Kind: attribute. Source: core/lsd/src/lsd/project_semantics.py:906.

Python
style_ids: (unannotated)
Python
style_ids = tuple(style_ids)

lsdtools.extend.ProjectStyleImportResult#

Kind: class. Source: core/lsd/src/lsd/project_semantics.py:912.

Source docstring:

text
One all-or-nothing candidate catalog and the selected source identities.

Implementation alias: lsd.project_semantics.ProjectStyleImportResult.

lsdtools.extend.ProjectStyleImportResult.catalog#

Kind: attribute. Source: core/lsd/src/lsd/project_semantics.py:915.

Python
catalog: ProjectSemanticsCatalog

lsdtools.extend.ProjectStyleImportResult.imported_style_ids#

Kind: attribute. Source: core/lsd/src/lsd/project_semantics.py:916.

Python
imported_style_ids: tuple[str, ...]

lsdtools.extend.ProjectStyleImportResult.already_present_style_ids#

Kind: attribute. Source: core/lsd/src/lsd/project_semantics.py:917.

Python
already_present_style_ids: tuple[str, ...]

lsdtools.extend.ProjectStyleImportStatus#

Kind: class. Source: core/lsd/src/lsd/project_semantics.py:886.

Source docstring:

text
Preflight state of one named style selected for project import.

Implementation alias: lsd.project_semantics.ProjectStyleImportStatus.

Declared bases: str, Enum.

lsdtools.extend.ProjectStyleImportStatus.AVAILABLE#

Kind: attribute. Source: core/lsd/src/lsd/project_semantics.py:889.

Python
AVAILABLE = 'available'

lsdtools.extend.ProjectStyleImportStatus.ALREADY_PRESENT#

Kind: attribute. Source: core/lsd/src/lsd/project_semantics.py:890.

Python
ALREADY_PRESENT = 'already-present'

lsdtools.extend.ProjectStyleImportStatus.CONFLICT#

Kind: attribute. Source: core/lsd/src/lsd/project_semantics.py:891.

Python
CONFLICT = 'conflict'

lsdtools.extend.ProjectViewerBindings#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2580.

Source docstring:

text
Exact project choices for single-provider viewer capabilities.

Implementation alias: lsd.packages.viewer_extensions.ProjectViewerBindings.

lsdtools.extend.ProjectViewerBindings.providers#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2583.

Python
providers: tuple[tuple[Capability, OwnedContributionId], ...]
Python
providers = ()

lsdtools.extend.ProjectViewerBindings.from_mapping#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2594.

Python
from_mapping(cls, values: Mapping[Capability | str, OwnedContributionId | str]) -> 'ProjectViewerBindings'
Python
cls: (unannotated)
values: Mapping[Capability | str, OwnedContributionId | str]

lsdtools.extend.ProjectViewerBindings.get#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2610.

Python
get(self, capability: Capability) -> OwnedContributionId | None
Python
capability: Capability
self: (unannotated)

lsdtools.extend.ProjectViewerBindings.as_dict#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2613.

Python
as_dict(self) -> dict[str, str]
Python
self: (unannotated)

lsdtools.extend.ProviderContextV1#

Kind: class. Source: services/input/src/lsd_input/provider_protocol.py:362.

Python
ProviderContextV1(self, registration: ProviderRegistration, *, clock_ns: Callable[[], int]=time.perf_counter_ns) -> None

Source docstring:

text
The complete capability surface handed to a provider factory.

It intentionally exposes no host, window, event bus, layout registry, device registry, or
arbitrary callback.  Its clock puts provider event timestamps in the host's monotonic domain.

Implementation alias: lsd_input.provider_protocol.ProviderContextV1.

lsdtools.extend.ProviderContextV1.schema#

Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:371.

Python
schema = INPUT_PROVIDER_CONTEXT_V1

lsdtools.extend.ProviderContextV1.__init__#

Kind: method. Source: services/input/src/lsd_input/provider_protocol.py:373.

Python
__init__(self, registration: ProviderRegistration, *, clock_ns: Callable[[], int]=time.perf_counter_ns) -> None
Python
clock_ns: Callable[[], int]
registration: ProviderRegistration
self: (unannotated)

lsdtools.extend.ProviderContextV1.owner#

Kind: method. Source: services/input/src/lsd_input/provider_protocol.py:393.

Python
owner(self) -> str
Python
self: (unannotated)

lsdtools.extend.ProviderContextV1.provider_id#

Kind: method. Source: services/input/src/lsd_input/provider_protocol.py:397.

Python
provider_id(self) -> str
Python
self: (unannotated)

lsdtools.extend.ProviderContextV1.grants#

Kind: method. Source: services/input/src/lsd_input/provider_protocol.py:401.

Python
grants(self) -> tuple[str, ...]
Python
self: (unannotated)

lsdtools.extend.ProviderContextV1.has_capability#

Kind: method. Source: services/input/src/lsd_input/provider_protocol.py:404.

Python
has_capability(self, capability: str) -> bool
Python
capability: str
self: (unannotated)

lsdtools.extend.ProviderContextV1.now_ns#

Kind: method. Source: services/input/src/lsd_input/provider_protocol.py:409.

Python
now_ns(self) -> int
Python
self: (unannotated)

lsdtools.extend.ProviderDeviceConnected#

Kind: class. Source: services/input/src/lsd_input/provider_protocol.py:227.

Implementation alias: lsd_input.provider_protocol.ProviderDeviceConnected.

lsdtools.extend.ProviderDeviceConnected.stable_id#

Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:228.

Python
stable_id: str

lsdtools.extend.ProviderDeviceConnected.description#

Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:229.

Python
description: DeviceDescription

lsdtools.extend.ProviderDeviceConnected.timestamp_ns#

Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:230.

Python
timestamp_ns: int

lsdtools.extend.ProviderDeviceDescription#

Kind: class. Source: services/input/src/lsd_input/provider_protocol.py:212.

Source docstring:

text
One enumerated physical device, identified stably within its provider.

Implementation alias: lsd_input.provider_protocol.ProviderDeviceDescription.

lsdtools.extend.ProviderDeviceDescription.stable_id#

Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:215.

Python
stable_id: str

lsdtools.extend.ProviderDeviceDescription.description#

Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:216.

Python
description: DeviceDescription

lsdtools.extend.ProviderDeviceDisconnected#

Kind: class. Source: services/input/src/lsd_input/provider_protocol.py:273.

Implementation alias: lsd_input.provider_protocol.ProviderDeviceDisconnected.

lsdtools.extend.ProviderDeviceDisconnected.stable_id#

Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:274.

Python
stable_id: str

lsdtools.extend.ProviderDeviceDisconnected.timestamp_ns#

Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:275.

Python
timestamp_ns: int

lsdtools.extend.ProviderDeviceDisconnected.reason#

Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:276.

Python
reason: str
Python
reason = ''

lsdtools.extend.ProviderDeviceState#

Kind: class. Source: services/input/src/lsd_input/provider_protocol.py:242.

Source docstring:

text
One timestamped, partial control snapshot for a connected device.

Implementation alias: lsd_input.provider_protocol.ProviderDeviceState.

lsdtools.extend.ProviderDeviceState.stable_id#

Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:245.

Python
stable_id: str

lsdtools.extend.ProviderDeviceState.timestamp_ns#

Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:246.

Python
timestamp_ns: int

lsdtools.extend.ProviderDeviceState.values#

Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:247.

Python
values: Mapping[str, Any]

lsdtools.extend.RampPayload#

Kind: class. Source: core/style/src/lsd_style/assets.py:107.

Source docstring:

text
A colour ramp as ``(position in 0..1, RGBA)`` stops, low to high.

Implementation alias: lsd_style.assets.RampPayload.

Declared bases: StyleAssetPayload.

lsdtools.extend.RampPayload.stops#

Kind: attribute. Source: core/style/src/lsd_style/assets.py:110.

Python
stops: Tuple[Tuple[float, RGBA], ...]

lsdtools.extend.RampPayload.kind#

Kind: attribute. Source: core/style/src/lsd_style/assets.py:111.

Python
kind = 'ramp'

lsdtools.extend.RampPayload.sample#

Kind: method. Source: core/style/src/lsd_style/assets.py:128.

Python
sample(self, t: Any) -> np.ndarray
Python
self: (unannotated)
t: Any

Source docstring:

text
RGBA rows for normalised positions *t* (clamped to 0..1).

lsdtools.extend.RampPayload.continuous_mapping#

Kind: method. Source: core/style/src/lsd_style/assets.py:139.

Python
continuous_mapping(self, minimum: float, maximum: float, *, fallback: Any=None, samples: int=0) -> Dict[str, Any]
Python
fallback: Any
maximum: float
minimum: float
samples: int
self: (unannotated)

Source docstring:

text
Resample onto a real domain as a canonical ``continuous`` mapping.

lsdtools.extend.RampPayload.to_bytes#

Kind: method. Source: core/style/src/lsd_style/assets.py:159.

Python
to_bytes(self) -> bytes
Python
self: (unannotated)

lsdtools.extend.RampPayload.from_parts#

Kind: method. Source: core/style/src/lsd_style/assets.py:164.

Python
from_parts(cls, header: Mapping[str, Any], arrays: Sequence[np.ndarray]) -> 'RampPayload'
Python
arrays: Sequence[np.ndarray]
cls: (unannotated)
header: Mapping[str, Any]

lsdtools.extend.ResolvedObjectContextAction#

Kind: class. Source: core/lsd/src/lsd/packages/object_explorer.py:390.

Implementation alias: lsd.packages.object_explorer.ResolvedObjectContextAction.

lsdtools.extend.ResolvedObjectContextAction.spec#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:391.

Python
spec: ObjectContextActionSpec

lsdtools.extend.ResolvedObjectContextAction.object_type#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:392.

Python
object_type: ObjectTypeSpec

lsdtools.extend.ResolvedObjectContextAction.id#

Kind: method. Source: core/lsd/src/lsd/packages/object_explorer.py:395.

Python
id(self) -> OwnedContributionId
Python
self: (unannotated)

lsdtools.extend.ResolvedObjectContextAction.command_id#

Kind: method. Source: core/lsd/src/lsd/packages/object_explorer.py:399.

Python
command_id(self) -> OwnedContributionId
Python
self: (unannotated)

lsdtools.extend.ResolvedObjectContextAction.invocation_params#

Kind: method. Source: core/lsd/src/lsd/packages/object_explorer.py:402.

Python
invocation_params(self, selection: Iterable[ViewerObjectRef], *, selection_digest: str) -> dict[str, Any]
Python
selection: Iterable[ViewerObjectRef]
selection_digest: str
self: (unannotated)

Source docstring:

text
Build the closed v1 command envelope from detached Viewer refs.

lsdtools.extend.ResolvedObjectContextAction.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/object_explorer.py:459.

Python
to_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ResolvedObjectExplorer#

Kind: class. Source: core/lsd/src/lsd/packages/object_explorer.py:378.

Implementation alias: lsd.packages.object_explorer.ResolvedObjectExplorer.

lsdtools.extend.ResolvedObjectExplorer.spec#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:379.

Python
spec: ObjectExplorerSpec

lsdtools.extend.ResolvedObjectExplorer.id#

Kind: method. Source: core/lsd/src/lsd/packages/object_explorer.py:382.

Python
id(self) -> OwnedContributionId
Python
self: (unannotated)

lsdtools.extend.ResolvedObjectExplorer.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/object_explorer.py:385.

Python
to_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ResolvedObjectExplorerPlan#

Kind: class. Source: core/lsd/src/lsd/packages/object_explorer.py:464.

Source docstring:

text
Deterministic Object Explorer projection for one feature namespace.

Implementation alias: lsd.packages.object_explorer.ResolvedObjectExplorerPlan.

lsdtools.extend.ResolvedObjectExplorerPlan.MAX_DIAGNOSTICS#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:467.

Python
MAX_DIAGNOSTICS: ClassVar[int]
Python
MAX_DIAGNOSTICS = 128

lsdtools.extend.ResolvedObjectExplorerPlan.feature_namespace#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:469.

Python
feature_namespace: str

lsdtools.extend.ResolvedObjectExplorerPlan.object_type#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:470.

Python
object_type: ObjectTypeSpec | None

lsdtools.extend.ResolvedObjectExplorerPlan.explorers#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:471.

Python
explorers: tuple[ResolvedObjectExplorer, ...]

lsdtools.extend.ResolvedObjectExplorerPlan.context_actions#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:472.

Python
context_actions: tuple[ResolvedObjectContextAction, ...]

lsdtools.extend.ResolvedObjectExplorerPlan.diagnostics#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:473.

Python
diagnostics: tuple[ObjectExplorerDiagnostic, ...]

lsdtools.extend.ResolvedObjectExplorerPlan.digest#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:474.

Python
digest: str

lsdtools.extend.ResolvedObjectExplorerPlan.valid#

Kind: method. Source: core/lsd/src/lsd/packages/object_explorer.py:477.

Python
valid(self) -> bool
Python
self: (unannotated)

lsdtools.extend.ResolvedObjectExplorerPlan.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/object_explorer.py:482.

Python
to_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ResolvedObjectPropertyPlan#

Kind: class. Source: core/lsd/src/lsd/packages/object_properties.py:797.

Source docstring:

text
The callback-free property plan for one resident feature namespace.

``valid`` means the selected resident has one unambiguous owner and carries
that owner's complete canonical reference.  A broken optional section is
excluded and diagnosed with ``blocks_plan=False``; it cannot suppress an
independent section contributed by another package.

Implementation alias: lsd.packages.object_properties.ResolvedObjectPropertyPlan.

lsdtools.extend.ResolvedObjectPropertyPlan.MAX_SECTIONS#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:806.

Python
MAX_SECTIONS: ClassVar[int]
Python
MAX_SECTIONS = 32

lsdtools.extend.ResolvedObjectPropertyPlan.MAX_FIELDS#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:807.

Python
MAX_FIELDS: ClassVar[int]
Python
MAX_FIELDS = 256

lsdtools.extend.ResolvedObjectPropertyPlan.MAX_CHOICES#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:808.

Python
MAX_CHOICES: ClassVar[int]
Python
MAX_CHOICES = 1024

lsdtools.extend.ResolvedObjectPropertyPlan.MAX_DIAGNOSTICS#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:809.

Python
MAX_DIAGNOSTICS: ClassVar[int]
Python
MAX_DIAGNOSTICS = 128

lsdtools.extend.ResolvedObjectPropertyPlan.feature_namespace#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:811.

Python
feature_namespace: str

lsdtools.extend.ResolvedObjectPropertyPlan.object_type#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:812.

Python
object_type: ObjectTypeSpec | None

lsdtools.extend.ResolvedObjectPropertyPlan.sections#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:813.

Python
sections: tuple[ResolvedObjectPropertySection, ...]

lsdtools.extend.ResolvedObjectPropertyPlan.diagnostics#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:814.

Python
diagnostics: tuple[ObjectPropertyDiagnostic, ...]

lsdtools.extend.ResolvedObjectPropertyPlan.digest#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:815.

Python
digest: str

lsdtools.extend.ResolvedObjectPropertyPlan.valid#

Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:818.

Python
valid(self) -> bool
Python
self: (unannotated)

lsdtools.extend.ResolvedObjectPropertyPlan.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:824.

Python
to_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ResolvedObjectPropertySection#

Kind: class. Source: core/lsd/src/lsd/packages/object_properties.py:773.

Source docstring:

text
One validated section in its deterministic display order.

Implementation alias: lsd.packages.object_properties.ResolvedObjectPropertySection.

lsdtools.extend.ResolvedObjectPropertySection.spec#

Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:776.

Python
spec: ObjectPropertySectionSpec

lsdtools.extend.ResolvedObjectPropertySection.id#

Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:779.

Python
id(self) -> OwnedContributionId
Python
self: (unannotated)

lsdtools.extend.ResolvedObjectPropertySection.fields#

Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:783.

Python
fields(self) -> tuple[ObjectPropertyFieldSpec, ...]
Python
self: (unannotated)

lsdtools.extend.ResolvedObjectPropertySection.binding#

Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:787.

Python
binding(self) -> ObjectPropertyDatasetBindingSpec | ObjectPropertyResidentBindingSpec
Python
self: (unannotated)

lsdtools.extend.ResolvedObjectPropertySection.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:792.

Python
to_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ResolvedStatusItem#

Kind: class. Source: core/lsd/src/lsd/packages/status_extensions.py:722.

Implementation alias: lsd.packages.status_extensions.ResolvedStatusItem.

lsdtools.extend.ResolvedStatusItem.item#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:723.

Python
item: StatusItemSpec

lsdtools.extend.ResolvedStatusItem.content#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:724.

Python
content: SurfaceContentSpec

lsdtools.extend.ResolvedStatusItem.extension_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:725.

Python
extension_id: OwnedContributionId

lsdtools.extend.ResolvedStatusItem.capability#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:726.

Python
capability: Capability | None
Python
capability = None

lsdtools.extend.ResolvedStatusItem.id#

Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:729.

Python
id(self) -> OwnedContributionId
Python
self: (unannotated)

lsdtools.extend.ResolvedStatusPlan#

Kind: class. Source: core/lsd/src/lsd/packages/status_extensions.py:734.

Implementation alias: lsd.packages.status_extensions.ResolvedStatusPlan.

lsdtools.extend.ResolvedStatusPlan.items#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:735.

Python
items: tuple[ResolvedStatusItem, ...]

lsdtools.extend.ResolvedStatusPlan.contents#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:736.

Python
contents: Mapping[str, SurfaceContentSpec]

lsdtools.extend.ResolvedStatusPlan.selected_providers#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:737.

Python
selected_providers: Mapping[str, OwnedContributionId]

lsdtools.extend.ResolvedStatusPlan.available_providers#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:738.

Python
available_providers: Mapping[str, tuple[OwnedContributionId, ...]]

lsdtools.extend.ResolvedStatusPlan.active_extensions#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:739.

Python
active_extensions: tuple[OwnedContributionId, ...]

lsdtools.extend.ResolvedStatusPlan.inactive_extensions#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:740.

Python
inactive_extensions: tuple[OwnedContributionId, ...]

lsdtools.extend.ResolvedStatusPlan.unresolved_bindings#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:741.

Python
unresolved_bindings: Mapping[str, OwnedContributionId]

lsdtools.extend.ResolvedStatusPlan.desktop_refresh_on#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:742.

Python
desktop_refresh_on: tuple[str, ...]

lsdtools.extend.ResolvedStatusPlan.engine_refresh_on#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:743.

Python
engine_refresh_on: tuple[str, ...]

lsdtools.extend.ResolvedStatusPlan.diagnostics#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:744.

Python
diagnostics: tuple[StatusDiagnostic, ...]

lsdtools.extend.ResolvedStatusPlan.digest#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:745.

Python
digest: str

lsdtools.extend.ResolvedStatusPlan.ok#

Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:748.

Python
ok(self) -> bool
Python
self: (unannotated)

lsdtools.extend.ResolvedStatusPlan.content#

Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:754.

Python
content(self, content_id: str | OwnedContributionId) -> SurfaceContentSpec | None
Python
content_id: str | OwnedContributionId
self: (unannotated)

lsdtools.extend.ResolvedTimelineEditorBindings#

Kind: class. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:84.

Implementation alias: lsd.packages.timeline_editor_bindings.ResolvedTimelineEditorBindings.

lsdtools.extend.ResolvedTimelineEditorBindings.bindings#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:85.

Python
bindings: tuple[TimelineEditorBindingSpec, ...]

lsdtools.extend.ResolvedTimelineEditorBindings.diagnostics#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:86.

Python
diagnostics: tuple[TimelineEditorBindingDiagnostic, ...]

lsdtools.extend.ResolvedTimelineEditorBindings.digest#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:87.

Python
digest: str

lsdtools.extend.ResolvedTimelineEditorBindings.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:89.

Python
to_dict(self)
Python
self: (unannotated)

lsdtools.extend.ResolvedTreePlan#

Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:826.

Source docstring:

text
Immutable package plan consumed by one live tree runtime.

Implementation alias: lsd.packages.tree_extensions.ResolvedTreePlan.

lsdtools.extend.ResolvedTreePlan.target_kind#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:829.

Python
target_kind: str

lsdtools.extend.ResolvedTreePlan.scope#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:830.

Python
scope: TreeScope

lsdtools.extend.ResolvedTreePlan.active_extensions#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:831.

Python
active_extensions: tuple[OwnedContributionId, ...]

lsdtools.extend.ResolvedTreePlan.refresh_on#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:832.

Python
refresh_on: tuple[str, ...]

lsdtools.extend.ResolvedTreePlan.filters#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:833.

Python
filters: tuple[TreeFilterSpec, ...]

lsdtools.extend.ResolvedTreePlan.selection_routes#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:834.

Python
selection_routes: tuple[TreeSelectionRouteSpec, ...]

lsdtools.extend.ResolvedTreePlan.commands#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:835.

Python
commands: tuple[TreeCommandSpec, ...]

lsdtools.extend.ResolvedTreePlan.columns#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:836.

Python
columns: tuple[TreeColumnSpec, ...]

lsdtools.extend.ResolvedTreePlan.decorations#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:837.

Python
decorations: tuple[TreeDecorationSpec, ...]

lsdtools.extend.ResolvedTreePlan.menu_sections#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:838.

Python
menu_sections: tuple[TreeMenuSectionSpec, ...]

lsdtools.extend.ResolvedTreePlan.surfaces#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:839.

Python
surfaces: tuple[TreeSurfaceSpec, ...]

lsdtools.extend.ResolvedTreePlan.diagnostics#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:840.

Python
diagnostics: tuple[TreeDiagnostic, ...]

lsdtools.extend.ResolvedTreePlan.digest#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:841.

Python
digest: str

lsdtools.extend.ResolvedTreePlan.ok#

Kind: method. Source: core/lsd/src/lsd/packages/tree_extensions.py:844.

Python
ok(self) -> bool
Python
self: (unannotated)

lsdtools.extend.ResolvedTreePlan.command#

Kind: method. Source: core/lsd/src/lsd/packages/tree_extensions.py:850.

Python
command(self, action: str) -> TreeCommandSpec | None
Python
action: str
self: (unannotated)

lsdtools.extend.ResolvedTreePlan.as_dict#

Kind: method. Source: core/lsd/src/lsd/packages/tree_extensions.py:853.

Python
as_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ResolvedViewerCommand#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2787.

Implementation alias: lsd.packages.viewer_extensions.ResolvedViewerCommand.

lsdtools.extend.ResolvedViewerCommand.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2788.

Python
id: OwnedContributionId

lsdtools.extend.ResolvedViewerCommand.provider_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2789.

Python
provider_id: OwnedContributionId | None

lsdtools.extend.ResolvedViewerCommand.capability#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2790.

Python
capability: Capability | None

lsdtools.extend.ResolvedViewerCommand.source_extension#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2791.

Python
source_extension: OwnedContributionId

lsdtools.extend.ResolvedViewerCommand.requires#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2792.

Python
requires: tuple[Capability, ...]

lsdtools.extend.ResolvedViewerCommand.action#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2793.

Python
action: str

lsdtools.extend.ResolvedViewerCommand.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2794.

Python
title: str

lsdtools.extend.ResolvedViewerCommand.target#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2795.

Python
target: Capability | None

lsdtools.extend.ResolvedViewerCommand.handler#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2796.

Python
handler: RuntimeHandler | None
Python
handler = field(default=None, compare=False, repr=False)

lsdtools.extend.ResolvedViewerCommand.source_package#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2799.

Python
source_package(self) -> str
Python
self: (unannotated)

lsdtools.extend.ResolvedViewerDataEditor#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2711.

Implementation alias: lsd.packages.viewer_extensions.ResolvedViewerDataEditor.

lsdtools.extend.ResolvedViewerDataEditor.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2712.

Python
id: OwnedContributionId

lsdtools.extend.ResolvedViewerDataEditor.provider_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2713.

Python
provider_id: OwnedContributionId | None

lsdtools.extend.ResolvedViewerDataEditor.capability#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2714.

Python
capability: Capability | None

lsdtools.extend.ResolvedViewerDataEditor.source_extension#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2715.

Python
source_extension: OwnedContributionId

lsdtools.extend.ResolvedViewerDataEditor.requires#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2716.

Python
requires: tuple[Capability, ...]

lsdtools.extend.ResolvedViewerDataEditor.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2717.

Python
title: str

lsdtools.extend.ResolvedViewerDataEditor.feature_kind#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2718.

Python
feature_kind: str

lsdtools.extend.ResolvedViewerDataEditor.object_type#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2719.

Python
object_type: OwnedContributionId

lsdtools.extend.ResolvedViewerDataEditor.scope#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2720.

Python
scope: ViewerDataEditorScope

lsdtools.extend.ResolvedViewerDataEditor.modes#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2721.

Python
modes: tuple[ViewerDataEditorModeSpec, ...]

lsdtools.extend.ResolvedViewerDataEditor.config_fields#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2722.

Python
config_fields: tuple[ViewerDataEditorFieldSpec, ...]

lsdtools.extend.ResolvedViewerDataEditor.working_layer#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2723.

Python
working_layer: ViewerDataEditorWorkingLayerSpec | None

lsdtools.extend.ResolvedViewerDataEditor.factory#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2724.

Python
factory: RuntimeFactory | None
Python
factory = field(default=None, compare=False, repr=False)

lsdtools.extend.ResolvedViewerDataEditor.source_package#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2734.

Python
source_package(self) -> str
Python
self: (unannotated)

lsdtools.extend.ResolvedViewerEvent#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2804.

Implementation alias: lsd.packages.viewer_extensions.ResolvedViewerEvent.

lsdtools.extend.ResolvedViewerEvent.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2805.

Python
id: OwnedContributionId

lsdtools.extend.ResolvedViewerEvent.provider_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2806.

Python
provider_id: OwnedContributionId | None

lsdtools.extend.ResolvedViewerEvent.capability#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2807.

Python
capability: Capability | None

lsdtools.extend.ResolvedViewerEvent.source_extension#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2808.

Python
source_extension: OwnedContributionId

lsdtools.extend.ResolvedViewerEvent.topic#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2809.

Python
topic: str

lsdtools.extend.ResolvedViewerEvent.payload#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2810.

Python
payload: str

lsdtools.extend.ResolvedViewerEvent.version#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2811.

Python
version: int

lsdtools.extend.ResolvedViewerEvent.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2812.

Python
title: str

lsdtools.extend.ResolvedViewerEvent.source_package#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2815.

Python
source_package(self) -> str
Python
self: (unannotated)

lsdtools.extend.ResolvedViewerGizmo#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2739.

Implementation alias: lsd.packages.viewer_extensions.ResolvedViewerGizmo.

lsdtools.extend.ResolvedViewerGizmo.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2740.

Python
id: OwnedContributionId

lsdtools.extend.ResolvedViewerGizmo.provider_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2741.

Python
provider_id: OwnedContributionId | None

lsdtools.extend.ResolvedViewerGizmo.capability#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2742.

Python
capability: Capability | None

lsdtools.extend.ResolvedViewerGizmo.source_extension#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2743.

Python
source_extension: OwnedContributionId

lsdtools.extend.ResolvedViewerGizmo.requires#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2744.

Python
requires: tuple[Capability, ...]

lsdtools.extend.ResolvedViewerGizmo.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2745.

Python
title: str

lsdtools.extend.ResolvedViewerGizmo.role#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2746.

Python
role: ViewerGizmoRole

lsdtools.extend.ResolvedViewerGizmo.owning_tool#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2747.

Python
owning_tool: OwnedContributionId | None

lsdtools.extend.ResolvedViewerGizmo.visible#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2748.

Python
visible: bool

lsdtools.extend.ResolvedViewerGizmo.layer#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2749.

Python
layer: ViewerGizmoLayer

lsdtools.extend.ResolvedViewerGizmo.depth_mode#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2750.

Python
depth_mode: ViewerGizmoDepthMode

lsdtools.extend.ResolvedViewerGizmo.factory#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2751.

Python
factory: RuntimeFactory | None
Python
factory = field(default=None, compare=False, repr=False)

lsdtools.extend.ResolvedViewerGizmo.source_package#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2754.

Python
source_package(self) -> str
Python
self: (unannotated)

lsdtools.extend.ResolvedViewerPlan#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2826.

Source docstring:

text
Immutable, inspectable output consumed by one viewer runtime.

Implementation alias: lsd.packages.viewer_extensions.ResolvedViewerPlan.

lsdtools.extend.ResolvedViewerPlan.viewer_kind#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2829.

Python
viewer_kind: str

lsdtools.extend.ResolvedViewerPlan.providers#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2830.

Python
providers: tuple[ResolvedViewerProvider, ...]

lsdtools.extend.ResolvedViewerPlan.available_providers#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2831.

Python
available_providers: tuple[ViewerExtensionSpec, ...]

lsdtools.extend.ResolvedViewerPlan.active_extensions#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2832.

Python
active_extensions: tuple[OwnedContributionId, ...]

lsdtools.extend.ResolvedViewerPlan.inactive_extensions#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2833.

Python
inactive_extensions: tuple[InactiveViewerExtension, ...]

lsdtools.extend.ResolvedViewerPlan.pointer_tools#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2834.

Python
pointer_tools: tuple[ResolvedViewerPointerTool, ...]

lsdtools.extend.ResolvedViewerPlan.visualization_tools#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2835.

Python
visualization_tools: tuple[ResolvedViewerVisualizationTool, ...]

lsdtools.extend.ResolvedViewerPlan.data_editors#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2836.

Python
data_editors: tuple[ResolvedViewerDataEditor, ...]

lsdtools.extend.ResolvedViewerPlan.surfaces#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2837.

Python
surfaces: tuple[ResolvedViewerSurface, ...]

lsdtools.extend.ResolvedViewerPlan.gizmos#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2838.

Python
gizmos: tuple[ResolvedViewerGizmo, ...]

lsdtools.extend.ResolvedViewerPlan.commands#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2839.

Python
commands: tuple[ResolvedViewerCommand, ...]

lsdtools.extend.ResolvedViewerPlan.events#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2840.

Python
events: tuple[ResolvedViewerEvent, ...]

lsdtools.extend.ResolvedViewerPlan.layout#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2841.

Python
layout: tuple[ViewerLayoutEntry, ...]

lsdtools.extend.ResolvedViewerPlan.orphaned_layout#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2842.

Python
orphaned_layout: tuple[ViewerLayoutEntry, ...]

lsdtools.extend.ResolvedViewerPlan.unresolved_bindings#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2843.

Python
unresolved_bindings: tuple[tuple[Capability, OwnedContributionId], ...]

lsdtools.extend.ResolvedViewerPlan.diagnostics#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2844.

Python
diagnostics: tuple[ViewerDiagnostic, ...]

lsdtools.extend.ResolvedViewerPlan.digest#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2845.

Python
digest: str

lsdtools.extend.ResolvedViewerPlan.ok#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2848.

Python
ok(self) -> bool
Python
self: (unannotated)

lsdtools.extend.ResolvedViewerPlan.provider_for#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2853.

Python
provider_for(self, capability: Capability | str) -> ResolvedViewerProvider | None
Python
capability: Capability | str
self: (unannotated)

lsdtools.extend.ResolvedViewerPlan.surface#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2859.

Python
surface(self, contribution_id: OwnedContributionId | str) -> ResolvedViewerSurface | None
Python
contribution_id: OwnedContributionId | str
self: (unannotated)

lsdtools.extend.ResolvedViewerPlan.pointer_tool#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2868.

Python
pointer_tool(self, contribution_id: OwnedContributionId | str) -> ResolvedViewerPointerTool | None
Python
contribution_id: OwnedContributionId | str
self: (unannotated)

lsdtools.extend.ResolvedViewerPlan.visualization_tool#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2877.

Python
visualization_tool(self, contribution_id: OwnedContributionId | str) -> ResolvedViewerVisualizationTool | None
Python
contribution_id: OwnedContributionId | str
self: (unannotated)

lsdtools.extend.ResolvedViewerPlan.data_editor#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2889.

Python
data_editor(self, feature_kind: str) -> ResolvedViewerDataEditor | None
Python
feature_kind: str
self: (unannotated)

Source docstring:

text
Convenience lookup only for an unambiguous mutation kind.

Composition uses qualified mode/contribution IDs, never load order.

lsdtools.extend.ResolvedViewerPlan.gizmo#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2899.

Python
gizmo(self, contribution_id: OwnedContributionId | str) -> ResolvedViewerGizmo | None
Python
contribution_id: OwnedContributionId | str
self: (unannotated)

lsdtools.extend.ResolvedViewerPlan.command#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2908.

Python
command(self, action: str) -> ResolvedViewerCommand | None
Python
action: str
self: (unannotated)

lsdtools.extend.ResolvedViewerPlan.as_dict#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2911.

Python
as_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ResolvedViewerPointerTool#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2678.

Implementation alias: lsd.packages.viewer_extensions.ResolvedViewerPointerTool.

lsdtools.extend.ResolvedViewerPointerTool.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2679.

Python
id: OwnedContributionId

lsdtools.extend.ResolvedViewerPointerTool.provider_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2680.

Python
provider_id: OwnedContributionId | None

lsdtools.extend.ResolvedViewerPointerTool.capability#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2681.

Python
capability: Capability | None

lsdtools.extend.ResolvedViewerPointerTool.source_extension#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2682.

Python
source_extension: OwnedContributionId

lsdtools.extend.ResolvedViewerPointerTool.requires#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2683.

Python
requires: tuple[Capability, ...]

lsdtools.extend.ResolvedViewerPointerTool.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2684.

Python
title: str

lsdtools.extend.ResolvedViewerPointerTool.icon#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2685.

Python
icon: str

lsdtools.extend.ResolvedViewerPointerTool.visible_in_toolbar#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2686.

Python
visible_in_toolbar: bool

lsdtools.extend.ResolvedViewerPointerTool.factory#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2687.

Python
factory: RuntimeFactory | None
Python
factory = field(default=None, compare=False, repr=False)

lsdtools.extend.ResolvedViewerPointerTool.source_package#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2690.

Python
source_package(self) -> str
Python
self: (unannotated)

lsdtools.extend.ResolvedViewerProvider#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2669.

Implementation alias: lsd.packages.viewer_extensions.ResolvedViewerProvider.

lsdtools.extend.ResolvedViewerProvider.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2670.

Python
id: OwnedContributionId

lsdtools.extend.ResolvedViewerProvider.capability#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2671.

Python
capability: Capability

lsdtools.extend.ResolvedViewerProvider.source_extension#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2672.

Python
source_extension: OwnedContributionId

lsdtools.extend.ResolvedViewerProvider.requires#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2673.

Python
requires: tuple[Capability, ...]

lsdtools.extend.ResolvedViewerProvider.factory#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2674.

Python
factory: RuntimeFactory | None
Python
factory = field(default=None, compare=False, repr=False)

lsdtools.extend.ResolvedViewerSurface#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2759.

Implementation alias: lsd.packages.viewer_extensions.ResolvedViewerSurface.

lsdtools.extend.ResolvedViewerSurface.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2760.

Python
id: OwnedContributionId

lsdtools.extend.ResolvedViewerSurface.provider_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2761.

Python
provider_id: OwnedContributionId | None

lsdtools.extend.ResolvedViewerSurface.capability#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2762.

Python
capability: Capability | None

lsdtools.extend.ResolvedViewerSurface.source_extension#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2763.

Python
source_extension: OwnedContributionId

lsdtools.extend.ResolvedViewerSurface.requires#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2764.

Python
requires: tuple[Capability, ...]

lsdtools.extend.ResolvedViewerSurface.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2765.

Python
title: str

lsdtools.extend.ResolvedViewerSurface.kind#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2766.

Python
kind: ViewerSurfaceKind

lsdtools.extend.ResolvedViewerSurface.region#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2767.

Python
region: str

lsdtools.extend.ResolvedViewerSurface.slot#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2768.

Python
slot: str

lsdtools.extend.ResolvedViewerSurface.role#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2769.

Python
role: str

lsdtools.extend.ResolvedViewerSurface.visible#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2770.

Python
visible: bool

lsdtools.extend.ResolvedViewerSurface.anchors#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2771.

Python
anchors: tuple[ViewerSurfaceAnchor, ...]

lsdtools.extend.ResolvedViewerSurface.before#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2772.

Python
before: tuple[ViewerSurfaceAnchor, ...]

lsdtools.extend.ResolvedViewerSurface.after#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2773.

Python
after: tuple[ViewerSurfaceAnchor, ...]

lsdtools.extend.ResolvedViewerSurface.command#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2774.

Python
command: str | None

lsdtools.extend.ResolvedViewerSurface.layout#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2775.

Python
layout: ViewerLayoutEntry | None

lsdtools.extend.ResolvedViewerSurface.resizable#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2776.

Python
resizable: bool
Python
resizable = False

lsdtools.extend.ResolvedViewerSurface.min_size#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2777.

Python
min_size: tuple[int, int]
Python
min_size = (96, 48)

lsdtools.extend.ResolvedViewerSurface.icon#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2778.

Python
icon: str | None
Python
icon = None

lsdtools.extend.ResolvedViewerSurface.build#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2779.

Python
build: RuntimeFactory | None
Python
build = field(default=None, compare=False, repr=False)

lsdtools.extend.ResolvedViewerSurface.source_package#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2782.

Python
source_package(self) -> str
Python
self: (unannotated)

lsdtools.extend.ResolvedViewerVisualizationTool#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2695.

Implementation alias: lsd.packages.viewer_extensions.ResolvedViewerVisualizationTool.

lsdtools.extend.ResolvedViewerVisualizationTool.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2696.

Python
id: OwnedContributionId

lsdtools.extend.ResolvedViewerVisualizationTool.provider_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2697.

Python
provider_id: OwnedContributionId | None

lsdtools.extend.ResolvedViewerVisualizationTool.capability#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2698.

Python
capability: Capability | None

lsdtools.extend.ResolvedViewerVisualizationTool.source_extension#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2699.

Python
source_extension: OwnedContributionId

lsdtools.extend.ResolvedViewerVisualizationTool.requires#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2700.

Python
requires: tuple[Capability, ...]

lsdtools.extend.ResolvedViewerVisualizationTool.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2701.

Python
title: str

lsdtools.extend.ResolvedViewerVisualizationTool.icon#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2702.

Python
icon: str

lsdtools.extend.ResolvedViewerVisualizationTool.factory#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2703.

Python
factory: RuntimeFactory | None
Python
factory = field(default=None, compare=False, repr=False)

lsdtools.extend.ResolvedViewerVisualizationTool.source_package#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2706.

Python
source_package(self) -> str
Python
self: (unannotated)

lsdtools.extend.ResourceScope#

Kind: class. Source: core/lsd/src/lsd/packages/resources.py:62.

Python
ResourceScope(self, owner: str) -> None

Source docstring:

text
A stack of leases owned by one package/provider/mode session.

Implementation alias: lsd.packages.resources.ResourceScope.

lsdtools.extend.ResourceScope.__init__#

Kind: method. Source: core/lsd/src/lsd/packages/resources.py:67.

Python
__init__(self, owner: str) -> None
Python
owner: str
self: (unannotated)

lsdtools.extend.ResourceScope.disposed#

Kind: method. Source: core/lsd/src/lsd/packages/resources.py:76.

Python
disposed(self) -> bool
Python
self: (unannotated)

lsdtools.extend.ResourceScope.lease#

Kind: method. Source: core/lsd/src/lsd/packages/resources.py:79.

Python
lease(self, dispose: Dispose, *, label: str='') -> Lease
Python
dispose: Dispose
label: str
self: (unannotated)

Source docstring:

text
Track one teardown callback and return its independently disposable lease.

lsdtools.extend.ResourceScope.own#

Kind: method. Source: core/lsd/src/lsd/packages/resources.py:87.

Python
own(self, resource: Any, *, disposer: Optional[Callable[[Any], Any]]=None, label: str='') -> Any
Python
disposer: Optional[Callable[[Any], Any]]
label: str
resource: Any
self: (unannotated)

Source docstring:

text
Track an object exposing ``dispose``/``close`` or a supplied disposer.

The original object is returned so construction remains concise:

``controller = scope.own(Controller())``.

lsdtools.extend.ResourceScope.child#

Kind: method. Source: core/lsd/src/lsd/packages/resources.py:104.

Python
child(self, owner: str) -> 'ResourceScope'
Python
owner: str
self: (unannotated)

Source docstring:

text
Create a nested scope whose lifetime cannot exceed this scope.

lsdtools.extend.ResourceScope.release#

Kind: method. Source: core/lsd/src/lsd/packages/resources.py:110.

Python
release(self, lease: Lease) -> None
Python
lease: Lease
self: (unannotated)

Source docstring:

text
Dispose and forget one lease before the whole owner is torn down.

lsdtools.extend.ResourceScope.dispose#

Kind: method. Source: core/lsd/src/lsd/packages/resources.py:118.

Python
dispose(self) -> None
Python
self: (unannotated)

Source docstring:

text
Release every tracked resource in reverse creation order.

lsdtools.extend.ResourceScope.close#

Kind: attribute. Source: core/lsd/src/lsd/packages/resources.py:127.

Python
close = dispose

lsdtools.extend.ResourceScope.__enter__#

Kind: method. Source: core/lsd/src/lsd/packages/resources.py:129.

Python
__enter__(self) -> 'ResourceScope'
Python
self: (unannotated)

lsdtools.extend.ResourceScope.__exit__#

Kind: method. Source: core/lsd/src/lsd/packages/resources.py:132.

Python
__exit__(self, *_exc: object) -> None
Python
_exc: object
self: (unannotated)

lsdtools.extend.ResourceScope.owner#

Kind: attribute. Source: core/lsd/src/lsd/packages/resources.py:71.

Python
owner: str
Python
owner = owner

lsdtools.extend.RunReport#

Kind: class. Source: core/lsd/src/lsd/observe/report.py:59.

Source docstring:

text
Structured record of a complete run.

Populated by async handlers attached to the bus. Read from any thread
after the run completes; the internal lock keeps writes consistent.
``entities`` and ``order`` use stable entity ids; each record carries the
human display name separately.

Implementation alias: lsd.observe.report.RunReport.

lsdtools.extend.RunReport.entities#

Kind: attribute. Source: core/lsd/src/lsd/observe/report.py:68.

Python
entities: Dict[str, EntityRecord]
Python
entities = field(default_factory=dict)

lsdtools.extend.RunReport.started_at#

Kind: attribute. Source: core/lsd/src/lsd/observe/report.py:69.

Python
started_at: float
Python
started_at = field(default_factory=time.time)

lsdtools.extend.RunReport.finished_at#

Kind: attribute. Source: core/lsd/src/lsd/observe/report.py:70.

Python
finished_at: Optional[float]
Python
finished_at = None

lsdtools.extend.RunReport.order#

Kind: attribute. Source: core/lsd/src/lsd/observe/report.py:71.

Python
order: List[str]
Python
order = field(default_factory=list)

lsdtools.extend.RunReport.attach#

Kind: method. Source: core/lsd/src/lsd/observe/report.py:76.

Python
attach(cls, bus: EventBus) -> 'RunReport'
Python
bus: EventBus
cls: (unannotated)

Source docstring:

text
Subscribe to *bus* and return the (live) report.

The report starts empty and fills in as events arrive.

lsdtools.extend.RunReport.ok#

Kind: method. Source: core/lsd/src/lsd/observe/report.py:169.

Python
ok(self) -> bool
Python
self: (unannotated)

Source docstring:

text
True only if every entity completed with status 'ok'.

lsdtools.extend.RunReport.total_rows#

Kind: method. Source: core/lsd/src/lsd/observe/report.py:176.

Python
total_rows(self) -> int
Python
self: (unannotated)

Source docstring:

text
Sum of rows_written across all entities.

lsdtools.extend.RunReport.wall_s#

Kind: method. Source: core/lsd/src/lsd/observe/report.py:181.

Python
wall_s(self) -> float
Python
self: (unannotated)

Source docstring:

text
Elapsed wall-clock seconds from attachment to now (or finished_at).

lsdtools.extend.RunReport.entity#

Kind: method. Source: core/lsd/src/lsd/observe/report.py:186.

Python
entity(self, entity_id: str) -> Optional[EntityRecord]
Python
entity_id: str
self: (unannotated)

Source docstring:

text
Return the record for one stable entity id, or ``None``.

lsdtools.extend.RunReport.as_dict#

Kind: method. Source: core/lsd/src/lsd/observe/report.py:190.

Python
as_dict(self) -> dict
Python
self: (unannotated)

Source docstring:

text
JSON-friendly representation of the whole report.

lsdtools.extend.RuntimeInput#

Kind: class. Source: views/runtime/src/lsd_runtime_view/protocols.py:120.

Source docstring:

text
An input system the window's port binds: it takes the raw feed and publishes a frame.

Implementation alias: lsd_runtime_view.protocols.RuntimeInput.

Declared bases: Protocol.

lsdtools.extend.RuntimeInput.frame#

Kind: method. Source: views/runtime/src/lsd_runtime_view/protocols.py:124.

Python
frame(self) -> Any
Python
self: (unannotated)

lsdtools.extend.RuntimeInput.update#

Kind: method. Source: views/runtime/src/lsd_runtime_view/protocols.py:125.

Python
update(self, now_ns: int | None=None) -> Any
Python
now_ns: int | None
self: (unannotated)

lsdtools.extend.RuntimeInput.describe#

Kind: method. Source: views/runtime/src/lsd_runtime_view/protocols.py:126.

Python
describe(self) -> dict
Python
self: (unannotated)

lsdtools.extend.RuntimeInput.close#

Kind: method. Source: views/runtime/src/lsd_runtime_view/protocols.py:127.

Python
close(self) -> None
Python
self: (unannotated)

lsdtools.extend.SHADER_GEOMETRIES#

Kind: value. Source: core/lsd/src/lsd/packages/shader_programs.py:31.

Python
SHADER_GEOMETRIES: Tuple[str, ...]
Python
SHADER_GEOMETRIES = ('mesh', 'body')

Implementation alias: lsd.packages.shader_programs.SHADER_GEOMETRIES.

lsdtools.extend.SHADER_LIGHTING_MODELS#

Kind: value. Source: core/lsd/src/lsd/packages/shader_programs.py:32.

Python
SHADER_LIGHTING_MODELS: Tuple[str, ...]
Python
SHADER_LIGHTING_MODELS = ('custom', 'diffuse')

Implementation alias: lsd.packages.shader_programs.SHADER_LIGHTING_MODELS.

lsdtools.extend.SHADER_UNIFORM_TYPES#

Kind: value. Source: core/lsd/src/lsd/packages/shader_programs.py:28.

Python
SHADER_UNIFORM_TYPES: Tuple[str, ...]
Python
SHADER_UNIFORM_TYPES = ('float', 'int', 'bool', 'rgba', 'vec2', 'vec3', 'vec4')

Implementation alias: lsd.packages.shader_programs.SHADER_UNIFORM_TYPES.

lsdtools.extend.SOURCE_WIDGET#

Kind: value. Source: core/lsd/src/lsd/core/source.py:41.

Python
SOURCE_WIDGET = 'source'

Implementation alias: lsd.core.source.SOURCE_WIDGET.

lsdtools.extend.SURFACE_SHADER_INTERFACE#

Kind: value. Source: core/lsd/src/lsd/packages/shader_programs.py:21.

Python
SURFACE_SHADER_INTERFACE = 'surface-fragment-v1'

Implementation alias: lsd.packages.shader_programs.SURFACE_SHADER_INTERFACE.

lsdtools.extend.SURFACE_SHADER_SIGNATURE#

Kind: value. Source: core/lsd/src/lsd/packages/shader_programs.py:22.

Python
SURFACE_SHADER_SIGNATURE = 'vec4 lsd_surface(vec3 normal, vec3 camera_relative_position, vec4 base_color, vec3 lighting, float feature_value)'

Implementation alias: lsd.packages.shader_programs.SURFACE_SHADER_SIGNATURE.

lsdtools.extend.SYMBOL_SCHEMA_ID#

Kind: value. Source: core/style/src/lsd_style/model.py:30.

Python
SYMBOL_SCHEMA_ID = 'https://lsd.tools/schemas/symbology/v1.json'

Implementation alias: lsd_style.model.SCHEMA_ID.

lsdtools.extend.SYMBOL_SCHEMA_VERSION#

Kind: value. Source: core/style/src/lsd_style/model.py:29.

Python
SYMBOL_SCHEMA_VERSION = 1

Implementation alias: lsd_style.model.SCHEMA_VERSION.

lsdtools.extend.ScriptEntity#

Kind: class. Source: core/lsd/src/lsd/tree/script_entity.py:30.

Python
ScriptEntity(self, name: str, *, source_path: str='', **kwargs: Any) -> None

Source docstring:

text
A tree entity that represents (and edits) a project ``.py`` script.

Implementation alias: lsd.tree.script_entity.ScriptEntity.

Declared bases: Entity.

lsdtools.extend.ScriptEntity.source_path#

Kind: attribute. Source: core/lsd/src/lsd/tree/script_entity.py:33.

Python
source_path = param(str, default='', label='Script file', description='Path to the .py this entity edits')

lsdtools.extend.ScriptEntity.__init__#

Kind: method. Source: core/lsd/src/lsd/tree/script_entity.py:36.

Python
__init__(self, name: str, *, source_path: str='', **kwargs: Any) -> None
Python
kwargs: Any
name: str
self: (unannotated)
source_path: str

lsdtools.extend.ScriptEntity.starter_code#

Kind: method. Source: core/lsd/src/lsd/tree/script_entity.py:40.

Python
starter_code() -> str

Source docstring:

text
Default body for a new script file.

lsdtools.extend.Series#

Kind: class. Source: views/chart/src/lsd_view_chart/spec.py:34.

Implementation alias: lsd_view_chart.spec.Series.

lsdtools.extend.Series.name#

Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:35.

Python
name: str

lsdtools.extend.Series.x#

Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:36.

Python
x: List[float]

lsdtools.extend.Series.y#

Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:37.

Python
y: List[float]

lsdtools.extend.Series.color#

Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:38.

Python
color: Tuple[float, float, float, float]

lsdtools.extend.Series.hidden#

Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:39.

Python
hidden: bool
Python
hidden = False

lsdtools.extend.Series.id#

Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:43.

Python
id: str
Python
id = ''

lsdtools.extend.ShaderProgramRef#

Kind: class. Source: core/lsd/src/lsd/packages/shader_programs.py:240.

Source docstring:

text
A portable shader reference with exact provider version and content pins.

Implementation alias: lsd.packages.shader_programs.ShaderProgramRef.

lsdtools.extend.ShaderProgramRef.resource_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:243.

Python
resource_id: str

lsdtools.extend.ShaderProgramRef.version#

Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:244.

Python
version: str

lsdtools.extend.ShaderProgramRef.digest#

Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:245.

Python
digest: str

lsdtools.extend.ShaderProgramRef.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/shader_programs.py:253.

Python
to_dict(self) -> dict[str, str]
Python
self: (unannotated)

lsdtools.extend.ShaderProgramRef.from_dict#

Kind: method. Source: core/lsd/src/lsd/packages/shader_programs.py:261.

Python
from_dict(cls, payload: Mapping[str, Any]) -> 'ShaderProgramRef'
Python
cls: (unannotated)
payload: Mapping[str, Any]

lsdtools.extend.ShaderProgramSpec#

Kind: class. Source: core/lsd/src/lsd/packages/shader_programs.py:431.

Source docstring:

text
One package-owned surface function that the render widget may compile.

``diffuse`` promises component-wise ``F(L).rgb == F(vec3(1)).rgb * L``
for every lighting input, with alpha independent of lighting. Unit-light
evaluation therefore defines albedo. Emission, channel mixing and nonlinear
lighting responses must use ``custom``. This is an author contract; source
validation does not prove arbitrary GLSL satisfies the equation.

Implementation alias: lsd.packages.shader_programs.ShaderProgramSpec.

lsdtools.extend.ShaderProgramSpec.name#

Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:441.

Python
name: str

lsdtools.extend.ShaderProgramSpec.version#

Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:442.

Python
version: str

lsdtools.extend.ShaderProgramSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:443.

Python
title: str

lsdtools.extend.ShaderProgramSpec.source#

Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:444.

Python
source: str

lsdtools.extend.ShaderProgramSpec.uniforms#

Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:445.

Python
uniforms: Tuple[ShaderUniformSpec, ...]
Python
uniforms = ()

lsdtools.extend.ShaderProgramSpec.description#

Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:446.

Python
description: str
Python
description = ''

lsdtools.extend.ShaderProgramSpec.geometries#

Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:447.

Python
geometries: Tuple[str, ...]
Python
geometries = SHADER_GEOMETRIES

lsdtools.extend.ShaderProgramSpec.interface#

Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:448.

Python
interface: str
Python
interface = SURFACE_SHADER_INTERFACE

lsdtools.extend.ShaderProgramSpec.package#

Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:449.

Python
package: Optional[str]
Python
package = None

lsdtools.extend.ShaderProgramSpec.lighting_model#

Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:450.

Python
lighting_model: str
Python
lighting_model = 'custom'

lsdtools.extend.ShaderProgramSpec.resource_id#

Kind: method. Source: core/lsd/src/lsd/packages/shader_programs.py:509.

Python
resource_id(self) -> str
Python
self: (unannotated)

Source docstring:

text
Return the stable ``<package>/<name>`` runtime identity.

lsdtools.extend.ShaderProgramSpec.digest#

Kind: method. Source: core/lsd/src/lsd/packages/shader_programs.py:518.

Python
digest(self) -> str
Python
self: (unannotated)

lsdtools.extend.ShaderProgramSpec.reference#

Kind: method. Source: core/lsd/src/lsd/packages/shader_programs.py:538.

Python
reference(self) -> ShaderProgramRef
Python
self: (unannotated)

lsdtools.extend.ShaderUniformSpec#

Kind: class. Source: core/lsd/src/lsd/packages/shader_programs.py:131.

Source docstring:

text
One typed, editor-facing input declared by a shader provider.

Implementation alias: lsd.packages.shader_programs.ShaderUniformSpec.

lsdtools.extend.ShaderUniformSpec.name#

Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:134.

Python
name: str

lsdtools.extend.ShaderUniformSpec.property_key#

Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:135.

Python
property_key: str

lsdtools.extend.ShaderUniformSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:136.

Python
title: str

lsdtools.extend.ShaderUniformSpec.value_type#

Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:137.

Python
value_type: str

lsdtools.extend.ShaderUniformSpec.default#

Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:138.

Python
default: Any

lsdtools.extend.ShaderUniformSpec.description#

Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:139.

Python
description: str
Python
description = ''

lsdtools.extend.ShaderUniformSpec.minimum#

Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:140.

Python
minimum: Optional[float]
Python
minimum = None

lsdtools.extend.ShaderUniformSpec.maximum#

Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:141.

Python
maximum: Optional[float]
Python
maximum = None

lsdtools.extend.ShaderUniformSpec.step#

Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:142.

Python
step: Optional[float]
Python
step = None

lsdtools.extend.ShapeStep#

Kind: class. Source: core/lsd/src/lsd/flow/steps.py:1573.

Source docstring:

text
Base for transformation steps.

Subclass and implement ``run(inputs)`` — return a ``pa.Table``.
``inputs.main`` is the primary upstream table.

    class DropNulls(ShapeStep):
        column = param(str, required=True)

        def run(self, inputs: Tables) -> pa.Table:
            import pyarrow.compute as pc
            return inputs.main.filter(pc.is_valid(inputs.main[self.column]))

Implementation alias: lsd.flow.steps.ShapeStep.

Declared bases: _Step.

lsdtools.extend.ShapeStep.run#

Kind: method. Source: core/lsd/src/lsd/flow/steps.py:1589.

Python
run(self, inputs: Tables) -> Union[pa.Table, StepOutputs]
Python
inputs: Tables
self: (unannotated)

lsdtools.extend.SidebarViewContribution#

Kind: class. Source: core/lsd/src/lsd/packages/contributions.py:356.

Source docstring:

text
A docked **sidebar view** a package adds to either shell side (RFC-0002).

Where a :class:`MainViewType` is an editor-area view and a viewer extension surface belongs
inside a viewer, this contributes a standalone panel to a standard shell sidebar. It is how a
built-in like the entity tree or a package explorer can be expressed as a package. Core stays
GTK-free: ``factory(host) -> widget | View | ViewPresentation`` is realized by the desktop
manager. ``ViewPresentation`` pairs a bespoke native widget with the normal renderer-neutral
``View`` parameter/action model.

- ``view_id``     stable id (unique across sidebar views).
- ``factory``     ``factory(host) -> widget | View | ViewPresentation``.
- ``position``    lower sorts earlier within the navigation rail.
- ``side``        initial dock side: exactly ``"left"`` or ``"right"``.
- ``primary``     ⇒ the rail's default/primary view.
- ``default_open``⇒ shown when the shell first lays out.
- ``accepts_entity`` optionally narrows exact tree-selection delivery.
- ``deliver_entity`` receives ``(target, entity)``; ``target`` is the original core ``View``
  model when rendered through one, otherwise the factory's widget.

Active declarations are discoverable in both the compact app-logo command menu's ``View`` group
and the Activity Bar's right-click **Add View** catalog. The latter is a plain repeatable command,
never a checked attachment toggle: it reopens/focuses this exact singleton section. Attachment
is presentation state, not package activation; an empty sidebar scope does not require a blank
Navigation container.

Implementation alias: lsd.packages.contributions.SidebarViewContribution.

lsdtools.extend.SidebarViewContribution.view_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:382.

Python
view_id: str

lsdtools.extend.SidebarViewContribution.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:383.

Python
title: str

lsdtools.extend.SidebarViewContribution.factory#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:384.

Python
factory: Callable[..., Any]

lsdtools.extend.SidebarViewContribution.icon#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:385.

Python
icon: Optional[str]
Python
icon = None

lsdtools.extend.SidebarViewContribution.position#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:386.

Python
position: int
Python
position = 0

lsdtools.extend.SidebarViewContribution.primary#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:387.

Python
primary: bool
Python
primary = False

lsdtools.extend.SidebarViewContribution.default_open#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:388.

Python
default_open: bool
Python
default_open = True

lsdtools.extend.SidebarViewContribution.side#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:389.

Python
side: str
Python
side = 'left'

lsdtools.extend.SidebarViewContribution.accepts_entity#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:390.

Python
accepts_entity: Optional[Callable[[Any], bool]]
Python
accepts_entity = None

lsdtools.extend.SidebarViewContribution.deliver_entity#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:391.

Python
deliver_entity: Optional[Callable[..., Any]]
Python
deliver_entity = None

lsdtools.extend.SidebarViewContribution.package#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:392.

Python
package: Optional[str]
Python
package = None

lsdtools.extend.SidebarViewContribution.accepts#

Kind: method. Source: core/lsd/src/lsd/packages/contributions.py:447.

Python
accepts(self, entity: Any) -> bool
Python
entity: Any
self: (unannotated)

Source docstring:

text
Whether this exact sidebar declaration can receive *entity*.

lsdtools.extend.SourceKind#

Kind: class. Source: core/lsd/src/lsd/core/source.py:45.

Source docstring:

text
A registered source kind: a config :class:`Configurable` + how to read / watch it.

Implementation alias: lsd.core.source.SourceKind.

lsdtools.extend.SourceKind.name#

Kind: attribute. Source: core/lsd/src/lsd/core/source.py:47.

Python
name: str
Python
name = ''

lsdtools.extend.SourceKind.label#

Kind: attribute. Source: core/lsd/src/lsd/core/source.py:48.

Python
label: str
Python
label = ''

lsdtools.extend.SourceKind.config_cls#

Kind: attribute. Source: core/lsd/src/lsd/core/source.py:49.

Python
config_cls: type
Python
config_cls = Configurable

lsdtools.extend.SourceKind.read#

Kind: method. Source: core/lsd/src/lsd/core/source.py:51.

Python
read(self, cfg: Configurable, read_one: Callable[[str], Any]) -> Any
Python
cfg: Configurable
read_one: Callable[[str], Any]
self: (unannotated)

Source docstring:

text
Return the raw ``pa.Table``. File kinds call ``read_one(path)`` per resolved file and combine;
table kinds (sql) ignore ``read_one`` and produce the table directly.

lsdtools.extend.SourceKind.paths#

Kind: method. Source: core/lsd/src/lsd/core/source.py:56.

Python
paths(self, cfg: Configurable) -> List[str]
Python
cfg: Configurable
self: (unannotated)

Source docstring:

text
Resolved file paths (file kinds) or ``[]`` (non-file kinds).

lsdtools.extend.SourceKind.watch_targets#

Kind: method. Source: core/lsd/src/lsd/core/source.py:60.

Python
watch_targets(self, cfg: Configurable) -> List[str]
Python
cfg: Configurable
self: (unannotated)

Source docstring:

text
Files to poll for changes (defaults to :meth:`paths`).

lsdtools.extend.SourceKind.fingerprint#

Kind: method. Source: core/lsd/src/lsd/core/source.py:64.

Python
fingerprint(self, cfg: Configurable) -> str
Python
cfg: Configurable
self: (unannotated)

Source docstring:

text
A cache signature from the watch targets' mtime+size (``""`` when there is nothing to stat).

lsdtools.extend.SqlSourceConfig#

Kind: class. Source: core/lsd/src/lsd/core/source.py:190.

Source docstring:

text
Config for a SQLite source: a database file + a query.

Implementation alias: lsd.core.source.SqlSourceConfig.

Declared bases: Configurable.

lsdtools.extend.SqlSourceConfig.db#

Kind: attribute. Source: core/lsd/src/lsd/core/source.py:192.

Python
db = param(str, default='', widget='file', group='Source', label='Database', description='SQLite database file (.db / .sqlite)')

lsdtools.extend.SqlSourceConfig.query#

Kind: attribute. Source: core/lsd/src/lsd/core/source.py:194.

Python
query = param(str, default='', widget='textarea', group='Source', label='Query', description='SQL query, e.g. SELECT x, y, z FROM blocks')

lsdtools.extend.StatusActionBinding#

Kind: class. Source: core/lsd/src/lsd/packages/status_extensions.py:244.

Source docstring:

text
Route a status control through one canonical wire action.

The binding deliberately contains no callback and no tier.  ``kind`` names
an :class:`lsd_actions.ActionSpec`; that catalog remains the only authority
for access tiers.  A remote caller invokes that action directly, while a
local Desktop click may dispatch it on the local control surface.

Implementation alias: lsd.packages.status_extensions.StatusActionBinding.

lsdtools.extend.StatusActionBinding.kind#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:253.

Python
kind: str

lsdtools.extend.StatusActionBinding.params#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:254.

Python
params: Mapping[str, JsonValue]
Python
params = field(default_factory=dict)

lsdtools.extend.StatusActionBinding.value_param#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:255.

Python
value_param: str | None
Python
value_param = None

lsdtools.extend.StatusActionBinding.bind#

Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:275.

Python
bind(self, value: JsonValue=None) -> dict[str, JsonValue]
Python
self: (unannotated)
value: JsonValue

lsdtools.extend.StatusActionBinding.to_wire#

Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:281.

Python
to_wire(self) -> dict[str, JsonValue]
Python
self: (unannotated)

lsdtools.extend.StatusAnchor#

Kind: class. Source: core/lsd/src/lsd/packages/status_extensions.py:530.

Implementation alias: lsd.packages.status_extensions.StatusAnchor.

lsdtools.extend.StatusAnchor.key#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:531.

Python
key: str

lsdtools.extend.StatusAnchor.item#

Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:538.

Python
item(cls, item_id: OwnedContributionId) -> 'StatusAnchor'
Python
cls: (unannotated)
item_id: OwnedContributionId

lsdtools.extend.StatusAnchor.capability#

Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:542.

Python
capability(cls, capability: Capability) -> 'StatusAnchor'
Python
capability: Capability
cls: (unannotated)

lsdtools.extend.StatusAnchor.named#

Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:546.

Python
named(cls, name: str) -> 'StatusAnchor'
Python
cls: (unannotated)
name: str

lsdtools.extend.StatusChoice#

Kind: class. Source: core/lsd/src/lsd/packages/status_extensions.py:229.

Implementation alias: lsd.packages.status_extensions.StatusChoice.

lsdtools.extend.StatusChoice.value#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:230.

Python
value: JsonValue

lsdtools.extend.StatusChoice.label#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:231.

Python
label: str

lsdtools.extend.StatusChoice.to_wire#

Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:239.

Python
to_wire(self) -> dict[str, JsonValue]
Python
self: (unannotated)

lsdtools.extend.StatusControl#

Kind: class. Source: core/lsd/src/lsd/packages/status_extensions.py:290.

Implementation alias: lsd.packages.status_extensions.StatusControl.

lsdtools.extend.StatusControl.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:291.

Python
id: str

lsdtools.extend.StatusControl.label#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:292.

Python
label: str

lsdtools.extend.StatusControl.kind#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:293.

Python
kind: StatusControlKind
Python
kind = StatusControlKind.COMMAND

lsdtools.extend.StatusControl.value#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:294.

Python
value: JsonValue
Python
value = None

lsdtools.extend.StatusControl.enabled#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:295.

Python
enabled: bool
Python
enabled = True

lsdtools.extend.StatusControl.icon#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:296.

Python
icon: str | None
Python
icon = None

lsdtools.extend.StatusControl.description#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:297.

Python
description: str | None
Python
description = None

lsdtools.extend.StatusControl.choices#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:298.

Python
choices: tuple[StatusChoice, ...]
Python
choices = ()

lsdtools.extend.StatusControl.minimum#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:299.

Python
minimum: float | None
Python
minimum = None

lsdtools.extend.StatusControl.maximum#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:300.

Python
maximum: float | None
Python
maximum = None

lsdtools.extend.StatusControl.step#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:301.

Python
step: float | None
Python
step = None

lsdtools.extend.StatusControl.action#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:302.

Python
action: StatusActionBinding | None
Python
action = None

lsdtools.extend.StatusControl.validate_invocation#

Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:357.

Python
validate_invocation(self, value: Any) -> JsonValue
Python
self: (unannotated)
value: Any

Source docstring:

text
Validate and detach one value before any package callback runs.

lsdtools.extend.StatusControl.to_wire#

Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:381.

Python
to_wire(self) -> dict[str, JsonValue]
Python
self: (unannotated)

lsdtools.extend.StatusControlKind#

Kind: class. Source: core/lsd/src/lsd/packages/status_extensions.py:109.

Implementation alias: lsd.packages.status_extensions.StatusControlKind.

Declared bases: str, Enum.

lsdtools.extend.StatusControlKind.COMMAND#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:110.

Python
COMMAND = 'command'

lsdtools.extend.StatusControlKind.TOGGLE#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:111.

Python
TOGGLE = 'toggle'

lsdtools.extend.StatusControlKind.CHOICE#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:112.

Python
CHOICE = 'choice'

lsdtools.extend.StatusControlKind.RANGE#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:113.

Python
RANGE = 'range'

lsdtools.extend.StatusDiagnostic#

Kind: class. Source: core/lsd/src/lsd/packages/status_extensions.py:701.

Implementation alias: lsd.packages.status_extensions.StatusDiagnostic.

lsdtools.extend.StatusDiagnostic.severity#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:702.

Python
severity: DiagnosticSeverity

lsdtools.extend.StatusDiagnostic.code#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:703.

Python
code: str

lsdtools.extend.StatusDiagnostic.message#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:704.

Python
message: str

lsdtools.extend.StatusDiagnostic.contribution_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:705.

Python
contribution_id: str | None
Python
contribution_id = None

lsdtools.extend.StatusDiagnostic.to_wire#

Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:712.

Python
to_wire(self) -> dict[str, JsonValue]
Python
self: (unannotated)

lsdtools.extend.StatusExtensionSpec#

Kind: class. Source: core/lsd/src/lsd/packages/status_extensions.py:612.

Implementation alias: lsd.packages.status_extensions.StatusExtensionSpec.

lsdtools.extend.StatusExtensionSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:613.

Python
id: OwnedContributionId

lsdtools.extend.StatusExtensionSpec.semantics#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:614.

Python
semantics: ExtensionSemantics
Python
semantics = ExtensionSemantics.ADD

lsdtools.extend.StatusExtensionSpec.capability#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:615.

Python
capability: Capability | None
Python
capability = None

lsdtools.extend.StatusExtensionSpec.contents#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:616.

Python
contents: tuple[SurfaceContentSpec, ...]
Python
contents = ()

lsdtools.extend.StatusExtensionSpec.items#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:617.

Python
items: tuple[StatusItemSpec, ...]
Python
items = ()

lsdtools.extend.StatusExtensionSpec.default#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:618.

Python
default: bool
Python
default = False

lsdtools.extend.StatusExtensionSpec.replaces#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:619.

Python
replaces: tuple[OwnedContributionId, ...]
Python
replaces = ()

lsdtools.extend.StatusExtensionSpec.requires#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:620.

Python
requires: tuple[Capability, ...]
Python
requires = ()

lsdtools.extend.StatusItemSpec#

Kind: class. Source: core/lsd/src/lsd/packages/status_extensions.py:551.

Implementation alias: lsd.packages.status_extensions.StatusItemSpec.

lsdtools.extend.StatusItemSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:552.

Python
id: OwnedContributionId

lsdtools.extend.StatusItemSpec.content_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:553.

Python
content_id: OwnedContributionId

lsdtools.extend.StatusItemSpec.scope#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:554.

Python
scope: StatusScope
Python
scope = StatusScope.PROJECT

lsdtools.extend.StatusItemSpec.region#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:555.

Python
region: StatusRegion
Python
region = StatusRegion.TRAILING

lsdtools.extend.StatusItemSpec.role#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:556.

Python
role: StatusRole
Python
role = StatusRole.NORMAL

lsdtools.extend.StatusItemSpec.view_kinds#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:557.

Python
view_kinds: tuple[str, ...]
Python
view_kinds = ()

lsdtools.extend.StatusItemSpec.entity_types#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:558.

Python
entity_types: tuple[str, ...]
Python
entity_types = ()

lsdtools.extend.StatusItemSpec.default_visible#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:559.

Python
default_visible: bool
Python
default_visible = True

lsdtools.extend.StatusItemSpec.primary_control_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:560.

Python
primary_control_id: str | None
Python
primary_control_id = None

lsdtools.extend.StatusItemSpec.anchors#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:561.

Python
anchors: tuple[StatusAnchor, ...]
Python
anchors = ()

lsdtools.extend.StatusItemSpec.before#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:562.

Python
before: tuple[StatusAnchor, ...]
Python
before = ()

lsdtools.extend.StatusItemSpec.after#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:563.

Python
after: tuple[StatusAnchor, ...]
Python
after = ()

lsdtools.extend.StatusItemSpec.replaces#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:564.

Python
replaces: tuple[OwnedContributionId, ...]
Python
replaces = ()

lsdtools.extend.StatusItemSpec.own_anchor#

Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:607.

Python
own_anchor(self) -> StatusAnchor
Python
self: (unannotated)

lsdtools.extend.StatusRegion#

Kind: class. Source: core/lsd/src/lsd/packages/status_extensions.py:131.

Implementation alias: lsd.packages.status_extensions.StatusRegion.

Declared bases: str, Enum.

lsdtools.extend.StatusRegion.LEADING#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:132.

Python
LEADING = 'leading'

lsdtools.extend.StatusRegion.CENTER#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:133.

Python
CENTER = 'center'

lsdtools.extend.StatusRegion.TRAILING#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:134.

Python
TRAILING = 'trailing'

lsdtools.extend.StatusRole#

Kind: class. Source: core/lsd/src/lsd/packages/status_extensions.py:137.

Implementation alias: lsd.packages.status_extensions.StatusRole.

Declared bases: str, Enum.

lsdtools.extend.StatusRole.NORMAL#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:138.

Python
NORMAL = 'normal'

lsdtools.extend.StatusRole.PRIMARY#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:139.

Python
PRIMARY = 'primary'

lsdtools.extend.StatusRole.ATTENTION#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:140.

Python
ATTENTION = 'attention'

lsdtools.extend.StatusScope#

Kind: class. Source: core/lsd/src/lsd/packages/status_extensions.py:124.

Implementation alias: lsd.packages.status_extensions.StatusScope.

Declared bases: str, Enum.

lsdtools.extend.StatusScope.WINDOW#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:125.

Python
WINDOW = 'window'

lsdtools.extend.StatusScope.PROJECT#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:126.

Python
PROJECT = 'project'

lsdtools.extend.StatusScope.ACTIVE_VIEW#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:127.

Python
ACTIVE_VIEW = 'active_view'

lsdtools.extend.StatusScope.SELECTED_ENTITY#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:128.

Python
SELECTED_ENTITY = 'selected_entity'

lsdtools.extend.StatusTone#

Kind: class. Source: core/lsd/src/lsd/packages/status_extensions.py:116.

Implementation alias: lsd.packages.status_extensions.StatusTone.

Declared bases: str, Enum.

lsdtools.extend.StatusTone.NORMAL#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:117.

Python
NORMAL = 'normal'

lsdtools.extend.StatusTone.INFO#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:118.

Python
INFO = 'info'

lsdtools.extend.StatusTone.SUCCESS#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:119.

Python
SUCCESS = 'success'

lsdtools.extend.StatusTone.WARNING#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:120.

Python
WARNING = 'warning'

lsdtools.extend.StatusTone.ERROR#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:121.

Python
ERROR = 'error'

lsdtools.extend.StepOutputDependency#

Kind: class. Source: core/lsd/src/lsd/flow/steps.py:227.

Source docstring:

text
One exact materialized step output required before another step executes.

Unlike :meth:`_Step.bind_from`, this dependency does not pass the source
table into an input port.  It declares an execution/provenance dependency:
the Engine orders the source entity first, and the source table profile's
``snapshot_id`` participates in the consumer's resume fingerprint.

Coordinates are stable ids only.  Display names are intentionally absent.

Implementation alias: lsd.flow.steps.StepOutputDependency.

lsdtools.extend.StepOutputDependency.entity_id#

Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:238.

Python
entity_id: str

lsdtools.extend.StepOutputDependency.step_id#

Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:239.

Python
step_id: str

lsdtools.extend.StepOutputDependency.output_port#

Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:240.

Python
output_port: str
Python
output_port = OUTPUT_KEY

lsdtools.extend.StepOutputs#

Kind: value. Source: core/lsd/src/lsd/flow/steps.py:187.

Python
StepOutputs = Dict[str, 'pa.Table']

Implementation alias: lsd.flow.steps.StepOutputs.

lsdtools.extend.StepResult#

Kind: class. Source: core/lsd/src/lsd/flow/steps.py:288.

Source docstring:

text
Outcome of a single executed step.

Implementation alias: lsd.flow.steps.StepResult.

lsdtools.extend.StepResult.step_kind#

Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:290.

Python
step_kind: str

lsdtools.extend.StepResult.step_class#

Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:291.

Python
step_class: str

lsdtools.extend.StepResult.step_id#

Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:292.

Python
step_id: str

lsdtools.extend.StepResult.outputs#

Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:293.

Python
outputs: StepOutputs

lsdtools.extend.StepResult.output_paths#

Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:294.

Python
output_paths: Dict[str, str]

lsdtools.extend.StepResult.duration_s#

Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:295.

Python
duration_s: float

lsdtools.extend.StepResult.schema_validated#

Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:296.

Python
schema_validated: bool

lsdtools.extend.StepResult.rows_written#

Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:297.

Python
rows_written: int

lsdtools.extend.StepResult.skipped#

Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:298.

Python
skipped: bool
Python
skipped = False

lsdtools.extend.StepResult.artifacts#

Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:299.

Python
artifacts: Dict[str, FileArtifact]
Python
artifacts = field(default_factory=dict)

lsdtools.extend.StepResult.output_profiles#

Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:300.

Python
output_profiles: Dict[str, 'TableProfile']
Python
output_profiles = field(default_factory=dict)

lsdtools.extend.StepResult.trips#

Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:303.

Python
trips: Dict[str, 'TripRecord']
Python
trips = field(default_factory=dict)

lsdtools.extend.StyleAssetSpec#

Kind: class. Source: core/lsd/src/lsd/packages/contributions.py:740.

Source docstring:

text
One style asset a package contributes into the closed style types.

``kind`` is one of :data:`STYLE_ASSET_KINDS`; ``payload`` is the matching
``lsd_style.assets`` payload (or its keyword mapping).  ``name`` is the package-local id, a
portable path such as ``patterns/ore``; the id documents use is :attr:`resource_id`,
``<package>/<name>`` — the kernel's assets read ``lsd/<name>``.

A ramp or palette is a *recipe* the editor resamples into literal document stops, so a
document renders identically on a guest without the package.  A pattern mask, surface
texture or glyph sheet is referenced by id (``properties.asset = {"id": ...}``,
``marker.symbol = "<sheet>#<glyph>"``) and its bytes travel as content-addressed assets to
every renderer that draws it.  A family preset is the standard document for one engineering
family table.

Implementation alias: lsd.packages.contributions.StyleAssetSpec.

lsdtools.extend.StyleAssetSpec.name#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:756.

Python
name: str

lsdtools.extend.StyleAssetSpec.kind#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:757.

Python
kind: str

lsdtools.extend.StyleAssetSpec.payload#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:758.

Python
payload: Any

lsdtools.extend.StyleAssetSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:759.

Python
title: str
Python
title = ''

lsdtools.extend.StyleAssetSpec.tags#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:760.

Python
tags: Tuple[str, ...]
Python
tags = ()

lsdtools.extend.StyleAssetSpec.package#

Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:761.

Python
package: Optional[str]
Python
package = None

lsdtools.extend.StyleAssetSpec.resource_id#

Kind: method. Source: core/lsd/src/lsd/packages/contributions.py:790.

Python
resource_id(self) -> str
Python
self: (unannotated)

Source docstring:

text
``<package>/<name>``: the id documents, plans and renderers use.

lsdtools.extend.StyleDraft#

Kind: class. Source: views/widgets/symbology/src/lsd_symbology/draft.py:81.

Python
StyleDraft(self, context: StyleContext, *, resolve: Optional[Callable[[str], Optional[StyleContext]]]=None) -> None

Source docstring:

text
One layer's appearance being edited: the document, its column, and its provenance.

Implementation alias: lsd_symbology.draft.StyleDraft.

lsdtools.extend.StyleDraft.__init__#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:84.

Python
__init__(self, context: StyleContext, *, resolve: Optional[Callable[[str], Optional[StyleContext]]]=None) -> None
Python
context: StyleContext
resolve: Optional[Callable[[str], Optional[StyleContext]]]
self: (unannotated)

lsdtools.extend.StyleDraft.context#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:100.

Python
context(self) -> StyleContext
Python
self: (unannotated)

lsdtools.extend.StyleDraft.kind#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:104.

Python
kind(self) -> str
Python
self: (unannotated)

lsdtools.extend.StyleDraft.symbology#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:108.

Python
symbology(self) -> Symbology
Python
self: (unannotated)

lsdtools.extend.StyleDraft.value_field#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:112.

Python
value_field(self) -> str
Python
self: (unannotated)

lsdtools.extend.StyleDraft.source#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:116.

Python
source(self) -> str
Python
self: (unannotated)

lsdtools.extend.StyleDraft.style_ref#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:120.

Python
style_ref(self) -> str
Python
self: (unannotated)

lsdtools.extend.StyleDraft.title#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:124.

Python
title(self) -> str
Python
self: (unannotated)

lsdtools.extend.StyleDraft.dirty#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:128.

Python
dirty(self) -> bool
Python
self: (unannotated)

lsdtools.extend.StyleDraft.changes#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:132.

Python
changes(self) -> Tuple[DraftChange, ...]
Python
self: (unannotated)

lsdtools.extend.StyleDraft.original#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:136.

Python
original(self) -> Symbology
Python
self: (unannotated)

lsdtools.extend.StyleDraft.original_field#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:140.

Python
original_field(self) -> str
Python
self: (unannotated)

lsdtools.extend.StyleDraft.profile#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:143.

Python
profile(self) -> Any
Python
self: (unannotated)

Source docstring:

text
The distribution behind the current mode (a numeric column read as codes when the
document lists categories), or ``None``.

lsdtools.extend.StyleDraft.mode#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:151.

Python
mode(self) -> str
Python
self: (unannotated)

Source docstring:

text
``constant`` / ``range`` / ``categories`` — the colour mapping form on screen.

lsdtools.extend.StyleDraft.modes#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:159.

Python
modes(self) -> Tuple[str, ...]
Python
self: (unannotated)

lsdtools.extend.StyleDraft.style_type#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:162.

Python
style_type(self) -> str
Python
self: (unannotated)

lsdtools.extend.StyleDraft.type_availability#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:166.

Python
type_availability(self) -> List[Dict[str, Any]]
Python
self: (unannotated)

Source docstring:

text
Every primary type for this kind, with whether the column supports it and why not.

lsdtools.extend.StyleDraft.available_types#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:189.

Python
available_types(self) -> Tuple[StyleType, ...]
Python
self: (unannotated)

lsdtools.extend.StyleDraft.render_form#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:194.

Python
render_form(self) -> str
Python
self: (unannotated)

Source docstring:

text
The renderer-owned geometric representation selected for this layer.

lsdtools.extend.StyleDraft.render_form_availability#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:198.

Python
render_form_availability(self) -> List[Dict[str, Any]]
Python
self: (unannotated)

Source docstring:

text
Every representation the one capability table advertises for this source kind.

lsdtools.extend.StyleDraft.available_render_forms#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:213.

Python
available_render_forms(self) -> Tuple[RenderForm, ...]
Python
self: (unannotated)

lsdtools.extend.StyleDraft.overlay_types#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:218.

Python
overlay_types(self) -> Tuple[StyleType, ...]
Python
self: (unannotated)

Source docstring:

text
The additive types the Layers page can add (a hatch, a texture, a wire).

lsdtools.extend.StyleDraft.primary_layer#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:225.

Python
primary_layer(self) -> SymbolLayer
Python
self: (unannotated)

lsdtools.extend.StyleDraft.mapping#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:228.

Python
mapping(self) -> Optional[Dict[str, Any]]
Python
self: (unannotated)

lsdtools.extend.StyleDraft.primary_color#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:233.

Python
primary_color(self) -> Tuple[float, float, float, float]
Python
self: (unannotated)

lsdtools.extend.StyleDraft.settings#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:237.

Python
settings(self) -> List[Dict[str, Any]]
Python
self: (unannotated)

Source docstring:

text
The primary layer's editable settings, from the capability table, with values.

lsdtools.extend.StyleDraft.layers#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:264.

Python
layers(self) -> List[Dict[str, Any]]
Python
self: (unannotated)

lsdtools.extend.StyleDraft.overlay_settings#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:284.

Python
overlay_settings(self, layer_id: str) -> List[Dict[str, Any]]
Python
layer_id: str
self: (unannotated)

Source docstring:

text
An overlay layer's editable settings from the capability table, with values.

lsdtools.extend.StyleDraft.distribution#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:291.

Python
distribution(self) -> Tuple[str, int]
Python
self: (unannotated)

Source docstring:

text
``(numeric|categorical|empty, bars)``: what the plot has to draw.

lsdtools.extend.StyleDraft.describe#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:303.

Python
describe(self) -> Dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.StyleDraft.connect_changed#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:344.

Python
connect_changed(self, callback: Callable[[DraftChange], None]) -> None
Python
callback: Callable[[DraftChange], None]
self: (unannotated)

lsdtools.extend.StyleDraft.set_field#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:350.

Python
set_field(self, name: str) -> Optional[DraftChange]
Python
name: str
self: (unannotated)

Source docstring:

text
Colour by another column, keeping the choices already made where they still apply.

A range follows a numeric column by rescaling its breaks to the new range; categories
follow a categorical column by keeping the colours of every value that survives; a
range meeting a categorical column samples its ramp once per value, and categories
meeting a numeric column become a ramp between their first and last colours.  A column
with no distribution keeps one colour.

lsdtools.extend.StyleDraft.set_type#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:391.

Python
set_type(self, type_id: str) -> Optional[DraftChange]
Python
self: (unannotated)
type_id: str

Source docstring:

text
Switch what colours the layer, carrying the current colours across.

lsdtools.extend.StyleDraft.set_render_form#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:417.

Python
set_render_form(self, form_id: str) -> Optional[DraftChange]
Python
form_id: str
self: (unannotated)

Source docstring:

text
Choose how resident source geometry is drawn, without changing its colour mapping.

Form-specific settings are initialized from the capability table the first time a form
is selected.  Values belonging to another form stay dormant in the canonical document,
so Point -> Sphere -> Point restores the person's previous point size.

lsdtools.extend.StyleDraft.set_mode#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:449.

Python
set_mode(self, mode: str) -> Optional[DraftChange]
Python
mode: str
self: (unannotated)

Source docstring:

text
The three-word vocabulary of the column chooser: one colour, a range, categories.

lsdtools.extend.StyleDraft.set_setting#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:461.

Python
set_setting(self, name: str, value: Any) -> Optional[DraftChange]
Python
name: str
self: (unannotated)
value: Any

Source docstring:

text
Write one capability-declared setting (a literal, or a mapping where mappable).

lsdtools.extend.StyleDraft.set_property#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:490.

Python
set_property(self, layer_id: str, name: str, value: Any) -> Optional[DraftChange]
Python
layer_id: str
name: str
self: (unannotated)
value: Any

Source docstring:

text
Write any property of any layer.

A property the capability table declares for the layer's kind is validated the way the
Style page's settings are (type, range, choices, a template's fields, a column's
existence); anything else is carried as the document allows it.

lsdtools.extend.StyleDraft.set_mapping#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:515.

Python
set_mapping(self, mapping: Mapping[str, Any]) -> Optional[DraftChange]
Python
mapping: Mapping[str, Any]
self: (unannotated)

Source docstring:

text
Replace the primary colour mapping wholesale (a document the wire hands over).

lsdtools.extend.StyleDraft.set_clamp#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:526.

Python
set_clamp(self, clamp: bool) -> Optional[DraftChange]
Python
clamp: bool
self: (unannotated)

lsdtools.extend.StyleDraft.set_fallback#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:533.

Python
set_fallback(self, color: Any) -> Optional[DraftChange]
Python
color: Any
self: (unannotated)

lsdtools.extend.StyleDraft.breaks#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:542.

Python
breaks(self) -> List[float]
Python
self: (unannotated)

lsdtools.extend.StyleDraft.move_break#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:548.

Python
move_break(self, index: int, value: Any) -> Optional[DraftChange]
Python
index: int
self: (unannotated)
value: Any

lsdtools.extend.StyleDraft.add_break#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:565.

Python
add_break(self, value: Any) -> Optional[DraftChange]
Python
self: (unannotated)
value: Any

lsdtools.extend.StyleDraft.remove_break#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:589.

Python
remove_break(self, index: int) -> Optional[DraftChange]
Python
index: int
self: (unannotated)

lsdtools.extend.StyleDraft.set_segment_discrete#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:606.

Python
set_segment_discrete(self, index: int, discrete: bool) -> Optional[DraftChange]
Python
discrete: bool
index: int
self: (unannotated)

lsdtools.extend.StyleDraft.set_segment_output#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:630.

Python
set_segment_output(self, index: int, color: Any, *, end: str='') -> Optional[DraftChange]
Python
color: Any
end: str
index: int
self: (unannotated)

Source docstring:

text
Recolour one segment: a constant's output, or an interpolation's ``from``/``to``.

lsdtools.extend.StyleDraft.set_break_color#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:652.

Python
set_break_color(self, index: int, color: Any) -> Optional[DraftChange]
Python
color: Any
index: int
self: (unannotated)

Source docstring:

text
Recolour the stop at one break: the end of the segment before it and the start of
the segment after it (constant segments keep their own colour).

lsdtools.extend.StyleDraft.break_color#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:676.

Python
break_color(self, index: int) -> Tuple[float, float, float, float]
Python
index: int
self: (unannotated)

Source docstring:

text
The colour drawn at one break.

lsdtools.extend.StyleDraft.classify#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:686.

Python
classify(self, count: int, method: str='equal') -> Optional[DraftChange]
Python
count: int
method: str
self: (unannotated)

Source docstring:

text
Rebuild the range as *count* discrete classes, coloured from the current ramp.

lsdtools.extend.StyleDraft.set_gradient#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:710.

Python
set_gradient(self) -> Optional[DraftChange]
Python
self: (unannotated)

Source docstring:

text
Make every segment interpolate again, sampling the current colours at the breaks.

lsdtools.extend.StyleDraft.set_ramp#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:723.

Python
set_ramp(self, ramp: Any) -> Optional[DraftChange]
Python
ramp: Any
self: (unannotated)

Source docstring:

text
Recolour the range from a ramp asset (an id such as ``lsd/ramps/viridis``) or payload.

lsdtools.extend.StyleDraft.categories#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:750.

Python
categories(self) -> List[Dict[str, Any]]
Python
self: (unannotated)

lsdtools.extend.StyleDraft.classes#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:768.

Python
classes(self) -> List[Dict[str, Any]]
Python
self: (unannotated)

Source docstring:

text
The range's intervals in order, each with its mode and its glyph (Glyph form).

lsdtools.extend.StyleDraft.families#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:791.

Python
families(self) -> List[Dict[str, Any]]
Python
self: (unannotated)

Source docstring:

text
Every glyph sheet the product can draw: ``{id, title, glyphs}``.

lsdtools.extend.StyleDraft.symbol_family#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:796.

Python
symbol_family(self) -> str
Python
self: (unannotated)

Source docstring:

text
The glyph sheet the primary layer draws from (``""`` when it is not a symbol).

lsdtools.extend.StyleDraft.family_glyphs#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:803.

Python
family_glyphs(self, sheet: Optional[str]=None) -> List[str]
Python
self: (unannotated)
sheet: Optional[str]

lsdtools.extend.StyleDraft.set_symbol_family#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:818.

Python
set_symbol_family(self, sheet: str) -> Optional[DraftChange]
Python
self: (unannotated)
sheet: str

Source docstring:

text
Draw the primary layer's symbols from another sheet, keeping glyph names where the
new sheet has them (else its first glyph).

lsdtools.extend.StyleDraft.set_category_symbol#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:850.

Python
set_category_symbol(self, value: Any, glyph: Any) -> Optional[DraftChange]
Python
glyph: Any
self: (unannotated)
value: Any

Source docstring:

text
One glyph for one category value (the family's glyph name or a full id).

lsdtools.extend.StyleDraft.set_class_symbol#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:871.

Python
set_class_symbol(self, index: int, glyph: Any) -> Optional[DraftChange]
Python
glyph: Any
index: int
self: (unannotated)

Source docstring:

text
One glyph for one class of the range (the interval between two breaks).

lsdtools.extend.StyleDraft.pins#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:897.

Python
pins(self) -> List[Tuple[str, str]]
Python
self: (unannotated)

lsdtools.extend.StyleDraft.is_pinned#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:900.

Python
is_pinned(self, layer_id: str, name: str) -> bool
Python
layer_id: str
name: str
self: (unannotated)

lsdtools.extend.StyleDraft.pin_setting#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:903.

Python
pin_setting(self, layer_id: str, name: str) -> Optional[DraftChange]
Python
layer_id: str
name: str
self: (unannotated)

lsdtools.extend.StyleDraft.unpin_setting#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:915.

Python
unpin_setting(self, layer_id: str, name: str) -> Optional[DraftChange]
Python
layer_id: str
name: str
self: (unannotated)

lsdtools.extend.StyleDraft.reference_document#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:923.

Python
reference_document(self) -> Symbology
Python
self: (unannotated)

Source docstring:

text
What a local setting's Reset returns to: the shared style, else the opened one.

lsdtools.extend.StyleDraft.surfaced#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:928.

Python
surfaced(self) -> List[Dict[str, Any]]
Python
self: (unannotated)

Source docstring:

text
The pinned settings as rows the front page edits: the setting row plus
``layer``, ``layer_name``, ``reference`` and ``modified``.

lsdtools.extend.StyleDraft.reset_setting#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:952.

Python
reset_setting(self, layer_id: str, name: str) -> Optional[DraftChange]
Python
layer_id: str
name: str
self: (unannotated)

Source docstring:

text
Put a local setting back to the style's own value.

lsdtools.extend.StyleDraft.text_variable#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:972.

Python
text_variable(self) -> Optional[Dict[str, Any]]
Python
self: (unannotated)

Source docstring:

text
The topmost enabled label layer's binding, or None when the style has no labels.

lsdtools.extend.StyleDraft.set_text_variable#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:982.

Python
set_text_variable(self, layer_id: str, text: Optional[str]=None, priority: Optional[str]=None) -> Optional[DraftChange]
Python
layer_id: str
priority: Optional[str]
self: (unannotated)
text: Optional[str]

lsdtools.extend.StyleDraft.set_category_output#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1002.

Python
set_category_output(self, value: Any, color: Any) -> Optional[DraftChange]
Python
color: Any
self: (unannotated)
value: Any

lsdtools.extend.StyleDraft.set_category_enabled#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1012.

Python
set_category_enabled(self, value: Any, enabled: bool) -> Optional[DraftChange]
Python
enabled: bool
self: (unannotated)
value: Any

lsdtools.extend.StyleDraft.set_category_label#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1021.

Python
set_category_label(self, value: Any, label: str) -> Optional[DraftChange]
Python
label: str
self: (unannotated)
value: Any

lsdtools.extend.StyleDraft.add_category#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1030.

Python
add_category(self, value: Any, color: Any=None) -> Optional[DraftChange]
Python
color: Any
self: (unannotated)
value: Any

lsdtools.extend.StyleDraft.remove_category#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1042.

Python
remove_category(self, value: Any) -> Optional[DraftChange]
Python
self: (unannotated)
value: Any

lsdtools.extend.StyleDraft.set_palette#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1052.

Python
set_palette(self, palette: Any) -> Optional[DraftChange]
Python
palette: Any
self: (unannotated)

Source docstring:

text
Recolour every category from a palette asset (an id such as ``lsd/palettes/category``).

lsdtools.extend.StyleDraft.add_layer#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1062.

Python
add_layer(self, type_id: str, properties: Optional[Mapping[str, Any]]=None) -> Optional[DraftChange]
Python
properties: Optional[Mapping[str, Any]]
self: (unannotated)
type_id: str

lsdtools.extend.StyleDraft.label_columns#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1083.

Python
label_columns(self) -> List[str]
Python
self: (unannotated)

Source docstring:

text
The table columns the document's label layer reads.

lsdtools.extend.StyleDraft.missing_columns#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1087.

Python
missing_columns(self) -> List[str]
Python
self: (unannotated)

Source docstring:

text
Label columns this layer's table does not have (the labels there are blank).

lsdtools.extend.StyleDraft.remove_layer#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1092.

Python
remove_layer(self, layer_id: str) -> Optional[DraftChange]
Python
layer_id: str
self: (unannotated)

lsdtools.extend.StyleDraft.move_layer#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1101.

Python
move_layer(self, layer_id: str, destination: int) -> Optional[DraftChange]
Python
destination: int
layer_id: str
self: (unannotated)

lsdtools.extend.StyleDraft.set_name#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1112.

Python
set_name(self, name: str) -> Optional[DraftChange]
Python
name: str
self: (unannotated)

Source docstring:

text
Rename the document (what a saved project style is listed as).

lsdtools.extend.StyleDraft.set_layer_enabled#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1123.

Python
set_layer_enabled(self, layer_id: str, enabled: bool) -> Optional[DraftChange]
Python
enabled: bool
layer_id: str
self: (unannotated)

lsdtools.extend.StyleDraft.rename_layer#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1133.

Python
rename_layer(self, layer_id: str, name: str) -> Optional[DraftChange]
Python
layer_id: str
name: str
self: (unannotated)

lsdtools.extend.StyleDraft.set_layer_blend#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1146.

Python
set_layer_blend(self, layer_id: str, blend: str) -> Optional[DraftChange]
Python
blend: str
layer_id: str
self: (unannotated)

lsdtools.extend.StyleDraft.duplicate_layer#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1159.

Python
duplicate_layer(self, layer_id: str) -> Optional[DraftChange]
Python
layer_id: str
self: (unannotated)

Source docstring:

text
A copy of the layer drawn right above it; the copy is never the primary.

lsdtools.extend.StyleDraft.set_layer_type#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1167.

Python
set_layer_type(self, layer_id: str, type_id: str) -> Optional[DraftChange]
Python
layer_id: str
self: (unannotated)
type_id: str

Source docstring:

text
Turn an overlay into another overlay type, keeping its name, opacity and blend.

lsdtools.extend.StyleDraft.set_layer_opacity#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1194.

Python
set_layer_opacity(self, layer_id: str, opacity: Any) -> Optional[DraftChange]
Python
layer_id: str
opacity: Any
self: (unannotated)

lsdtools.extend.StyleDraft.replace_document#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1206.

Python
replace_document(self, symbology: Any, *, op: str='replace_document', **detail: Any) -> Optional[DraftChange]
Python
detail: Any
op: str
self: (unannotated)
symbology: Any

lsdtools.extend.StyleDraft.adapted#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1214.

Python
adapted(self, symbology: Any) -> Symbology
Python
self: (unannotated)
symbology: Any

Source docstring:

text
A project style's document carried onto this layer's column, uncommitted.

The same rules a column switch applies: a range is rescaled to the column's range,
categories keep the colours of the values that survive, a range meeting a categorical
column samples its ramp per value, categories meeting a numeric column become a ramp.

lsdtools.extend.StyleDraft.reset_to_default#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1249.

Python
reset_to_default(self) -> Optional[DraftChange]
Python
self: (unannotated)

Source docstring:

text
The ONLY path back to the standard rules for this kind and column.

lsdtools.extend.StyleDraft.revert#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1261.

Python
revert(self) -> Optional[DraftChange]
Python
self: (unannotated)

Source docstring:

text
Back to what the layer showed when the editor opened (Cancel).

lsdtools.extend.StyleDraft.mark_applied#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1273.

Python
mark_applied(self, context: Optional[StyleContext]=None) -> None
Python
context: Optional[StyleContext]
self: (unannotated)

Source docstring:

text
The host wrote the document: it is now the baseline Cancel returns to.

lsdtools.extend.StyleEditor#

Kind: class. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:59.

Python
StyleEditor(self, context: Any, *, resolve: Optional[Callable[[str], Any]]=None, on_apply: Optional[Callable[..., Any]]=None, on_preview: Optional[Callable[..., Any]]=None, project_styles: Optional[Callable[[], List[Mapping]]]=None) -> None

Source docstring:

text
Edit one layer's appearance: its variables on the front, the style behind *Edit style*.

Implementation alias: lsd_symbology.style_editor.StyleEditor.

lsdtools.extend.StyleEditor.__init__#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:62.

Python
__init__(self, context: Any, *, resolve: Optional[Callable[[str], Any]]=None, on_apply: Optional[Callable[..., Any]]=None, on_preview: Optional[Callable[..., Any]]=None, project_styles: Optional[Callable[[], List[Mapping]]]=None) -> None
Python
context: Any
on_apply: Optional[Callable[..., Any]]
on_preview: Optional[Callable[..., Any]]
project_styles: Optional[Callable[[], List[Mapping]]]
resolve: Optional[Callable[[str], Any]]
self: (unannotated)

lsdtools.extend.StyleEditor.widget#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:96.

Python
widget(self)
Python
self: (unannotated)

lsdtools.extend.StyleEditor.draft#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:100.

Python
draft(self) -> StyleDraft
Python
self: (unannotated)

lsdtools.extend.StyleEditor.context#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:104.

Python
context(self) -> Any
Python
self: (unannotated)

lsdtools.extend.StyleEditor.symbology#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:108.

Python
symbology(self) -> Symbology
Python
self: (unannotated)

lsdtools.extend.StyleEditor.value_field#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:112.

Python
value_field(self) -> str
Python
self: (unannotated)

lsdtools.extend.StyleEditor.mode#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:116.

Python
mode(self) -> str
Python
self: (unannotated)

lsdtools.extend.StyleEditor.page#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:120.

Python
page(self) -> str
Python
self: (unannotated)

lsdtools.extend.StyleEditor.preview_pushed#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:124.

Python
preview_pushed(self) -> int
Python
self: (unannotated)

lsdtools.extend.StyleEditor.first_focus#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:128.

Python
first_focus(self)
Python
self: (unannotated)

Source docstring:

text
The control a freshly opened window focuses (the column dropdown).

lsdtools.extend.StyleEditor.describe#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:149.

Python
describe(self) -> dict
Python
self: (unannotated)

Source docstring:

text
Report exactly what is on screen, in terms a probe can assert.

lsdtools.extend.StyleEditor.set_field#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:190.

Python
set_field(self, name: str) -> None
Python
name: str
self: (unannotated)

lsdtools.extend.StyleEditor.set_mode#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:193.

Python
set_mode(self, mode: str) -> None
Python
mode: str
self: (unannotated)

lsdtools.extend.StyleEditor.set_page#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:201.

Python
set_page(self, page: str) -> None
Python
page: str
self: (unannotated)

lsdtools.extend.StyleEditor.set_expanded#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:210.

Python
set_expanded(self, layer_id: Optional[str]) -> None
Python
layer_id: Optional[str]
self: (unannotated)

Source docstring:

text
Open one layer card on the Style page (``None`` closes them all).

lsdtools.extend.StyleEditor.select#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:217.

Python
select(self, target: Optional[str]) -> None
Python
self: (unannotated)
target: Optional[str]

lsdtools.extend.StyleEditor.drive#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:223.

Python
drive(self, op: str, params: Optional[Mapping[str, Any]]=None) -> dict
Python
op: str
params: Optional[Mapping[str, Any]]
self: (unannotated)

Source docstring:

text
Perform one named edit and report the result — the wire's hands.

lsdtools.extend.StyleEditor.flush_preview#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:289.

Python
flush_preview(self) -> bool
Python
self: (unannotated)

Source docstring:

text
Push the draft to the host now (the debounce elapsed, or a probe asked).

lsdtools.extend.StyleEditor.apply#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:306.

Python
apply(self, *, save_as: str='', update_shared: bool=False, detach: bool=False) -> Any
Python
detach: bool
save_as: str
self: (unannotated)
update_shared: bool

Source docstring:

text
Hand the finished document back to the host.

lsdtools.extend.StyleEditor.cancel#

Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:334.

Python
cancel(self) -> None
Python
self: (unannotated)

Source docstring:

text
Back to what the layer showed when the editor opened, on screen too.

lsdtools.extend.SurfaceBindingMode#

Kind: class. Source: core/lsd/src/lsd/packages/status_extensions.py:104.

Implementation alias: lsd.packages.status_extensions.SurfaceBindingMode.

Declared bases: str, Enum.

lsdtools.extend.SurfaceBindingMode.FOLLOW_CONTEXT#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:105.

Python
FOLLOW_CONTEXT = 'follow_context'

lsdtools.extend.SurfaceBindingMode.EXACT_TARGET#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:106.

Python
EXACT_TARGET = 'exact_target'

lsdtools.extend.SurfaceContentSnapshot#

Kind: class. Source: core/lsd/src/lsd/packages/status_extensions.py:445.

Implementation alias: lsd.packages.status_extensions.SurfaceContentSnapshot.

lsdtools.extend.SurfaceContentSnapshot.revision#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:446.

Python
revision: str | int

lsdtools.extend.SurfaceContentSnapshot.summary#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:447.

Python
summary: str

lsdtools.extend.SurfaceContentSnapshot.icon#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:448.

Python
icon: str | None
Python
icon = None

lsdtools.extend.SurfaceContentSnapshot.tone#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:449.

Python
tone: StatusTone
Python
tone = StatusTone.NORMAL

lsdtools.extend.SurfaceContentSnapshot.progress#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:450.

Python
progress: float | None
Python
progress = None

lsdtools.extend.SurfaceContentSnapshot.tooltip#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:451.

Python
tooltip: str | None
Python
tooltip = None

lsdtools.extend.SurfaceContentSnapshot.sections#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:452.

Python
sections: tuple[SurfaceSection, ...]
Python
sections = ()

lsdtools.extend.SurfaceContentSnapshot.control#

Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:480.

Python
control(self, control_id: str) -> StatusControl | None
Python
control_id: str
self: (unannotated)

lsdtools.extend.SurfaceContentSnapshot.to_wire#

Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:487.

Python
to_wire(self) -> dict[str, JsonValue]
Python
self: (unannotated)

lsdtools.extend.SurfaceContentSpec#

Kind: class. Source: core/lsd/src/lsd/packages/status_extensions.py:500.

Implementation alias: lsd.packages.status_extensions.SurfaceContentSpec.

lsdtools.extend.SurfaceContentSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:501.

Python
id: OwnedContributionId

lsdtools.extend.SurfaceContentSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:502.

Python
title: str

lsdtools.extend.SurfaceContentSpec.observe#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:503.

Python
observe: SurfaceObserver
Python
observe = field(compare=False, repr=False)

lsdtools.extend.SurfaceContentSpec.invoke#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:504.

Python
invoke: SurfaceInvoker | None
Python
invoke = field(default=None, compare=False, repr=False)

lsdtools.extend.SurfaceContentSpec.desktop_refresh_on#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:505.

Python
desktop_refresh_on: tuple[str, ...]
Python
desktop_refresh_on = ()

lsdtools.extend.SurfaceContentSpec.engine_refresh_on#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:506.

Python
engine_refresh_on: tuple[str, ...]
Python
engine_refresh_on = ()

lsdtools.extend.SurfaceContentSpec.projection#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:507.

Python
projection: SurfaceProjectionSpec
Python
projection = field(default_factory=SurfaceProjectionSpec)

lsdtools.extend.SurfaceContext#

Kind: class. Source: core/lsd/src/lsd/packages/status_extensions.py:172.

Source docstring:

text
Stable callback context supplied by a projection host.

Identity fields are serializable.  ``host``/``engine``/``active_view`` and
``selected_entity`` are opaque live handles and must never be returned on the
wire.  A host may withhold ``active_view`` from a different package owner;
cross-package integration should use declared capabilities and services.

Implementation alias: lsd.packages.status_extensions.SurfaceContext.

lsdtools.extend.SurfaceContext.context_revision#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:181.

Python
context_revision: int

lsdtools.extend.SurfaceContext.project_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:182.

Python
project_id: str | None
Python
project_id = None

lsdtools.extend.SurfaceContext.project_path#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:183.

Python
project_path: str | None
Python
project_path = None

lsdtools.extend.SurfaceContext.active_view_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:184.

Python
active_view_id: str | None
Python
active_view_id = None

lsdtools.extend.SurfaceContext.active_view_kind#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:185.

Python
active_view_kind: str | None
Python
active_view_kind = None

lsdtools.extend.SurfaceContext.active_view_title#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:186.

Python
active_view_title: str | None
Python
active_view_title = None

lsdtools.extend.SurfaceContext.active_view_entity_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:187.

Python
active_view_entity_id: str | None
Python
active_view_entity_id = None

lsdtools.extend.SurfaceContext.selected_entity_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:188.

Python
selected_entity_id: str | None
Python
selected_entity_id = None

lsdtools.extend.SurfaceContext.binding_mode#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:189.

Python
binding_mode: SurfaceBindingMode
Python
binding_mode = SurfaceBindingMode.FOLLOW_CONTEXT

lsdtools.extend.SurfaceContext.target_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:190.

Python
target_id: str | None
Python
target_id = None

lsdtools.extend.SurfaceContext.host#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:191.

Python
host: Any
Python
host = field(default=None, compare=False, repr=False)

lsdtools.extend.SurfaceContext.engine#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:192.

Python
engine: Any
Python
engine = field(default=None, compare=False, repr=False)

lsdtools.extend.SurfaceContext.active_view#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:193.

Python
active_view: Any
Python
active_view = field(default=None, compare=False, repr=False)

lsdtools.extend.SurfaceContext.selected_entity#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:194.

Python
selected_entity: Any
Python
selected_entity = field(default=None, compare=False, repr=False)

lsdtools.extend.SurfaceContext.to_wire#

Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:213.

Python
to_wire(self) -> dict[str, JsonValue]
Python
self: (unannotated)

lsdtools.extend.SurfaceDetail#

Kind: class. Source: core/lsd/src/lsd/packages/status_extensions.py:399.

Implementation alias: lsd.packages.status_extensions.SurfaceDetail.

lsdtools.extend.SurfaceDetail.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:400.

Python
id: str

lsdtools.extend.SurfaceDetail.label#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:401.

Python
label: str

lsdtools.extend.SurfaceDetail.value#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:402.

Python
value: JsonValue

lsdtools.extend.SurfaceDetail.to_wire#

Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:409.

Python
to_wire(self) -> dict[str, JsonValue]
Python
self: (unannotated)

lsdtools.extend.SurfaceHome#

Kind: class. Source: core/lsd/src/lsd/packages/status_extensions.py:91.

Implementation alias: lsd.packages.status_extensions.SurfaceHome.

Declared bases: str, Enum.

lsdtools.extend.SurfaceHome.STATUS_POPOVER#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:92.

Python
STATUS_POPOVER = 'status_popover'

lsdtools.extend.SurfaceHome.VIEWER_HUD#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:93.

Python
VIEWER_HUD = 'viewer_hud'

lsdtools.extend.SurfaceHome.SIDEBAR#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:94.

Python
SIDEBAR = 'sidebar'

lsdtools.extend.SurfaceHome.EDITOR#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:95.

Python
EDITOR = 'editor'

lsdtools.extend.SurfaceHome.WINDOW#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:96.

Python
WINDOW = 'window'

lsdtools.extend.SurfaceMultiplicity#

Kind: class. Source: core/lsd/src/lsd/packages/status_extensions.py:99.

Implementation alias: lsd.packages.status_extensions.SurfaceMultiplicity.

Declared bases: str, Enum.

lsdtools.extend.SurfaceMultiplicity.SINGLE#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:100.

Python
SINGLE = 'single'

lsdtools.extend.SurfaceMultiplicity.MULTIPLE#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:101.

Python
MULTIPLE = 'multiple'

lsdtools.extend.SurfaceProjectionSpec#

Kind: class. Source: core/lsd/src/lsd/packages/status_extensions.py:144.

Implementation alias: lsd.packages.status_extensions.SurfaceProjectionSpec.

lsdtools.extend.SurfaceProjectionSpec.homes#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:145.

Python
homes: tuple[SurfaceHome, ...]
Python
homes = (SurfaceHome.STATUS_POPOVER,)

lsdtools.extend.SurfaceProjectionSpec.multiplicity#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:146.

Python
multiplicity: SurfaceMultiplicity
Python
multiplicity = SurfaceMultiplicity.SINGLE

lsdtools.extend.SurfaceProjectionSpec.binding_modes#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:147.

Python
binding_modes: tuple[SurfaceBindingMode, ...]
Python
binding_modes = (SurfaceBindingMode.FOLLOW_CONTEXT,)

lsdtools.extend.SurfaceProjectionSpec.default_binding#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:150.

Python
default_binding: SurfaceBindingMode
Python
default_binding = SurfaceBindingMode.FOLLOW_CONTEXT

lsdtools.extend.SurfaceSection#

Kind: class. Source: core/lsd/src/lsd/packages/status_extensions.py:414.

Implementation alias: lsd.packages.status_extensions.SurfaceSection.

lsdtools.extend.SurfaceSection.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:415.

Python
id: str

lsdtools.extend.SurfaceSection.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:416.

Python
title: str | None
Python
title = None

lsdtools.extend.SurfaceSection.details#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:417.

Python
details: tuple[SurfaceDetail, ...]
Python
details = ()

lsdtools.extend.SurfaceSection.controls#

Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:418.

Python
controls: tuple[StatusControl, ...]
Python
controls = ()

lsdtools.extend.SurfaceSection.to_wire#

Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:435.

Python
to_wire(self) -> dict[str, JsonValue]
Python
self: (unannotated)

lsdtools.extend.SurfaceTexturePayload#

Kind: class. Source: core/style/src/lsd_style/assets.py:232.

Source docstring:

text
A repeating RGBA8 colour tile.

Implementation alias: lsd_style.assets.SurfaceTexturePayload.

Declared bases: StyleAssetPayload.

lsdtools.extend.SurfaceTexturePayload.image#

Kind: attribute. Source: core/style/src/lsd_style/assets.py:235.

Python
image: np.ndarray

lsdtools.extend.SurfaceTexturePayload.kind#

Kind: attribute. Source: core/style/src/lsd_style/assets.py:236.

Python
kind = 'surface_texture'

lsdtools.extend.SurfaceTexturePayload.to_bytes#

Kind: method. Source: core/style/src/lsd_style/assets.py:241.

Python
to_bytes(self) -> bytes
Python
self: (unannotated)

lsdtools.extend.SurfaceTexturePayload.from_parts#

Kind: method. Source: core/style/src/lsd_style/assets.py:245.

Python
from_parts(cls, header: Mapping[str, Any], arrays: Sequence[np.ndarray]) -> 'SurfaceTexturePayload'
Python
arrays: Sequence[np.ndarray]
cls: (unannotated)
header: Mapping[str, Any]

lsdtools.extend.SymbolGlyphsPayload#

Kind: class. Source: core/style/src/lsd_style/assets.py:250.

Source docstring:

text
Named glyphs on one RGBA8 sheet with normalised UV rectangles.

Implementation alias: lsd_style.assets.SymbolGlyphsPayload.

Declared bases: StyleAssetPayload.

lsdtools.extend.SymbolGlyphsPayload.image#

Kind: attribute. Source: core/style/src/lsd_style/assets.py:253.

Python
image: np.ndarray

lsdtools.extend.SymbolGlyphsPayload.uv_rects#

Kind: attribute. Source: core/style/src/lsd_style/assets.py:254.

Python
uv_rects: np.ndarray

lsdtools.extend.SymbolGlyphsPayload.names#

Kind: attribute. Source: core/style/src/lsd_style/assets.py:255.

Python
names: Tuple[str, ...]

lsdtools.extend.SymbolGlyphsPayload.kind#

Kind: attribute. Source: core/style/src/lsd_style/assets.py:256.

Python
kind = 'symbol_glyphs'

lsdtools.extend.SymbolGlyphsPayload.to_bytes#

Kind: method. Source: core/style/src/lsd_style/assets.py:275.

Python
to_bytes(self) -> bytes
Python
self: (unannotated)

lsdtools.extend.SymbolGlyphsPayload.from_parts#

Kind: method. Source: core/style/src/lsd_style/assets.py:279.

Python
from_parts(cls, header: Mapping[str, Any], arrays: Sequence[np.ndarray]) -> 'SymbolGlyphsPayload'
Python
arrays: Sequence[np.ndarray]
cls: (unannotated)
header: Mapping[str, Any]

lsdtools.extend.SymbolLayer#

Kind: class. Source: core/style/src/lsd_style/model.py:382.

Source docstring:

text
One ordered symbolizer in a :class:`Symbology` render program.

Implementation alias: lsd_style.model.SymbolLayer.

lsdtools.extend.SymbolLayer.id#

Kind: attribute. Source: core/style/src/lsd_style/model.py:385.

Python
id: str

lsdtools.extend.SymbolLayer.kind#

Kind: attribute. Source: core/style/src/lsd_style/model.py:386.

Python
kind: str

lsdtools.extend.SymbolLayer.name#

Kind: attribute. Source: core/style/src/lsd_style/model.py:387.

Python
name: str
Python
name = ''

lsdtools.extend.SymbolLayer.enabled#

Kind: attribute. Source: core/style/src/lsd_style/model.py:388.

Python
enabled: bool
Python
enabled = True

lsdtools.extend.SymbolLayer.opacity#

Kind: attribute. Source: core/style/src/lsd_style/model.py:389.

Python
opacity: float
Python
opacity = 1.0

lsdtools.extend.SymbolLayer.blend#

Kind: attribute. Source: core/style/src/lsd_style/model.py:390.

Python
blend: str
Python
blend = 'normal'

lsdtools.extend.SymbolLayer.properties#

Kind: attribute. Source: core/style/src/lsd_style/model.py:391.

Python
properties: Dict[str, JSONValue]
Python
properties = dc_field(default_factory=dict)

lsdtools.extend.SymbolLayer.metadata#

Kind: attribute. Source: core/style/src/lsd_style/model.py:392.

Python
metadata: Dict[str, JSONValue]
Python
metadata = dc_field(default_factory=dict)

lsdtools.extend.SymbolLayer.extensions#

Kind: attribute. Source: core/style/src/lsd_style/model.py:393.

Python
extensions: Dict[str, JSONValue]
Python
extensions = dc_field(default_factory=dict)

lsdtools.extend.SymbolLayer.from_dict#

Kind: method. Source: core/style/src/lsd_style/model.py:423.

Python
from_dict(cls, data: Mapping[str, JSONValue]) -> 'SymbolLayer'
Python
cls: (unannotated)
data: Mapping[str, JSONValue]

lsdtools.extend.SymbolLayer.to_dict#

Kind: method. Source: core/style/src/lsd_style/model.py:450.

Python
to_dict(self) -> Dict[str, JSONValue]
Python
self: (unannotated)

lsdtools.extend.SymbolLayer.clone#

Kind: method. Source: core/style/src/lsd_style/model.py:463.

Python
clone(self, *, new_id: Optional[str]=None) -> 'SymbolLayer'
Python
new_id: Optional[str]
self: (unannotated)

lsdtools.extend.SymbolLayer.set_property#

Kind: method. Source: core/style/src/lsd_style/model.py:469.

Python
set_property(self, name: str, value: JSONValue | ValueMapping) -> None
Python
name: str
self: (unannotated)
value: JSONValue | ValueMapping

lsdtools.extend.SymbolLayer.resolve#

Kind: method. Source: core/style/src/lsd_style/model.py:478.

Python
resolve(self, name: str, input_value: Any=None) -> JSONValue
Python
input_value: Any
name: str
self: (unannotated)

lsdtools.extend.Symbology#

Kind: class. Source: core/style/src/lsd_style/model.py:496.

Source docstring:

text
One canonical symbology JSON document and its ordered layer stack.

Implementation alias: lsd_style.model.Symbology.

lsdtools.extend.Symbology.name#

Kind: attribute. Source: core/style/src/lsd_style/model.py:499.

Python
name: str
Python
name = 'Untitled symbology'

lsdtools.extend.Symbology.geometry#

Kind: attribute. Source: core/style/src/lsd_style/model.py:500.

Python
geometry: str
Python
geometry = 'any'

lsdtools.extend.Symbology.layers#

Kind: attribute. Source: core/style/src/lsd_style/model.py:501.

Python
layers: List[SymbolLayer]
Python
layers = dc_field(default_factory=list)

lsdtools.extend.Symbology.legend#

Kind: attribute. Source: core/style/src/lsd_style/model.py:502.

Python
legend: Dict[str, JSONValue]
Python
legend = dc_field(default_factory=_default_legend)

lsdtools.extend.Symbology.metadata#

Kind: attribute. Source: core/style/src/lsd_style/model.py:503.

Python
metadata: Dict[str, JSONValue]
Python
metadata = dc_field(default_factory=dict)

lsdtools.extend.Symbology.description#

Kind: attribute. Source: core/style/src/lsd_style/model.py:504.

Python
description: str
Python
description = ''

lsdtools.extend.Symbology.unique_id#

Kind: method. Source: core/style/src/lsd_style/model.py:529.

Python
unique_id(self, preferred: str) -> str
Python
preferred: str
self: (unannotated)

lsdtools.extend.Symbology.add_layer#

Kind: method. Source: core/style/src/lsd_style/model.py:539.

Python
add_layer(self, layer: SymbolLayer | Mapping[str, JSONValue], *, index: Optional[int]=None) -> SymbolLayer
Python
index: Optional[int]
layer: SymbolLayer | Mapping[str, JSONValue]
self: (unannotated)

lsdtools.extend.Symbology.new_layer#

Kind: method. Source: core/style/src/lsd_style/model.py:548.

Python
new_layer(self, kind: str, *, name: str='', properties: Optional[Mapping[str, JSONValue]]=None, index: Optional[int]=None) -> SymbolLayer
Python
index: Optional[int]
kind: str
name: str
properties: Optional[Mapping[str, JSONValue]]
self: (unannotated)

lsdtools.extend.Symbology.layer#

Kind: method. Source: core/style/src/lsd_style/model.py:558.

Python
layer(self, layer_id: str) -> Optional[SymbolLayer]
Python
layer_id: str
self: (unannotated)

lsdtools.extend.Symbology.remove_layer#

Kind: method. Source: core/style/src/lsd_style/model.py:561.

Python
remove_layer(self, layer_id: str) -> bool
Python
layer_id: str
self: (unannotated)

lsdtools.extend.Symbology.move_layer#

Kind: method. Source: core/style/src/lsd_style/model.py:568.

Python
move_layer(self, source: int | str, destination: int) -> None
Python
destination: int
self: (unannotated)
source: int | str

lsdtools.extend.Symbology.duplicate_layer#

Kind: method. Source: core/style/src/lsd_style/model.py:576.

Python
duplicate_layer(self, layer_id: str) -> SymbolLayer
Python
layer_id: str
self: (unannotated)

lsdtools.extend.Symbology.from_dict#

Kind: method. Source: core/style/src/lsd_style/model.py:587.

Python
from_dict(cls, data: Mapping[str, JSONValue]) -> 'Symbology'
Python
cls: (unannotated)
data: Mapping[str, JSONValue]

lsdtools.extend.Symbology.to_dict#

Kind: method. Source: core/style/src/lsd_style/model.py:620.

Python
to_dict(self) -> Dict[str, JSONValue]
Python
self: (unannotated)

lsdtools.extend.Symbology.from_json#

Kind: method. Source: core/style/src/lsd_style/model.py:633.

Python
from_json(cls, text: str) -> 'Symbology'
Python
cls: (unannotated)
text: str

lsdtools.extend.Symbology.to_json#

Kind: method. Source: core/style/src/lsd_style/model.py:640.

Python
to_json(self, *, indent: Optional[int]=2) -> str
Python
indent: Optional[int]
self: (unannotated)

lsdtools.extend.Symbology.clone#

Kind: method. Source: core/style/src/lsd_style/model.py:643.

Python
clone(self) -> 'Symbology'
Python
self: (unannotated)

lsdtools.extend.Symbology.resolve#

Kind: method. Source: core/style/src/lsd_style/model.py:646.

Python
resolve(self, layer_id: str, property_name: str, input_value: Any=None) -> JSONValue
Python
input_value: Any
layer_id: str
property_name: str
self: (unannotated)

lsdtools.extend.SymbologyValidationError#

Kind: class. Source: core/style/src/lsd_style/model.py:48.

Source docstring:

text
The canonical document is malformed or belongs to another schema.

Implementation alias: lsd_style.model.SymbologyValidationError.

Declared bases: ValueError.

lsdtools.extend.TIMELINE_EXTENSION_VERSION#

Kind: value. Source: core/lsd/src/lsd/packages/timeline_extensions.py:18.

Python
TIMELINE_EXTENSION_VERSION = 1

Implementation alias: lsd.packages.timeline_extensions.TIMELINE_EXTENSION_VERSION.

lsdtools.extend.Tables#

Kind: class. Source: core/lsd/src/lsd/flow/steps.py:260.

Source docstring:

text
Named Arrow tables handed to a step's ``run()``.

``inputs.main`` is the primary upstream table (the ``'output'`` key), so
the common single-input case reads in plain English::

    def run(self, inputs: Tables) -> pa.Table:
        return inputs.main.filter(...)

Multi-input or cross-entity steps index by name: ``inputs["reference"]``.

Implementation alias: lsd.flow.steps.Tables.

Declared bases: dict.

lsdtools.extend.Tables.main#

Kind: method. Source: core/lsd/src/lsd/flow/steps.py:273.

Python
main(self) -> pa.Table
Python
self: (unannotated)

lsdtools.extend.TimelineEditorBindingDiagnostic#

Kind: class. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:74.

Implementation alias: lsd.packages.timeline_editor_bindings.TimelineEditorBindingDiagnostic.

lsdtools.extend.TimelineEditorBindingDiagnostic.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:75.

Python
id: str

lsdtools.extend.TimelineEditorBindingDiagnostic.code#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:76.

Python
code: str

lsdtools.extend.TimelineEditorBindingDiagnostic.message#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:77.

Python
message: str

lsdtools.extend.TimelineEditorBindingDiagnostic.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:79.

Python
to_dict(self)
Python
self: (unannotated)

lsdtools.extend.TimelineEditorBindingSpec#

Kind: class. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:32.

Implementation alias: lsd.packages.timeline_editor_bindings.TimelineEditorBindingSpec.

lsdtools.extend.TimelineEditorBindingSpec.version#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:33.

Python
version: int

lsdtools.extend.TimelineEditorBindingSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:34.

Python
id: OwnedContributionId

lsdtools.extend.TimelineEditorBindingSpec.extension#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:35.

Python
extension: OwnedContributionId

lsdtools.extend.TimelineEditorBindingSpec.track_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:36.

Python
track_id: str

lsdtools.extend.TimelineEditorBindingSpec.object_type#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:37.

Python
object_type: OwnedContributionId

lsdtools.extend.TimelineEditorBindingSpec.section#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:38.

Python
section: OwnedContributionId

lsdtools.extend.TimelineEditorBindingSpec.fields#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:39.

Python
fields: tuple[str, ...]

lsdtools.extend.TimelineEditorBindingSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:40.

Python
title: str

lsdtools.extend.TimelineEditorBindingSpec.value#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:41.

Python
value: TimelineValueSpec

lsdtools.extend.TimelineEditorBindingSpec.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:66.

Python
to_dict(self)
Python
self: (unannotated)

lsdtools.extend.TimelineEventFieldSpec#

Kind: class. Source: core/lsd/src/lsd/packages/timeline_extensions.py:203.

Source docstring:

text
One required, typed field in an event intent's closed payload.

Implementation alias: lsd.packages.timeline_extensions.TimelineEventFieldSpec.

lsdtools.extend.TimelineEventFieldSpec.name#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:206.

Python
name: str

lsdtools.extend.TimelineEventFieldSpec.value#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:207.

Python
value: TimelineValueSpec

lsdtools.extend.TimelineEventTrackSpec#

Kind: class. Source: core/lsd/src/lsd/packages/timeline_extensions.py:216.

Source docstring:

text
Typed event intentions only; evaluation never executes an external effect.

No signal receiver, replay journal, or world checkpoint is implied by this declaration.
An application explicitly consumes the resulting intentions according to its own authority.

Implementation alias: lsd.packages.timeline_extensions.TimelineEventTrackSpec.

lsdtools.extend.TimelineEventTrackSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:223.

Python
id: str

lsdtools.extend.TimelineEventTrackSpec.event#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:224.

Python
event: str

lsdtools.extend.TimelineEventTrackSpec.payload#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:225.

Python
payload: tuple[TimelineEventFieldSpec, ...]
Python
payload = ()

lsdtools.extend.TimelineEventTrackSpec.phase#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:227.

Python
phase: str
Python
phase = 'simulation_input'

lsdtools.extend.TimelineEventTrackSpec.replay#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:228.

Python
replay: str
Python
replay = 'intent_only'

lsdtools.extend.TimelineEventTrackSpec.checkpoint#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:229.

Python
checkpoint: str
Python
checkpoint = 'none'

lsdtools.extend.TimelineEventTrackSpec.native_lowering#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:230.

Python
native_lowering: None
Python
native_lowering = None

lsdtools.extend.TimelineEventTrackSpec.execution#

Kind: method. Source: core/lsd/src/lsd/packages/timeline_extensions.py:246.

Python
execution(self) -> str
Python
self: (unannotated)

lsdtools.extend.TimelineExtensionSpec#

Kind: class. Source: core/lsd/src/lsd/packages/timeline_extensions.py:251.

Source docstring:

text
One owner-qualified set of tracks and its explicitly activated binding factory.

The runtime calls ``factory(context)`` once per extension per prepared sequence instance.
Its result implements ``bind_property(spec, target)`` and ``close()``. Registration retains
the callable without inspecting or invoking it; provider and binding protocols live in
``lsdtools.timeline``. Track ids are local to this extension and unique across track kinds.

Implementation alias: lsd.packages.timeline_extensions.TimelineExtensionSpec.

lsdtools.extend.TimelineExtensionSpec.version#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:260.

Python
version: int

lsdtools.extend.TimelineExtensionSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:261.

Python
id: OwnedContributionId

lsdtools.extend.TimelineExtensionSpec.factory#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:262.

Python
factory: Callable[[Any], Any]

lsdtools.extend.TimelineExtensionSpec.tracks#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:263.

Python
tracks: tuple[TimelinePropertyTrackSpec | TimelineEventTrackSpec, ...]

lsdtools.extend.TimelinePropertySourceSpec#

Kind: class. Source: core/lsd/src/lsd/packages/timeline_extensions.py:101.

Source docstring:

text
Callback-free authored read metadata for an owner-resolved component row.

The host resolves component identity through its existing dataset adapters.
Column names never authorize arbitrary attribute lookup. Selectors restrict
applicability (for example body_type=kinematic) before exposing authoring.
Missing columns or rows are unavailable; no guessed/default value is implied.

Implementation alias: lsd.packages.timeline_extensions.TimelinePropertySourceSpec.

lsdtools.extend.TimelinePropertySourceSpec.component#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:110.

Python
component: str

lsdtools.extend.TimelinePropertySourceSpec.columns#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:111.

Python
columns: tuple[str, ...]

lsdtools.extend.TimelinePropertySourceSpec.target_kind#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:113.

Python
target_kind: str
Python
target_kind = 'object'

lsdtools.extend.TimelinePropertySourceSpec.selectors#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:114.

Python
selectors: tuple[tuple[str, str | bool | int | float], ...]
Python
selectors = ()

lsdtools.extend.TimelinePropertySourceSpec.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/timeline_extensions.py:147.

Python
to_dict(self) -> dict
Python
self: (unannotated)

lsdtools.extend.TimelinePropertyTrackSpec#

Kind: class. Source: core/lsd/src/lsd/packages/timeline_extensions.py:154.

Source docstring:

text
A pure value-at-time track writing one provider-resolved semantic binding.

``checkpoint='none'`` describes this stateless evaluator and makes no promise that its target
world can be captured or restored. The provider must reject a binding owned by another system.

Implementation alias: lsd.packages.timeline_extensions.TimelinePropertyTrackSpec.

lsdtools.extend.TimelinePropertyTrackSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:161.

Python
id: str

lsdtools.extend.TimelinePropertyTrackSpec.binding#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:162.

Python
binding: str

lsdtools.extend.TimelinePropertyTrackSpec.value#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:163.

Python
value: TimelineValueSpec

lsdtools.extend.TimelinePropertyTrackSpec.authored#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:165.

Python
authored: TimelinePropertySourceSpec | None
Python
authored = None

lsdtools.extend.TimelinePropertyTrackSpec.constraints#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:166.

Python
constraints: TimelineValueConstraints
Python
constraints = TimelineValueConstraints()

lsdtools.extend.TimelinePropertyTrackSpec.interpolation#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:167.

Python
interpolation: tuple[str, ...]
Python
interpolation = ('hold', 'linear')

lsdtools.extend.TimelinePropertyTrackSpec.phase#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:168.

Python
phase: str
Python
phase = 'simulation_input'

lsdtools.extend.TimelinePropertyTrackSpec.checkpoint#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:169.

Python
checkpoint: str
Python
checkpoint = 'none'

lsdtools.extend.TimelinePropertyTrackSpec.native_lowering#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:170.

Python
native_lowering: None
Python
native_lowering = None

lsdtools.extend.TimelinePropertyTrackSpec.execution#

Kind: method. Source: core/lsd/src/lsd/packages/timeline_extensions.py:198.

Python
execution(self) -> str
Python
self: (unannotated)

lsdtools.extend.TimelineValueConstraints#

Kind: class. Source: core/lsd/src/lsd/packages/timeline_extensions.py:73.

Source docstring:

text
Owner-declared numeric bounds, applied to each scalar/vector component.

Implementation alias: lsd.packages.timeline_extensions.TimelineValueConstraints.

lsdtools.extend.TimelineValueConstraints.minimum#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:76.

Python
minimum: float | None
Python
minimum = None

lsdtools.extend.TimelineValueConstraints.maximum#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:77.

Python
maximum: float | None
Python
maximum = None

lsdtools.extend.TimelineValueConstraints.to_dict#

Kind: method. Source: core/lsd/src/lsd/packages/timeline_extensions.py:96.

Python
to_dict(self) -> dict
Python
self: (unannotated)

lsdtools.extend.TimelineValueSpec#

Kind: class. Source: core/lsd/src/lsd/packages/timeline_extensions.py:53.

Source docstring:

text
An exact scalar, three-component vector, or boolean and its explicit unit.

Units are semantic identity tokens, not implicit conversions. A binding must match the
declared kind and unit exactly. ``1`` is dimensionless and is mandatory for booleans.

Implementation alias: lsd.packages.timeline_extensions.TimelineValueSpec.

lsdtools.extend.TimelineValueSpec.kind#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:60.

Python
kind: str

lsdtools.extend.TimelineValueSpec.unit#

Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:61.

Python
unit: str

lsdtools.extend.ToggleButtonControl#

Kind: class. Source: views/widgets/forms/src/lsd_forms/controls.py:801.

Python
ToggleButtonControl(self, label: str='', *, icon_name: Optional[str]=None, active: bool=False, tooltip: Optional[str]=None, context_items: Optional[List[MenuItem]]=None) -> None

Source docstring:

text
A button that stays pressed when active (icon, text, or both).

``connect_changed(cb)`` / ``connect_toggled(cb)`` fire ``cb(active: bool)``
on user toggles.  ``set_value`` / ``set_active(.., notify=False)`` update the
pressed state programmatically *without* firing the callback — so a tool can
reflect external state (e.g. auto-disarm) without re-entrancy.
Pass ``context_items`` for a right-click menu of :class:`MenuAction`.

Implementation alias: lsd_forms.controls.ToggleButtonControl.

Declared bases: FormControl.

lsdtools.extend.ToggleButtonControl.__init__#

Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:811.

Python
__init__(self, label: str='', *, icon_name: Optional[str]=None, active: bool=False, tooltip: Optional[str]=None, context_items: Optional[List[MenuItem]]=None) -> None
Python
active: bool
context_items: Optional[List[MenuItem]]
icon_name: Optional[str]
label: str
self: (unannotated)
tooltip: Optional[str]

lsdtools.extend.ToggleButtonControl.value#

Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:854.

Python
value(self) -> bool
Python
self: (unannotated)

lsdtools.extend.ToggleButtonControl.set_value#

Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:859.

Python
set_value(self, v: Any) -> None
Python
self: (unannotated)
v: Any

lsdtools.extend.ToggleButtonControl.set_active#

Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:862.

Python
set_active(self, active: bool, *, notify: bool=False) -> None
Python
active: bool
notify: bool
self: (unannotated)

lsdtools.extend.ToggleButtonControl.connect_toggled#

Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:872.

Python
connect_toggled(self, cb: Callable[[bool], None]) -> None
Python
cb: Callable[[bool], None]
self: (unannotated)

Source docstring:

text
Alias for :meth:`connect_changed` — fires ``cb(active)`` on toggle.

lsdtools.extend.ToggleButtonControl.set_context_menu#

Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:876.

Python
set_context_menu(self, items: List[MenuItem]) -> None
Python
items: List[MenuItem]
self: (unannotated)

lsdtools.extend.ToolbarControl#

Kind: class. Source: views/widgets/forms/src/lsd_forms/controls.py:1037.

Python
ToolbarControl(self, spacing: int=2, *, vertical: bool=False) -> None

Source docstring:

text
A flat toolbar strip — horizontal (default) or ``vertical=True``.

Group tools with :meth:`add` and rule them off with
:meth:`add_group_separator` (the rule runs perpendicular to the strip).
Holds :class:`MenuButtonControl`, :class:`ToggleButtonControl`,
:class:`ButtonControl`, or any ``Gtk.Widget``::

    bar = ToolbarControl(spacing=2)                 # horizontal
    bar.add(MenuButtonControl("Look", items=look_items))
    bar.add_group_separator()
    bar.add(ToggleButtonControl(icon_name="lsd-cut-symbolic"))

    side = ToolbarControl(spacing=2, vertical=True)  # vertical strip

Implementation alias: lsd_forms.controls.ToolbarControl.

Declared bases: FormControl.

lsdtools.extend.ToolbarControl.__init__#

Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:1053.

Python
__init__(self, spacing: int=2, *, vertical: bool=False) -> None
Python
self: (unannotated)
spacing: int
vertical: bool

lsdtools.extend.ToolbarControl.add#

Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:1065.

Python
add(self, ctrl, *, name: Optional[str]=None) -> 'ToolbarControl'
Python
ctrl: (unannotated)
name: Optional[str]
self: (unannotated)

Source docstring:

text
Append a control or bare ``Gtk.Widget`` to the strip.

lsdtools.extend.ToolbarControl.add_group_separator#

Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:1072.

Python
add_group_separator(self) -> 'ToolbarControl'
Python
self: (unannotated)

Source docstring:

text
A rule between tool groups (perpendicular to the strip).

lsdtools.extend.ToolbarControl.vertical#

Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:1081.

Python
vertical(self) -> bool
Python
self: (unannotated)

lsdtools.extend.ToolbarControl.set_vertical#

Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:1084.

Python
set_vertical(self, vertical: bool) -> None
Python
self: (unannotated)
vertical: bool

Source docstring:

text
Re-orient the strip in place, flipping its group separators too.

Called by ``PanelChrome`` when the hosting overlay docks to a side
edge (vertical) or top/bottom edge (horizontal) — a plain
``Gtk.Orientable`` flip would leave the separators parallel to the
strip instead of ruling across it.

lsdtools.extend.ToolbarControl.value#

Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:1108.

Python
value(self) -> None
Python
self: (unannotated)

lsdtools.extend.ToolbarControl.set_value#

Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:1111.

Python
set_value(self, v: Any) -> None
Python
self: (unannotated)
v: Any

lsdtools.extend.TreeAnchor#

Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:237.

Source docstring:

text
Stable ordering target published by a tree component.

Implementation alias: lsd.packages.tree_extensions.TreeAnchor.

lsdtools.extend.TreeAnchor.key#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:240.

Python
key: str

lsdtools.extend.TreeAnchor.component#

Kind: method. Source: core/lsd/src/lsd/packages/tree_extensions.py:246.

Python
component(cls, contribution_id: OwnedContributionId) -> 'TreeAnchor'
Python
cls: (unannotated)
contribution_id: OwnedContributionId

lsdtools.extend.TreeAnchor.named#

Kind: method. Source: core/lsd/src/lsd/packages/tree_extensions.py:251.

Python
named(cls, name: str) -> 'TreeAnchor'
Python
cls: (unannotated)
name: str

lsdtools.extend.TreeChoiceSpec#

Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:316.

Source docstring:

text
One typed value offered by a :class:`TreeControlKind.CHOICE` column.

Implementation alias: lsd.packages.tree_extensions.TreeChoiceSpec.

lsdtools.extend.TreeChoiceSpec.value#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:319.

Python
value: str | int | float | bool

lsdtools.extend.TreeChoiceSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:320.

Python
title: str

lsdtools.extend.TreeChoiceSpec.icon#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:321.

Python
icon: str | None
Python
icon = None

lsdtools.extend.TreeColumnSpec#

Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:512.

Source docstring:

text
One aligned repeated row column/control.

``value(context, entity)`` reads the current display/control value.
Returning ``None`` hides that metadata-driven control for the entity, so
the reader is also the per-row capability signal. Action controls are the
exception: they have no value reader and remain available by command.
Metadata-driven interactive controls invoke ``command`` with their new
value. A ``CUSTOM`` column must provide both ``build(context)`` and this
semantic ``value`` observer; its ``actions`` enumerate every tree command
that the custom UI may invoke.

Implementation alias: lsd.packages.tree_extensions.TreeColumnSpec.

lsdtools.extend.TreeColumnSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:525.

Python
id: OwnedContributionId

lsdtools.extend.TreeColumnSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:526.

Python
title: str

lsdtools.extend.TreeColumnSpec.control#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:527.

Python
control: TreeControlKind
Python
control = TreeControlKind.DISPLAY

lsdtools.extend.TreeColumnSpec.entity_types#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:528.

Python
entity_types: tuple[str, ...]
Python
entity_types = ()

lsdtools.extend.TreeColumnSpec.command#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:529.

Python
command: str | None
Python
command = None

lsdtools.extend.TreeColumnSpec.actions#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:530.

Python
actions: tuple[str, ...]
Python
actions = ()

lsdtools.extend.TreeColumnSpec.value#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:531.

Python
value: EntityValueReader | None
Python
value = field(default=None, compare=False, repr=False)

lsdtools.extend.TreeColumnSpec.choices#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:532.

Python
choices: tuple[TreeChoiceSpec, ...]
Python
choices = ()

lsdtools.extend.TreeColumnSpec.minimum#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:533.

Python
minimum: int | float | None
Python
minimum = None

lsdtools.extend.TreeColumnSpec.maximum#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:534.

Python
maximum: int | float | None
Python
maximum = None

lsdtools.extend.TreeColumnSpec.step#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:535.

Python
step: int | float | None
Python
step = None

lsdtools.extend.TreeColumnSpec.icon#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:536.

Python
icon: str | None
Python
icon = None

lsdtools.extend.TreeColumnSpec.region#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:537.

Python
region: str
Python
region = 'row.trailing'

lsdtools.extend.TreeColumnSpec.default_visible#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:538.

Python
default_visible: bool
Python
default_visible = True

lsdtools.extend.TreeColumnSpec.anchors#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:539.

Python
anchors: tuple[TreeAnchor, ...]
Python
anchors = ()

lsdtools.extend.TreeColumnSpec.before#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:540.

Python
before: tuple[TreeAnchor, ...]
Python
before = ()

lsdtools.extend.TreeColumnSpec.after#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:541.

Python
after: tuple[TreeAnchor, ...]
Python
after = ()

lsdtools.extend.TreeColumnSpec.replaces#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:542.

Python
replaces: tuple[OwnedContributionId, ...]
Python
replaces = ()

lsdtools.extend.TreeColumnSpec.build#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:543.

Python
build: RuntimeFactory | None
Python
build = field(default=None, compare=False, repr=False)

lsdtools.extend.TreeColumnSpec.own_anchor#

Kind: method. Source: core/lsd/src/lsd/packages/tree_extensions.py:653.

Python
own_anchor(self) -> TreeAnchor
Python
self: (unannotated)

lsdtools.extend.TreeCommandSpec#

Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:464.

Source docstring:

text
A semantic action usable by row controls, menus, and tree surfaces.

``handler(context, entity, params) -> JSON-compatible result`` is the direct
form.  ``route`` names an existing :meth:`Tool.action` route; ``Tool`` may
bind it to a handler without coupling ``Entity`` to presentation metadata.

Implementation alias: lsd.packages.tree_extensions.TreeCommandSpec.

lsdtools.extend.TreeCommandSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:472.

Python
id: OwnedContributionId

lsdtools.extend.TreeCommandSpec.action#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:473.

Python
action: str

lsdtools.extend.TreeCommandSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:474.

Python
title: str

lsdtools.extend.TreeCommandSpec.entity_types#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:475.

Python
entity_types: tuple[str, ...]
Python
entity_types = ()

lsdtools.extend.TreeCommandSpec.route#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:476.

Python
route: str | None
Python
route = None

lsdtools.extend.TreeCommandSpec.handler#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:477.

Python
handler: RuntimeHandler | None
Python
handler = field(default=None, compare=False, repr=False)

lsdtools.extend.TreeCommandSpec.replaces#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:478.

Python
replaces: tuple[OwnedContributionId, ...]
Python
replaces = ()

lsdtools.extend.TreeControlKind#

Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:217.

Source docstring:

text
Semantic shape of one repeated row column/control.

Implementation alias: lsd.packages.tree_extensions.TreeControlKind.

Declared bases: str, Enum.

lsdtools.extend.TreeControlKind.DISPLAY#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:220.

Python
DISPLAY = 'display'

lsdtools.extend.TreeControlKind.ACTION#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:221.

Python
ACTION = 'action'

lsdtools.extend.TreeControlKind.TOGGLE#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:222.

Python
TOGGLE = 'toggle'

lsdtools.extend.TreeControlKind.COLOR#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:223.

Python
COLOR = 'color'

lsdtools.extend.TreeControlKind.SLIDER#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:224.

Python
SLIDER = 'slider'

lsdtools.extend.TreeControlKind.CHOICE#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:225.

Python
CHOICE = 'choice'

lsdtools.extend.TreeControlKind.CUSTOM#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:226.

Python
CUSTOM = 'custom'

lsdtools.extend.TreeDecorationSpec#

Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:658.

Source docstring:

text
One primary-cell decoration provider or additive decoration.

Implementation alias: lsd.packages.tree_extensions.TreeDecorationSpec.

lsdtools.extend.TreeDecorationSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:661.

Python
id: OwnedContributionId

lsdtools.extend.TreeDecorationSpec.slot#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:662.

Python
slot: str

lsdtools.extend.TreeDecorationSpec.decorate#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:663.

Python
decorate: EntityDecorator
Python
decorate = field(compare=False, repr=False)

lsdtools.extend.TreeDecorationSpec.entity_types#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:664.

Python
entity_types: tuple[str, ...]
Python
entity_types = ()

lsdtools.extend.TreeDecorationSpec.additive#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:665.

Python
additive: bool
Python
additive = False

lsdtools.extend.TreeDecorationSpec.replaces#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:666.

Python
replaces: tuple[OwnedContributionId, ...]
Python
replaces = ()

lsdtools.extend.TreeDiagnostic#

Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:813.

Implementation alias: lsd.packages.tree_extensions.TreeDiagnostic.

lsdtools.extend.TreeDiagnostic.severity#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:814.

Python
severity: DiagnosticSeverity

lsdtools.extend.TreeDiagnostic.code#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:815.

Python
code: str

lsdtools.extend.TreeDiagnostic.message#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:816.

Python
message: str

lsdtools.extend.TreeDiagnostic.subjects#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:817.

Python
subjects: tuple[str, ...]
Python
subjects = ()

lsdtools.extend.TreeExtensionSpec#

Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:762.

Source docstring:

text
One package-owned contribution bundle for one semantic tree target.

Implementation alias: lsd.packages.tree_extensions.TreeExtensionSpec.

lsdtools.extend.TreeExtensionSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:765.

Python
id: OwnedContributionId

lsdtools.extend.TreeExtensionSpec.target#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:766.

Python
target: TreeTargetSpec

lsdtools.extend.TreeExtensionSpec.refresh_on#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:767.

Python
refresh_on: tuple[str, ...]
Python
refresh_on = ()

lsdtools.extend.TreeExtensionSpec.filters#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:768.

Python
filters: tuple[TreeFilterSpec, ...]
Python
filters = ()

lsdtools.extend.TreeExtensionSpec.selection_routes#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:769.

Python
selection_routes: tuple[TreeSelectionRouteSpec, ...]
Python
selection_routes = ()

lsdtools.extend.TreeExtensionSpec.commands#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:770.

Python
commands: tuple[TreeCommandSpec, ...]
Python
commands = ()

lsdtools.extend.TreeExtensionSpec.columns#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:771.

Python
columns: tuple[TreeColumnSpec, ...]
Python
columns = ()

lsdtools.extend.TreeExtensionSpec.decorations#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:772.

Python
decorations: tuple[TreeDecorationSpec, ...]
Python
decorations = ()

lsdtools.extend.TreeExtensionSpec.menu_sections#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:773.

Python
menu_sections: tuple[TreeMenuSectionSpec, ...]
Python
menu_sections = ()

lsdtools.extend.TreeExtensionSpec.surfaces#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:774.

Python
surfaces: tuple[TreeSurfaceSpec, ...]
Python
surfaces = ()

lsdtools.extend.TreeFilterSpec#

Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:396.

Source docstring:

text
One named direct-entity filter.

``matcher(context, entity) -> bool`` reads live entity/workspace state.
Ancestor retention is a responsibility of the tree host.

Implementation alias: lsd.packages.tree_extensions.TreeFilterSpec.

lsdtools.extend.TreeFilterSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:403.

Python
id: OwnedContributionId

lsdtools.extend.TreeFilterSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:404.

Python
title: str

lsdtools.extend.TreeFilterSpec.matcher#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:405.

Python
matcher: EntityMatcher
Python
matcher = field(compare=False, repr=False)

lsdtools.extend.TreeFilterSpec.default_enabled#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:406.

Python
default_enabled: bool
Python
default_enabled = False

lsdtools.extend.TreeFilterSpec.replaces#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:407.

Python
replaces: tuple[OwnedContributionId, ...]
Python
replaces = ()

lsdtools.extend.TreeMenuItemSpec#

Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:339.

Source docstring:

text
One semantic command item returned by a tree menu-section factory.

``None`` between items is the only separator form. Loose mappings and
positional tuples are deliberately outside the contract.

Implementation alias: lsd.packages.tree_extensions.TreeMenuItemSpec.

lsdtools.extend.TreeMenuItemSpec.action#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:346.

Python
action: str

lsdtools.extend.TreeMenuItemSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:347.

Python
title: str

lsdtools.extend.TreeMenuItemSpec.params#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:349.

Python
params: Mapping[str, Any]
Python
params = field(default_factory=dict)

lsdtools.extend.TreeMenuItemSpec.icon#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:350.

Python
icon: str | None
Python
icon = None

lsdtools.extend.TreeMenuItemSpec.shortcut#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:351.

Python
shortcut: str | None
Python
shortcut = None

lsdtools.extend.TreeMenuSectionSpec#

Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:679.

Source docstring:

text
One lazily-built right-click menu section.

``items(context, entity) -> iterable[TreeMenuItemSpec | None]`` is
evaluated when the menu opens. ``None`` is a separator. The callable is
wrapped once so loose mappings, tuples, and other ambiguous shapes fail at
the contract boundary.

Implementation alias: lsd.packages.tree_extensions.TreeMenuSectionSpec.

lsdtools.extend.TreeMenuSectionSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:688.

Python
id: OwnedContributionId

lsdtools.extend.TreeMenuSectionSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:689.

Python
title: str

lsdtools.extend.TreeMenuSectionSpec.items#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:690.

Python
items: MenuItemsFactory
Python
items = field(compare=False, repr=False)

lsdtools.extend.TreeMenuSectionSpec.entity_types#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:691.

Python
entity_types: tuple[str, ...]
Python
entity_types = ()

lsdtools.extend.TreeMenuSectionSpec.anchors#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:692.

Python
anchors: tuple[TreeAnchor, ...]
Python
anchors = ()

lsdtools.extend.TreeMenuSectionSpec.before#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:693.

Python
before: tuple[TreeAnchor, ...]
Python
before = ()

lsdtools.extend.TreeMenuSectionSpec.after#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:694.

Python
after: tuple[TreeAnchor, ...]
Python
after = ()

lsdtools.extend.TreeMenuSectionSpec.replaces#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:695.

Python
replaces: tuple[OwnedContributionId, ...]
Python
replaces = ()

lsdtools.extend.TreeMenuSectionSpec.region#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:696.

Python
region: str
Python
region = 'context'

lsdtools.extend.TreeMenuSectionSpec.own_anchor#

Kind: method. Source: core/lsd/src/lsd/packages/tree_extensions.py:712.

Python
own_anchor(self) -> TreeAnchor
Python
self: (unannotated)

lsdtools.extend.TreeRowDecoration#

Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:278.

Source docstring:

text
Toolkit-free changes to the tree's primary identity cell.

Implementation alias: lsd.packages.tree_extensions.TreeRowDecoration.

lsdtools.extend.TreeRowDecoration.icon#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:281.

Python
icon: str | None
Python
icon = None

lsdtools.extend.TreeRowDecoration.foreground#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:282.

Python
foreground: str | None
Python
foreground = None

lsdtools.extend.TreeRowDecoration.background#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:283.

Python
background: str | None
Python
background = None

lsdtools.extend.TreeRowDecoration.subtitle#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:284.

Python
subtitle: str | None
Python
subtitle = None

lsdtools.extend.TreeRowDecoration.css_classes#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:285.

Python
css_classes: tuple[str, ...]
Python
css_classes = ()

lsdtools.extend.TreeRowDecoration.badges#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:286.

Python
badges: tuple[str, ...]
Python
badges = ()

lsdtools.extend.TreeScope#

Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:210.

Source docstring:

text
Where a tree extension is allowed to appear.

Implementation alias: lsd.packages.tree_extensions.TreeScope.

Declared bases: str, Enum.

lsdtools.extend.TreeScope.WORKSPACE#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:213.

Python
WORKSPACE = 'workspace'

lsdtools.extend.TreeScope.PICKER#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:214.

Python
PICKER = 'picker'

lsdtools.extend.TreeSelectionRouteSpec#

Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:419.

Source docstring:

text
Route selected entity types to one exact shell ``view_id``.

Implementation alias: lsd.packages.tree_extensions.TreeSelectionRouteSpec.

lsdtools.extend.TreeSelectionRouteSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:422.

Python
id: OwnedContributionId

lsdtools.extend.TreeSelectionRouteSpec.entity_types#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:423.

Python
entity_types: tuple[str, ...]

lsdtools.extend.TreeSelectionRouteSpec.target_view_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:424.

Python
target_view_id: str

lsdtools.extend.TreeSelectionRouteSpec.trigger#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:425.

Python
trigger: str
Python
trigger = 'selected'

lsdtools.extend.TreeSelectionRouteSpec.include_subtypes#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:426.

Python
include_subtypes: bool
Python
include_subtypes = False

lsdtools.extend.TreeSelectionRouteSpec.replaces#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:427.

Python
replaces: tuple[OwnedContributionId, ...]
Python
replaces = ()

lsdtools.extend.TreeSurfaceKind#

Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:229.

Source docstring:

text
Whole-tree surfaces; footer surfaces may bind the current selection.

Implementation alias: lsd.packages.tree_extensions.TreeSurfaceKind.

Declared bases: str, Enum.

lsdtools.extend.TreeSurfaceKind.HEADER#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:232.

Python
HEADER = 'header'

lsdtools.extend.TreeSurfaceKind.FOOTER#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:233.

Python
FOOTER = 'footer'

lsdtools.extend.TreeSurfaceSpec#

Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:717.

Source docstring:

text
One observable header control or selection-aware footer surface.

``observe(context)`` returns the semantic state represented by the surface.
``context.entity`` is ``None`` for a header and the selected entity for a
footer. Footer ``actions`` declare every entity-scoped tree command the
custom UI may invoke; header surfaces cannot invoke entity commands.

Implementation alias: lsd.packages.tree_extensions.TreeSurfaceSpec.

lsdtools.extend.TreeSurfaceSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:726.

Python
id: OwnedContributionId

lsdtools.extend.TreeSurfaceSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:727.

Python
title: str

lsdtools.extend.TreeSurfaceSpec.kind#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:728.

Python
kind: TreeSurfaceKind

lsdtools.extend.TreeSurfaceSpec.region#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:729.

Python
region: str

lsdtools.extend.TreeSurfaceSpec.build#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:730.

Python
build: RuntimeFactory
Python
build = field(compare=False, repr=False)

lsdtools.extend.TreeSurfaceSpec.observe#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:731.

Python
observe: TreeStateObserver
Python
observe = field(compare=False, repr=False)

lsdtools.extend.TreeSurfaceSpec.actions#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:732.

Python
actions: tuple[str, ...]
Python
actions = ()

lsdtools.extend.TreeSurfaceSpec.entity_types#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:733.

Python
entity_types: tuple[str, ...]
Python
entity_types = ()

lsdtools.extend.TreeSurfaceSpec.default_visible#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:734.

Python
default_visible: bool
Python
default_visible = True

lsdtools.extend.TreeSurfaceSpec.anchors#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:735.

Python
anchors: tuple[TreeAnchor, ...]
Python
anchors = ()

lsdtools.extend.TreeSurfaceSpec.before#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:736.

Python
before: tuple[TreeAnchor, ...]
Python
before = ()

lsdtools.extend.TreeSurfaceSpec.after#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:737.

Python
after: tuple[TreeAnchor, ...]
Python
after = ()

lsdtools.extend.TreeSurfaceSpec.replaces#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:738.

Python
replaces: tuple[OwnedContributionId, ...]
Python
replaces = ()

lsdtools.extend.TreeSurfaceSpec.own_anchor#

Kind: method. Source: core/lsd/src/lsd/packages/tree_extensions.py:757.

Python
own_anchor(self) -> TreeAnchor
Python
self: (unannotated)

lsdtools.extend.TreeTargetSpec#

Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:259.

Source docstring:

text
A semantic tree kind and the runtime scopes it targets.

Implementation alias: lsd.packages.tree_extensions.TreeTargetSpec.

lsdtools.extend.TreeTargetSpec.kind#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:262.

Python
kind: str

lsdtools.extend.TreeTargetSpec.scopes#

Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:263.

Python
scopes: tuple[TreeScope, ...]
Python
scopes = (TreeScope.WORKSPACE,)

lsdtools.extend.TreeTargetSpec.matches#

Kind: method. Source: core/lsd/src/lsd/packages/tree_extensions.py:273.

Python
matches(self, kind: str, scope: TreeScope | str) -> bool
Python
kind: str
scope: TreeScope | str
self: (unannotated)

lsdtools.extend.ValidateStep#

Kind: class. Source: services/data/src/lsd_data/transforms.py:48.

Source docstring:

text
Validate a table against declarative rules → findings report (+ optional row flagging).

Each line of *rules* is TRUE for valid rows (see :mod:`lsd_data.validate`): e.g. ``from < to``,
``grade >= 0``, ``hole_id not null``, ``hole_id unique``, ``lithology in OX TR PR``,
``require x y z``. *policy* controls the ``output`` port (the ``report`` port is always the
findings table); *strict* raises on any failure.

Implementation alias: lsd_data.transforms.ValidateStep.

Declared bases: ShapeStep.

lsdtools.extend.ValidateStep.rules#

Kind: attribute. Source: services/data/src/lsd_data/transforms.py:57.

Python
rules = param(str, default='', widget='textarea', group='Validate', description="One rule per line, e.g. 'from < to'")

lsdtools.extend.ValidateStep.policy#

Kind: attribute. Source: services/data/src/lsd_data/transforms.py:59.

Python
policy = param(str, default='annotate', choices=['annotate', 'report', 'filter'], group='Validate', description="annotate: add 'valid' column · report: pass data through · filter: drop invalid rows")

lsdtools.extend.ValidateStep.strict#

Kind: attribute. Source: services/data/src/lsd_data/transforms.py:63.

Python
strict = param(bool, default=False, group='Validate', description='Raise if any rule fails')

lsdtools.extend.ValidateStep.n_failed#

Kind: attribute. Source: services/data/src/lsd_data/transforms.py:64.

Python
n_failed = param(int, output=True, graph=True, default=0, group='Results')

lsdtools.extend.ValidateStep.ok#

Kind: attribute. Source: services/data/src/lsd_data/transforms.py:65.

Python
ok = param(bool, output=True, graph=True, default=True, group='Results')

lsdtools.extend.ValidateStep.input_ports#

Kind: attribute. Source: services/data/src/lsd_data/transforms.py:66.

Python
input_ports = ['input']

lsdtools.extend.ValidateStep.output_ports#

Kind: attribute. Source: services/data/src/lsd_data/transforms.py:67.

Python
output_ports = ['output', 'report']

lsdtools.extend.ValidateStep.run#

Kind: method. Source: services/data/src/lsd_data/transforms.py:69.

Python
run(self, inputs)
Python
inputs: (unannotated)
self: (unannotated)

lsdtools.extend.ValidationResult#

Kind: class. Source: core/lsd/src/lsd/core/configurable.py:198.

Implementation alias: lsd.core.configurable.ValidationResult.

lsdtools.extend.ValidationResult.ok#

Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:199.

Python
ok: bool

lsdtools.extend.ValidationResult.errors#

Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:200.

Python
errors: List[ValidationError]

lsdtools.extend.ValueMapping#

Kind: class. Source: core/style/src/lsd_style/model.py:157.

Source docstring:

text
A data-driven property value.

``config`` deliberately remains provider-friendly JSON.  The core understands the
built-in mapping kinds for previews and tests; renderers may additionally interpret an
``expression`` payload without requiring executable source in the document.

Implementation alias: lsd_style.model.ValueMapping.

lsdtools.extend.ValueMapping.kind#

Kind: attribute. Source: core/style/src/lsd_style/model.py:165.

Python
kind: str

lsdtools.extend.ValueMapping.config#

Kind: attribute. Source: core/style/src/lsd_style/model.py:166.

Python
config: Dict[str, JSONValue]
Python
config = dc_field(default_factory=dict)

lsdtools.extend.ValueMapping.from_dict#

Kind: method. Source: core/style/src/lsd_style/model.py:278.

Python
from_dict(cls, data: Mapping[str, JSONValue]) -> 'ValueMapping'
Python
cls: (unannotated)
data: Mapping[str, JSONValue]

lsdtools.extend.ValueMapping.to_dict#

Kind: method. Source: core/style/src/lsd_style/model.py:289.

Python
to_dict(self) -> Dict[str, JSONValue]
Python
self: (unannotated)

lsdtools.extend.ValueMapping.clone#

Kind: method. Source: core/style/src/lsd_style/model.py:294.

Python
clone(self) -> 'ValueMapping'
Python
self: (unannotated)

lsdtools.extend.ValueMapping.evaluate#

Kind: method. Source: core/style/src/lsd_style/model.py:297.

Python
evaluate(self, input_value: Any) -> JSONValue
Python
input_value: Any
self: (unannotated)

Source docstring:

text
Evaluate this mapping for ONE value — the array evaluator applied to a single element.

A mapping is a unary transfer function: the consumer selects a data field and passes
that field's value here.  The semantics (clamp, fallback, half-open breaks, typed
category equality, NaN as absence) are those of :mod:`lsd_style.evaluate`, which the
renderer applies to whole columns; there is no second evaluator.

lsdtools.extend.Viewer3DMainView#

Kind: class. Source: views/viewer3d/src/lsd_viewer/main_view.py:69.

Python
Viewer3DMainView(self, *, view_id: str, bus=None, engine=None, extensions: Callable[[], Iterable] | Iterable, object_types: Callable[[], Iterable] | Iterable=(), object_property_sections: Callable[[], Iterable] | Iterable=(), object_explorers: Callable[[], Iterable] | Iterable=(), object_context_actions: Callable[[], Iterable] | Iterable=(), action_dispatcher: Callable[[str, Mapping[str, Any]], Any] | None=None, persist: Callable[[], object] | None=None, request_entity_unbind: Callable[[str], object] | None=None, edit_workspace_authority: Any=None, runtime_host: Any=None, shader_programs: Any=None, object_context: Any=None, scene_factory=None, min_width: int=360, min_height: int=240) -> None

Source docstring:

text
A desktop main view wrapping a state-equipped 3D :class:`Viewer`.

Implementation alias: lsd_viewer.main_view.Viewer3DMainView.

Declared bases: Gtk.Box.

lsdtools.extend.Viewer3DMainView.__init__#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:82.

Python
__init__(self, *, view_id: str, bus=None, engine=None, extensions: Callable[[], Iterable] | Iterable, object_types: Callable[[], Iterable] | Iterable=(), object_property_sections: Callable[[], Iterable] | Iterable=(), object_explorers: Callable[[], Iterable] | Iterable=(), object_context_actions: Callable[[], Iterable] | Iterable=(), action_dispatcher: Callable[[str, Mapping[str, Any]], Any] | None=None, persist: Callable[[], object] | None=None, request_entity_unbind: Callable[[str], object] | None=None, edit_workspace_authority: Any=None, runtime_host: Any=None, shader_programs: Any=None, object_context: Any=None, scene_factory=None, min_width: int=360, min_height: int=240) -> None
Python
action_dispatcher: Callable[[str, Mapping[str, Any]], Any] | None
bus: (unannotated)
edit_workspace_authority: Any
engine: (unannotated)
extensions: Callable[[], Iterable] | Iterable
min_height: int
min_width: int
object_context: Any
object_context_actions: Callable[[], Iterable] | Iterable
object_explorers: Callable[[], Iterable] | Iterable
object_property_sections: Callable[[], Iterable] | Iterable
object_types: Callable[[], Iterable] | Iterable
persist: Callable[[], object] | None
request_entity_unbind: Callable[[str], object] | None
runtime_host: Any
scene_factory: (unannotated)
self: (unannotated)
shader_programs: Any
view_id: str

lsdtools.extend.Viewer3DMainView.reconcile_viewer_extensions#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:234.

Python
reconcile_viewer_extensions(self)
Python
self: (unannotated)

lsdtools.extend.Viewer3DMainView.describe_viewer#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:240.

Python
describe_viewer(self) -> dict
Python
self: (unannotated)

lsdtools.extend.Viewer3DMainView.choose_runtime#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:262.

Python
choose_runtime(self, entity_id) -> dict
Python
entity_id: (unannotated)
self: (unannotated)

lsdtools.extend.Viewer3DMainView.runtime_transport_op#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:265.

Python
runtime_transport_op(self, op: str, **params) -> dict
Python
op: str
params: (unannotated)
self: (unannotated)

Source docstring:

text
One transport verb on the chosen runtime entity: play, pause, step, stop, rate.

lsdtools.extend.Viewer3DMainView.select_viewer_provider#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:283.

Python
select_viewer_provider(self, capability: str, provider_id: str, *, defer_on_dirty: bool=True)
Python
capability: str
defer_on_dirty: bool
provider_id: str
self: (unannotated)

lsdtools.extend.Viewer3DMainView.select_viewer_pointer_tool#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:296.

Python
select_viewer_pointer_tool(self, tool_id: str, *, actor: str='') -> bool
Python
actor: str
self: (unannotated)
tool_id: str

Source docstring:

text
Give the viewport's next primary gesture to exactly one tool.

lsdtools.extend.Viewer3DMainView.select_viewer_data_editor_mode#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:302.

Python
select_viewer_data_editor_mode(self, target_id: str | None, mode_id: str, *, actor: str='') -> dict[str, Any]
Python
actor: str
mode_id: str
self: (unannotated)
target_id: str | None

Source docstring:

text
Open one capability mode on one canonical editable subject.

This is deliberately separate from :meth:`select_viewer_pointer_tool`:
capabilities on the same subject share the authenticated participant's
draft/history lease, host settlement UI, and canonical Viewer
selection while only the active capability owns the pointer.

lsdtools.extend.Viewer3DMainView.invoke_viewer_data_editor_action#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:323.

Python
invoke_viewer_data_editor_action(self, mode_id: str, action_id: str, *, actor: str='')
Python
action_id: str
actor: str
mode_id: str
self: (unannotated)

lsdtools.extend.Viewer3DMainView.submit_viewer_data_editor_input#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:329.

Python
submit_viewer_data_editor_input(self, request_token: str, values: Mapping[str, Any], *, actor: str='')
Python
actor: str
request_token: str
self: (unannotated)
values: Mapping[str, Any]

lsdtools.extend.Viewer3DMainView.cancel_viewer_data_editor_input#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:335.

Python
cancel_viewer_data_editor_input(self, request_token: str, *, actor: str='')
Python
actor: str
request_token: str
self: (unannotated)

lsdtools.extend.Viewer3DMainView.set_viewer_object_properties#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:341.

Python
set_viewer_object_properties(self, section_id: str, changes: Mapping[str, Any], *, expected_selection_digest: str, expected_plan_digest: str, actor: str='') -> dict[str, Any]
Python
actor: str
changes: Mapping[str, Any]
expected_plan_digest: str
expected_selection_digest: str
section_id: str
self: (unannotated)

Source docstring:

text
Stage fields only for the exact selection and plan the caller observed.

lsdtools.extend.Viewer3DMainView.set_viewer_object_component#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:360.

Python
set_viewer_object_component(self, section_id: str, present: bool, *, expected_selection_digest: str, expected_plan_digest: str, actor: str='') -> dict[str, Any]
Python
actor: str
expected_plan_digest: str
expected_selection_digest: str
present: bool
section_id: str
self: (unannotated)

Source docstring:

text
Stage declared component membership for the exact observed selection.

lsdtools.extend.Viewer3DMainView.set_viewer_objects_visible#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:379.

Python
set_viewer_objects_visible(self, residents: Iterable[Mapping[str, Any]], visible: bool) -> dict[str, Any]
Python
residents: Iterable[Mapping[str, Any]]
self: (unannotated)
visible: bool

Source docstring:

text
Apply this explorer's participant-local eye mask.

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:388.

Python
set_viewer_object_explorer_search(self, query: str) -> dict[str, Any]
Python
query: str
self: (unannotated)

Source docstring:

text
Set this participant's product-owned Object Explorer filter.

lsdtools.extend.Viewer3DMainView.set_viewer_object_explorer_tab#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:393.

Python
set_viewer_object_explorer_tab(self, tab_id: str) -> dict[str, Any]
Python
self: (unannotated)
tab_id: str

Source docstring:

text
Select one exact Object Explorer tab without changing selection.

lsdtools.extend.Viewer3DMainView.set_viewer_object_explorer_page#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:398.

Python
set_viewer_object_explorer_page(self, tab_id: str, page_index: int, *, expected_page_token: str) -> dict[str, Any]
Python
expected_page_token: str
page_index: int
self: (unannotated)
tab_id: str

Source docstring:

text
Select one fenced, bounded Object Explorer page.

lsdtools.extend.Viewer3DMainView.set_viewer_object_explorer_expanded#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:413.

Python
set_viewer_object_explorer_expanded(self, tab_id: str, node_id: str, expanded: bool, *, expected_tree_token: str) -> dict[str, Any]
Python
expanded: bool
expected_tree_token: str
node_id: str
self: (unannotated)
tab_id: str

Source docstring:

text
Expand or collapse one exact, token-fenced Explorer tree node.

lsdtools.extend.Viewer3DMainView.set_viewer_object_explorer_folder_visible#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:430.

Python
set_viewer_object_explorer_folder_visible(self, tab_id: str, node_id: str, visible: bool, *, expected_tree_token: str) -> dict[str, Any]
Python
expected_tree_token: str
node_id: str
self: (unannotated)
tab_id: str
visible: bool

Source docstring:

text
Set the eye permission of every bounded folder descendant.

lsdtools.extend.Viewer3DMainView.frame_viewer_object_explorer_folder#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:447.

Python
frame_viewer_object_explorer_folder(self, tab_id: str, node_id: str, *, expected_tree_token: str) -> dict[str, Any]
Python
expected_tree_token: str
node_id: str
self: (unannotated)
tab_id: str

Source docstring:

text
Frame every bounded descendant of one exact Explorer folder.

lsdtools.extend.Viewer3DMainView.frame_viewer_objects#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:462.

Python
frame_viewer_objects(self, residents: Iterable[Mapping[str, Any]] | None=None) -> dict[str, Any]
Python
residents: Iterable[Mapping[str, Any]] | None
self: (unannotated)

Source docstring:

text
Frame explicit residents, or the current shared selection.

lsdtools.extend.Viewer3DMainView.invoke_viewer_object_context_action#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:470.

Python
invoke_viewer_object_context_action(self, action_id: str, *, expected_selection_digest: str, expected_plan_digest: str, actor: str='') -> Any
Python
action_id: str
actor: str
expected_plan_digest: str
expected_selection_digest: str
self: (unannotated)

Source docstring:

text
Invoke one package command against the exact observed menu and selection.

lsdtools.extend.Viewer3DMainView.viewer_pointer_tool_refusal#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:487.

Python
viewer_pointer_tool_refusal(self, tool_id: str) -> str
Python
self: (unannotated)
tool_id: str

lsdtools.extend.Viewer3DMainView.invoke_viewer_command#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:490.

Python
invoke_viewer_command(self, command_id: str, params=None, *, actor: str='')
Python
actor: str
command_id: str
params: (unannotated)
self: (unannotated)

lsdtools.extend.Viewer3DMainView.describe_feature_edit#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:507.

Python
describe_feature_edit(self, *, actor: str='') -> dict
Python
actor: str
self: (unannotated)

lsdtools.extend.Viewer3DMainView.set_feature_edit_subject#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:510.

Python
set_feature_edit_subject(self, binding_id: str, layer_id: str, feature_id: Any=None, *, expected_generation: int, actor: str='', feature_kind: str | None=None) -> dict
Python
actor: str
binding_id: str
expected_generation: int
feature_id: Any
feature_kind: str | None
layer_id: str
self: (unannotated)

lsdtools.extend.Viewer3DMainView.stage_feature_edit#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:523.

Python
stage_feature_edit(self, *, binding_id: str, operation_id: str, expected_batch_id: str, expected_batch_revision: int, op: str, contract_version: str, target: dict, value: dict, actor: str='') -> dict
Python
actor: str
binding_id: str
contract_version: str
expected_batch_id: str
expected_batch_revision: int
op: str
operation_id: str
self: (unannotated)
target: dict
value: dict

lsdtools.extend.Viewer3DMainView.commit_feature_edits#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:548.

Python
commit_feature_edits(self, message: str='', *, expected_batch_id: str, expected_batch_revision: int, actor: str='') -> dict
Python
actor: str
expected_batch_id: str
expected_batch_revision: int
message: str
self: (unannotated)

lsdtools.extend.Viewer3DMainView.discard_feature_edits#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:556.

Python
discard_feature_edits(self, *, expected_batch_id: str, expected_batch_revision: int, actor: str='') -> dict
Python
actor: str
expected_batch_id: str
expected_batch_revision: int
self: (unannotated)

lsdtools.extend.Viewer3DMainView.undo_feature_edit#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:564.

Python
undo_feature_edit(self, *, expected_batch_id: str, expected_batch_revision: int, actor: str='') -> dict
Python
actor: str
expected_batch_id: str
expected_batch_revision: int
self: (unannotated)

lsdtools.extend.Viewer3DMainView.redo_feature_edit#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:574.

Python
redo_feature_edit(self, *, expected_batch_id: str, expected_batch_revision: int, actor: str='') -> dict
Python
actor: str
expected_batch_id: str
expected_batch_revision: int
self: (unannotated)

lsdtools.extend.Viewer3DMainView.pending_feature_edit_ops#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:584.

Python
pending_feature_edit_ops(self, *, expected_batch_id: str, expected_batch_revision: int, actor: str='') -> list[dict]
Python
actor: str
expected_batch_id: str
expected_batch_revision: int
self: (unannotated)

Source docstring:

text
Export only this actor's detached staged intent for a canonical proposal.

lsdtools.extend.Viewer3DMainView.set_viewer_item#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:593.

Python
set_viewer_item(self, item_id: str, **changes)
Python
changes: (unannotated)
item_id: str
self: (unannotated)

lsdtools.extend.Viewer3DMainView.request_view_close#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:596.

Python
request_view_close(self, continuation: Callable[[], Any], *, label: str='closing this 3-D view', kind: str='view_close', cancellation: Callable[[], Any] | None=None) -> bool
Python
cancellation: Callable[[], Any] | None
continuation: Callable[[], Any]
kind: str
label: str
self: (unannotated)

Source docstring:

text
Let the Desktop close this view only after its open editor settles.

A clean viewer accepts synchronously.  A dirty viewer remains fully
mounted and asks Save/Discard/Keep Editing through the common editor
HUD; only the first two replay ``continuation``.

lsdtools.extend.Viewer3DMainView.request_package_change#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:633.

Python
request_package_change(self, packages: Iterable[str], continuation: Callable[[], Any], *, label: str, cancellation: Callable[[], Any] | None=None) -> bool
Python
cancellation: Callable[[], Any] | None
continuation: Callable[[], Any]
label: str
packages: Iterable[str]
self: (unannotated)

Source docstring:

text
Guard a domain-package transition affecting this viewer's editor.

lsdtools.extend.Viewer3DMainView.viewer#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:668.

Python
viewer(self) -> Viewer
Python
self: (unannotated)

lsdtools.extend.Viewer3DMainView.panels#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:672.

Python
panels(self)
Python
self: (unannotated)

Source docstring:

text
The embedded viewer's promotable-panel registry (RFC-0002).

lsdtools.extend.Viewer3DMainView.attach_bus#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:676.

Python
attach_bus(self, bus) -> None
Python
bus: (unannotated)
self: (unannotated)

Source docstring:

text
Reconnect the embedded viewer to a new EventBus (project reopen).

lsdtools.extend.Viewer3DMainView.set_theme#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:728.

Python
set_theme(self, name: str) -> None
Python
name: str
self: (unannotated)

Source docstring:

text
Push a desktop dark↔light theme change into the viewer's grid/background.

lsdtools.extend.Viewer3DMainView.apply_render_settings#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:732.

Python
apply_render_settings(self, settings_or_dict) -> None
Python
self: (unannotated)
settings_or_dict: (unannotated)

Source docstring:

text
Apply saved/edited render settings to the embedded viewer.

lsdtools.extend.Viewer3DMainView.render_settings_dict#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:736.

Python
render_settings_dict(self) -> dict
Python
self: (unannotated)

Source docstring:

text
The embedded viewer's render settings as a plain-JSON dict (for persistence).

lsdtools.extend.Viewer3DMainView.toolbar_style_dict#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:741.

Python
toolbar_style_dict(self) -> dict
Python
self: (unannotated)

lsdtools.extend.Viewer3DMainView.set_toolbar_style#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:744.

Python
set_toolbar_style(self, **kwargs) -> None
Python
kwargs: (unannotated)
self: (unannotated)

lsdtools.extend.Viewer3DMainView.get_hud_layout#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:747.

Python
get_hud_layout(self)
Python
self: (unannotated)

lsdtools.extend.Viewer3DMainView.apply_hud_layout#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:750.

Python
apply_hud_layout(self, data) -> None
Python
data: (unannotated)
self: (unannotated)

lsdtools.extend.Viewer3DMainView.get_legend_presentation#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:753.

Python
get_legend_presentation(self)
Python
self: (unannotated)

lsdtools.extend.Viewer3DMainView.apply_legend_presentation#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:756.

Python
apply_legend_presentation(self, data) -> None
Python
data: (unannotated)
self: (unannotated)

lsdtools.extend.Viewer3DMainView.reset_hud_layout#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:759.

Python
reset_hud_layout(self) -> None
Python
self: (unannotated)

lsdtools.extend.Viewer3DMainView.set_project_dir#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:762.

Python
set_project_dir(self, path) -> None
Python
path: (unannotated)
self: (unannotated)

Source docstring:

text
Set the project folder for the Project layout-preset scope.

lsdtools.extend.Viewer3DMainView.watch_entity#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:767.

Python
watch_entity(self, entity_id, payloads=None) -> None
Python
entity_id: (unannotated)
payloads: (unannotated)
self: (unannotated)

Source docstring:

text
Show ``entity_id``'s layers AND charts in this viewer — the duck-typed verb the desktop calls.

Delegates to the viewer, which owns the shared WatchSet and dispatches each already-rendered
payload to the sink for its topic; future deliveries for this entity route here because both
sinks now watch it (drag-drop / reopen feel instant).

lsdtools.extend.Viewer3DMainView.unwatch_entity#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:776.

Python
unwatch_entity(self, entity_id) -> None
Python
entity_id: (unannotated)
self: (unannotated)

Source docstring:

text
Stop showing ``entity_id`` here and remove the layers/charts it produced.

lsdtools.extend.Viewer3DMainView.watched_entities#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:780.

Python
watched_entities(self) -> List[str]
Python
self: (unannotated)

Source docstring:

text
The entity ids this viewer currently shows (its visible subscription list).

lsdtools.extend.Viewer3DMainView.deliver_layers#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:784.

Python
deliver_layers(self, payloads) -> None
Python
payloads: (unannotated)
self: (unannotated)

Source docstring:

text
Load ``viewer/layer/set`` payloads directly into this viewer's scene (no bus).

The bus-bypassing path behind a tree → 3D-viewer entity drop: each payload is applied
synchronously through the geometry sink, so it lands **even when this view is locked** (a lock
only mutes inbound *bus* delivery — direct calls like this are never muted).

lsdtools.extend.Viewer3DMainView.remove_layers#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:797.

Python
remove_layers(self, ids) -> None
Python
ids: (unannotated)
self: (unannotated)

Source docstring:

text
Remove layers by id (the bus-bypass counterpart of :meth:`deliver_layers`).

lsdtools.extend.Viewer3DMainView.refresh_edit_datasets#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:805.

Python
refresh_edit_datasets(self, dataset_paths) -> List[str]
Python
dataset_paths: (unannotated)
self: (unannotated)

Source docstring:

text
Reload live layers backed by freshly committed dataset materializations.

lsdtools.extend.Viewer3DMainView.frame_entity#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:837.

Python
frame_entity(self, entity_id) -> bool
Python
entity_id: (unannotated)
self: (unannotated)

Source docstring:

text
Frame all geometry produced by one exact entity in this viewer.

lsdtools.extend.Viewer3DMainView.frame_layer#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:844.

Python
frame_layer(self, layer_id) -> bool
Python
layer_id: (unannotated)
self: (unannotated)

Source docstring:

text
Frame one exact delivery layer in this viewer.

This deliberately changes only the camera.  It does not select an
entity, activate a tab, or alter the viewer's persistent watch set, so
package-owned editor views can prepare a shared Viewer3D without
stealing focus.

lsdtools.extend.Viewer3DMainView.dispose#

Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:857.

Python
dispose(self) -> None
Python
self: (unannotated)

Source docstring:

text
Release state/input resources, bus sinks, and the GL frame source.

lsdtools.extend.Viewer3DMainView.view_id#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/main_view.py:109.

Python
view_id: str
Python
view_id = view_id

lsdtools.extend.Viewer3DMainView.extensions#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/main_view.py:128.

Python
extensions: (unannotated)
Python
extensions = ViewerExtensionRuntime(self._viewer, viewer_kind='viewer3d', extensions=extensions, object_types=object_types, provider_bindings=_view_mapping(engine, 'viewer_provider_bindings', view_key), provider_state=_view_mapping(engine, 'viewer_provider_state', view_key), layout=_layout_for(engine, view_key), layout_store=getattr(engine, 'viewer_layout', None), layout_key=view_key, persist=persist)

lsdtools.extend.Viewer3DMainView.interaction#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/main_view.py:146.

Python
interaction: Optional[ViewportInteractionController]
Python
interaction = None

lsdtools.extend.Viewer3DMainView.object_editor#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/main_view.py:162.

Python
object_editor: (unannotated)
Python
object_editor = ObjectEditorHost(self._viewer, data_editor_host=self.extensions.data_editor_host, object_types=object_types, property_sections=object_property_sections)

lsdtools.extend.Viewer3DMainView.object_explorer#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/main_view.py:175.

Python
object_explorer: (unannotated)
Python
object_explorer = ObjectExplorerHost(self._viewer, object_types=object_types, explorers=object_explorers, context_actions=object_context_actions, viewer_commands=lambda: () if self.extensions.plan is None else tuple(self.extensions.plan.commands), command_invoker=self.extensions.invoke_command, command_validator=self.extensions.validate_owned_command, action_dispatcher=action_dispatcher, view_id=view_id, responsive_catalog=True)

lsdtools.extend.Viewer3DMainView.runtime_scene#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/main_view.py:203.

Python
runtime_scene: (unannotated)
Python
runtime_scene = RuntimeSceneBinding(self._viewer, runtime_host, view_id=view_id, preview_block_fn=self._timeline_preview_entry_block)

lsdtools.extend.Viewer3DMainView.runtime_transport#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/main_view.py:206.

Python
runtime_transport: (unannotated)
Python
runtime_transport = RuntimeTransportHost(self.runtime_scene, data_editor_fn=lambda: self.extensions.data_editor_host, toolbars_fn=lambda: getattr(self.interaction, 'toolbars', None), open_timeline_fn=(lambda entity_id: action_dispatcher('open_viewer_timeline', {'view_id': view_id, 'entity_id': entity_id})) if action_dispatcher is not None else None, root=root)

lsdtools.extend.ViewerCommandSpec#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2470.

Implementation alias: lsd.packages.viewer_extensions.ViewerCommandSpec.

lsdtools.extend.ViewerCommandSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2471.

Python
id: OwnedContributionId

lsdtools.extend.ViewerCommandSpec.action#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2472.

Python
action: str

lsdtools.extend.ViewerCommandSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2473.

Python
title: str

lsdtools.extend.ViewerCommandSpec.target#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2474.

Python
target: Capability | None
Python
target = None

lsdtools.extend.ViewerCommandSpec.requires#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2475.

Python
requires: tuple[Capability, ...]
Python
requires = ()

lsdtools.extend.ViewerCommandSpec.handler#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2476.

Python
handler: RuntimeHandler | None
Python
handler = field(default=None, compare=False, repr=False)

lsdtools.extend.ViewerDataEditorClickToolSpec#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:914.

Source docstring:

text
One mode-local, mutually-exclusive owner of the primary viewport click.

The surrounding data-editor mode remains the red durable workspace state.
Exactly one of these tools is active and blue while that mode is open, so
the next primary-click meaning is never implicit.  These are interaction
states, not one-shot edit operations.

Implementation alias: lsd.packages.viewer_extensions.ViewerDataEditorClickToolSpec.

lsdtools.extend.ViewerDataEditorClickToolSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:923.

Python
id: str

lsdtools.extend.ViewerDataEditorClickToolSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:924.

Python
title: str

lsdtools.extend.ViewerDataEditorClickToolSpec.icon#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:925.

Python
icon: str

lsdtools.extend.ViewerDataEditorClickToolSpec.primary_gesture#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:926.

Python
primary_gesture: ViewerDataEditorPrimaryGesture

lsdtools.extend.ViewerDataEditorClickToolSpec.purpose#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:927.

Python
purpose: ViewerDataEditorToolPurpose

lsdtools.extend.ViewerDataEditorClickToolSpec.description#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:928.

Python
description: str
Python
description = ''

lsdtools.extend.ViewerDataEditorClickToolSpec.as_dict#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:956.

Python
as_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ViewerDataEditorControlConditionSpec#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:998.

Source docstring:

text
Show one mode control for exact values of another mode field.

``values`` is an OR-list.  Matching is type-exact, so ``True`` is not the
integer ``1`` and ``1`` is not the number ``1.0``.  The containing mode
validates each value against the complete declaration of ``field_id``;
keeping that check mode-local prevents conditions from reaching into an
editor's configuration hub or another mode.

Implementation alias: lsd.packages.viewer_extensions.ViewerDataEditorControlConditionSpec.

lsdtools.extend.ViewerDataEditorControlConditionSpec.field_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1008.

Python
field_id: str

lsdtools.extend.ViewerDataEditorControlConditionSpec.values#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1009.

Python
values: tuple[LayoutScalar, ...]

lsdtools.extend.ViewerDataEditorControlConditionSpec.as_dict#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1037.

Python
as_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ViewerDataEditorControlKind#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:235.

Source docstring:

text
Semantic item kinds accepted by a host-rendered editor row.

Implementation alias: lsd.packages.viewer_extensions.ViewerDataEditorControlKind.

Declared bases: str, Enum.

lsdtools.extend.ViewerDataEditorControlKind.CLICK_TOOL#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:238.

Python
CLICK_TOOL = 'click_tool'

lsdtools.extend.ViewerDataEditorControlKind.FIELD#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:239.

Python
FIELD = 'field'

lsdtools.extend.ViewerDataEditorControlKind.ACTION#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:240.

Python
ACTION = 'action'

lsdtools.extend.ViewerDataEditorControlRef#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1045.

Source docstring:

text
One exact declared click tool, field, or action in a mode row.

Implementation alias: lsd.packages.viewer_extensions.ViewerDataEditorControlRef.

lsdtools.extend.ViewerDataEditorControlRef.kind#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1048.

Python
kind: ViewerDataEditorControlKind

lsdtools.extend.ViewerDataEditorControlRef.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1049.

Python
id: str

lsdtools.extend.ViewerDataEditorControlRef.condition#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1050.

Python
condition: ViewerDataEditorControlConditionSpec | None
Python
condition = None

lsdtools.extend.ViewerDataEditorControlRef.as_dict#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1064.

Python
as_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ViewerDataEditorControlRowSpec#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1075.

Source docstring:

text
One exact row in the active data editor's top-centre tool menu.

Implementation alias: lsd.packages.viewer_extensions.ViewerDataEditorControlRowSpec.

lsdtools.extend.ViewerDataEditorControlRowSpec.home#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1078.

Python
home: ViewerDataEditorControlsHome

lsdtools.extend.ViewerDataEditorControlRowSpec.controls#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1079.

Python
controls: tuple[ViewerDataEditorControlRef, ...]

lsdtools.extend.ViewerDataEditorControlRowSpec.as_dict#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1094.

Python
as_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ViewerDataEditorControlsHome#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:229.

Source docstring:

text
Closed placement vocabulary for an active editor's compact tool rows.

Implementation alias: lsd.packages.viewer_extensions.ViewerDataEditorControlsHome.

Declared bases: str, Enum.

lsdtools.extend.ViewerDataEditorControlsHome.INLINE#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:232.

Python
INLINE = 'inline'

lsdtools.extend.ViewerDataEditorFieldKind#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:219.

Source docstring:

text
Host-rendered value kind shared by editor forms and input requests.

Implementation alias: lsd.packages.viewer_extensions.ViewerDataEditorFieldKind.

Declared bases: str, Enum.

lsdtools.extend.ViewerDataEditorFieldKind.NUMBER#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:222.

Python
NUMBER = 'number'

lsdtools.extend.ViewerDataEditorFieldKind.INTEGER#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:223.

Python
INTEGER = 'integer'

lsdtools.extend.ViewerDataEditorFieldKind.BOOLEAN#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:224.

Python
BOOLEAN = 'boolean'

lsdtools.extend.ViewerDataEditorFieldKind.TEXT#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:225.

Python
TEXT = 'text'

lsdtools.extend.ViewerDataEditorFieldKind.CHOICE#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:226.

Python
CHOICE = 'choice'

lsdtools.extend.ViewerDataEditorFieldPatch#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:837.

Source docstring:

text
Exact host-owned property edit state for the active mode.

``values`` is the complete validated draft. Only ``touched_field_ids`` is
a mutation request; untouched values, including mixed placeholders, must
never be written to selected residents. ``changed_field_id`` is populated
for an immediate field callback and is ``None`` for a one-shot action.

Implementation alias: lsd.packages.viewer_extensions.ViewerDataEditorFieldPatch.

lsdtools.extend.ViewerDataEditorFieldPatch.values#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:846.

Python
values: Mapping[str, LayoutScalar] | tuple[tuple[str, LayoutScalar], ...]

lsdtools.extend.ViewerDataEditorFieldPatch.touched_field_ids#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:847.

Python
touched_field_ids: tuple[str, ...]
Python
touched_field_ids = ()

lsdtools.extend.ViewerDataEditorFieldPatch.mixed_field_ids#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:848.

Python
mixed_field_ids: tuple[str, ...]
Python
mixed_field_ids = ()

lsdtools.extend.ViewerDataEditorFieldPatch.read_only_field_ids#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:849.

Python
read_only_field_ids: tuple[str, ...]
Python
read_only_field_ids = ()

lsdtools.extend.ViewerDataEditorFieldPatch.changed_field_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:850.

Python
changed_field_id: str | None
Python
changed_field_id = None

lsdtools.extend.ViewerDataEditorFieldPatch.touched_values#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:898.

Python
touched_values(self) -> dict[str, LayoutScalar]
Python
self: (unannotated)

lsdtools.extend.ViewerDataEditorFieldPatch.as_dict#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:902.

Python
as_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ViewerDataEditorFieldSpec#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1311.

Source docstring:

text
One toolkit-neutral field in an editor form or configuration hub.

Fields carry only typed participant-local values. Merely changing one never
stages project data. A later explicit semantic edit operation captures any
value that affects durable meaning, or an opt-in mode may name one UPDATE
action which the host invokes once when the current field edit finishes.

Implementation alias: lsd.packages.viewer_extensions.ViewerDataEditorFieldSpec.

lsdtools.extend.ViewerDataEditorFieldSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1320.

Python
id: str

lsdtools.extend.ViewerDataEditorFieldSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1321.

Python
title: str

lsdtools.extend.ViewerDataEditorFieldSpec.kind#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1322.

Python
kind: ViewerDataEditorFieldKind

lsdtools.extend.ViewerDataEditorFieldSpec.default#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1323.

Python
default: LayoutScalar

lsdtools.extend.ViewerDataEditorFieldSpec.description#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1324.

Python
description: str
Python
description = ''

lsdtools.extend.ViewerDataEditorFieldSpec.unit#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1325.

Python
unit: str
Python
unit = ''

lsdtools.extend.ViewerDataEditorFieldSpec.minimum#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1326.

Python
minimum: float | int | None
Python
minimum = None

lsdtools.extend.ViewerDataEditorFieldSpec.maximum#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1327.

Python
maximum: float | int | None
Python
maximum = None

lsdtools.extend.ViewerDataEditorFieldSpec.step#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1328.

Python
step: float | int | None
Python
step = None

lsdtools.extend.ViewerDataEditorFieldSpec.choices#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1329.

Python
choices: tuple[LayoutScalar, ...]
Python
choices = ()

lsdtools.extend.ViewerDataEditorFieldSpec.validate#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1390.

Python
validate(self, value: LayoutScalar) -> LayoutScalar
Python
self: (unannotated)
value: LayoutScalar

Source docstring:

text
Return *value* after exact kind/range validation.

lsdtools.extend.ViewerDataEditorFieldSpec.as_dict#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1429.

Python
as_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ViewerDataEditorInputRequest#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1445.

Source docstring:

text
Host-local human values an active mode asks the viewer to collect.

This is runtime state, not a durable edit or package-owned dialog.  The
viewer projects it as a host-owned popover and includes the same exact
request in ``describe`` so host UI/state inspection remains deterministic.
Agents and external automation use durable semantic edit actions through
the approval gateway; they do not submit this human form.

Implementation alias: lsd.packages.viewer_extensions.ViewerDataEditorInputRequest.

lsdtools.extend.ViewerDataEditorInputRequest.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1455.

Python
id: str

lsdtools.extend.ViewerDataEditorInputRequest.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1456.

Python
title: str

lsdtools.extend.ViewerDataEditorInputRequest.fields#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1457.

Python
fields: tuple[ViewerDataEditorFieldSpec, ...]

lsdtools.extend.ViewerDataEditorInputRequest.description#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1458.

Python
description: str
Python
description = ''

lsdtools.extend.ViewerDataEditorInputRequest.submit_title#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1459.

Python
submit_title: str
Python
submit_title = 'Apply'

lsdtools.extend.ViewerDataEditorInputRequest.cancel_title#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1460.

Python
cancel_title: str
Python
cancel_title = 'Cancel'

lsdtools.extend.ViewerDataEditorInputRequest.values#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1461.

Python
values: Mapping[str, LayoutScalar] | tuple[tuple[str, LayoutScalar], ...]
Python
values = ()

lsdtools.extend.ViewerDataEditorInputRequest.validate_values#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1510.

Python
validate_values(self, values: Mapping[str, LayoutScalar]) -> dict[str, LayoutScalar]
Python
self: (unannotated)
values: Mapping[str, LayoutScalar]

lsdtools.extend.ViewerDataEditorInputRequest.as_dict#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1525.

Python
as_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ViewerDataEditorModeActionSpec#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:968.

Source docstring:

text
One host-rendered, one-shot action in a data-editor mode row.

``role`` is required author intent, not a title/icon heuristic. This keeps
create/add actions greenish-cyan, remove/delete actions purple, and all
other dataset updates visually neutral across independently built packages.

Implementation alias: lsd.packages.viewer_extensions.ViewerDataEditorModeActionSpec.

lsdtools.extend.ViewerDataEditorModeActionSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:976.

Python
id: str

lsdtools.extend.ViewerDataEditorModeActionSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:977.

Python
title: str

lsdtools.extend.ViewerDataEditorModeActionSpec.icon#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:978.

Python
icon: str

lsdtools.extend.ViewerDataEditorModeActionSpec.role#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:979.

Python
role: ViewerDatasetActionRole

lsdtools.extend.ViewerDataEditorModeActionSpec.as_dict#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:988.

Python
as_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ViewerDataEditorModeSpec#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1102.

Source docstring:

text
One stable, mutually-exclusive interaction mode in a data editor.

Modes are controls inside the one host-owned edit workspace, not separate
editors or ordinary pointer tools.  Changing mode therefore replaces only
transient input/gizmos and never changes the selected subject or settles
the actor's pending batch. Every declared control is placed exactly once
in ``control_rows`` except the optional ``field_commit_action_id`` UPDATE,
which may remain hidden or may also be placed once as an explicit retry.

Implementation alias: lsd.packages.viewer_extensions.ViewerDataEditorModeSpec.

lsdtools.extend.ViewerDataEditorModeSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1113.

Python
id: OwnedContributionId

lsdtools.extend.ViewerDataEditorModeSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1114.

Python
title: str

lsdtools.extend.ViewerDataEditorModeSpec.icon#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1115.

Python
icon: str

lsdtools.extend.ViewerDataEditorModeSpec.click_tools#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1116.

Python
click_tools: tuple[ViewerDataEditorClickToolSpec, ...]

lsdtools.extend.ViewerDataEditorModeSpec.default_click_tool_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1117.

Python
default_click_tool_id: str

lsdtools.extend.ViewerDataEditorModeSpec.control_rows#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1118.

Python
control_rows: tuple[ViewerDataEditorControlRowSpec, ...]

lsdtools.extend.ViewerDataEditorModeSpec.description#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1119.

Python
description: str
Python
description = ''

lsdtools.extend.ViewerDataEditorModeSpec.fields#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1120.

Python
fields: tuple[ViewerDataEditorFieldSpec, ...]
Python
fields = ()

lsdtools.extend.ViewerDataEditorModeSpec.actions#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1121.

Python
actions: tuple[ViewerDataEditorModeActionSpec, ...]
Python
actions = ()

lsdtools.extend.ViewerDataEditorModeSpec.field_commit_action_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1122.

Python
field_commit_action_id: str | None
Python
field_commit_action_id = None

lsdtools.extend.ViewerDataEditorModeSpec.as_dict#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1289.

Python
as_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ViewerDataEditorPrimaryGesture#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:257.

Source docstring:

text
Host-owned primary gesture delivered to one blue click tool.

``CLICK`` requires the package to consume ordinary primary clicks for that
exact tool. ``GIZMO`` gives handle hits precedence; ordinary object clicks
acquire or retarget the gizmo through core selection, never a package click
callback. It may start empty and uses a compatible inspected object on
entry. ``SELECT_POINT`` and one-shot ``SELECT_BOX`` are host gestures for
deliberate spatial target preparation, not inspectors.

Implementation alias: lsd.packages.viewer_extensions.ViewerDataEditorPrimaryGesture.

Declared bases: str, Enum.

lsdtools.extend.ViewerDataEditorPrimaryGesture.CLICK#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:268.

Python
CLICK = 'click'

lsdtools.extend.ViewerDataEditorPrimaryGesture.GIZMO#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:269.

Python
GIZMO = 'gizmo'

lsdtools.extend.ViewerDataEditorPrimaryGesture.SELECT_POINT#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:270.

Python
SELECT_POINT = 'select_point'

lsdtools.extend.ViewerDataEditorPrimaryGesture.SELECT_BOX#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:271.

Python
SELECT_BOX = 'select_box'

lsdtools.extend.ViewerDataEditorScope#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:187.

Source docstring:

text
Which resident identity one data-editor contribution can bind.

Data editors are deliberately not independent pointer-tool declarations.
They own one durable edit subject and are selected through the viewer's
single data-editor workspace, which temporarily acquires the same exclusive
pointer lease as ordinary view tools.

Implementation alias: lsd.packages.viewer_extensions.ViewerDataEditorScope.

Declared bases: str, Enum.

lsdtools.extend.ViewerDataEditorScope.FEATURE#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:196.

Python
FEATURE = 'feature'

lsdtools.extend.ViewerDataEditorScope.LAYER#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:197.

Python
LAYER = 'layer'

lsdtools.extend.ViewerDataEditorSelectionGesture#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:777.

Source docstring:

text
Toolkit-neutral local selection gesture resolved by Viewer3D.

Implementation alias: lsd.packages.viewer_extensions.ViewerDataEditorSelectionGesture.

lsdtools.extend.ViewerDataEditorSelectionGesture.kind#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:780.

Python
kind: ViewerDataEditorSelectionKind

lsdtools.extend.ViewerDataEditorSelectionGesture.operation#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:781.

Python
operation: ViewerDataEditorSelectionOperation

lsdtools.extend.ViewerDataEditorSelectionGesture.residents#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:782.

Python
residents: tuple[ViewerObjectRef, ...]

lsdtools.extend.ViewerDataEditorSelectionGesture.start#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:783.

Python
start: tuple[float, float]

lsdtools.extend.ViewerDataEditorSelectionGesture.end#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:784.

Python
end: tuple[float, float]

lsdtools.extend.ViewerDataEditorSelectionGesture.modifiers#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:785.

Python
modifiers: tuple[str, ...]
Python
modifiers = ()

lsdtools.extend.ViewerDataEditorSelectionGesture.as_dict#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:823.

Python
as_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ViewerDataEditorSelectionKind#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:274.

Implementation alias: lsd.packages.viewer_extensions.ViewerDataEditorSelectionKind.

Declared bases: str, Enum.

lsdtools.extend.ViewerDataEditorSelectionKind.POINT#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:275.

Python
POINT = 'point'

lsdtools.extend.ViewerDataEditorSelectionKind.BOX#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:276.

Python
BOX = 'box'

lsdtools.extend.ViewerDataEditorSelectionOperation#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:279.

Source docstring:

text
How a local human gesture changes the editor-local selection.

Implementation alias: lsd.packages.viewer_extensions.ViewerDataEditorSelectionOperation.

Declared bases: str, Enum.

lsdtools.extend.ViewerDataEditorSelectionOperation.REPLACE#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:282.

Python
REPLACE = 'replace'

lsdtools.extend.ViewerDataEditorSelectionOperation.TOGGLE#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:283.

Python
TOGGLE = 'toggle'

lsdtools.extend.ViewerDataEditorSpec#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1705.

Source docstring:

text
Package contribution for visually editing one semantic data kind.

``feature_kind`` chooses the mutation adapter and durable object table.
``object_type`` names the one canonical object identity the modes create or
edit. Component fields contribute to the object's Properties, not a spatial
inspector. Additional real spatial operations may target the same object
type, including through its declared component mutation adapter.

The package supplies one lifecycle, stable mutually-exclusive modes, typed
configuration, and gizmos. Viewer3D owns target selection, mode projection,
Save, Discard, Undo, and Redo, so packages cannot add competing edit
buttons, raw toolbar widgets, or a second batch lifecycle.

Implementation alias: lsd.packages.viewer_extensions.ViewerDataEditorSpec.

lsdtools.extend.ViewerDataEditorSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1720.

Python
id: OwnedContributionId

lsdtools.extend.ViewerDataEditorSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1721.

Python
title: str

lsdtools.extend.ViewerDataEditorSpec.feature_kind#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1722.

Python
feature_kind: str

lsdtools.extend.ViewerDataEditorSpec.object_type#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1723.

Python
object_type: OwnedContributionId

lsdtools.extend.ViewerDataEditorSpec.scope#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1724.

Python
scope: ViewerDataEditorScope
Python
scope = ViewerDataEditorScope.FEATURE

lsdtools.extend.ViewerDataEditorSpec.modes#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1725.

Python
modes: tuple[ViewerDataEditorModeSpec, ...]
Python
modes = ()

lsdtools.extend.ViewerDataEditorSpec.config_fields#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1726.

Python
config_fields: tuple[ViewerDataEditorFieldSpec, ...]
Python
config_fields = ()

lsdtools.extend.ViewerDataEditorSpec.working_layer#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1727.

Python
working_layer: ViewerDataEditorWorkingLayerSpec | None
Python
working_layer = None

lsdtools.extend.ViewerDataEditorSpec.requires#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1728.

Python
requires: tuple[Capability, ...]
Python
requires = ()

lsdtools.extend.ViewerDataEditorSpec.factory#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1729.

Python
factory: RuntimeFactory | None
Python
factory = field(default=None, compare=False, repr=False)

lsdtools.extend.ViewerDataEditorTool#

Kind: class. Source: views/viewer3d/src/lsd_viewer/states/tool.py:196.

Python
ViewerDataEditorTool(self) -> None

Source docstring:

text
Lifecycle and mutually-exclusive modes for one durable edit workspace.

Viewer3D binds the exact mode catalog and typed configuration declared by
``ViewerDataEditorSpec`` before activation.  The package owns behavior for
each mode, while the host owns the red controls, target, batch settlement,
and switching semantics.  A mode switch never deactivates this editor or
settles its batch.

Implementation alias: lsd_viewer.states.tool.ViewerDataEditorTool.

Declared bases: ViewerPointerTool.

lsdtools.extend.ViewerDataEditorTool.__init__#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:206.

Python
__init__(self) -> None
Python
self: (unannotated)

lsdtools.extend.ViewerDataEditorTool.active_mode_id#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:254.

Python
active_mode_id(self) -> str | None
Python
self: (unannotated)

lsdtools.extend.ViewerDataEditorTool.active_click_tool_id#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:258.

Python
active_click_tool_id(self) -> str | None
Python
self: (unannotated)

lsdtools.extend.ViewerDataEditorTool.editor_config#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:267.

Python
editor_config(self) -> Mapping[str, Any]
Python
self: (unannotated)

lsdtools.extend.ViewerDataEditorTool.mode_values#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:270.

Python
mode_values(self, mode_id: str | None=None) -> Mapping[str, Any]
Python
mode_id: str | None
self: (unannotated)

lsdtools.extend.ViewerDataEditorTool.validate_primary_interaction_contract#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:281.

Python
validate_primary_interaction_contract(self, primary_gestures_by_mode: Mapping[str, Mapping[str, ViewerDataEditorPrimaryGesture | str]]) -> None
Python
primary_gestures_by_mode: Mapping[str, Mapping[str, ViewerDataEditorPrimaryGesture | str]]
self: (unannotated)

Source docstring:

text
Fail closed when a declared blue click meaning has no behavior.

Spatial targeting is host-owned. ``CLICK`` means the package consumes
the operation click after any host acquisition step. ``GIZMO`` routes
enabled handles through ``handle_operation`` and ordinary missed-handle
clicks back through the host's target route.

lsdtools.extend.ViewerDataEditorTool.bind_editor_contract#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:378.

Python
bind_editor_contract(self, mode_ids: tuple[str, ...], config: Mapping[str, Any], *, initial_mode_id: str, click_tool_ids_by_mode: Mapping[str, tuple[str, ...]], default_click_tool_by_mode: Mapping[str, str], primary_gestures_by_mode: Mapping[str, Mapping[str, Any]], purposes_by_mode: Mapping[str, Mapping[str, Any]], object_type_id: str, object_namespace: str, selection_subject: Mapping[str, Any], field_commit_action_by_mode: Mapping[str, str | None] | None=None, mode_values: Mapping[str, Mapping[str, Any]] | None=None, mode_values_sink: Callable[[str, Mapping[str, Any]], Mapping[str, Any]] | None=None) -> None
Python
click_tool_ids_by_mode: Mapping[str, tuple[str, ...]]
config: Mapping[str, Any]
default_click_tool_by_mode: Mapping[str, str]
field_commit_action_by_mode: Mapping[str, str | None] | None
initial_mode_id: str
mode_ids: tuple[str, ...]
mode_values: Mapping[str, Mapping[str, Any]] | None
mode_values_sink: Callable[[str, Mapping[str, Any]], Mapping[str, Any]] | None
object_namespace: str
object_type_id: str
primary_gestures_by_mode: Mapping[str, Mapping[str, Any]]
purposes_by_mode: Mapping[str, Mapping[str, Any]]
selection_subject: Mapping[str, Any]
self: (unannotated)

Source docstring:

text
Bind one resolved host contract before the pointer is activated.

lsdtools.extend.ViewerDataEditorTool.can_select_mode#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:554.

Python
can_select_mode(self, ctx: 'PointerToolContext', mode_id: str) -> Tuple[bool, str]
Python
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)

lsdtools.extend.ViewerDataEditorTool.can_select_click_tool#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:559.

Python
can_select_click_tool(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str) -> Tuple[bool, str]
Python
click_tool_id: str
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)

Source docstring:

text
Whether one declared blue click tool can own primary input now.

lsdtools.extend.ViewerDataEditorTool.click_tool_availability#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:568.

Python
click_tool_availability(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str) -> Tuple[bool, str]
Python
click_tool_id: str
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)

Source docstring:

text
Apply the non-overridable target-scope gate, then package policy.

lsdtools.extend.ViewerDataEditorTool.on_editor_open#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:602.

Python
on_editor_open(self, ctx: 'PointerToolContext') -> None
Python
ctx: 'PointerToolContext'
self: (unannotated)

Source docstring:

text
Acquire resources shared by every mode in this open workspace.

Returning transfers ownership. Raising must leave no partially
acquired resources.

lsdtools.extend.ViewerDataEditorTool.on_editor_close#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:609.

Python
on_editor_close(self, ctx: 'PointerToolContext') -> None
Python
ctx: 'PointerToolContext'
self: (unannotated)

Source docstring:

text
Release semantic state before the activation scope is disposed.

Teardown is final even when this hook raises; the pointer context is
disposed after every owned child and parent has been offered release.

lsdtools.extend.ViewerDataEditorTool.on_mode_activate#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:616.

Python
on_mode_activate(self, ctx: 'PointerToolContext', mode_id: str) -> None
Python
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)

Source docstring:

text
Acquire only the transient resources for *mode_id*.

Returning transfers ownership to the mode. Raising must leave no
partially acquired resources; the host will restore the prior mode.

lsdtools.extend.ViewerDataEditorTool.on_mode_deactivate#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:625.

Python
on_mode_deactivate(self, ctx: 'PointerToolContext', mode_id: str) -> None
Python
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)

Source docstring:

text
Release transient semantic state for *mode_id*.

Returning releases ownership. Raising refuses the transition and must
leave the mode active; completed child releases are restored by the
generic lifecycle.

lsdtools.extend.ViewerDataEditorTool.on_mode_click_tool_activate#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:635.

Python
on_mode_click_tool_activate(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str) -> None
Python
click_tool_id: str
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)

Source docstring:

text
Acquire state for the exact blue click meaning inside *mode_id*.

Returning transfers ownership. Raising must leave no partial
acquisition so the previous blue owner can be restored exactly once.

lsdtools.extend.ViewerDataEditorTool.on_mode_click_tool_deactivate#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:647.

Python
on_mode_click_tool_deactivate(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str) -> None
Python
click_tool_id: str
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)

Source docstring:

text
Release state owned only by one blue click meaning.

Returning releases ownership; raising refuses the transition and must
leave this click tool active.

lsdtools.extend.ViewerDataEditorTool.on_editor_config_changed#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:659.

Python
on_editor_config_changed(self, ctx: 'PointerToolContext', config: Mapping[str, Any], changed_field_id: str) -> None
Python
changed_field_id: str
config: Mapping[str, Any]
ctx: 'PointerToolContext'
self: (unannotated)

Source docstring:

text
React to one host-validated participant-local preference change.

lsdtools.extend.ViewerDataEditorTool.on_mode_field_changed#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:667.

Python
on_mode_field_changed(self, ctx: 'PointerToolContext', mode_id: str, patch: ViewerDataEditorFieldPatch) -> None
Python
ctx: 'PointerToolContext'
mode_id: str
patch: ViewerDataEditorFieldPatch
self: (unannotated)

Source docstring:

text
React to a validated participant-local draft without staging data.

Read only ``patch.touched_values``. Durable mutation belongs to an
explicit mode action or the mode's opt-in field-finish action.

lsdtools.extend.ViewerDataEditorTool.on_mode_action#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:679.

Python
on_mode_action(self, ctx: 'PointerToolContext', mode_id: str, action_id: str, patch: ViewerDataEditorFieldPatch) -> Any
Python
action_id: str
ctx: 'PointerToolContext'
mode_id: str
patch: ViewerDataEditorFieldPatch
self: (unannotated)

Source docstring:

text
Invoke one dataset-changing action using the explicit field patch.

lsdtools.extend.ViewerDataEditorTool.on_mode_input#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:691.

Python
on_mode_input(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str, request_id: str, values: Mapping[str, Any]) -> Any
Python
click_tool_id: str
ctx: 'PointerToolContext'
mode_id: str
request_id: str
self: (unannotated)
values: Mapping[str, Any]

Source docstring:

text
Accept one host-validated participant-local value request.

lsdtools.extend.ViewerDataEditorTool.on_mode_input_cancelled#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:705.

Python
on_mode_input_cancelled(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str, request_id: str) -> None
Python
click_tool_id: str
ctx: 'PointerToolContext'
mode_id: str
request_id: str
self: (unannotated)

Source docstring:

text
Observe cancellation without acquiring or releasing mode resources.

lsdtools.extend.ViewerDataEditorTool.on_mode_primary_click#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:714.

Python
on_mode_primary_click(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str, x: float, y: float) -> bool
Python
click_tool_id: str
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)
x: float
y: float

Source docstring:

text
Interpret one primary click for the exact active red mode.

lsdtools.extend.ViewerDataEditorTool.on_mode_secondary_click#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:725.

Python
on_mode_secondary_click(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str, x: float, y: float) -> bool
Python
click_tool_id: str
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)
x: float
y: float

lsdtools.extend.ViewerDataEditorTool.on_mode_hover#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:735.

Python
on_mode_hover(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str, x: float, y: float) -> None
Python
click_tool_id: str
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)
x: float
y: float

lsdtools.extend.ViewerDataEditorTool.on_mode_hover_leave#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:745.

Python
on_mode_hover_leave(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str, reason: str) -> None
Python
click_tool_id: str
ctx: 'PointerToolContext'
mode_id: str
reason: str
self: (unannotated)

Source docstring:

text
Clear one mode's hover projection for an exact routing reason.

lsdtools.extend.ViewerDataEditorTool.on_mode_key#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:755.

Python
on_mode_key(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str, keyval: int) -> bool
Python
click_tool_id: str
ctx: 'PointerToolContext'
keyval: int
mode_id: str
self: (unannotated)

lsdtools.extend.ViewerDataEditorTool.mode_prompt#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:764.

Python
mode_prompt(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str) -> PointerToolPrompt
Python
click_tool_id: str
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)

Source docstring:

text
Describe the next gesture in *mode_id* for people and agents.

lsdtools.extend.ViewerDataEditorTool.mode_controls_visible#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:777.

Python
mode_controls_visible(self, ctx: 'PointerToolContext', mode_id: str) -> bool
Python
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)

Source docstring:

text
Whether the active mode's declared fields/actions should be shown.

lsdtools.extend.ViewerDataEditorTool.mode_controls_title#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:785.

Python
mode_controls_title(self, ctx: 'PointerToolContext', mode_id: str) -> str
Python
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)

Source docstring:

text
Optional dynamic title for the host-owned controls surface.

lsdtools.extend.ViewerDataEditorTool.request_mode_input#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:828.

Python
request_mode_input(self, ctx: 'PointerToolContext', request: ViewerDataEditorInputRequest) -> Mapping[str, Any]
Python
ctx: 'PointerToolContext'
request: ViewerDataEditorInputRequest
self: (unannotated)

Source docstring:

text
Ask the host to collect typed values without package-owned GTK.

lsdtools.extend.ViewerDataEditorTool.pending_input_request#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:869.

Python
pending_input_request(self) -> dict[str, Any] | None
Python
self: (unannotated)

lsdtools.extend.ViewerDataEditorTool.submit_input_request#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:880.

Python
submit_input_request(self, ctx: 'PointerToolContext', request_token: str, values: Mapping[str, Any]) -> Any
Python
ctx: 'PointerToolContext'
request_token: str
self: (unannotated)
values: Mapping[str, Any]

lsdtools.extend.ViewerDataEditorTool.cancel_input_request#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:911.

Python
cancel_input_request(self, ctx: 'PointerToolContext', request_token: str) -> None
Python
ctx: 'PointerToolContext'
request_token: str
self: (unannotated)

lsdtools.extend.ViewerDataEditorTool.set_mode_values#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:934.

Python
set_mode_values(self, mode_id: str, values: Mapping[str, Any]) -> Mapping[str, Any]
Python
mode_id: str
self: (unannotated)
values: Mapping[str, Any]

Source docstring:

text
Hydrate one active host-rendered draft from runtime selection.

This is presentation state only: the host validates every declared
field and refreshes its projection, but no durable edit is staged.
Semantic changes still go through the edit session and its shared
undo/redo/commit/discard lifecycle.

lsdtools.extend.ViewerDataEditorTool.selected_residents#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:959.

Python
selected_residents(self) -> tuple[ViewerObjectRef, ...]
Python
self: (unannotated)

Source docstring:

text
Read an immutable snapshot of host-owned spatial edit targets.

lsdtools.extend.ViewerDataEditorTool.uses_resident_selection#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:968.

Python
uses_resident_selection(self) -> bool
Python
self: (unannotated)

Source docstring:

text
Whether this editor is bound to host-owned spatial targets.

lsdtools.extend.ViewerDataEditorTool.describe_selection#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:973.

Python
describe_selection(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ViewerDataEditorTool.mode_field_patch#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:1006.

Python
mode_field_patch(self, mode_id: str | None=None, *, changed_field_id: str | None=None) -> ViewerDataEditorFieldPatch
Python
changed_field_id: str | None
mode_id: str | None
self: (unannotated)

lsdtools.extend.ViewerDataEditorTool.reconcile_effective_visibility#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:1072.

Python
reconcile_effective_visibility(self, ctx: 'PointerToolContext') -> bool
Python
ctx: 'PointerToolContext'
self: (unannotated)

Source docstring:

text
Reconcile spatial targets after host presentation changes.

lsdtools.extend.ViewerDataEditorTool.reconcile_working_selection#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:1084.

Python
reconcile_working_selection(self, ctx: 'PointerToolContext', residents: tuple[ViewerObjectRef, ...]) -> None
Python
ctx: 'PointerToolContext'
residents: tuple[ViewerObjectRef, ...]
self: (unannotated)

Source docstring:

text
Repoint spatial targets at equivalent working-layer representations.

lsdtools.extend.ViewerDataEditorTool.fail_closed_working_selection#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:1106.

Python
fail_closed_working_selection(self, ctx: 'PointerToolContext') -> None
Python
ctx: 'PointerToolContext'
self: (unannotated)

Source docstring:

text
Fail closed through the host spatial-target authority.

lsdtools.extend.ViewerDataEditorTool.rehydrate_selection#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:1119.

Python
rehydrate_selection(self, ctx: 'PointerToolContext') -> None
Python
ctx: 'PointerToolContext'
self: (unannotated)

Source docstring:

text
Refresh host presentation after a dataset action; packages cannot hydrate selection.

lsdtools.extend.ViewerDataEditorTool.update_mode_values#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:1126.

Python
update_mode_values(self, ctx: 'PointerToolContext', mode_id: str, values: Mapping[str, Any], *, changed_field_id: str) -> None
Python
changed_field_id: str
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)
values: Mapping[str, Any]

lsdtools.extend.ViewerDataEditorTool.finish_mode_edit#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:1172.

Python
finish_mode_edit(self, ctx: 'PointerToolContext', mode_id: str | None=None) -> Any
Python
ctx: 'PointerToolContext'
mode_id: str | None
self: (unannotated)

Source docstring:

text
Commit one accumulated opt-in field draft through its UPDATE action.

Field-change callbacks remain presentation-only.  This boundary takes
the complete touched patch once, invokes the mode's declared commit
action, and only then rehydrates authoritative selection properties.
A duplicate finish after success is a no-op because rehydration clears
the touched set. If the action raises, the prior draft and touched
fields remain available. Once the action returns successfully its
token is consumed before hydration, so a presentation failure cannot
replay an already accepted dataset operation.

lsdtools.extend.ViewerDataEditorTool.discard_mode_edit#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:1215.

Python
discard_mode_edit(self, ctx: 'PointerToolContext', mode_id: str | None=None) -> bool
Python
ctx: 'PointerToolContext'
mode_id: str | None
self: (unannotated)

Source docstring:

text
Explicitly abandon one opt-in field draft without invoking its action.

lsdtools.extend.ViewerDataEditorTool.invoke_mode_action#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:1238.

Python
invoke_mode_action(self, ctx: 'PointerToolContext', mode_id: str, action_id: str) -> Any
Python
action_id: str
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)

lsdtools.extend.ViewerDataEditorTool.select_click_tool#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:1259.

Python
select_click_tool(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str) -> None
Python
click_tool_id: str
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)

Source docstring:

text
Atomically switch the one blue primary-click owner in the red mode.

lsdtools.extend.ViewerDataEditorTool.describe_editor_mode#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:1356.

Python
describe_editor_mode(self, ctx: 'PointerToolContext', mode_id: str) -> Mapping[str, Any]
Python
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)

lsdtools.extend.ViewerDataEditorTool.gizmo_model#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:1361.

Python
gizmo_model(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str) -> Any
Python
click_tool_id: str
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)

Source docstring:

text
Optionally project the active mode as a public declarative gizmo.

lsdtools.extend.ViewerDataEditorTool.preview_gizmo_operation#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:1370.

Python
preview_gizmo_operation(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str, operation: str, params: Mapping[str, Any]) -> Any
Python
click_tool_id: str
ctx: 'PointerToolContext'
mode_id: str
operation: str
params: Mapping[str, Any]
self: (unannotated)

Source docstring:

text
Purely project one in-progress semantic gizmo manipulation.

The returned immutable ``GizmoModel`` is rendered only for the active
capture. Implementations must not stage an edit, mutate mode values,
or call ``ctx.changed()``; the completed intent is delivered once to
:meth:`handle_operation` on release.

lsdtools.extend.ViewerDataEditorTool.handle_operation#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:1390.

Python
handle_operation(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str, operation: str, params: Mapping[str, Any]) -> Any
Python
click_tool_id: str
ctx: 'PointerToolContext'
mode_id: str
operation: str
params: Mapping[str, Any]
self: (unannotated)

Source docstring:

text
Stage one completed declarative-gizmo intent for the active mode.

lsdtools.extend.ViewerDataEditorTool.refresh_gizmo#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:1403.

Python
refresh_gizmo(self) -> None
Python
self: (unannotated)

Source docstring:

text
Rebuild the active mode's declarative gizmo after local state changes.

lsdtools.extend.ViewerDataEditorTool.declarative_gizmo_description#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:1411.

Python
declarative_gizmo_description(self, mode_id: str) -> Mapping[str, Any] | None
Python
mode_id: str
self: (unannotated)

lsdtools.extend.ViewerDataEditorTool.on_activate#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:1520.

Python
on_activate(self, ctx: 'PointerToolContext') -> None
Python
ctx: 'PointerToolContext'
self: (unannotated)

lsdtools.extend.ViewerDataEditorTool.on_deactivate#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:1574.

Python
on_deactivate(self, ctx: 'PointerToolContext') -> None
Python
ctx: 'PointerToolContext'
self: (unannotated)

lsdtools.extend.ViewerDataEditorTool.on_params#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:1687.

Python
on_params(self, ctx: 'PointerToolContext', **params: object) -> None
Python
ctx: 'PointerToolContext'
params: object
self: (unannotated)

lsdtools.extend.ViewerDataEditorTool.host_hover_resident#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:2027.

Python
host_hover_resident(self, ctx: 'PointerToolContext', resident: Any) -> ViewerObjectRef | None
Python
ctx: 'PointerToolContext'
resident: Any
self: (unannotated)

Source docstring:

text
Filter host hover to objects meaningful to the active operation.

lsdtools.extend.ViewerDataEditorTool.on_primary_drag_begin#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:2051.

Python
on_primary_drag_begin(self, ctx: 'PointerToolContext', x: float, y: float, modifiers: frozenset[str]) -> bool
Python
ctx: 'PointerToolContext'
modifiers: frozenset[str]
self: (unannotated)
x: float
y: float

lsdtools.extend.ViewerDataEditorTool.on_primary_drag_update#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:2071.

Python
on_primary_drag_update(self, ctx: 'PointerToolContext', x: float, y: float, modifiers: frozenset[str]) -> None
Python
ctx: 'PointerToolContext'
modifiers: frozenset[str]
self: (unannotated)
x: float
y: float

lsdtools.extend.ViewerDataEditorTool.on_primary_drag_end#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:2088.

Python
on_primary_drag_end(self, ctx: 'PointerToolContext', x: float, y: float, dragged: bool, modifiers: frozenset[str]) -> bool
Python
ctx: 'PointerToolContext'
dragged: bool
modifiers: frozenset[str]
self: (unannotated)
x: float
y: float

lsdtools.extend.ViewerDataEditorTool.on_primary_drag_cancel#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:2123.

Python
on_primary_drag_cancel(self, ctx: 'PointerToolContext', reason: str, x: float, y: float, modifiers: frozenset[str]) -> None
Python
ctx: 'PointerToolContext'
modifiers: frozenset[str]
reason: str
self: (unannotated)
x: float
y: float

lsdtools.extend.ViewerDataEditorTool.on_primary_click#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:2144.

Python
on_primary_click(self, ctx: 'PointerToolContext', x: float, y: float) -> bool
Python
ctx: 'PointerToolContext'
self: (unannotated)
x: float
y: float

lsdtools.extend.ViewerDataEditorTool.on_secondary_click#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:2209.

Python
on_secondary_click(self, ctx: 'PointerToolContext', x: float, y: float) -> bool
Python
ctx: 'PointerToolContext'
self: (unannotated)
x: float
y: float

lsdtools.extend.ViewerDataEditorTool.on_hover#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:2221.

Python
on_hover(self, ctx: 'PointerToolContext', x: float, y: float) -> None
Python
ctx: 'PointerToolContext'
self: (unannotated)
x: float
y: float

lsdtools.extend.ViewerDataEditorTool.on_hover_leave#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:2229.

Python
on_hover_leave(self, ctx: 'PointerToolContext', reason: str) -> None
Python
ctx: 'PointerToolContext'
reason: str
self: (unannotated)

lsdtools.extend.ViewerDataEditorTool.on_key#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:2240.

Python
on_key(self, ctx: 'PointerToolContext', keyval: int) -> bool
Python
ctx: 'PointerToolContext'
keyval: int
self: (unannotated)

lsdtools.extend.ViewerDataEditorTool.prompt#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:2263.

Python
prompt(self, ctx: 'PointerToolContext') -> PointerToolPrompt
Python
ctx: 'PointerToolContext'
self: (unannotated)

lsdtools.extend.ViewerDataEditorTool.describe_context#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:2277.

Python
describe_context(self, ctx: 'PointerToolContext') -> Mapping[str, Any]
Python
ctx: 'PointerToolContext'
self: (unannotated)

lsdtools.extend.ViewerDataEditorTool.on_edit_batch_changed#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:2291.

Python
on_edit_batch_changed(self, ctx: 'PointerToolContext', event: str) -> None
Python
ctx: 'PointerToolContext'
event: str
self: (unannotated)

lsdtools.extend.ViewerDataEditorTool.notify_edit_batch_changed#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:2294.

Python
notify_edit_batch_changed(self, ctx: 'PointerToolContext', event: str) -> None
Python
ctx: 'PointerToolContext'
event: str
self: (unannotated)

lsdtools.extend.ViewerDataEditorToolPurpose#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:200.

Source docstring:

text
Closed spatial capabilities; object Properties is not a spatial tool.

``CREATE_OBJECT`` uses a visual gesture to author a new canonical object.
``EDIT_SELECTION`` visually changes host-owned spatial targets.
``SELECT_TARGETS`` prepares targets for a spatial operation (for example,
rectangle selection for point cleanup); it never opens a property form.
The host owns target identity and selection gestures, not the package.

Hosts derive presentation from this value. Packages never choose a CSS
class or colour: create is cyan, while an armed selection edit uses the
shared blue pointer treatment inside the red Edit workspace.

Implementation alias: lsd.packages.viewer_extensions.ViewerDataEditorToolPurpose.

Declared bases: str, Enum.

lsdtools.extend.ViewerDataEditorToolPurpose.CREATE_OBJECT#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:214.

Python
CREATE_OBJECT = 'create_object'

lsdtools.extend.ViewerDataEditorToolPurpose.EDIT_SELECTION#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:215.

Python
EDIT_SELECTION = 'edit_selection'

lsdtools.extend.ViewerDataEditorToolPurpose.SELECT_TARGETS#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:216.

Python
SELECT_TARGETS = 'select_targets'

lsdtools.extend.ViewerDataEditorWorkingGeometry#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1541.

Source docstring:

text
One renderer-neutral part of an editor's complete working layer.

``LINES`` consumes an immutable ``pyarrow.Table`` with canonical
``line_id, vertex_index, x, y, z`` columns. ``POINTS`` consumes one row per
feature with canonical ``point_id, x, y, z`` columns. ``OBJECTS`` consumes
the authored-object overlay documented by
:class:`ViewerDataEditorWorkingGeometryKind`; it is accepted only as the
sole geometry replacing a committed ``runtime_objects`` layer. These kinds
accept only their documented optional columns. The core contract
intentionally keeps the table opaque so it does not import PyArrow or a
renderer; the host compiler validates the exact schema before any
committed geometry is hidden.

Implementation alias: lsd.packages.viewer_extensions.ViewerDataEditorWorkingGeometry.

lsdtools.extend.ViewerDataEditorWorkingGeometry.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1556.

Python
id: str

lsdtools.extend.ViewerDataEditorWorkingGeometry.kind#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1557.

Python
kind: ViewerDataEditorWorkingGeometryKind

lsdtools.extend.ViewerDataEditorWorkingGeometry.table#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1558.

Python
table: Any
Python
table = field(compare=False, repr=False)

lsdtools.extend.ViewerDataEditorWorkingGeometry.as_dict#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1568.

Python
as_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ViewerDataEditorWorkingGeometryKind#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:286.

Source docstring:

text
Efficient host-compiled geometry accepted from a working-table projector.

``LINES``, ``POINTS`` and ``OBJECTS`` are exact canonical Arrow contracts
owned by Viewer3D. They retain stable ``line_id`` / ``point_id`` / ``eid``
identity while the host compiles bounded renderer batches. ``OBJECTS`` is
a semantic authored-object overlay with one row per object or group. It
requires unique ``oid`` text and accepts ``archetype, name, parent_oid,
x, y, z, qx, qy, qz, qw, shape, ex, ey, ez, sx, sy, sz, mesh, shader,
enabled``
plus any other resident feature-reference columns. ``eid``, ``scene_id``
and built-vector columns remain host-owned even when they participate in
that reference. Missing
optional values retain the committed value for an existing ``(archetype,
oid)`` identity and use documented runtime-object defaults for a new one.
Viewer3D inherits ``eid``, ``scene_id``, renderer configuration and
camera/actor rows from the committed ``runtime_objects`` layer; new rows
receive working-local negative ``eid`` values. Thus a projector supplies
no built-table identity, renderer paths, or private runtime state.

A package cannot use an arbitrary geometry label here: new kinds require
an equally strict public table contract, renderer compiler,
addressability, and interaction tests.

Implementation alias: lsd.packages.viewer_extensions.ViewerDataEditorWorkingGeometryKind.

Declared bases: str, Enum.

lsdtools.extend.ViewerDataEditorWorkingGeometryKind.LINES#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:311.

Python
LINES = 'lines'

lsdtools.extend.ViewerDataEditorWorkingGeometryKind.POINTS#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:312.

Python
POINTS = 'points'

lsdtools.extend.ViewerDataEditorWorkingGeometryKind.OBJECTS#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:313.

Python
OBJECTS = 'objects'

lsdtools.extend.ViewerDataEditorWorkingLayerContext#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1628.

Source docstring:

text
Pinned input to one package working-table projection.

The host chooses the actor and supplies that actor's current table.  A
projector cannot retarget the edit, reach the viewer, or receive toolkit
objects.  ``resident_generation`` and the batch pair are observation
fences; Viewer3D rechecks all three before adopting the result.

Implementation alias: lsd.packages.viewer_extensions.ViewerDataEditorWorkingLayerContext.

lsdtools.extend.ViewerDataEditorWorkingLayerContext.table#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1637.

Python
table: Any
Python
table = field(compare=False, repr=False)

lsdtools.extend.ViewerDataEditorWorkingLayerContext.editor_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1638.

Python
editor_id: str

lsdtools.extend.ViewerDataEditorWorkingLayerContext.target_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1639.

Python
target_id: str

lsdtools.extend.ViewerDataEditorWorkingLayerContext.layer_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1640.

Python
layer_id: str

lsdtools.extend.ViewerDataEditorWorkingLayerContext.feature_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1641.

Python
feature_id: Any

lsdtools.extend.ViewerDataEditorWorkingLayerContext.feature_kind#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1642.

Python
feature_kind: str

lsdtools.extend.ViewerDataEditorWorkingLayerContext.resident_generation#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1643.

Python
resident_generation: int

lsdtools.extend.ViewerDataEditorWorkingLayerContext.batch_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1644.

Python
batch_id: str

lsdtools.extend.ViewerDataEditorWorkingLayerContext.batch_revision#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1645.

Python
batch_revision: int

lsdtools.extend.ViewerDataEditorWorkingLayerContext.related_tables#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1648.

Python
related_tables: Mapping[str, Any]
Python
related_tables = field(default_factory=dict, compare=False, repr=False)

lsdtools.extend.ViewerDataEditorWorkingLayerModel#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1576.

Source docstring:

text
Immutable complete replacement for one actor-local working layer.

This is scene geometry, not a gizmo: it follows the staged table across
undo/redo/discard and is never mounted in the manipulator overlay.  An
empty ``geometries`` tuple explicitly means that the working layer is
empty, so deleting its final feature cannot reveal stale committed data.
``feature_reference`` is layer-wide (not repeated on render parts), which
lets an empty model still perform the exact semantic-identity handshake
with the committed layer it replaces.

Implementation alias: lsd.packages.viewer_extensions.ViewerDataEditorWorkingLayerModel.

lsdtools.extend.ViewerDataEditorWorkingLayerModel.revision#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1588.

Python
revision: int

lsdtools.extend.ViewerDataEditorWorkingLayerModel.geometries#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1589.

Python
geometries: tuple[ViewerDataEditorWorkingGeometry, ...]

lsdtools.extend.ViewerDataEditorWorkingLayerModel.feature_reference#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1590.

Python
feature_reference: ViewerFeatureReferenceSpec | None

lsdtools.extend.ViewerDataEditorWorkingLayerModel.as_dict#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1616.

Python
as_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ViewerDataEditorWorkingLayerSpec#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1687.

Source docstring:

text
Pure projector for the complete actor-local table shown while editing.

``project(context)`` returns one exact
:class:`ViewerDataEditorWorkingLayerModel`. Viewer3D owns compilation,
committed-layer suppression, picking identity, remounts, and teardown.

Implementation alias: lsd.packages.viewer_extensions.ViewerDataEditorWorkingLayerSpec.

lsdtools.extend.ViewerDataEditorWorkingLayerSpec.project#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1695.

Python
project: Callable[[ViewerDataEditorWorkingLayerContext], ViewerDataEditorWorkingLayerModel]
Python
project = field(compare=False, repr=False)

lsdtools.extend.ViewerDatasetActionRole#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:243.

Source docstring:

text
Semantic consequence of one host-rendered dataset action.

``ADD`` and ``REMOVE`` receive the shared creation/removal palette in every
Viewer host. ``UPDATE`` deliberately stays neutral: property application,
transforms, undo-like restoration, and other changes must not masquerade
as creation or deletion.

Implementation alias: lsd.packages.viewer_extensions.ViewerDatasetActionRole.

Declared bases: str, Enum.

lsdtools.extend.ViewerDatasetActionRole.ADD#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:252.

Python
ADD = 'add'

lsdtools.extend.ViewerDatasetActionRole.REMOVE#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:253.

Python
REMOVE = 'remove'

lsdtools.extend.ViewerDatasetActionRole.UPDATE#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:254.

Python
UPDATE = 'update'

lsdtools.extend.ViewerDiagnostic#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2656.

Implementation alias: lsd.packages.viewer_extensions.ViewerDiagnostic.

lsdtools.extend.ViewerDiagnostic.severity#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2657.

Python
severity: DiagnosticSeverity

lsdtools.extend.ViewerDiagnostic.code#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2658.

Python
code: str

lsdtools.extend.ViewerDiagnostic.message#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2659.

Python
message: str

lsdtools.extend.ViewerDiagnostic.subjects#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2660.

Python
subjects: tuple[str, ...]
Python
subjects = ()

lsdtools.extend.ViewerEventSpec#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2492.

Implementation alias: lsd.packages.viewer_extensions.ViewerEventSpec.

lsdtools.extend.ViewerEventSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2493.

Python
id: OwnedContributionId

lsdtools.extend.ViewerEventSpec.topic#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2494.

Python
topic: str

lsdtools.extend.ViewerEventSpec.payload#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2495.

Python
payload: str

lsdtools.extend.ViewerEventSpec.version#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2496.

Python
version: int
Python
version = 1

lsdtools.extend.ViewerEventSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2497.

Python
title: str
Python
title = ''

lsdtools.extend.ViewerExtensionSpec#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2508.

Source docstring:

text
One package-owned composition unit for one or more viewer kinds.

Implementation alias: lsd.packages.viewer_extensions.ViewerExtensionSpec.

lsdtools.extend.ViewerExtensionSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2511.

Python
id: OwnedContributionId

lsdtools.extend.ViewerExtensionSpec.semantics#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2512.

Python
semantics: ExtensionSemantics

lsdtools.extend.ViewerExtensionSpec.viewer_kinds#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2513.

Python
viewer_kinds: tuple[str, ...]

lsdtools.extend.ViewerExtensionSpec.provider#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2514.

Python
provider: ViewerProviderSpec | None
Python
provider = None

lsdtools.extend.ViewerExtensionSpec.augments#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2515.

Python
augments: tuple[Capability, ...]
Python
augments = ()

lsdtools.extend.ViewerExtensionSpec.requires#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2516.

Python
requires: tuple[Capability, ...]
Python
requires = ()

lsdtools.extend.ViewerExtensionSpec.pointer_tools#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2517.

Python
pointer_tools: tuple[ViewerPointerToolSpec, ...]
Python
pointer_tools = ()

lsdtools.extend.ViewerExtensionSpec.visualization_tools#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2518.

Python
visualization_tools: tuple[ViewerVisualizationToolSpec, ...]
Python
visualization_tools = ()

lsdtools.extend.ViewerExtensionSpec.data_editors#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2519.

Python
data_editors: tuple[ViewerDataEditorSpec, ...]
Python
data_editors = ()

lsdtools.extend.ViewerExtensionSpec.surfaces#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2520.

Python
surfaces: tuple[ViewerSurfaceSpec, ...]
Python
surfaces = ()

lsdtools.extend.ViewerExtensionSpec.gizmos#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2521.

Python
gizmos: tuple[ViewerGizmoSpec, ...]
Python
gizmos = ()

lsdtools.extend.ViewerExtensionSpec.commands#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2522.

Python
commands: tuple[ViewerCommandSpec, ...]
Python
commands = ()

lsdtools.extend.ViewerExtensionSpec.events#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2523.

Python
events: tuple[ViewerEventSpec, ...]
Python
events = ()

lsdtools.extend.ViewerFeatureReferenceSpec#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:317.

Source docstring:

text
Typed form of the public v1 ``feature_reference`` descriptor.

Working geometry uses the exact descriptor declared by the committed
layer it replaces. This keeps renderer-local feature ids separate from
the package's durable semantic identity.

Implementation alias: lsd.packages.viewer_extensions.ViewerFeatureReferenceSpec.

lsdtools.extend.ViewerFeatureReferenceSpec.version#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:325.

Python
version: int

lsdtools.extend.ViewerFeatureReferenceSpec.namespace#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:326.

Python
namespace: str

lsdtools.extend.ViewerFeatureReferenceSpec.feature_id_column#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:327.

Python
feature_id_column: str

lsdtools.extend.ViewerFeatureReferenceSpec.reference_columns#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:328.

Python
reference_columns: tuple[str, ...]

lsdtools.extend.ViewerFeatureReferenceSpec.as_dict#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:379.

Python
as_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ViewerGizmoDepthMode#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:412.

Source docstring:

text
How world-space gizmo geometry composes with scene depth.

Implementation alias: lsd.packages.viewer_extensions.ViewerGizmoDepthMode.

Declared bases: str, Enum.

lsdtools.extend.ViewerGizmoDepthMode.TESTED#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:415.

Python
TESTED = 'tested'

lsdtools.extend.ViewerGizmoDepthMode.XRAY#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:416.

Python
XRAY = 'xray'

lsdtools.extend.ViewerGizmoDepthMode.OCCLUDED_FADE#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:417.

Python
OCCLUDED_FADE = 'occluded_fade'

lsdtools.extend.ViewerGizmoLayer#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:402.

Source docstring:

text
Semantic compositing order, independent of renderer-specific z values.

Implementation alias: lsd.packages.viewer_extensions.ViewerGizmoLayer.

Declared bases: str, Enum.

lsdtools.extend.ViewerGizmoLayer.PASSIVE_GUIDE#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:405.

Python
PASSIVE_GUIDE = 'passive_guide'

lsdtools.extend.ViewerGizmoLayer.SELECTION#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:406.

Python
SELECTION = 'selection'

lsdtools.extend.ViewerGizmoLayer.MANIPULATOR#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:407.

Python
MANIPULATOR = 'manipulator'

lsdtools.extend.ViewerGizmoLayer.MODAL#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:408.

Python
MODAL = 'modal'

lsdtools.extend.ViewerGizmoLayer.HUD#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:409.

Python
HUD = 'hud'

lsdtools.extend.ViewerGizmoRole#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:395.

Source docstring:

text
Whether a gizmo only communicates state or can capture input.

Implementation alias: lsd.packages.viewer_extensions.ViewerGizmoRole.

Declared bases: str, Enum.

lsdtools.extend.ViewerGizmoRole.PASSIVE#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:398.

Python
PASSIVE = 'passive'

lsdtools.extend.ViewerGizmoRole.MANIPULATOR#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:399.

Python
MANIPULATOR = 'manipulator'

lsdtools.extend.ViewerGizmoSpec#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2347.

Source docstring:

text
Package declaration for one passive visual or tool-owned manipulator.

``owning_tool`` may name a pointer tool, data editor, or visualization
tool in the same resolved viewer plan. The viewer host, not the package,
derives visibility and input eligibility from that owner's lifecycle.

Implementation alias: lsd.packages.viewer_extensions.ViewerGizmoSpec.

lsdtools.extend.ViewerGizmoSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2355.

Python
id: OwnedContributionId

lsdtools.extend.ViewerGizmoSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2356.

Python
title: str

lsdtools.extend.ViewerGizmoSpec.role#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2357.

Python
role: ViewerGizmoRole

lsdtools.extend.ViewerGizmoSpec.owning_tool#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2358.

Python
owning_tool: OwnedContributionId | None
Python
owning_tool = None

lsdtools.extend.ViewerGizmoSpec.requires#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2359.

Python
requires: tuple[Capability, ...]
Python
requires = ()

lsdtools.extend.ViewerGizmoSpec.default_visible#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2360.

Python
default_visible: bool
Python
default_visible = True

lsdtools.extend.ViewerGizmoSpec.layer#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2361.

Python
layer: ViewerGizmoLayer
Python
layer = ViewerGizmoLayer.PASSIVE_GUIDE

lsdtools.extend.ViewerGizmoSpec.depth_mode#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2365.

Python
depth_mode: ViewerGizmoDepthMode
Python
depth_mode = ViewerGizmoDepthMode.XRAY

lsdtools.extend.ViewerGizmoSpec.factory#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2366.

Python
factory: RuntimeFactory | None
Python
factory = field(default=None, compare=False, repr=False)

lsdtools.extend.ViewerLayoutEntry#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2621.

Source docstring:

text
User/project layout state retained even while its package is absent.

Implementation alias: lsd.packages.viewer_extensions.ViewerLayoutEntry.

lsdtools.extend.ViewerLayoutEntry.surface_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2624.

Python
surface_id: OwnedContributionId

lsdtools.extend.ViewerLayoutEntry.region#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2625.

Python
region: str | None
Python
region = None

lsdtools.extend.ViewerLayoutEntry.position#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2626.

Python
position: int | None
Python
position = None

lsdtools.extend.ViewerLayoutEntry.visible#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2627.

Python
visible: bool | None
Python
visible = None

lsdtools.extend.ViewerLayoutEntry.collapsed#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2628.

Python
collapsed: bool | None
Python
collapsed = None

lsdtools.extend.ViewerLayoutEntry.state#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2629.

Python
state: tuple[tuple[str, LayoutScalar], ...]
Python
state = ()

lsdtools.extend.ViewerObjectRef#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:602.

Source docstring:

text
One detached, generation-qualified viewer-object identity.

``reference`` is the package-declared semantic feature reference when the
layer publishes one.  ``feature_id`` remains the exact resident address
used for this materialization.  Neither value exposes a renderer node.

Implementation alias: lsd.packages.viewer_extensions.ViewerObjectRef.

lsdtools.extend.ViewerObjectRef.layer_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:610.

Python
layer_id: str

lsdtools.extend.ViewerObjectRef.generation#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:611.

Python
generation: int

lsdtools.extend.ViewerObjectRef.feature_id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:612.

Python
feature_id: Any

lsdtools.extend.ViewerObjectRef.feature_kind#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:613.

Python
feature_kind: str
Python
feature_kind = ''

lsdtools.extend.ViewerObjectRef.feature_namespace#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:614.

Python
feature_namespace: str
Python
feature_namespace = ''

lsdtools.extend.ViewerObjectRef.reference#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:615.

Python
reference: Mapping[str, Any] | tuple[tuple[str, Any], ...]
Python
reference = ()

lsdtools.extend.ViewerObjectRef.MAX_TEXT_BYTES#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:621.

Python
MAX_TEXT_BYTES: ClassVar[int]
Python
MAX_TEXT_BYTES = 256

lsdtools.extend.ViewerObjectRef.MAX_FEATURE_ID_BYTES#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:622.

Python
MAX_FEATURE_ID_BYTES: ClassVar[int]
Python
MAX_FEATURE_ID_BYTES = 2048

lsdtools.extend.ViewerObjectRef.MAX_REFERENCE_BYTES#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:623.

Python
MAX_REFERENCE_BYTES: ClassVar[int]
Python
MAX_REFERENCE_BYTES = 4096

lsdtools.extend.ViewerObjectRef.MAX_DOCUMENT_BYTES#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:624.

Python
MAX_DOCUMENT_BYTES: ClassVar[int]
Python
MAX_DOCUMENT_BYTES = 8192

lsdtools.extend.ViewerObjectRef.MAX_REFERENCE_FIELDS#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:625.

Python
MAX_REFERENCE_FIELDS: ClassVar[int]
Python
MAX_REFERENCE_FIELDS = 32

lsdtools.extend.ViewerObjectRef.MAX_REFERENCE_KEY_BYTES#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:626.

Python
MAX_REFERENCE_KEY_BYTES: ClassVar[int]
Python
MAX_REFERENCE_KEY_BYTES = 128

lsdtools.extend.ViewerObjectRef.MAX_GENERATION#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:627.

Python
MAX_GENERATION: ClassVar[int]
Python
MAX_GENERATION = (1 << 63) - 1

lsdtools.extend.ViewerObjectRef.identity_key#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:726.

Python
identity_key(self) -> str
Python
self: (unannotated)

Source docstring:

text
Canonical object identity, independent of its visual representation.

A declared namespace plus complete semantic reference is the object.
Layer, generation, feature id, renderer kind, and representation are
materialization details. Untyped legacy residents remain addressable by
their exact resident key, but they cannot participate in object-level
Properties or contributed object edit tools.

lsdtools.extend.ViewerObjectRef.resident_key#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:750.

Python
resident_key(self) -> str
Python
self: (unannotated)

Source docstring:

text
Exact address of this representation in one scene generation.

lsdtools.extend.ViewerObjectRef.as_dict#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:763.

Python
as_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.ViewerPointerTool#

Kind: class. Source: views/viewer3d/src/lsd_viewer/states/tool.py:88.

Python
ViewerPointerTool(self) -> None

Source docstring:

text
Behavior owned by one exclusive viewport pointer lease.

Package factories may return a duck-typed implementation; inheriting this
class is convenient for product-owned tools but is not part of package
discovery.  All hooks are invoked only while this tool is the sole owner.

Implementation alias: lsd_viewer.states.tool.ViewerPointerTool.

lsdtools.extend.ViewerPointerTool.tool_id#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/tool.py:96.

Python
tool_id: str
Python
tool_id = ''

lsdtools.extend.ViewerPointerTool.title#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/tool.py:97.

Python
title: str
Python
title = ''

lsdtools.extend.ViewerPointerTool.icon#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/tool.py:98.

Python
icon: str
Python
icon = 'lsd-tool-symbolic'

lsdtools.extend.ViewerPointerTool.__init__#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:100.

Python
__init__(self) -> None
Python
self: (unannotated)

lsdtools.extend.ViewerPointerTool.display_title#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:104.

Python
display_title(self) -> str
Python
self: (unannotated)

lsdtools.extend.ViewerPointerTool.can_activate#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:107.

Python
can_activate(self, ctx: 'PointerToolContext') -> Tuple[bool, str]
Python
ctx: 'PointerToolContext'
self: (unannotated)

lsdtools.extend.ViewerPointerTool.on_activate#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:110.

Python
on_activate(self, ctx: 'PointerToolContext') -> None
Python
ctx: 'PointerToolContext'
self: (unannotated)

Source docstring:

text
Acquire gizmos, keys, and contextual UI through ``ctx``.

lsdtools.extend.ViewerPointerTool.on_deactivate#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:113.

Python
on_deactivate(self, ctx: 'PointerToolContext') -> None
Python
ctx: 'PointerToolContext'
self: (unannotated)

Source docstring:

text
Release semantic state before the context tears resources down.

lsdtools.extend.ViewerPointerTool.on_params#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:116.

Python
on_params(self, ctx: 'PointerToolContext', **params: object) -> None
Python
ctx: 'PointerToolContext'
params: object
self: (unannotated)

lsdtools.extend.ViewerPointerTool.on_primary_click#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:122.

Python
on_primary_click(self, ctx: 'PointerToolContext', x: float, y: float) -> bool
Python
ctx: 'PointerToolContext'
self: (unannotated)
x: float
y: float

Source docstring:

text
Interpret one primary click. There is no fallback to another tool.

lsdtools.extend.ViewerPointerTool.on_secondary_click#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:126.

Python
on_secondary_click(self, ctx: 'PointerToolContext', x: float, y: float) -> bool
Python
ctx: 'PointerToolContext'
self: (unannotated)
x: float
y: float

lsdtools.extend.ViewerPointerTool.on_hover#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:131.

Python
on_hover(self, ctx: 'PointerToolContext', x: float, y: float) -> None
Python
ctx: 'PointerToolContext'
self: (unannotated)
x: float
y: float

lsdtools.extend.ViewerPointerTool.on_hover_leave#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:134.

Python
on_hover_leave(self, ctx: 'PointerToolContext', reason: str) -> None
Python
ctx: 'PointerToolContext'
reason: str
self: (unannotated)

Source docstring:

text
Clear transient hover when another pointer owner takes precedence.

lsdtools.extend.ViewerPointerTool.on_primary_drag_begin#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:140.

Python
on_primary_drag_begin(self, ctx: 'PointerToolContext', x: float, y: float, modifiers: frozenset[str]) -> bool
Python
ctx: 'PointerToolContext'
modifiers: frozenset[str]
self: (unannotated)
x: float
y: float

Source docstring:

text
Claim an otherwise camera-owned primary drag, if applicable.

lsdtools.extend.ViewerPointerTool.on_primary_drag_update#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:150.

Python
on_primary_drag_update(self, ctx: 'PointerToolContext', x: float, y: float, modifiers: frozenset[str]) -> None
Python
ctx: 'PointerToolContext'
modifiers: frozenset[str]
self: (unannotated)
x: float
y: float

lsdtools.extend.ViewerPointerTool.on_primary_drag_end#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:159.

Python
on_primary_drag_end(self, ctx: 'PointerToolContext', x: float, y: float, dragged: bool, modifiers: frozenset[str]) -> bool
Python
ctx: 'PointerToolContext'
dragged: bool
modifiers: frozenset[str]
self: (unannotated)
x: float
y: float

lsdtools.extend.ViewerPointerTool.on_primary_drag_cancel#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:169.

Python
on_primary_drag_cancel(self, ctx: 'PointerToolContext', reason: str, x: float, y: float, modifiers: frozenset[str]) -> None
Python
ctx: 'PointerToolContext'
modifiers: frozenset[str]
reason: str
self: (unannotated)
x: float
y: float

lsdtools.extend.ViewerPointerTool.on_key#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:179.

Python
on_key(self, ctx: 'PointerToolContext', keyval: int) -> bool
Python
ctx: 'PointerToolContext'
keyval: int
self: (unannotated)

lsdtools.extend.ViewerPointerTool.prompt#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:182.

Python
prompt(self, ctx: 'PointerToolContext') -> PointerToolPrompt
Python
ctx: 'PointerToolContext'
self: (unannotated)

lsdtools.extend.ViewerPointerTool.build_context_controls#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:188.

Python
build_context_controls(self, ctx: 'PointerToolContext') -> Any
Python
ctx: 'PointerToolContext'
self: (unannotated)

Source docstring:

text
Optional fresh control row shown only while this tool owns input.

lsdtools.extend.ViewerPointerTool.describe_context#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:192.

Python
describe_context(self, ctx: 'PointerToolContext') -> Mapping[str, Any]
Python
ctx: 'PointerToolContext'
self: (unannotated)

lsdtools.extend.ViewerPointerTool.ctx#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/tool.py:101.

Python
ctx: Optional['PointerToolContext']
Python
ctx = None

lsdtools.extend.ViewerPointerToolSpec#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:538.

Source docstring:

text
One package-contributed, exclusive primary-pointer interaction.

Viewer3D always owns the Mouse/Navigate fallback.  A contributed pointer
tool temporarily replaces that fallback and is the *only* recipient of
primary clicks, actionable hover, keyboard shortcuts, and manipulator
gizmos. Persistent semantic visualization belongs to
:class:`ViewerVisualizationToolSpec` and may stack independently of this
tool.

Data editors do not use this declaration.  They are selected through the
single data-editor workspace and acquire the same exclusive pointer lease
only while their red Edit control is active.

Implementation alias: lsd.packages.viewer_extensions.ViewerPointerToolSpec.

lsdtools.extend.ViewerPointerToolSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:553.

Python
id: OwnedContributionId

lsdtools.extend.ViewerPointerToolSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:554.

Python
title: str

lsdtools.extend.ViewerPointerToolSpec.icon#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:555.

Python
icon: str

lsdtools.extend.ViewerPointerToolSpec.requires#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:556.

Python
requires: tuple[Capability, ...]
Python
requires = ()

lsdtools.extend.ViewerPointerToolSpec.visible_in_toolbar#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:557.

Python
visible_in_toolbar: bool
Python
visible_in_toolbar = True

lsdtools.extend.ViewerPointerToolSpec.factory#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:558.

Python
factory: RuntimeFactory | None
Python
factory = field(default=None, compare=False, repr=False)

lsdtools.extend.ViewerProviderSpec#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:519.

Implementation alias: lsd.packages.viewer_extensions.ViewerProviderSpec.

lsdtools.extend.ViewerProviderSpec.capability#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:520.

Python
capability: Capability

lsdtools.extend.ViewerProviderSpec.default#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:521.

Python
default: bool
Python
default = False

lsdtools.extend.ViewerProviderSpec.replaces#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:522.

Python
replaces: tuple[OwnedContributionId, ...]
Python
replaces = ()

lsdtools.extend.ViewerProviderSpec.requires#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:523.

Python
requires: tuple[Capability, ...]
Python
requires = ()

lsdtools.extend.ViewerProviderSpec.factory#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:524.

Python
factory: RuntimeFactory | None
Python
factory = field(default=None, compare=False, repr=False)

lsdtools.extend.ViewerSurfaceAnchor#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:485.

Source docstring:

text
Stable ordering target published by a surface.

A capability anchor follows whichever provider a project selects.  This is
what lets an augmenter place itself next to either the built-in section
tool or a replacement without naming either package.

Implementation alias: lsd.packages.viewer_extensions.ViewerSurfaceAnchor.

lsdtools.extend.ViewerSurfaceAnchor.key#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:493.

Python
key: str

lsdtools.extend.ViewerSurfaceAnchor.surface#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:500.

Python
surface(cls, contribution_id: OwnedContributionId) -> 'ViewerSurfaceAnchor'
Python
cls: (unannotated)
contribution_id: OwnedContributionId

lsdtools.extend.ViewerSurfaceAnchor.capability#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:504.

Python
capability(cls, capability: Capability, point: str='primary') -> 'ViewerSurfaceAnchor'
Python
capability: Capability
cls: (unannotated)
point: str

lsdtools.extend.ViewerSurfaceAnchor.named#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:511.

Python
named(cls, name: str) -> 'ViewerSurfaceAnchor'
Python
cls: (unannotated)
name: str

lsdtools.extend.ViewerSurfaceKind#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:388.

Implementation alias: lsd.packages.viewer_extensions.ViewerSurfaceKind.

Declared bases: str, Enum.

lsdtools.extend.ViewerSurfaceKind.TOOLBAR#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:389.

Python
TOOLBAR = 'toolbar'

lsdtools.extend.ViewerSurfaceKind.PANEL#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:390.

Python
PANEL = 'panel'

lsdtools.extend.ViewerSurfaceKind.OVERLAY#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:391.

Python
OVERLAY = 'overlay'

lsdtools.extend.ViewerSurfaceKind.DECORATION#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:392.

Python
DECORATION = 'decoration'

lsdtools.extend.ViewerSurfaceSpec#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2400.

Implementation alias: lsd.packages.viewer_extensions.ViewerSurfaceSpec.

lsdtools.extend.ViewerSurfaceSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2401.

Python
id: OwnedContributionId

lsdtools.extend.ViewerSurfaceSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2402.

Python
title: str

lsdtools.extend.ViewerSurfaceSpec.kind#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2403.

Python
kind: ViewerSurfaceKind

lsdtools.extend.ViewerSurfaceSpec.region#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2404.

Python
region: str

lsdtools.extend.ViewerSurfaceSpec.slot#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2405.

Python
slot: str
Python
slot = 'default'

lsdtools.extend.ViewerSurfaceSpec.role#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2406.

Python
role: str
Python
role = 'secondary'

lsdtools.extend.ViewerSurfaceSpec.default_visible#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2407.

Python
default_visible: bool
Python
default_visible = True

lsdtools.extend.ViewerSurfaceSpec.anchors#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2408.

Python
anchors: tuple[ViewerSurfaceAnchor, ...]
Python
anchors = ()

lsdtools.extend.ViewerSurfaceSpec.before#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2409.

Python
before: tuple[ViewerSurfaceAnchor, ...]
Python
before = ()

lsdtools.extend.ViewerSurfaceSpec.after#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2410.

Python
after: tuple[ViewerSurfaceAnchor, ...]
Python
after = ()

lsdtools.extend.ViewerSurfaceSpec.requires#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2411.

Python
requires: tuple[Capability, ...]
Python
requires = ()

lsdtools.extend.ViewerSurfaceSpec.command#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2412.

Python
command: str | None
Python
command = None

lsdtools.extend.ViewerSurfaceSpec.build#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2413.

Python
build: RuntimeFactory | None
Python
build = field(default=None, compare=False, repr=False)

lsdtools.extend.ViewerSurfaceSpec.resizable#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2414.

Python
resizable: bool
Python
resizable = False

lsdtools.extend.ViewerSurfaceSpec.min_size#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2415.

Python
min_size: tuple[int, int]
Python
min_size = (96, 48)

lsdtools.extend.ViewerSurfaceSpec.icon#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2416.

Python
icon: str | None
Python
icon = None

lsdtools.extend.ViewerSurfaceSpec.own_anchor#

Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2465.

Python
own_anchor(self) -> ViewerSurfaceAnchor
Python
self: (unannotated)

lsdtools.extend.ViewerVisualizationTool#

Kind: class. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:114.

Python
ViewerVisualizationTool(self) -> None

Source docstring:

text
Behavior for one independently stackable visualization effect.

Implementation alias: lsd_viewer.states.visualization.ViewerVisualizationTool.

lsdtools.extend.ViewerVisualizationTool.tool_id#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:117.

Python
tool_id = ''

lsdtools.extend.ViewerVisualizationTool.title#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:118.

Python
title = ''

lsdtools.extend.ViewerVisualizationTool.icon#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:119.

Python
icon = 'lsd-view-symbolic'

lsdtools.extend.ViewerVisualizationTool.__init__#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:121.

Python
__init__(self) -> None
Python
self: (unannotated)

lsdtools.extend.ViewerVisualizationTool.on_mount#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:124.

Python
on_mount(self, ctx: 'VisualizationToolContext') -> None
Python
ctx: 'VisualizationToolContext'
self: (unannotated)

Source docstring:

text
Acquire viewer-lifetime resources through *ctx*.

lsdtools.extend.ViewerVisualizationTool.on_unmount#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:127.

Python
on_unmount(self, ctx: 'VisualizationToolContext') -> None
Python
ctx: 'VisualizationToolContext'
self: (unannotated)

Source docstring:

text
Release semantic state before the host disposes owned resources.

lsdtools.extend.ViewerVisualizationTool.can_set_active#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:130.

Python
can_set_active(self, ctx: 'VisualizationToolContext', active: bool) -> tuple[bool, str]
Python
active: bool
ctx: 'VisualizationToolContext'
self: (unannotated)

lsdtools.extend.ViewerVisualizationTool.is_active#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:135.

Python
is_active(self, ctx: 'VisualizationToolContext') -> bool
Python
ctx: 'VisualizationToolContext'
self: (unannotated)

lsdtools.extend.ViewerVisualizationTool.set_active#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:138.

Python
set_active(self, ctx: 'VisualizationToolContext', active: bool) -> bool
Python
active: bool
ctx: 'VisualizationToolContext'
self: (unannotated)

Source docstring:

text
Apply or begin the requested state change.

Return ``True`` only when the request was accepted.  A visualization
may need to acquire the blue pointer lease before it can become active
(for example the first Section click); returning ``False`` keeps the
yellow toggle honest and lets the host expose the refusal.

lsdtools.extend.ViewerVisualizationTool.on_refresh#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:148.

Python
on_refresh(self, ctx: 'VisualizationToolContext') -> None
Python
ctx: 'VisualizationToolContext'
self: (unannotated)

Source docstring:

text
Reconcile package-owned affordances after provider/pointer changes.

lsdtools.extend.ViewerVisualizationTool.controls#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:151.

Python
controls(self, ctx: 'VisualizationToolContext') -> tuple[VisualizationToolControl, ...]
Python
ctx: 'VisualizationToolContext'
self: (unannotated)

Source docstring:

text
Return controls the host keeps directly below the parent tool.

lsdtools.extend.ViewerVisualizationTool.describe_context#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:157.

Python
describe_context(self, ctx: 'VisualizationToolContext') -> Mapping[str, Any]
Python
ctx: 'VisualizationToolContext'
self: (unannotated)

lsdtools.extend.ViewerVisualizationTool.ctx#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:122.

Python
ctx: Optional[VisualizationToolContext]
Python
ctx = None

lsdtools.extend.ViewerVisualizationToolSpec#

Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:573.

Source docstring:

text
One independently stackable semantic viewer-state contribution.

Visualization tools change how resident data is presented and may remain
active together. They never interpret primary input themselves. A package
that needs a short click phase declares a separate hidden
:class:`ViewerPointerToolSpec`, which the visualization runtime may request
through the host's exclusive pointer gate.

Implementation alias: lsd.packages.viewer_extensions.ViewerVisualizationToolSpec.

lsdtools.extend.ViewerVisualizationToolSpec.id#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:583.

Python
id: OwnedContributionId

lsdtools.extend.ViewerVisualizationToolSpec.title#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:584.

Python
title: str

lsdtools.extend.ViewerVisualizationToolSpec.icon#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:585.

Python
icon: str

lsdtools.extend.ViewerVisualizationToolSpec.requires#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:586.

Python
requires: tuple[Capability, ...]
Python
requires = ()

lsdtools.extend.ViewerVisualizationToolSpec.factory#

Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:587.

Python
factory: RuntimeFactory | None
Python
factory = field(default=None, compare=False, repr=False)

lsdtools.extend.VisualizationControlKind#

Kind: class. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:30.

Source docstring:

text
Host-rendered behavior of one visualization subordinate control.

Implementation alias: lsd_viewer.states.visualization.VisualizationControlKind.

Declared bases: str, Enum.

lsdtools.extend.VisualizationControlKind.POINTER#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:33.

Python
POINTER = 'pointer'

lsdtools.extend.VisualizationControlKind.COMMAND#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:34.

Python
COMMAND = 'command'

lsdtools.extend.VisualizationToolControl#

Kind: class. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:38.

Source docstring:

text
Toolkit-neutral control rendered directly below its visualization.

A pointer control is a toggle whose active state follows the one primary
pointer lease.  A command is an ordinary one-shot button.  The viewer owns
layout, widgets, state colours, and invocation; packages provide only this
semantic projection with an exact same-package action target.

Implementation alias: lsd_viewer.states.visualization.VisualizationToolControl.

lsdtools.extend.VisualizationToolControl.id#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:47.

Python
id: str

lsdtools.extend.VisualizationToolControl.title#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:48.

Python
title: str

lsdtools.extend.VisualizationToolControl.icon#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:49.

Python
icon: str

lsdtools.extend.VisualizationToolControl.kind#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:50.

Python
kind: VisualizationControlKind

lsdtools.extend.VisualizationToolControl.target#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:51.

Python
target: str

lsdtools.extend.VisualizationToolControl.active#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:52.

Python
active: bool
Python
active = False

lsdtools.extend.VisualizationToolControl.enabled#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:53.

Python
enabled: bool
Python
enabled = True

lsdtools.extend.VisualizationToolControl.reason#

Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:54.

Python
reason: str
Python
reason = ''

lsdtools.extend.VisualizationToolControl.as_dict#

Kind: method. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:72.

Python
as_dict(self) -> dict[str, Any]
Python
self: (unannotated)

lsdtools.extend.Workspace#

Kind: class. Source: core/lsd/src/lsd/runtime/workspace.py:79.

Python
Workspace(self, *, id: Optional[str]=None, name: str='project', events: Optional[EventBus]=None, roots: Optional[List[Entity]]=None, project_semantics: Optional[ProjectSemanticsCatalog]=None) -> None

Source docstring:

text
Domain owner of one live entity forest and its event bus.

A workspace can outlive any particular execution engine.  Binding an engine
gives its entities a temporary execution association; closing that engine
removes only that association and leaves the workspace forest intact.

Implementation alias: lsd.runtime.workspace.Workspace.

lsdtools.extend.Workspace.__init__#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:87.

Python
__init__(self, *, id: Optional[str]=None, name: str='project', events: Optional[EventBus]=None, roots: Optional[List[Entity]]=None, project_semantics: Optional[ProjectSemanticsCatalog]=None) -> None
Python
events: Optional[EventBus]
id: Optional[str]
name: str
project_semantics: Optional[ProjectSemanticsCatalog]
roots: Optional[List[Entity]]
self: (unannotated)

lsdtools.extend.Workspace.id#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:134.

Python
id(self) -> str
Python
self: (unannotated)

Source docstring:

text
Stable project identity owned exclusively by this Workspace.

lsdtools.extend.Workspace.id#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:139.

Python
id(self, _value: str) -> None
Python
_value: str
self: (unannotated)

lsdtools.extend.Workspace.name#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:143.

Python
name(self) -> str
Python
self: (unannotated)

Source docstring:

text
Live project display name shared by every Workspace facade.

lsdtools.extend.Workspace.name#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:148.

Python
name(self, value: str) -> None
Python
self: (unannotated)
value: str

lsdtools.extend.Workspace.roots#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:162.

Python
roots(self) -> List[Entity]
Python
self: (unannotated)

lsdtools.extend.Workspace.events#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:166.

Python
events(self) -> EventBus
Python
self: (unannotated)

lsdtools.extend.Workspace.project_semantics#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:170.

Python
project_semantics(self) -> ProjectSemanticsCatalog
Python
self: (unannotated)

Source docstring:

text
The immutable authoritative variable/style catalog for this project.

lsdtools.extend.Workspace.project_semantics_revision#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:175.

Python
project_semantics_revision(self) -> int
Python
self: (unannotated)

lsdtools.extend.Workspace.project_styles#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:179.

Python
project_styles(self) -> ProjectStyleLibrary
Python
self: (unannotated)

Source docstring:

text
The named styles this project's layers can share.

lsdtools.extend.Workspace.replace_project_styles#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:184.

Python
replace_project_styles(self, library: ProjectStyleLibrary) -> None
Python
library: ProjectStyleLibrary
self: (unannotated)

Source docstring:

text
Install a new set of named styles and announce it.

A layer never resolves its appearance through this library at draw time
— it keeps its own complete document — so this is a notification for the
UI, not an invalidation of anything already rendered.

lsdtools.extend.Workspace.project_shaders#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:212.

Python
project_shaders(self) -> ProjectShaderLibrary
Python
self: (unannotated)

Source docstring:

text
Editable bounded shaders owned by this project.

lsdtools.extend.Workspace.replace_project_shaders#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:217.

Python
replace_project_shaders(self, library: ProjectShaderLibrary, *, expected_revision: int | None=None) -> None
Python
expected_revision: int | None
library: ProjectShaderLibrary
self: (unannotated)

Source docstring:

text
Commit one optimistic project-shader library replacement.

lsdtools.extend.Workspace.variable_concept#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:253.

Python
variable_concept(self, variable_id: str) -> Optional[VariableConcept]
Python
self: (unannotated)
variable_id: str

lsdtools.extend.Workspace.field_definition#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:257.

Python
field_definition(self, field_id: str) -> Optional[FieldDefinition]
Python
field_id: str
self: (unannotated)

lsdtools.extend.Workspace.style_definition#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:261.

Python
style_definition(self, style_id: str) -> Optional[StyleDefinition]
Python
self: (unannotated)
style_id: str

lsdtools.extend.Workspace.style_assignment#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:265.

Python
style_assignment(self, assignment_id: str) -> Optional[StyleAssignment]
Python
assignment_id: str
self: (unannotated)

lsdtools.extend.Workspace.symbology_use#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:269.

Python
symbology_use(self, use_id: str) -> Optional[SymbologyUse]
Python
self: (unannotated)
use_id: str

lsdtools.extend.Workspace.replace_project_semantics#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:273.

Python
replace_project_semantics(self, catalog: ProjectSemanticsCatalog, *, expected_revision: int) -> ProjectSemanticsChanged
Python
catalog: ProjectSemanticsCatalog
expected_revision: int
self: (unannotated)

Source docstring:

text
Atomically commit one catalog candidate based on an exact revision.

Immutable catalog builders preserve their base revision.  This method
verifies that base, advances it exactly once, publishes one immutable
fact, and returns the same typed fact to the caller.

lsdtools.extend.Workspace.engine#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:327.

Python
engine(self) -> Any
Python
self: (unannotated)

Source docstring:

text
The currently bound execution engine, if any.

lsdtools.extend.Workspace.iter_entities#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:331.

Python
iter_entities(self) -> Iterator[Entity]
Python
self: (unannotated)

Source docstring:

text
Depth-first pre-order over roots and every descendant.

lsdtools.extend.Workspace.resolve#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:337.

Python
resolve(self, reference: str) -> Optional[Entity]
Python
reference: str
self: (unannotated)

Source docstring:

text
Resolve by stable id, then by an unambiguous display name.

lsdtools.extend.Workspace.add#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:352.

Python
add(self, entity: Entity, parent: Optional[EntityReference]=None) -> 'Workspace'
Python
entity: Entity
parent: Optional[EntityReference]
self: (unannotated)

Source docstring:

text
Add a detached subtree, or re-place an existing workspace entity.

Re-adding a descendant with ``parent=None`` promotes it to a root.
Re-adding an existing root is rejected as a duplicate.

lsdtools.extend.Workspace.remove#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:413.

Python
remove(self, entity: EntityReference) -> None
Python
entity: EntityReference
self: (unannotated)

lsdtools.extend.Workspace.move#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:459.

Python
move(self, entity: EntityReference, parent: Optional[EntityReference]) -> None
Python
entity: EntityReference
parent: Optional[EntityReference]
self: (unannotated)

lsdtools.extend.Workspace.rename#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:494.

Python
rename(self, entity: EntityReference, name: str) -> Entity
Python
entity: EntityReference
name: str
self: (unannotated)

Source docstring:

text
Rename one member through the Workspace-owned domain operation.

lsdtools.extend.Workspace.replace#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:502.

Python
replace(self, entity: EntityReference, replacement: Entity) -> Entity
Python
entity: EntityReference
replacement: Entity
self: (unannotated)

Source docstring:

text
Atomically replace one entity subtree at the same hierarchy position.

Replacement is the Workspace operation used when an unavailable package
entity is re-instantiated. Stable identity, root/child position,
Workspace ownership, EventBus propagation, and the active execution
association are preserved without exposing the backing root list.

lsdtools.extend.Workspace.reorder#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:575.

Python
reorder(self, entity: EntityReference, index: int) -> None
Python
entity: EntityReference
index: int
self: (unannotated)

Source docstring:

text
Reorder one entity among its current root or nested siblings.

lsdtools.extend.Workspace.move_up#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:597.

Python
move_up(self, entity: EntityReference) -> bool
Python
entity: EntityReference
self: (unannotated)

lsdtools.extend.Workspace.move_down#

Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:610.

Python
move_down(self, entity: EntityReference) -> bool
Python
entity: EntityReference
self: (unannotated)

lsdtools.extend.apply_column_map#

Kind: function. Source: core/lsd/src/lsd/core/columnmap.py:134.

Python
apply_column_map(table: pa.Table, resolved: Mapping[str, str], *, keep_unmapped: bool=False) -> pa.Table
Python
keep_unmapped: bool
resolved: Mapping[str, str]
table: pa.Table

Source docstring:

text
Select the mapped source columns and rename them to their targets.

With *keep_unmapped*, source columns not referenced by the map are appended unchanged (after the
mapped ones), skipping any whose name would collide with a target.

Implementation alias: lsd.core.columnmap.apply_column_map.

lsdtools.extend.assay_gradient_example#

Kind: function. Source: views/widgets/symbology/src/lsd_symbology/examples.py:57.

Python
assay_gradient_example() -> Symbology

Implementation alias: lsd_symbology.examples.assay_gradient_example.

lsdtools.extend.autoselect_largecsv_source#

Kind: function. Source: core/lsd/src/lsd/core/largecsv.py:43.

Python
autoselect_largecsv_source(source_json: str, *, accepted_kinds, threshold_bytes: Optional[int]=None) -> str
Python
accepted_kinds: (unannotated)
source_json: str
threshold_bytes: Optional[int]

Source docstring:

text
Rewrite a single-file CSV/TSV ``file`` source → a ``largecsv`` source when the file is big enough.

Returns *source_json* unchanged unless: the loader accepts ``largecsv``; the source is a ``file`` kind
resolving to exactly one ``.csv``/``.tsv``; and that file is ≥ the size threshold. The streamed file's
delimiter is inferred from its extension. Centralised so every loader/template auto-picks uniformly.

Implementation alias: lsd.core.largecsv.autoselect_largecsv_source.

lsdtools.extend.available_chart_kinds#

Kind: function. Source: views/chart/src/lsd_view_chart/registry.py:98.

Python
available_chart_kinds() -> List[str]

Source docstring:

text
The 8 built-in kinds plus every registered custom kind (for a view's ``chart_kind`` choices).

Implementation alias: lsd_view_chart.registry.available_chart_kinds.

lsdtools.extend.available_diagram_layouts#

Kind: function. Source: views/widgets/diagram/src/lsd_diagram/layout/registry.py:56.

Python
available_diagram_layouts() -> List[str]

Implementation alias: lsd_diagram.layout.registry.available_diagram_layouts.

lsdtools.extend.available_diagram_presets#

Kind: function. Source: views/widgets/diagram/src/lsd_diagram/build/domain.py:68.

Python
available_diagram_presets() -> List[str]

Implementation alias: lsd_diagram.build.domain.available_diagram_presets.

lsdtools.extend.available_feature_kinds#

Kind: function. Source: core/git/src/lsd_git/featureadapters.py:444.

Python
available_feature_kinds() -> List[str]

Source docstring:

text
Every kind that can currently be edited (for a capability listing or a refusal message).

Implementation alias: lsd_git.featureadapters.available_feature_kinds.

lsdtools.extend.available_steps#

Kind: function. Source: core/lsd/src/lsd/flow/catalog.py:14.

Python
available_steps() -> dict[str, type]

Source docstring:

text
Return a snapshot of all currently registered configurable classes.

Implementation alias: lsd.flow.catalog.available_steps.

lsdtools.extend.categories#

Kind: function. Source: core/style/src/lsd_style/model.py:361.

Python
categories(items: Sequence[Any], *, fallback: JSONValue=None) -> ValueMapping
Python
fallback: JSONValue
items: Sequence[Any]

Source docstring:

text
Build a categorical mapping from dictionaries or ``(value, output[, label])`` tuples.

Implementation alias: lsd_style.model.categories.

lsdtools.extend.classify_project_style_imports#

Kind: function. Source: core/lsd/src/lsd/project_semantics.py:920.

Python
classify_project_style_imports(catalog: ProjectSemanticsCatalog, styles: Iterable[StyleDefinition]) -> tuple[ProjectStyleImportCandidate, ...]
Python
catalog: ProjectSemanticsCatalog
styles: Iterable[StyleDefinition]

Source docstring:

text
Classify a user-selected style batch without changing project state.

A style identity is available when absent, already present only when its complete strict-v1
project record is equal, and conflicting otherwise. Input order is retained so a multi-select
dialog can bind each row to the corresponding result. Duplicate source identities are rejected
rather than silently making the first or last record authoritative.

Implementation alias: lsd.project_semantics.classify_project_style_imports.

lsdtools.extend.columnmap_param#

Kind: function. Source: core/lsd/src/lsd/core/columnmap.py:30.

Python
columnmap_param(targets: Sequence[str]=(), **kwargs) -> ParameterDescriptor
Python
kwargs: (unannotated)
targets: Sequence[str]

Source docstring:

text
A ``str`` param carrying a column map. *targets* seed the editor's rows (e.g. ``["x","y","z"]``).

The widget hint is ``"columnmap:<t1,t2,…>"`` so the UI can pre-list the expected target columns;
blank ``targets`` gives a free-form editor.

Implementation alias: lsd.core.columnmap.columnmap_param.

lsdtools.extend.combine_tables#

Kind: function. Source: core/lsd/src/lsd/flow/combine.py:21.

Python
combine_tables(tables: List[Any], combine: str='concat') -> Any
Python
combine: str
tables: List[Any]

Source docstring:

text
Stack *tables* (a list of ``pa.Table``) into one per the *combine* mode.

Implementation alias: lsd.flow.combine.combine_tables.

lsdtools.extend.continuous#

Kind: function. Source: core/style/src/lsd_style/model.py:320.

Python
continuous(stops: Sequence[Any], *, interpolation: str='linear', clamp: bool=True, fallback: JSONValue=None) -> ValueMapping
Python
clamp: bool
fallback: JSONValue
interpolation: str
stops: Sequence[Any]

Source docstring:

text
Build a continuous mapping from ``(input, output)`` pairs or stop dictionaries.

Implementation alias: lsd_style.model.continuous.

lsdtools.extend.control_for#

Kind: function. Source: views/inspector/src/lsd_view_inspector/inspector.py:66.

Python
control_for(info: ParameterInfo) -> FormControl
Python
info: ParameterInfo

Source docstring:

text
Return the appropriate ``FormControl`` for a ``ParameterInfo``.

Implementation alias: lsd_view_inspector.inspector.control_for.

lsdtools.extend.convert_csv_to_parquet#

Kind: function. Source: core/lsd/src/lsd/core/largecsv.py:193.

Python
convert_csv_to_parquet(csv: str, out: str, *, columns: str='', row_filter: str='', max_rows: int=0, delimiter: str=',', block_size: int=0, progress: Optional[Callable[[int, int, int], None]]=None) -> Dict[str, Any]
Python
block_size: int
columns: str
csv: str
delimiter: str
max_rows: int
out: str
progress: Optional[Callable[[int, int, int], None]]
row_filter: str

Source docstring:

text
Stream *csv* → Parquet *out*, projecting *columns*, filtering rows, capping at *max_rows*.

``progress(rows_done, bytes_read, total_bytes)`` is called per batch (best-effort byte position); if it
returns ``False`` the conversion stops early and the result is flagged ``complete=False`` (the caller
should discard the partial output). Returns ``{"rows", "path", "complete"}``. Bounded memory: batches are
read, filtered, projected, and written one at a time.

Implementation alias: lsd.core.largecsv.convert_csv_to_parquet.

lsdtools.extend.default_symbology#

Kind: function. Source: core/lsd/src/lsd/symbology/defaults.py:229.

Python
default_symbology(kind: str, *, field_name: str='', field_kind: str='', profile: Any=None, family: Optional[str]=None, role: Optional[str]=None, title: str='') -> Symbology
Python
family: Optional[str]
field_kind: str
field_name: str
kind: str
profile: Any
role: Optional[str]
title: str

Source docstring:

text
Return the standard appearance for one layer.

Never returns ``None``: a layer with nothing to colour by still gets an
honest Constant document, so it appears in the legend and can be edited.

Implementation alias: lsd.symbology.defaults.default_symbology.

lsdtools.extend.deliver#

Kind: function. Source: core/lsd/src/lsd/flow/decorators.py:149.

Python
deliver(fn: Callable=None, *, inputs: list=None, outputs: list=None) -> type
Python
fn: Callable
inputs: list
outputs: list

Source docstring:

text
Wrap a function as a ``DeliverStep`` subclass.

@deliver
def save_csv(inputs, out_path: str) -> None:
    import pyarrow.csv as pac
    pac.write_csv(inputs.main, out_path)

# Deliver that also produces an output artifact:
@deliver(outputs=["output"])
def save_and_report(inputs, out_path: str):
    ...
    return summary_table

Implementation alias: lsd.flow.decorators.deliver.

lsdtools.extend.dependents_map#

Kind: function. Source: core/lsd/src/lsd/tree/graph.py:90.

Python
dependents_map(names: Sequence[str], deps: Dict[str, Set[str]]) -> Dict[str, List[str]]
Python
deps: Dict[str, Set[str]]
names: Sequence[str]

Source docstring:

text
Reverse edges: name -> list of names that depend on it (within ``names``).

Implementation alias: lsd.tree.graph.dependents_map.

lsdtools.extend.describe_markdown#

Kind: function. Source: core/lsd/src/lsd/describe.py:177.

Python
describe_markdown(data: Optional[Dict[str, Any]]=None) -> str
Python
data: Optional[Dict[str, Any]]

Source docstring:

text
Render an AI/editor **context cheat-sheet** (Markdown) from :func:`describe_api`.

Drop the result in a project (e.g. ``LSD_CONTEXT.md``) so an assistant has the exact,
current surface — the one rule, how to write a step, the public names, and every step /
entity already available — when generating code for this project.

Implementation alias: lsd.describe.describe_markdown.

lsdtools.extend.describe_text#

Kind: function. Source: core/lsd/src/lsd/describe.py:139.

Python
describe_text(data: Optional[Dict[str, Any]]=None) -> str
Python
data: Optional[Dict[str, Any]]

Source docstring:

text
Render a short human-readable summary of :func:`describe_api`.

Implementation alias: lsd.describe.describe_text.

lsdtools.extend.entity_type_spec#

Kind: function. Source: core/lsd/src/lsd/packages/contributions.py:1719.

Python
entity_type_spec(type_id: str) -> Optional[EntityTypeSpec]
Python
type_id: str

Source docstring:

text
The PROCESS-catalog declaration for one exact serialized type id (see
:func:`entity_type_specs`: not project-scoped).

Implementation alias: lsd.packages.contributions.entity_type_spec.

lsdtools.extend.entity_type_specs#

Kind: function. Source: core/lsd/src/lsd/packages/contributions.py:1701.

Python
entity_type_specs() -> List[EntityTypeSpec]

Source docstring:

text
Every entity-creation declaration in the PROCESS catalog, stock blank type first.

Process-wide, not project-scoped: this reads the unfiltered ``_REGISTRY``, so it includes
declarations from packages that are installed but disabled for the current project. "Installed
or imported does not mean active" — for what a project may actually use, ask that project's
:class:`ContributionScope`.

Implementation alias: lsd.packages.contributions.entity_type_specs.

lsdtools.extend.format_source#

Kind: function. Source: core/lsd/src/lsd/core/source.py:329.

Python
format_source(kind: str='file', *, frequency: str='off', **config_fields: Any) -> str
Python
config_fields: Any
frequency: str
kind: str

Source docstring:

text
Build the JSON param value for a source (``config_fields`` are the kind's config params).

Implementation alias: lsd.core.source.format_source.

lsdtools.extend.geologic_units_example#

Kind: function. Source: views/widgets/symbology/src/lsd_symbology/examples.py:90.

Python
geologic_units_example() -> Symbology

Implementation alias: lsd_symbology.examples.geologic_units_example.

lsdtools.extend.get_diagram_layout#

Kind: function. Source: views/widgets/diagram/src/lsd_diagram/layout/registry.py:49.

Python
get_diagram_layout(name: str) -> LayoutEngine
Python
name: str

Source docstring:

text
Return the engine registered under ``name`` (defaults to ``dagre``).

Implementation alias: lsd_diagram.layout.registry.get_diagram_layout.

lsdtools.extend.get_diagram_preset#

Kind: function. Source: views/widgets/diagram/src/lsd_diagram/build/domain.py:62.

Python
get_diagram_preset(name: str) -> DiagramPreset
Python
name: str

Implementation alias: lsd_diagram.build.domain.get_diagram_preset.

lsdtools.extend.import_project_styles#

Kind: function. Source: core/lsd/src/lsd/project_semantics.py:954.

Python
import_project_styles(catalog: ProjectSemanticsCatalog, styles: Iterable[StyleDefinition]) -> ProjectStyleImportResult
Python
catalog: ProjectSemanticsCatalog
styles: Iterable[StyleDefinition]

Source docstring:

text
Create one atomic project-catalog candidate from selected user styles.

The operation copies appearance only. Variable concepts, mappings, ranges, assignments, and
visualization uses remain project-owned because they depend on project data. The returned
catalog keeps the base revision unchanged; the Workspace owner commits it once with its normal
optimistic revision guard.

Implementation alias: lsd.project_semantics.import_project_styles.

lsdtools.extend.indegrees#

Kind: function. Source: core/lsd/src/lsd/tree/graph.py:81.

Python
indegrees(names: Sequence[str], deps: Dict[str, Set[str]]) -> Dict[str, int]
Python
deps: Dict[str, Set[str]]
names: Sequence[str]

Source docstring:

text
Number of in-run dependencies for each name (deps outside ``names`` ignored).

Implementation alias: lsd.tree.graph.indegrees.

lsdtools.extend.intersect_border#

Kind: function. Source: views/widgets/diagram/src/lsd_diagram/layout/_util.py:8.

Python
intersect_border(cx: float, cy: float, w: float, h: float, tx: float, ty: float)
Python
cx: float
cy: float
h: float
tx: float
ty: float
w: float

Source docstring:

text
Where the ray from centre ``(cx, cy)`` toward ``(tx, ty)`` meets the box border.

Implementation alias: lsd_diagram.layout._util.intersect_border.

lsdtools.extend.intervals#

Kind: function. Source: core/style/src/lsd_style/model.py:351.

Python
intervals(classes: Sequence[Mapping[str, JSONValue]], *, fallback: JSONValue=None) -> ValueMapping
Python
classes: Sequence[Mapping[str, JSONValue]]
fallback: JSONValue

Source docstring:

text
Build an interval mapping whose outputs may be any JSON value.

Implementation alias: lsd_style.model.intervals.

lsdtools.extend.largecsv_threshold_bytes#

Kind: function. Source: core/lsd/src/lsd/core/largecsv.py:32.

Python
largecsv_threshold_bytes() -> int

Source docstring:

text
The auto-pick size floor in bytes (env-overridable via ``LSD_LARGECSV_THRESHOLD_MB``).

Implementation alias: lsd.core.largecsv.largecsv_threshold_bytes.

lsdtools.extend.line_drawables#

Kind: function. Source: views/viewer3d/src/lsd_viewer/tools/layer_registry.py:107.

Python
line_drawables(table: Any, *, name_prefix: str) -> List[Any]
Python
name_prefix: str
table: Any

Source docstring:

text
Project a canonical Arrow line table into host-owned drawables.

Custom package layer loaders often own a richer authoritative table and
deterministically project it to ``line_id, vertex_index, x, y, z`` for
display. This facade lets them return Viewer3D drawables without importing
the private ``lsd_render`` implementation. Geometry identity and styling
remain governed by the ordinary layer sink.

Implementation alias: lsd_viewer.tools.layer_registry.line_drawables.

lsdtools.extend.load#

Kind: function. Source: core/lsd/src/lsd/flow/decorators.py:101.

Python
load(fn: Callable=None, *, inputs: list=None, outputs: list=None) -> type
Python
fn: Callable
inputs: list
outputs: list

Source docstring:

text
Wrap a function as a ``LoadStep`` subclass.

@load
def load_from_csv(file_path: str) -> pa.Table:
    return pa.csv.read_csv(file_path)

# Named outputs (produces multiple tables):
@load(outputs=["raw", "meta"])
def load_with_meta(file_path: str):
    return {"raw": ..., "meta": ...}

entity.add(load_from_csv(file_path="data.csv"))

Implementation alias: lsd.flow.decorators.load.

lsdtools.extend.main_view_type#

Kind: function. Source: core/lsd/src/lsd/packages/contributions.py:1756.

Python
main_view_type(kind: str) -> Optional[MainViewType]
Python
kind: str

Source docstring:

text
Return the registered :class:`MainViewType` with this ``kind`` (or ``None``).

Implementation alias: lsd.packages.contributions.main_view_type.

lsdtools.extend.nice_ticks#

Kind: function. Source: views/chart/src/lsd_view_chart/spec.py:383.

Python
nice_ticks(lo: float, hi: float, n: int=5) -> List[float]
Python
hi: float
lo: float
n: int

Source docstring:

text
Evenly spaced, round tick values spanning [lo, hi] (classic nice-numbers algorithm).

Implementation alias: lsd_view_chart.spec.nice_ticks.

lsdtools.extend.param#

Kind: function. Source: core/lsd/src/lsd/core/configurable.py:260.

Python
param(param_type: type, *, default: Any=_MISSING, default_factory: Optional[Callable[[], Any]]=None, label: str='', description: str='', required: bool=False, choices: Optional[List[Any]]=None, min: Optional[Any]=None, max: Optional[Any]=None, step: Optional[float]=None, digits: Optional[int]=None, widget: Optional[str]=None, visibility: str='normal', group: str='General', graph: bool=False, output: bool=False, hashed: bool=True, validators: Optional[List[Callable[[Any], Optional[str]]]]=None) -> ParameterDescriptor
Python
choices: Optional[List[Any]]
default: Any
default_factory: Optional[Callable[[], Any]]
description: str
digits: Optional[int]
graph: bool
group: str
hashed: bool
label: str
max: Optional[Any]
min: Optional[Any]
output: bool
param_type: type
required: bool
step: Optional[float]
validators: Optional[List[Callable[[Any], Optional[str]]]]
visibility: str
widget: Optional[str]

Source docstring:

text
Declare a configurable parameter on a Configurable subclass.

Examples::

    class LoadFromDB(LoadStep):
        param_group_order = ["Connection", "Query"]

        host  = param(str, default="localhost", group="Connection")
        port  = param(int, default=5432,        group="Connection")
        query = param(str, required=True,       group="Query")

Implementation alias: lsd.core.configurable.param.

lsdtools.extend.parse_column_map#

Kind: function. Source: core/lsd/src/lsd/core/columnmap.py:43.

Python
parse_column_map(spec: str) -> Dict[str, str]
Python
spec: str

Source docstring:

text
Parse ``"x=Easting, y=Northing"`` (or ``:`` separators) → ``{"x": "Easting", "y": "Northing"}``.

Blank entries are ignored so a trailing comma is harmless, but an entry that is not a
``target=source`` pair raises. Dropping it instead would build a *partial* map and import
fewer columns than the user asked for, with nothing to distinguish that from a map they
wrote correctly — in a coordinate map, a silently truncated geometry.

Two different sources for one target likewise raise: that is a contradiction in the spec,
not a preference for whichever was written last.

Implementation alias: lsd.core.columnmap.parse_column_map.

lsdtools.extend.parse_source#

Kind: function. Source: core/lsd/src/lsd/core/source.py:297.

Python
parse_source(spec: str, *, base_dir: Optional[str]=None) -> ResolvedSource
Python
base_dir: Optional[str]
spec: str

Source docstring:

text
Parse source JSON into the runtime value used by a load step.

When *base_dir* is supplied, explicit relative paths in the built-in file
source are resolved against it. The parsed config is ephemeral, so the
project keeps its portable spelling while reads, watches and fingerprints
all address the same absolute file. Callers without a persisted project
omit *base_dir* and retain process-CWD semantics.

Implementation alias: lsd.core.source.parse_source.

lsdtools.extend.plot_mappers#

Kind: function. Source: views/chart/src/lsd_view_chart/scene.py:38.

Python
plot_mappers(spec: ChartSpec, width: int, height: int)
Python
height: int
spec: ChartSpec
width: int

Source docstring:

text
Return ``(px, py, pw, ph, sx, sy)`` — the plot rect and the value→pixel mappers.

Single source of truth for where data lands on screen; shared by the scene builder and the
hover / legend hit-testing helpers so they never drift apart.

Implementation alias: lsd_view_chart.scene.plot_mappers.

lsdtools.extend.read_table#

Kind: function. Source: services/data/src/lsd_data/readers.py:122.

Python
read_table(path: str, fmt: Optional[str]=None) -> pa.Table
Python
fmt: Optional[str]
path: str

Source docstring:

text
Read *path* into a table via the registered reader for *fmt* (or the path's extension).

Fails loud on an unknown extension instead of silently parsing it as CSV — register the format's
reader (and its ``extensions``) via ``lsdtools.extend.register_table_reader``.

Implementation alias: lsd_data.readers.read_table.

lsdtools.extend.register_cell_renderer#

Kind: function. Source: views/table/src/lsd_view_table/registry.py:53.

Python
register_cell_renderer(name: str, *, setup: Callable[[Any, Any], None], bind: Callable[[Any, Any, str], None]) -> None
Python
bind: Callable[[Any, Any, str], None]
name: str
setup: Callable[[Any, Any], None]

Source docstring:

text
Register a custom cell renderer under *name*. A column tagged with this name
(``TableView.set_column_renderer(col, name)``) then renders its cells through *setup* / *bind*
instead of the plain label. Replaying the exact callbacks is idempotent; a
changed declaration for an existing name is rejected.

Implementation alias: lsd_view_table.registry.register_cell_renderer.

lsdtools.extend.register_chart_kind#

Kind: function. Source: views/chart/src/lsd_view_chart/registry.py:37.

Python
register_chart_kind(name: str, *, build_spec: Callable[[dict, Any], Any], draw: Callable[[Any, Any, Tuple[float, float, float, float], int, int], None]) -> None
Python
build_spec: Callable[[dict, Any], Any]
draw: Callable[[Any, Any, Tuple[float, float, float, float], int, int], None]
name: str

Source docstring:

text
Register a custom chart *kind* so ``{"kind": name}`` payloads render through your components.

- ``build_spec(payload_dict, base_spec) -> ChartSpec`` — populate the kind's derived data on the
  pre-built ``base_spec`` (its title/labels/legend are already set) and return it: series, ranges
  (``x_range``/``y_range``), ``x_ticks``/``y_ticks`` (use ``nice_ticks``), and any kind-specific
  fields (matrix, categories…). See ``spec.py`` for the built-in shapes. An add-on package
  imports ``ChartSpec``, ``Series`` and ``nice_ticks`` from ``lsdtools.extend``, never from
  ``lsd_view_chart.spec`` (``lsd package lint`` rejects that import); only this view spells them
  the internal way.
- ``draw(scene, spec, (px, py, pw, ph), width, height) -> None`` — add ``lsd_canvas`` drawables to
  *scene* for the plot rectangle. For standard cartesian axes reuse ``plot_mappers``
  (``lsdtools.extend.plot_mappers`` from an add-on); for a self-contained layout (like the
  heatmap) draw freely.

Replaying the exact callbacks is idempotent. A changed declaration for an
existing name is rejected so import order cannot select a renderer.

Implementation alias: lsd_view_chart.registry.register_chart_kind.

lsdtools.extend.register_default_style#

Kind: function. Source: core/lsd/src/lsd/symbology/defaults.py:186.

Python
register_default_style(key: str | Tuple[str, Optional[str]], factory: _Factory) -> None
Python
factory: _Factory
key: str | Tuple[str, Optional[str]]

Source docstring:

text
Declare the standard appearance for a layer kind or an engineering family.

*key* is either a layer kind (``"points"``) or a ``(contract, role)`` pair
naming an engineering contract family and one of its table roles
(``("lsd:bim", "element")``); ``("lsd:bim", None)`` covers the whole family.

*factory* receives a :class:`DefaultStyleRequest` and returns a
:class:`~lsd_style.model.Symbology`, or ``None`` to decline — declining
falls through to the next rule, so a family can style only what it knows.

Implementation alias: lsd.symbology.defaults.register_default_style.

lsdtools.extend.register_diagram_layout#

Kind: function. Source: views/widgets/diagram/src/lsd_diagram/layout/registry.py:29.

Python
register_diagram_layout(engine: LayoutEngine) -> LayoutEngine
Python
engine: LayoutEngine

Source docstring:

text
Register *engine* under ``engine.name`` so ``layout()`` and the view's layout
choice can select it. Replaying the exact engine is idempotent; a changed
declaration for an existing name is rejected so import order cannot pick one.

Implementation alias: lsd_diagram.layout.registry.register_diagram_layout.

lsdtools.extend.register_diagram_preset#

Kind: function. Source: views/widgets/diagram/src/lsd_diagram/build/domain.py:34.

Python
register_diagram_preset(name: str, theme_factory: Callable[[], DiagramTheme], builder: DiagramBuilder) -> DiagramPreset
Python
builder: DiagramBuilder
name: str
theme_factory: Callable[[], DiagramTheme]

Source docstring:

text
Register a diagram preset under *name*. Replaying the exact declaration is
idempotent and returns the original :class:`DiagramPreset`; a changed declaration
for an existing name is rejected so import order cannot pick a look.

Implementation alias: lsd_diagram.build.domain.register_diagram_preset.

lsdtools.extend.register_feature_adapter#

Kind: function. Source: core/git/src/lsd_git/featureadapters.py:396.

Python
register_feature_adapter(adapter: FeatureAdapter, *, owner: Optional[str]=None) -> None
Python
adapter: FeatureAdapter
owner: Optional[str]

Source docstring:

text
Register the editor for one feature kind.

Replaying the exact adapter is harmless. A second, different declaration for a kind another
package already owns is an ownership error, not a race: import order must never choose which
editor handles a persisted feature.

Implementation alias: lsd_git.featureadapters.register_feature_adapter.

lsdtools.extend.register_layer_kind#

Kind: function. Source: views/viewer3d/src/lsd_viewer/tools/layer_registry.py:62.

Python
register_layer_kind(name: str, *, load: Callable[[dict, str], List[Any]], thread_safe: bool=False) -> None
Python
load: Callable[[dict, str], List[Any]]
name: str
thread_safe: bool

Source docstring:

text
Register a custom geometry layer *kind* so ``{"spec": {"kind": name}}`` payloads render through
your loader.

``load(paths, layer_id) -> [drawable]`` — read the payload's ``paths`` dict (whatever keys your
render step wrote) and return a list of ``lsd_render`` drawables named ``f"{layer_id}…"``; the sink
applies the payload's ``style`` and adds each as an addressable scene node. Return ``[]`` to render
nothing.

The default ``thread_safe=False`` GUARANTEES that the loader runs on the
GTK main thread, so existing loaders may touch GTK or other thread-bound
state. Set ``thread_safe=True`` only when the loader and everything it
invokes are GTK/GL-free, safe to invoke concurrently, and do not publish
or mutate shared unsynchronised state. The sink may then run parquet/project
reads, drawable construction, styling, and node assembly in its
generation-fenced build worker; only the atomic scene swap runs on GTK
main. The flag is part of the declaration: replaying the exact loader and
flag is idempotent, while changing either for an existing name is rejected.

Implementation alias: lsd_viewer.tools.layer_registry.register_layer_kind.

lsdtools.extend.register_param_control#

Kind: function. Source: views/inspector/src/lsd_view_inspector/control_registry.py:52.

Python
register_param_control(widget: str, *, build: Callable[['ParameterInfo'], 'FormControl']) -> None
Python
build: Callable[['ParameterInfo'], 'FormControl']
widget: str

Source docstring:

text
Register a custom inspector control for the param ``widget`` name *widget*.

``build(info) -> FormControl`` — return a :class:`~lsd_forms.FormControl` (typically a
subclass) initialised from the ``ParameterInfo`` (``info.current_value`` etc.); the inspector wires
its ``connect_changed`` to ``set_parameter`` like any built-in control. A param opts in by declaring
``param(str, widget="<widget>")``. Replaying the exact builder is
idempotent; a changed declaration for an existing name is rejected.

Implementation alias: lsd_view_inspector.control_registry.register_param_control.

lsdtools.extend.register_source_kind#

Kind: function. Source: core/lsd/src/lsd/core/source.py:83.

Python
register_source_kind(handler: SourceKind) -> SourceKind
Python
handler: SourceKind

Source docstring:

text
Register one source-kind declaration.

Replaying the exact handler object is harmless. A second declaration for the
same name is an ownership error: import order must never choose which reader
handles a persisted source.

Implementation alias: lsd.core.source.register_source_kind.

lsdtools.extend.register_style_asset#

Kind: function. Source: core/lsd/src/lsd/packages/style_assets.py:51.

Python
register_style_asset(spec: StyleAssetSpec) -> StyleAssetSpec
Python
spec: StyleAssetSpec

Source docstring:

text
Contribute one style asset; returns the registered (package-attributed) declaration.

Outside a package mount the spec must carry ``package=`` itself — an asset without an owner
has no resource id, and nothing could ever reference it.

Implementation alias: lsd.packages.style_assets.register_style_asset.

lsdtools.extend.register_table_reader#

Kind: function. Source: services/data/src/lsd_data/readers.py:55.

Python
register_table_reader(fmt: str, reader: TableReader, *, extensions: tuple=(), probe: Optional[TableProbe]=None) -> None
Python
extensions: tuple
fmt: str
probe: Optional[TableProbe]
reader: TableReader

Source docstring:

text
Register one deterministic ``path -> pa.Table`` format declaration.

- *extensions* map file extensions (``".dm"``) to this format, so **path-based dispatch**
  (``read_table(path)``, the import wizard) finds it — without this the format is only reachable
  by passing ``fmt=`` explicitly.
- *probe* ``(path, sample) -> {columns, sample_rows, n_rows}`` powers the wizard's preview and
  auto column-mapping for this format. Omit it and a default probe reads via *reader* and slices.

Implementation alias: lsd_data.readers.register_table_reader.

lsdtools.extend.resolve_column_map#

Kind: function. Source: core/lsd/src/lsd/core/columnmap.py:94.

Python
resolve_column_map(columns: Sequence[str], mapping: Mapping[str, str], *, required: Iterable[str]=(), aliases: Optional[Mapping[str, Sequence[str]]]=None, keep_unmapped: bool=False) -> Tuple[Dict[str, str], List[str]]
Python
aliases: Optional[Mapping[str, Sequence[str]]]
columns: Sequence[str]
keep_unmapped: bool
mapping: Mapping[str, str]
required: Iterable[str]

Source docstring:

text
Resolve a (possibly partial) column map against the actual *columns*.

Explicit *mapping* entries win; any *required* / *aliases* target not mapped is auto-detected via
:func:`_match`. Returns ``(resolved {target: source}, missing_required)``. Explicit sources that
don't exist in *columns* are dropped from the result and (if required) reported as missing.

With *keep_unmapped*, source columns no target claimed are added to the result under their own
names, so applying this map preserves them — the same intent as the flag of the same name on
:func:`apply_column_map`, and setting either one produces the same table.

Implementation alias: lsd.core.columnmap.resolve_column_map.

lsdtools.extend.resolve_object_explorer_plan#

Kind: function. Source: core/lsd/src/lsd/packages/object_explorer.py:589.

Python
resolve_object_explorer_plan(object_types: Iterable[ObjectTypeSpec], explorers: Iterable[ObjectExplorerSpec], context_actions: Iterable[ObjectContextActionSpec], viewer_commands: Iterable[ViewerCommandSpec | ResolvedViewerCommand], *, feature_namespace: str, resident_reference_fields: Iterable[str] | None=None) -> ResolvedObjectExplorerPlan
Python
context_actions: Iterable[ObjectContextActionSpec]
explorers: Iterable[ObjectExplorerSpec]
feature_namespace: str
object_types: Iterable[ObjectTypeSpec]
resident_reference_fields: Iterable[str] | None
viewer_commands: Iterable[ViewerCommandSpec | ResolvedViewerCommand]

Source docstring:

text
Resolve one feature namespace to a deterministic, callback-free plan.

Exact declaration replays are harmless. Conflicting ids, ambiguous object
namespace ownership, duplicate object projections, duplicate command placement,
and absent/ambiguous command references are diagnosed and quarantined.  No
import order becomes an implicit winner.

``viewer_commands`` should normally be ``ResolvedViewerPlan.commands`` for
the exact Viewer3D instance.  Raw :class:`ViewerCommandSpec` values are also
accepted for package validation and focused tests.

Implementation alias: lsd.packages.object_explorer.resolve_object_explorer_plan.

lsdtools.extend.resolve_object_property_plan#

Kind: function. Source: core/lsd/src/lsd/packages/object_properties.py:997.

Python
resolve_object_property_plan(object_types: Iterable[ObjectTypeSpec], sections: Iterable[ObjectPropertySectionSpec], *, feature_namespace: str, resident_reference_fields: Iterable[str] | None=None) -> ResolvedObjectPropertyPlan
Python
feature_namespace: str
object_types: Iterable[ObjectTypeSpec]
resident_reference_fields: Iterable[str] | None
sections: Iterable[ObjectPropertySectionSpec]

Source docstring:

text
Resolve one selected resident to one deterministic property plan.

Exact declaration replays are harmless.  Conflicts, ambiguous namespace
ownership, invalid cross-package targets, missing reference keys, and order
cycles are explicit diagnostics; resolution never picks an import winner.
Unknown ordering anchors are warnings so an optional augmentation package
may order relative to another optional section without coupling activation.

Implementation alias: lsd.packages.object_properties.resolve_object_property_plan.

lsdtools.extend.resolve_status_extensions#

Kind: function. Source: core/lsd/src/lsd/packages/status_extensions.py:892.

Python
resolve_status_extensions(extensions: Iterable[StatusExtensionSpec], *, bindings: ProjectStatusBindings | Mapping[str, Any] | None=None) -> ResolvedStatusPlan
Python
bindings: ProjectStatusBindings | Mapping[str, Any] | None
extensions: Iterable[StatusExtensionSpec]

Source docstring:

text
Resolve one project's active status extensions deterministically.

Implementation alias: lsd.packages.status_extensions.resolve_status_extensions.

lsdtools.extend.resolve_symbology_value#

Kind: function. Source: core/style/src/lsd_style/model.py:315.

Python
resolve_symbology_value(value: JSONValue, input_value: Any) -> JSONValue
Python
input_value: Any
value: JSONValue

Source docstring:

text
Resolve a literal or canonical mapping object.

Implementation alias: lsd_style.model.resolve_value.

lsdtools.extend.resolve_timeline_editor_bindings#

Kind: function. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:94.

Python
resolve_timeline_editor_bindings(bindings, *, timeline_extensions, object_types, property_sections)
Python
bindings: (unannotated)
object_types: (unannotated)
property_sections: (unannotated)
timeline_extensions: (unannotated)

Source docstring:

text
Resolve active data only; unavailable or ambiguous mappings expose no key action.

Pass the current project scope's collections. The digest includes the exact
referenced property schemas, so fields cannot change under a displayed key
affordance even when a track's execution declaration stays unchanged.

Implementation alias: lsd.packages.timeline_editor_bindings.resolve_timeline_editor_bindings.

lsdtools.extend.resolve_tree_extensions#

Kind: function. Source: core/lsd/src/lsd/packages/tree_extensions.py:1146.

Python
resolve_tree_extensions(extensions: Iterable[TreeExtensionSpec], *, target_kind: str, scope: TreeScope | str=TreeScope.WORKSPACE) -> ResolvedTreePlan
Python
extensions: Iterable[TreeExtensionSpec]
scope: TreeScope | str
target_kind: str

Source docstring:

text
Resolve active package declarations into one deterministic tree plan.

Implementation alias: lsd.packages.tree_extensions.resolve_tree_extensions.

lsdtools.extend.resolve_viewer_extensions#

Kind: function. Source: core/lsd/src/lsd/packages/viewer_extensions.py:3304.

Python
resolve_viewer_extensions(extensions: Iterable[ViewerExtensionSpec], *, viewer_kind: str, bindings: ProjectViewerBindings | None=None, layout: Iterable[ViewerLayoutEntry]=()) -> ResolvedViewerPlan
Python
bindings: ProjectViewerBindings | None
extensions: Iterable[ViewerExtensionSpec]
layout: Iterable[ViewerLayoutEntry]
viewer_kind: str

Source docstring:

text
Resolve active package declarations into one deterministic viewer plan.

Errors are represented as diagnostics rather than raised, so a viewer can
present provider conflicts and missing packages without importing or
executing either contender.  Invalid declaration *shape* is rejected by
the frozen spec constructors.

Implementation alias: lsd.packages.viewer_extensions.resolve_viewer_extensions.

lsdtools.extend.route_straight_edges#

Kind: function. Source: views/widgets/diagram/src/lsd_diagram/layout/_util.py:20.

Python
route_straight_edges(nodes: List[dict], edges: List[dict]) -> None
Python
edges: List[dict]
nodes: List[dict]

Source docstring:

text
Give every edge a straight 2-point polyline clipped to both node borders.

Implementation alias: lsd_diagram.layout._util.route_straight_edges.

lsdtools.extend.run_pipeline#

Kind: function. Source: core/lsd/src/lsd/runtime/runner.py:247.

Python
run_pipeline(entity: 'Entity', *, workspace: str, event_bus: 'Optional[EventBus]'=None, resume: bool=True, from_step: Optional[str]=None, selected_step_ids: Optional[Sequence[str]]=None, cancellation_signal: Any=None, run_id: Optional[str]=None, execution_monitor: 'Optional[_ExecutionMonitor]'=None, pre_step_hook: Optional[Callable[[str, str, Dict], bool]]=None, disabled_packages: 'frozenset[str]'=frozenset(), frozen_reasons: 'Optional[Dict[str, str]]'=None, package_lock: 'Optional[Dict[str, dict]]'=None, run_capabilities: Any=None) -> PipelineResult
Python
cancellation_signal: Any
disabled_packages: 'frozenset[str]'
entity: 'Entity'
event_bus: 'Optional[EventBus]'
execution_monitor: 'Optional[_ExecutionMonitor]'
from_step: Optional[str]
frozen_reasons: 'Optional[Dict[str, str]]'
package_lock: 'Optional[Dict[str, dict]]'
pre_step_hook: Optional[Callable[[str, str, Dict], bool]]
resume: bool
run_capabilities: Any
run_id: Optional[str]
selected_step_ids: Optional[Sequence[str]]
workspace: str

Source docstring:

text
Execute the steps attached to ``entity`` in Load → Shape(s) → Deliver order.

Args:
    entity:     Entity containing any combination of LoadStep, ShapeStep,
                and DeliverStep.

                * **LoadSteps** — ALL run in insertion order, each independently
                  (``run()`` receives no inputs).  Their outputs accumulate so
                  the *last* LoadStep's ``"output"`` key is what ShapeSteps see
                  as ``inputs.main``.  A LoadStep is not required — entities
                  with only ShapeSteps/DeliverSteps work when inputs are
                  satisfied via cross-entity ``bind_from`` bindings.

                * **ShapeSteps** — ALL run in insertion order, receiving the
                  accumulated output from all prior steps in the entity.

                * **DeliverSteps** — ALL run in insertion order, each receiving
                  the same final accumulated output (enabling multiple
                  independent delivery destinations per entity).

    workspace:  Directory for Parquet intermediates and the manifest.
                Provided by the caller (the Engine's ArtifactWorkspace
                sub-folder for that entity, or an ephemeral one).
    event_bus:  Bus to use for step events. Propagated to all steps.
    resume:     Skip steps whose cached outputs are on disk and whose
                parameters haven't changed since the last successful run.
    from_step:  Class name of the step from which to force re-execution.
    selected_step_ids:
                Optional subset of attached step ids to execute. The subset
                is filtered through the runner's normal Load -> Shape ->
                Deliver order; the sequence supplied here does not override
                pipeline ordering. Manifest entries outside the subset are
                neither invalidated nor rewritten.
    cancellation_signal:
                Optional callable or Event-like cooperative cancellation
                signal leased to each selected step while it executes.
    run_id:     Exact execution identity supplied by Engine. Direct callers
                receive a fresh identity automatically.
    execution_monitor:
                Optional Engine-owned reducer updated at the same boundary
                as the emitted lifecycle facts.

Nesting note:
    Only entities directly attached to an ``Engine`` are run by
    ``engine.run_all()``. Child entities (added via
    ``entity.add_entity()``) are organisational groupings and do NOT
    independently run as pipelines — this function only processes the
    entity's own ``configurables`` (steps). If sub-entity pipelines
    should cascade, add them individually to the Engine.

Concurrency note:
    ``Engine`` serializes calls that target the same live Entity because
    its manifest, output paths, and last-run fields are mutable. Direct
    callers of this low-level function must provide the same boundary.

Implementation alias: lsd.runtime.runner.run_pipeline.

lsdtools.extend.scaffold#

Kind: module. Source: core/lsd/src/lsd/packages/scaffold.py:1.

Source docstring:

text
Scaffold a new lsd package directory.

Invoked by ``lsd package new <name>``.

Implementation alias: lsd.packages.scaffold.

lsdtools.extend.shape#

Kind: function. Source: core/lsd/src/lsd/flow/decorators.py:123.

Python
shape(fn: Callable=None, *, inputs: list=None, outputs: list=None) -> type
Python
fn: Callable
inputs: list
outputs: list

Source docstring:

text
Wrap a function as a ``ShapeStep`` subclass.

@shape
def double_values(inputs) -> pa.Table:
    import pyarrow.compute as pc
    return inputs.main.set_column(0, "x", pc.multiply(inputs.main["x"], 2))

# Fan-out (multiple output ports):
@shape(outputs=["high", "low"])
def split(inputs, threshold: float = 0.5):
    return {"high": ..., "low": ...}

# Declared input ports (persist in UI even when unbound):
@shape(inputs=["main", "lookup"], outputs=["joined"])
def join(inputs, key: str = "id"):
    return inputs.main.join(inputs["lookup"], keys=key)

Implementation alias: lsd.flow.decorators.shape.

lsdtools.extend.sidebar_views_for#

Kind: function. Source: core/lsd/src/lsd/packages/contributions.py:1751.

Python
sidebar_views_for() -> List[SidebarViewContribution]

Source docstring:

text
All navigation-rail views, ``position`` ascending then registration order.

Implementation alias: lsd.packages.contributions.sidebar_views_for.

lsdtools.extend.solid_example#

Kind: function. Source: views/widgets/symbology/src/lsd_symbology/examples.py:45.

Python
solid_example() -> Symbology

Implementation alias: lsd_symbology.examples.solid_example.

lsdtools.extend.source_kind#

Kind: function. Source: core/lsd/src/lsd/core/source.py:105.

Python
source_kind(name: str) -> Optional[SourceKind]
Python
name: str

Implementation alias: lsd.core.source.source_kind.

lsdtools.extend.source_kinds#

Kind: function. Source: core/lsd/src/lsd/core/source.py:109.

Python
source_kinds() -> List[SourceKind]

Source docstring:

text
Every registered kind, registration order (drives the picker).

Implementation alias: lsd.core.source.source_kinds.

lsdtools.extend.source_param#

Kind: function. Source: core/lsd/src/lsd/core/source.py:336.

Python
source_param(*, kinds: tuple=('file',), **kwargs: Any) -> ParameterDescriptor
Python
kinds: tuple
kwargs: Any

Source docstring:

text
A ``str`` param carrying a source declaration as JSON (``widget="source:<accepted kinds>"``).

*kinds* are the source kinds this load offers (the UI picker shows them); blank ⇒ all-file.

Implementation alias: lsd.core.source.source_param.

lsdtools.extend.style_asset#

Kind: function. Source: core/lsd/src/lsd/packages/style_assets.py:70.

Python
style_asset(identifier: str) -> Optional[StyleAssetSpec]
Python
identifier: str

Source docstring:

text
The contributed asset *identifier* names (a member suffix is ignored), or ``None``.

Implementation alias: lsd.packages.style_assets.style_asset.

lsdtools.extend.style_assets#

Kind: function. Source: core/lsd/src/lsd/packages/style_assets.py:82.

Python
style_assets(kind: Optional[str]=None) -> Tuple[StyleAssetSpec, ...]
Python
kind: Optional[str]

Source docstring:

text
Every contributed style asset, optionally only those of one *kind*.

Implementation alias: lsd.packages.style_assets.style_assets.

lsdtools.extend.templates#

Kind: function. Source: core/lsd/src/lsd/packages/contributions.py:1737.

Python
templates() -> tuple[EntityTemplate, ...]

Source docstring:

text
All registered entity templates (process-wide).

Implementation alias: lsd.packages.contributions.templates.

lsdtools.extend.templates_for_ext#

Kind: function. Source: core/lsd/src/lsd/packages/contributions.py:1742.

Python
templates_for_ext(path: str) -> List[EntityTemplate]
Python
path: str

Source docstring:

text
Templates whose ``extensions`` accept *path* — specific-extension matches then ``*`` catch-alls,
highest ``priority`` first. The wizard then disambiguates by content (``sniff`` / role aliases).

Implementation alias: lsd.packages.contributions.templates_for_ext.

lsdtools.extend.topological_order#

Kind: function. Source: core/lsd/src/lsd/tree/graph.py:24.

Python
topological_order(names: Sequence[str], deps: Dict[str, Set[str]]) -> List[str]
Python
deps: Dict[str, Set[str]]
names: Sequence[str]

Source docstring:

text
Order stable node ids so every dependency precedes its dependents.

``deps`` maps each id to the set of ids it depends on. Ids referenced
in ``deps`` but absent from ``names`` are ignored (they may be external
or already run). Ties break by ``names`` order (stable,
deterministic).

Raises ``ValueError`` for duplicate ids and ``CycleError`` if the
dependency graph contains a cycle.

Implementation alias: lsd.tree.graph.topological_order.

By LSD Team · Last updated Sep 09, 2026 Ask a question View as Markdown
Type to search every doc, guide, and tutorial.
↑↓ navigate openesc close