All docs
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.
``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:
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.
id: str
lsdtools.extend.Author.name#
Kind: attribute. Source: core/git/src/lsd_git/commits.py:29.
name: str
lsdtools.extend.Author.email#
Kind: attribute. Source: core/git/src/lsd_git/commits.py:30.
email: Optional[str]
email = None
lsdtools.extend.Author.kind#
Kind: attribute. Source: core/git/src/lsd_git/commits.py:31.
kind: str
kind = 'human'
lsdtools.extend.Author.to_dict#
Kind: method. Source: core/git/src/lsd_git/commits.py:33.
to_dict(self) -> Dict[str, Any]
self: (unannotated)
lsdtools.extend.Author.from_dict#
Kind: method. Source: core/git/src/lsd_git/commits.py:37.
from_dict(cls, d: Dict[str, Any]) -> 'Author'
cls: (unannotated)
d: Dict[str, Any]
lsdtools.extend.Author.local#
Kind: method. Source: core/git/src/lsd_git/commits.py:48.
local(cls) -> 'Author'
cls: (unannotated)
Source docstring:
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.
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.
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:
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.
DEFAULT_SEAT_STATE_KEY = SEAT_STATE_KEY
lsdtools.extend.CameraView.__init__#
Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:152.
__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
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.
seat_state_key(self) -> str
self: (unannotated)
Source docstring:
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.
legacy_seat_state_keys(self) -> tuple[str, ...]
self: (unannotated)
Source docstring:
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.
describe_fps_diagnostic(self) -> dict[str, Any]
self: (unannotated)
Source docstring:
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.
set_fps_diagnostic(self, enabled: bool) -> dict[str, Any]
enabled: bool
self: (unannotated)
Source docstring:
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.
camera_eid(self) -> Optional[int]
self: (unannotated)
lsdtools.extend.CameraView.actor_eid#
Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:512.
actor_eid(self) -> Optional[int]
self: (unannotated)
lsdtools.extend.CameraView.bind_seat#
Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:515.
bind_seat(self, *, camera_eid: Optional[int]=None, actor_eid: Optional[int]=None) -> dict
actor_eid: Optional[int]
camera_eid: Optional[int]
self: (unannotated)
Source docstring:
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.
describe_seat(self) -> dict
self: (unannotated)
lsdtools.extend.CameraView.reconcile_input#
Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:554.
reconcile_input(self) -> bool
self: (unannotated)
Source docstring:
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.
watch_entity(self, entity_id, payloads=None) -> None
entity_id: (unannotated)
payloads: (unannotated)
self: (unannotated)
Source docstring:
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.
unwatch_entity(self, entity_id) -> None
entity_id: (unannotated)
self: (unannotated)
lsdtools.extend.CameraView.watched_entities#
Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:711.
watched_entities(self) -> List[str]
self: (unannotated)
lsdtools.extend.CameraView.attach_bus#
Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:714.
attach_bus(self, bus) -> None
bus: (unannotated)
self: (unannotated)
lsdtools.extend.CameraView.session#
Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:726.
session(self) -> Any
self: (unannotated)
lsdtools.extend.CameraView.state#
Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:730.
state(self) -> str
self: (unannotated)
lsdtools.extend.CameraView.loaded#
Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:738.
loaded(self) -> bool
self: (unannotated)
lsdtools.extend.CameraView.error#
Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:742.
error(self) -> Optional[str]
self: (unannotated)
lsdtools.extend.CameraView.runtime_profiler_control#
Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:749.
runtime_profiler_control(self) -> Any
self: (unannotated)
lsdtools.extend.CameraView.profiler_lane#
Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:754.
profiler_lane(self) -> Any
self: (unannotated)
lsdtools.extend.CameraView.on_session_changed#
Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:785.
on_session_changed(self) -> None
self: (unannotated)
Source docstring:
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.
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
preset: str
resolution_divisor: int
samples_per_pixel: int
self: (unannotated)
shadow_resolution: int
shadow_steps: int
volume_steps: int
Source docstring:
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.
preview_lighting_environment(self, entity_id: str, *, draft_id: str, draft_revision: int, environment) -> bool
draft_id: str
draft_revision: int
entity_id: str
environment: (unannotated)
self: (unannotated)
Source docstring:
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.
clear_lighting_environment_preview(self, entity_id: str, *, draft_id: str) -> bool
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.
preview_lighting_setup(self, entity_id: str, *, snapshot, draft_id: str, draft_revision: int, environment) -> bool
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.
commit_lighting_environment_preview(self, entity_id: str, *, draft_id: str, draft_revision: int) -> bool
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.
add_frame_listener(self, listener: Callable[[float], Any]) -> None
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.
remove_frame_listener(self, listener: Callable[[float], Any]) -> None
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.
add_present_listener(self, listener: Callable[[Any], Any]) -> None
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.
remove_present_listener(self, listener: Callable[[Any], Any]) -> None
listener: Callable[[Any], Any]
self: (unannotated)
lsdtools.extend.CameraView.describe_viewer#
Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:1223.
describe_viewer(self) -> dict
self: (unannotated)
lsdtools.extend.CameraView.set_theme#
Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:1269.
set_theme(self, name: str) -> None
name: str
self: (unannotated)
lsdtools.extend.CameraView.dispose#
Kind: method. Source: views/runtime/src/lsd_runtime_view/camera_view.py:1294.
dispose(self) -> None
self: (unannotated)
lsdtools.extend.CameraView.view_id#
Kind: attribute. Source: views/runtime/src/lsd_runtime_view/camera_view.py:176.
view_id: str
view_id = view_id
lsdtools.extend.CameraView.target_id#
Kind: attribute. Source: views/runtime/src/lsd_runtime_view/camera_view.py:177.
target_id: str
target_id = view_id
lsdtools.extend.CameraView.lease#
Kind: attribute. Source: views/runtime/src/lsd_runtime_view/camera_view.py:189.
lease: Any
lease = None
lsdtools.extend.CameraView.input_port#
Kind: attribute. Source: views/runtime/src/lsd_runtime_view/camera_view.py:215.
input_port: (unannotated)
input_port = InputPort()
lsdtools.extend.CameraView.emitter#
Kind: attribute. Source: views/runtime/src/lsd_runtime_view/camera_view.py:221.
emitter: (unannotated)
emitter = EventEmitter(bus, target_id=view_id)
lsdtools.extend.CameraView.scene#
Kind: attribute. Source: views/runtime/src/lsd_runtime_view/camera_view.py:222.
scene: (unannotated)
scene = Scene(f'camera:{view_id}')
lsdtools.extend.CameraView.surface#
Kind: attribute. Source: views/runtime/src/lsd_runtime_view/camera_view.py:223.
surface: (unannotated)
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.
bodies: (unannotated)
bodies = BodySceneBinding(self.scene)
lsdtools.extend.CameraView.lighting#
Kind: attribute. Source: views/runtime/src/lsd_runtime_view/camera_view.py:239.
lighting: (unannotated)
lighting = RuntimeLightingBinding(self.surface.renderer)
lsdtools.extend.CameraView.profiler_control#
Kind: attribute. Source: views/runtime/src/lsd_runtime_view/camera_view.py:242.
profiler_control: (unannotated)
profiler_control = None
lsdtools.extend.CameraView.profiler_hud#
Kind: attribute. Source: views/runtime/src/lsd_runtime_view/camera_view.py:243.
profiler_hud: (unannotated)
profiler_hud = None
lsdtools.extend.CameraView.runtime_hud#
Kind: attribute. Source: views/runtime/src/lsd_runtime_view/camera_view.py:267.
runtime_hud: (unannotated)
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.
loop: (unannotated)
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.
input_capture: InputCapture | None
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.
hud: (unannotated)
hud = None
lsdtools.extend.Capability#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:150.
Source docstring:
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.
name: str
lsdtools.extend.Capability.version#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:154.
version: int
version = 1
lsdtools.extend.Capability.key#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:163.
key(self) -> str
self: (unannotated)
lsdtools.extend.Capability.parse#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:167.
parse(cls, value: str) -> 'Capability'
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.
kind: str
lsdtools.extend.ChartSpec.title#
Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:49.
title: str
title = ''
lsdtools.extend.ChartSpec.x_label#
Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:50.
x_label: str
x_label = ''
lsdtools.extend.ChartSpec.y_label#
Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:51.
y_label: str
y_label = ''
lsdtools.extend.ChartSpec.series#
Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:52.
series: List[Series]
series = field(default_factory=list)
lsdtools.extend.ChartSpec.categories#
Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:53.
categories: List[str]
categories = field(default_factory=list)
lsdtools.extend.ChartSpec.bin_edges#
Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:54.
bin_edges: List[float]
bin_edges = field(default_factory=list)
lsdtools.extend.ChartSpec.box_stats#
Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:55.
box_stats: List[dict]
box_stats = field(default_factory=list)
lsdtools.extend.ChartSpec.matrix#
Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:56.
matrix: List[List[float]]
matrix = field(default_factory=list)
lsdtools.extend.ChartSpec.z_range#
Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:57.
z_range: Tuple[float, float]
z_range = (0.0, 1.0)
lsdtools.extend.ChartSpec.x_range#
Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:58.
x_range: Tuple[float, float]
x_range = (0.0, 1.0)
lsdtools.extend.ChartSpec.y_range#
Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:59.
y_range: Tuple[float, float]
y_range = (0.0, 1.0)
lsdtools.extend.ChartSpec.x_ticks#
Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:60.
x_ticks: List[float]
x_ticks = field(default_factory=list)
lsdtools.extend.ChartSpec.y_ticks#
Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:61.
y_ticks: List[float]
y_ticks = field(default_factory=list)
lsdtools.extend.ChartSpec.legend#
Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:62.
legend: bool
legend = True
lsdtools.extend.ChartSpec.selection#
Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:63.
selection: Optional[dict]
selection = None
lsdtools.extend.CliCommand#
Kind: class. Source: core/lsd/src/lsd/packages/contributions.py:462.
Source docstring:
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.
name: str
lsdtools.extend.CliCommand.help#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:465.
help: str
lsdtools.extend.CliCommand.configure#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:466.
configure: Callable[[Any], None]
configure = lambda parser: None
lsdtools.extend.CliCommand.run#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:467.
run: Callable[[Any], int]
run = lambda args: 0
lsdtools.extend.CliCommand.package#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:468.
package: Optional[str]
package = None
lsdtools.extend.Configurable#
Kind: class. Source: core/lsd/src/lsd/core/configurable.py:337.
Configurable(self, *, id: Optional[str]=None, metadata: Optional[Dict[str, Any]]=None, event_bus: Optional['EventBus']=None, **kwargs: Any) -> None
Source docstring:
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.
type_id: ClassVar[str]
type_id = ''
lsdtools.extend.Configurable.serialized_fields#
Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:347.
serialized_fields: ClassVar[frozenset[str]]
serialized_fields = frozenset()
lsdtools.extend.Configurable.param_group_order#
Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:350.
param_group_order: ClassVar[List[str]]
param_group_order = []
lsdtools.extend.Configurable.serialized_type_id#
Kind: method. Source: core/lsd/src/lsd/core/configurable.py:353.
serialized_type_id(self) -> str
self: (unannotated)
Source docstring:
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.
serialized_field_names(cls) -> frozenset[str]
cls: (unannotated)
Source docstring:
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.
register_variant(cls, identity: str, provider: str, klass: type, mode: str='replace') -> None
cls: (unannotated)
identity: str
klass: type
mode: str
provider: str
Source docstring:
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.
resolve_class(cls, type_name: Optional[str], *, variant_state: 'Optional[Dict[str, dict]]'=None) -> Optional[type]
cls: (unannotated)
type_name: Optional[str]
variant_state: 'Optional[Dict[str, dict]]'
Source docstring:
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.
variant_providers(cls, identity: str) -> 'List[str]'
cls: (unannotated)
identity: str
Source docstring:
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.
validate_variant_state(cls, state: 'Optional[Dict[str, dict]]') -> 'Dict[str, dict]'
cls: (unannotated)
state: 'Optional[Dict[str, dict]]'
Source docstring:
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.
variant_scope(cls, state: 'Optional[Dict[str, dict]]') -> Generator[None, None, None]
cls: (unannotated)
state: 'Optional[Dict[str, dict]]'
Source docstring:
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.
unregister(cls, name: str) -> bool
cls: (unannotated)
name: str
Source docstring:
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.
__init__(self, *, id: Optional[str]=None, metadata: Optional[Dict[str, Any]]=None, event_bus: Optional['EventBus']=None, **kwargs: Any) -> None
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.
set_parameter(self, name: str, value: Any, *, coerce: bool=False) -> List[ValidationError]
coerce: bool
name: str
self: (unannotated)
value: Any
Source docstring:
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.
set_parameters(self, values: Dict[str, Any], *, coerce: bool=False) -> List[ValidationError]
coerce: bool
self: (unannotated)
values: Dict[str, Any]
Source docstring:
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.
get_parameter(self, name: str) -> Any
name: str
self: (unannotated)
lsdtools.extend.Configurable.set_output#
Kind: method. Source: core/lsd/src/lsd/core/configurable.py:782.
set_output(self, name: str, value: Any) -> None
name: str
self: (unannotated)
value: Any
Source docstring:
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.
get_outputs(self) -> Dict[str, Any]
self: (unannotated)
Source docstring:
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.
get_parameters(self) -> List[ParameterInfo]
self: (unannotated)
Source docstring:
Snapshot of all parameters for inspector / CLI generation.
lsdtools.extend.Configurable.parameter_groups#
Kind: method. Source: core/lsd/src/lsd/core/configurable.py:836.
parameter_groups(self) -> OrderedDict
self: (unannotated)
Source docstring:
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.
parameter_schema(cls) -> Dict[str, Any]
cls: (unannotated)
Source docstring:
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.
validate(self) -> ValidationResult
self: (unannotated)
Source docstring:
Validate all parameters. Returns structured result, never raises.
lsdtools.extend.Configurable.batch_update#
Kind: method. Source: core/lsd/src/lsd/core/configurable.py:905.
batch_update(self) -> Generator[None, None, None]
self: (unannotated)
Source docstring:
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.
to_dict(self) -> Dict[str, Any]
self: (unannotated)
lsdtools.extend.Configurable.validate_serialized_record#
Kind: method. Source: core/lsd/src/lsd/core/configurable.py:951.
validate_serialized_record(cls, data: Dict[str, Any], *, path: str='configurable', validate_parameters: bool=True) -> None
cls: (unannotated)
data: Dict[str, Any]
path: str
validate_parameters: bool
Source docstring:
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.
from_dict(cls, data: Dict[str, Any]) -> 'Configurable'
cls: (unannotated)
data: Dict[str, Any]
Source docstring:
Restore one validated current-schema record.
lsdtools.extend.Configurable.set_metadata#
Kind: method. Source: core/lsd/src/lsd/core/configurable.py:1029.
set_metadata(self, key: str, value: Any) -> None
key: str
self: (unannotated)
value: Any
lsdtools.extend.Configurable.remove_metadata#
Kind: method. Source: core/lsd/src/lsd/core/configurable.py:1045.
remove_metadata(self, key: str) -> None
key: str
self: (unannotated)
lsdtools.extend.Configurable.clear_metadata#
Kind: method. Source: core/lsd/src/lsd/core/configurable.py:1059.
clear_metadata(self) -> None
self: (unannotated)
lsdtools.extend.Configurable.get_metadata#
Kind: method. Source: core/lsd/src/lsd/core/configurable.py:1066.
get_metadata(self, key: str, default: Any=None) -> Any
default: Any
key: str
self: (unannotated)
lsdtools.extend.Container#
Kind: class. Source: core/lsd/src/lsd/core/container.py:23.
Source docstring:
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.
add(self, child: C) -> 'Container[C]'
child: C
self: (unannotated)
Source docstring:
Attach a child. Returns ``self`` for chaining.
lsdtools.extend.Container.get#
Kind: method. Source: core/lsd/src/lsd/core/container.py:35.
get(self, child_type: type) -> Optional[C]
child_type: type
self: (unannotated)
Source docstring:
First child matching the type (isinstance), or None.
lsdtools.extend.Container.has#
Kind: method. Source: core/lsd/src/lsd/core/container.py:42.
has(self, child_type: type) -> bool
child_type: type
self: (unannotated)
lsdtools.extend.Container.remove#
Kind: method. Source: core/lsd/src/lsd/core/container.py:45.
remove(self, child: C) -> None
child: C
self: (unannotated)
lsdtools.extend.Container.children#
Kind: method. Source: core/lsd/src/lsd/core/container.py:51.
children(self) -> 'List[C]'
self: (unannotated)
lsdtools.extend.Container.reorder#
Kind: method. Source: core/lsd/src/lsd/core/container.py:54.
reorder(self, child: C, index: int) -> None
child: C
index: int
self: (unannotated)
lsdtools.extend.Container.move_up#
Kind: method. Source: core/lsd/src/lsd/core/container.py:63.
move_up(self, child: C) -> bool
child: C
self: (unannotated)
lsdtools.extend.Container.move_down#
Kind: method. Source: core/lsd/src/lsd/core/container.py:73.
move_down(self, child: C) -> bool
child: C
self: (unannotated)
lsdtools.extend.CycleError#
Kind: class. Source: core/lsd/src/lsd/tree/graph.py:16.
CycleError(self, cycle: Sequence[str]) -> None
Source docstring:
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.
__init__(self, cycle: Sequence[str]) -> None
cycle: Sequence[str]
self: (unannotated)
lsdtools.extend.CycleError.cycle#
Kind: attribute. Source: core/lsd/src/lsd/tree/graph.py:20.
cycle: (unannotated)
cycle = list(cycle)
lsdtools.extend.DataProfile#
Kind: class. Source: core/lsd/src/lsd/symbology/profile.py:66.
Source docstring:
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.
kind: str
lsdtools.extend.DataProfile.count#
Kind: attribute. Source: core/lsd/src/lsd/symbology/profile.py:74.
count: int
lsdtools.extend.DataProfile.range#
Kind: attribute. Source: core/lsd/src/lsd/symbology/profile.py:75.
range: Optional[Tuple[float, float]]
range = None
lsdtools.extend.DataProfile.quantiles#
Kind: attribute. Source: core/lsd/src/lsd/symbology/profile.py:76.
quantiles: Tuple[Tuple[float, float], ...]
quantiles = field(default_factory=tuple)
lsdtools.extend.DataProfile.histogram#
Kind: attribute. Source: core/lsd/src/lsd/symbology/profile.py:77.
histogram: Tuple[HistogramBin | Tuple[float, float, int], ...]
histogram = field(default_factory=tuple)
lsdtools.extend.DataProfile.categories#
Kind: attribute. Source: core/lsd/src/lsd/symbology/profile.py:78.
categories: Tuple[Tuple[JSONValue, int], ...]
categories = field(default_factory=tuple)
lsdtools.extend.DataProfile.measured#
Kind: attribute. Source: core/lsd/src/lsd/symbology/profile.py:84.
measured: Optional[int]
measured = None
lsdtools.extend.DataProfile.is_numeric#
Kind: method. Source: core/lsd/src/lsd/symbology/profile.py:201.
is_numeric(self) -> bool
self: (unannotated)
lsdtools.extend.DataProfile.minimum#
Kind: method. Source: core/lsd/src/lsd/symbology/profile.py:205.
minimum(self) -> float
self: (unannotated)
lsdtools.extend.DataProfile.maximum#
Kind: method. Source: core/lsd/src/lsd/symbology/profile.py:211.
maximum(self) -> float
self: (unannotated)
lsdtools.extend.DataProfile.to_range_percent#
Kind: method. Source: core/lsd/src/lsd/symbology/profile.py:216.
to_range_percent(self, value: float) -> float
self: (unannotated)
value: float
Source docstring:
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.
from_range_percent(self, percent: float) -> float
percent: float
self: (unannotated)
Source docstring:
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.
from_dict(cls, data: Mapping[str, JSONValue]) -> 'DataProfile'
cls: (unannotated)
data: Mapping[str, JSONValue]
lsdtools.extend.DataProfile.from_json#
Kind: method. Source: core/lsd/src/lsd/symbology/profile.py:306.
from_json(cls, text: str) -> 'DataProfile'
cls: (unannotated)
text: str
lsdtools.extend.DataProfile.to_dict#
Kind: method. Source: core/lsd/src/lsd/symbology/profile.py:315.
to_dict(self) -> Dict[str, JSONValue]
self: (unannotated)
lsdtools.extend.DataProfile.to_json#
Kind: method. Source: core/lsd/src/lsd/symbology/profile.py:342.
to_json(self, *, indent: Optional[int]=2) -> str
indent: Optional[int]
self: (unannotated)
lsdtools.extend.DataProfile.clone#
Kind: method. Source: core/lsd/src/lsd/symbology/profile.py:345.
clone(self) -> 'DataProfile'
self: (unannotated)
lsdtools.extend.DatasetBinding#
Kind: class. Source: core/lsd/src/lsd/packages/dataset_editors.py:453.
Source docstring:
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.
editor_id: OwnedContributionId
lsdtools.extend.DatasetBinding.entity_type#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:457.
entity_type: str
lsdtools.extend.DatasetBinding.entity_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:458.
entity_id: str
lsdtools.extend.DatasetBinding.source#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:459.
source: _DatasetSourceSpec
lsdtools.extend.DatasetBinding.anchor_step_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:460.
anchor_step_id: str
lsdtools.extend.DatasetBinding.upstream_output#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:461.
upstream_output: OutputRef
lsdtools.extend.DatasetBinding.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/dataset_editors.py:490.
to_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.DatasetBinding.digest#
Kind: method. Source: core/lsd/src/lsd/packages/dataset_editors.py:501.
digest(self) -> str
self: (unannotated)
lsdtools.extend.DatasetBoundInputSourceSpec#
Kind: class. Source: core/lsd/src/lsd/packages/dataset_editors.py:290.
Source docstring:
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.
anchor_step_type: str
lsdtools.extend.DatasetBoundInputSourceSpec.input_port#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:300.
input_port: str
lsdtools.extend.DatasetBoundInputSourceSpec.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/dataset_editors.py:309.
to_dict(self) -> dict[str, str]
self: (unannotated)
lsdtools.extend.DatasetColumnKind#
Kind: class. Source: core/lsd/src/lsd/packages/dataset_editors.py:91.
Source docstring:
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.
TEXT = 'text'
lsdtools.extend.DatasetColumnKind.BOOLEAN#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:95.
BOOLEAN = 'boolean'
lsdtools.extend.DatasetColumnKind.INTEGER#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:96.
INTEGER = 'integer'
lsdtools.extend.DatasetColumnKind.NUMBER#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:97.
NUMBER = 'number'
lsdtools.extend.DatasetColumnKind.DATE#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:98.
DATE = 'date'
lsdtools.extend.DatasetColumnKind.DATETIME#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:99.
DATETIME = 'datetime'
lsdtools.extend.DatasetColumnSpec#
Kind: class. Source: core/lsd/src/lsd/packages/dataset_editors.py:152.
Source docstring:
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.
field: str
lsdtools.extend.DatasetColumnSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:162.
title: str
lsdtools.extend.DatasetColumnSpec.kind#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:163.
kind: DatasetColumnKind
lsdtools.extend.DatasetColumnSpec.editable#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:164.
editable: bool
editable = True
lsdtools.extend.DatasetColumnSpec.nullable#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:165.
nullable: bool
nullable = True
lsdtools.extend.DatasetColumnSpec.visible#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:166.
visible: bool
visible = True
lsdtools.extend.DatasetColumnSpec.filter_operators#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:167.
filter_operators: tuple[DatasetFilterOperator, ...]
filter_operators = ()
lsdtools.extend.DatasetColumnSpec.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/dataset_editors.py:214.
to_dict(self) -> dict[str, Any]
self: (unannotated)
Source docstring:
Return a detached action-catalog representation.
lsdtools.extend.DatasetEditorSpec#
Kind: class. Source: core/lsd/src/lsd/packages/dataset_editors.py:513.
Source docstring:
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.
id: OwnedContributionId
lsdtools.extend.DatasetEditorSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:533.
title: str
lsdtools.extend.DatasetEditorSpec.entity_types#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:534.
entity_types: tuple[str, ...]
lsdtools.extend.DatasetEditorSpec.source#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:535.
source: _DatasetSourceSpec
lsdtools.extend.DatasetEditorSpec.key_columns#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:536.
key_columns: tuple[str, ...]
lsdtools.extend.DatasetEditorSpec.feature#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:537.
feature: DatasetFeatureReferenceSpec
lsdtools.extend.DatasetEditorSpec.columns#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:538.
columns: tuple[DatasetColumnSpec, ...]
lsdtools.extend.DatasetEditorSpec.patch#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:539.
patch: DatasetPatchSpec
lsdtools.extend.DatasetEditorSpec.max_editable_rows#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:540.
max_editable_rows: int | None
max_editable_rows = None
lsdtools.extend.DatasetEditorSpec.version#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:541.
version: str
version = '1.0'
lsdtools.extend.DatasetEditorSpec.matches_entity_type#
Kind: method. Source: core/lsd/src/lsd/packages/dataset_editors.py:631.
matches_entity_type(self, entity_type: str) -> bool
entity_type: str
self: (unannotated)
Source docstring:
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.
bind_source(self, *, entity_id: str, entity_type: str, anchor_step_id: str, anchor_step_type: str, upstream_output: OutputRef) -> DatasetBinding
anchor_step_id: str
anchor_step_type: str
entity_id: str
entity_type: str
self: (unannotated)
upstream_output: OutputRef
Source docstring:
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.
to_dict(self) -> dict[str, Any]
self: (unannotated)
Source docstring:
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:
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.
dataset_field: str
lsdtools.extend.DatasetFeatureKeyBinding.reference_field#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:322.
reference_field: str
lsdtools.extend.DatasetFeatureKeyBinding.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/dataset_editors.py:328.
to_dict(self) -> dict[str, str]
self: (unannotated)
lsdtools.extend.DatasetFeatureReferenceSpec#
Kind: class. Source: core/lsd/src/lsd/packages/dataset_editors.py:336.
Source docstring:
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.
namespace: str
lsdtools.extend.DatasetFeatureReferenceSpec.key_bindings#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:347.
key_bindings: tuple[DatasetFeatureKeyBinding, ...]
lsdtools.extend.DatasetFeatureReferenceSpec.layer_constant_fields#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:348.
layer_constant_fields: tuple[str, ...]
layer_constant_fields = ()
lsdtools.extend.DatasetFeatureReferenceSpec.contract_version#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:349.
contract_version: str
contract_version = '1.0'
lsdtools.extend.DatasetFeatureReferenceSpec.reference_fields#
Kind: method. Source: core/lsd/src/lsd/packages/dataset_editors.py:405.
reference_fields(self) -> tuple[str, ...]
self: (unannotated)
lsdtools.extend.DatasetFeatureReferenceSpec.validate_key_columns#
Kind: method. Source: core/lsd/src/lsd/packages/dataset_editors.py:411.
validate_key_columns(self, key_columns: tuple[str, ...]) -> None
key_columns: tuple[str, ...]
self: (unannotated)
lsdtools.extend.DatasetFeatureReferenceSpec.reference_for#
Kind: method. Source: core/lsd/src/lsd/packages/dataset_editors.py:418.
reference_for(self, key: dict[str, Any], *, layer_constants: dict[str, Any]) -> dict[str, Any]
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.
to_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.DatasetFilterOperator#
Kind: class. Source: core/lsd/src/lsd/packages/dataset_editors.py:102.
Source docstring:
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.
EQ = 'eq'
lsdtools.extend.DatasetFilterOperator.NE#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:106.
NE = 'ne'
lsdtools.extend.DatasetFilterOperator.LT#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:107.
LT = 'lt'
lsdtools.extend.DatasetFilterOperator.LE#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:108.
LE = 'le'
lsdtools.extend.DatasetFilterOperator.GT#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:109.
GT = 'gt'
lsdtools.extend.DatasetFilterOperator.GE#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:110.
GE = 'ge'
lsdtools.extend.DatasetFilterOperator.BETWEEN#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:111.
BETWEEN = 'between'
lsdtools.extend.DatasetFilterOperator.CONTAINS#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:112.
CONTAINS = 'contains'
lsdtools.extend.DatasetFilterOperator.STARTS_WITH#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:113.
STARTS_WITH = 'starts_with'
lsdtools.extend.DatasetFilterOperator.IN#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:114.
IN = 'in'
lsdtools.extend.DatasetFilterOperator.IS_NULL#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:115.
IS_NULL = 'is_null'
lsdtools.extend.DatasetOutputSourceSpec#
Kind: class. Source: core/lsd/src/lsd/packages/dataset_editors.py:267.
Source docstring:
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.
step_type: str
lsdtools.extend.DatasetOutputSourceSpec.output_port#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:275.
output_port: str
lsdtools.extend.DatasetOutputSourceSpec.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/dataset_editors.py:281.
to_dict(self) -> dict[str, str]
self: (unannotated)
lsdtools.extend.DatasetPatchSpec#
Kind: class. Source: core/lsd/src/lsd/packages/dataset_editors.py:229.
Source docstring:
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.
adapter_kind: str
lsdtools.extend.DatasetPatchSpec.operation#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:238.
operation: str
lsdtools.extend.DatasetPatchSpec.contract_version#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:239.
contract_version: str
contract_version = '1.0'
lsdtools.extend.DatasetPatchSpec.TARGET_KEYS_FIELD#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:241.
TARGET_KEYS_FIELD: ClassVar[str]
TARGET_KEYS_FIELD = 'keys'
lsdtools.extend.DatasetPatchSpec.VALUE_CHANGES_FIELD#
Kind: attribute. Source: core/lsd/src/lsd/packages/dataset_editors.py:242.
VALUE_CHANGES_FIELD: ClassVar[str]
VALUE_CHANGES_FIELD = 'changes'
lsdtools.extend.DatasetPatchSpec.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/dataset_editors.py:254.
to_dict(self) -> dict[str, Any]
self: (unannotated)
Source docstring:
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:
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.
output_ports: ClassVar[List[str]]
output_ports = []
lsdtools.extend.DeliverStep.run#
Kind: method. Source: core/lsd/src/lsd/flow/steps.py:1623.
run(self, inputs: Tables) -> Union[pa.Table, StepOutputs, None]
inputs: Tables
self: (unannotated)
lsdtools.extend.DeviceDescription#
Kind: class. Source: services/input/src/lsd_input/layouts.py:299.
Source docstring:
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.
interface: str
lsdtools.extend.DeviceDescription.device_class#
Kind: attribute. Source: services/input/src/lsd_input/layouts.py:303.
device_class: str
device_class = ''
lsdtools.extend.DeviceDescription.manufacturer#
Kind: attribute. Source: services/input/src/lsd_input/layouts.py:304.
manufacturer: str
manufacturer = ''
lsdtools.extend.DeviceDescription.product#
Kind: attribute. Source: services/input/src/lsd_input/layouts.py:305.
product: str
product = ''
lsdtools.extend.DeviceDescription.serial#
Kind: attribute. Source: services/input/src/lsd_input/layouts.py:306.
serial: str
serial = ''
lsdtools.extend.DeviceDescription.version#
Kind: attribute. Source: services/input/src/lsd_input/layouts.py:307.
version: str
version = ''
lsdtools.extend.DeviceDescription.capabilities#
Kind: attribute. Source: services/input/src/lsd_input/layouts.py:308.
capabilities: Mapping[str, Any]
capabilities = field(default_factory=dict)
lsdtools.extend.DeviceDescription.usages#
Kind: attribute. Source: services/input/src/lsd_input/layouts.py:309.
usages: tuple[str, ...]
usages = ()
lsdtools.extend.DeviceDescription.to_dict#
Kind: method. Source: services/input/src/lsd_input/layouts.py:332.
to_dict(self) -> dict[str, Any]
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.
INFO = 'info'
lsdtools.extend.DiagnosticSeverity.WARNING#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:480.
WARNING = 'warning'
lsdtools.extend.DiagnosticSeverity.ERROR#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:481.
ERROR = 'error'
lsdtools.extend.EditOp#
Kind: class. Source: core/git/src/lsd_git/editops.py:202.
Source docstring:
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.
op: str
lsdtools.extend.EditOp.kind#
Kind: attribute. Source: core/git/src/lsd_git/editops.py:212.
kind: str
lsdtools.extend.EditOp.contract_version#
Kind: attribute. Source: core/git/src/lsd_git/editops.py:213.
contract_version: str
lsdtools.extend.EditOp.context#
Kind: attribute. Source: core/git/src/lsd_git/editops.py:214.
context: MutationContext
lsdtools.extend.EditOp.dataset#
Kind: attribute. Source: core/git/src/lsd_git/editops.py:215.
dataset: str
lsdtools.extend.EditOp.target#
Kind: attribute. Source: core/git/src/lsd_git/editops.py:216.
target: Mapping[str, Any]
lsdtools.extend.EditOp.value#
Kind: attribute. Source: core/git/src/lsd_git/editops.py:217.
value: Mapping[str, Any]
lsdtools.extend.EditOp.previous#
Kind: attribute. Source: core/git/src/lsd_git/editops.py:218.
previous: Mapping[str, Any]
lsdtools.extend.EditOp.version#
Kind: attribute. Source: core/git/src/lsd_git/editops.py:219.
version: int
version = field(default=EDIT_OP_VERSION)
lsdtools.extend.EditOp.to_dict#
Kind: method. Source: core/git/src/lsd_git/editops.py:240.
to_dict(self) -> Dict[str, Any]
self: (unannotated)
lsdtools.extend.EditOp.from_dict#
Kind: method. Source: core/git/src/lsd_git/editops.py:255.
from_dict(cls, data: Any) -> 'EditOp'
cls: (unannotated)
data: Any
lsdtools.extend.EditOp.reseal_actor#
Kind: method. Source: core/git/src/lsd_git/editops.py:283.
reseal_actor(self, actor: Author) -> 'EditOp'
actor: Author
self: (unannotated)
Source docstring:
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.
reseal_context(self, context: MutationContext) -> 'EditOp'
context: MutationContext
self: (unannotated)
Source docstring:
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.
to_commit_op(self) -> Dict[str, Any]
self: (unannotated)
Source docstring:
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.
from_commit_op(cls, record: Any) -> 'EditOp'
cls: (unannotated)
record: Any
lsdtools.extend.EntityTemplate#
Kind: class. Source: core/lsd/src/lsd/packages/contributions.py:595.
Source docstring:
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.
id: str
lsdtools.extend.EntityTemplate.label#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:626.
label: str
lsdtools.extend.EntityTemplate.extensions#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:627.
extensions: Tuple[str, ...]
lsdtools.extend.EntityTemplate.build#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:628.
build: Callable[..., Any]
lsdtools.extend.EntityTemplate.roles#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:629.
roles: Tuple[FileRole, ...]
roles = ()
lsdtools.extend.EntityTemplate.sniff#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:630.
sniff: Optional[Callable[[Any], float]]
sniff = None
lsdtools.extend.EntityTemplate.priority#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:631.
priority: int
priority = 0
lsdtools.extend.EntityTemplate.icon#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:632.
icon: Optional[str]
icon = None
lsdtools.extend.EntityTemplate.params#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:633.
params: Optional[type]
params = None
lsdtools.extend.EntityTemplate.preview#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:634.
preview: str
preview = 'auto'
lsdtools.extend.EntityTemplate.package#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:635.
package: Optional[str]
package = None
lsdtools.extend.EntityTemplate.present_in#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:636.
present_in: Optional[str]
present_in = None
lsdtools.extend.EntityTemplate.present_command#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:637.
present_command: Optional[str]
present_command = None
lsdtools.extend.EntityTypeSpec#
Kind: class. Source: core/lsd/src/lsd/packages/contributions.py:137.
Source docstring:
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.
type_id: str
lsdtools.extend.EntityTypeSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:155.
title: str
lsdtools.extend.EntityTypeSpec.entity_class#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:156.
entity_class: type
lsdtools.extend.EntityTypeSpec.factory#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:157.
factory: Callable[..., Any]
lsdtools.extend.EntityTypeSpec.icon#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:158.
icon: Optional[str]
icon = None
lsdtools.extend.EntityTypeSpec.package#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:159.
package: Optional[str]
package = None
lsdtools.extend.EntityTypeSpec.create#
Kind: method. Source: core/lsd/src/lsd/packages/contributions.py:193.
create(self, name: str, **params: Any) -> Any
name: str
params: Any
self: (unannotated)
Source docstring:
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:
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.
event_type: str
lsdtools.extend.Event.data#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:247.
data: Mapping[str, Any]
lsdtools.extend.Event.data_snapshot#
Kind: method. Source: core/lsd/src/lsd/core/event_bus.py:261.
data_snapshot(self) -> Dict[str, Any]
self: (unannotated)
Source docstring:
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.
EventBus(self) -> None
Source docstring:
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.
__init__(self) -> None
self: (unannotated)
lsdtools.extend.EventBus.on#
Kind: method. Source: core/lsd/src/lsd/core/event_bus.py:315.
on(self, pattern: str, handler: Handler, priority: int=100) -> None
handler: Handler
pattern: str
priority: int
self: (unannotated)
Source docstring:
Subscribe an async handler to events matching pattern.
lsdtools.extend.EventBus.off#
Kind: method. Source: core/lsd/src/lsd/core/event_bus.py:345.
off(self, pattern: str, handler: Handler) -> None
handler: Handler
pattern: str
self: (unannotated)
Source docstring:
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.
emit(self, event_type: str, **data: Any) -> None
data: Any
event_type: str
self: (unannotated)
Source docstring:
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.
emit_collect(self, event_type: str, **data: Any) -> List[Any]
data: Any
event_type: str
self: (unannotated)
Source docstring:
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:
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.
RUN_STARTED = 'engine/run/started'
lsdtools.extend.Events.RUN_FINISHED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:511.
RUN_FINISHED = 'engine/run/finished'
lsdtools.extend.Events.ENTITY_STARTED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:512.
ENTITY_STARTED = 'engine/entity/started'
lsdtools.extend.Events.ENTITY_FINISHED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:513.
ENTITY_FINISHED = 'engine/entity/finished'
lsdtools.extend.Events.ENTITY_BLOCKED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:514.
ENTITY_BLOCKED = 'engine/entity/blocked'
lsdtools.extend.Events.WORKSPACE_ENTITY_ADDED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:517.
WORKSPACE_ENTITY_ADDED = 'workspace/entity/added'
lsdtools.extend.Events.WORKSPACE_ENTITY_REMOVED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:518.
WORKSPACE_ENTITY_REMOVED = 'workspace/entity/removed'
lsdtools.extend.Events.WORKSPACE_ENTITY_MOVED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:519.
WORKSPACE_ENTITY_MOVED = 'workspace/entity/moved'
lsdtools.extend.Events.WORKSPACE_ENTITY_REPLACED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:520.
WORKSPACE_ENTITY_REPLACED = 'workspace/entity/replaced'
lsdtools.extend.Events.WORKSPACE_ENTITY_REORDERED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:521.
WORKSPACE_ENTITY_REORDERED = 'workspace/entity/reordered'
lsdtools.extend.Events.PROJECT_SEMANTICS_CHANGED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:522.
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.
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.
PROJECT_SHADERS_CHANGED = 'workspace/project-shaders/changed'
lsdtools.extend.Events.CONFIGURABLE_ADDED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:528.
CONFIGURABLE_ADDED = 'entity/configurable/added'
lsdtools.extend.Events.CONFIGURABLE_REMOVED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:529.
CONFIGURABLE_REMOVED = 'entity/configurable/removed'
lsdtools.extend.Events.CONFIGURABLE_REORDERED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:530.
CONFIGURABLE_REORDERED = 'entity/configurable/reordered'
lsdtools.extend.Events.STEP_INPUT_CHANGED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:531.
STEP_INPUT_CHANGED = 'pipeline/step/input/changed'
lsdtools.extend.Events.VIEW_ADDED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:532.
VIEW_ADDED = 'engine/view/added'
lsdtools.extend.Events.VIEW_REMOVED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:533.
VIEW_REMOVED = 'engine/view/removed'
lsdtools.extend.Events.VIEW_SHOWN#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:534.
VIEW_SHOWN = 'engine/view/shown'
lsdtools.extend.Events.PIPELINE_STARTED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:537.
PIPELINE_STARTED = 'pipeline/started'
lsdtools.extend.Events.PIPELINE_FINISHED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:538.
PIPELINE_FINISHED = 'pipeline/finished'
lsdtools.extend.Events.STEP_STARTED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:541.
STEP_STARTED = 'pipeline/step/started'
lsdtools.extend.Events.STEP_PROGRESS#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:542.
STEP_PROGRESS = 'pipeline/step/progress'
lsdtools.extend.Events.STEP_SKIPPED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:543.
STEP_SKIPPED = 'pipeline/step/skipped'
lsdtools.extend.Events.STEP_MATERIALIZED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:544.
STEP_MATERIALIZED = 'pipeline/step/materialized'
lsdtools.extend.Events.TRIP_UPDATED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:546.
TRIP_UPDATED = 'pipeline/trip/updated'
lsdtools.extend.Events.STEP_FINISHED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:547.
STEP_FINISHED = 'pipeline/step/finished'
lsdtools.extend.Events.STEP_FAILED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:548.
STEP_FAILED = 'pipeline/step/failed'
lsdtools.extend.Events.ENTITY_RENAMED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:551.
ENTITY_RENAMED = 'entity/renamed'
lsdtools.extend.Events.ENTITY_TRAITS_CHANGED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:552.
ENTITY_TRAITS_CHANGED = 'entity/traits/changed'
lsdtools.extend.Events.PACKAGE_VERSION_MISMATCH#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:555.
PACKAGE_VERSION_MISMATCH = 'package/version/mismatch'
lsdtools.extend.Events.FILE_CHANGED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:558.
FILE_CHANGED = 'file/changed'
lsdtools.extend.Events.PARAMETER_CHANGED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:561.
PARAMETER_CHANGED = 'configurable/parameter/changed'
lsdtools.extend.Events.PARAMETER_BATCH_CHANGED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:562.
PARAMETER_BATCH_CHANGED = 'configurable/parameter/batch_changed'
lsdtools.extend.Events.METADATA_CHANGED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:563.
METADATA_CHANGED = 'configurable/metadata/changed'
lsdtools.extend.Events.VIEW_ACTION_INVOKED#
Kind: attribute. Source: core/lsd/src/lsd/core/event_bus.py:566.
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.
PROVIDE = 'provide'
lsdtools.extend.ExtensionSemantics.AUGMENT#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:183.
AUGMENT = 'augment'
lsdtools.extend.ExtensionSemantics.ADD#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:184.
ADD = 'add'
lsdtools.extend.FIELD_UNIT_METADATA_KEY#
Kind: value. Source: core/lsd/src/lsd/core/table_profile.py:58.
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:
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.
document: Dict[str, Any]
lsdtools.extend.FamilyPresetPayload.family#
Kind: attribute. Source: core/style/src/lsd_style/assets.py:288.
family: str
lsdtools.extend.FamilyPresetPayload.role#
Kind: attribute. Source: core/style/src/lsd_style/assets.py:289.
role: Optional[str]
role = None
lsdtools.extend.FamilyPresetPayload.kind#
Kind: attribute. Source: core/style/src/lsd_style/assets.py:290.
kind = 'family_preset'
lsdtools.extend.FamilyPresetPayload.to_bytes#
Kind: method. Source: core/style/src/lsd_style/assets.py:303.
to_bytes(self) -> bytes
self: (unannotated)
lsdtools.extend.FamilyPresetPayload.from_parts#
Kind: method. Source: core/style/src/lsd_style/assets.py:308.
from_parts(cls, header: Mapping[str, Any], arrays: Sequence[np.ndarray]) -> 'FamilyPresetPayload'
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:
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.
kind: str
lsdtools.extend.FeatureAdapter.operations#
Kind: attribute. Source: core/git/src/lsd_git/featureadapters.py:241.
operations: Tuple[FeatureOperation, ...]
lsdtools.extend.FeatureAdapter.observe#
Kind: attribute. Source: core/git/src/lsd_git/featureadapters.py:242.
observe: Callable[[Any, EditOp], Mapping[str, Any]]
lsdtools.extend.FeatureAdapter.apply#
Kind: attribute. Source: core/git/src/lsd_git/featureadapters.py:243.
apply: Callable[[Any, EditOp], Any]
lsdtools.extend.FeatureAdapter.sentence#
Kind: attribute. Source: core/git/src/lsd_git/featureadapters.py:244.
sentence: Optional[Callable[[EditOp], str]]
sentence = None
lsdtools.extend.FeatureAdapter.layer_kinds#
Kind: attribute. Source: core/git/src/lsd_git/featureadapters.py:245.
layer_kinds: Optional[Tuple[str, ...]]
layer_kinds = None
lsdtools.extend.FeatureAdapter.target_for_feature#
Kind: attribute. Source: core/git/src/lsd_git/featureadapters.py:246.
target_for_feature: Optional[Callable[[Any], Mapping[str, Any]]]
target_for_feature = None
lsdtools.extend.FeatureAdapter.supports#
Kind: method. Source: core/git/src/lsd_git/featureadapters.py:281.
supports(self, op: str) -> bool
op: str
self: (unannotated)
lsdtools.extend.FeatureAdapter.ops#
Kind: method. Source: core/git/src/lsd_git/featureadapters.py:285.
ops(self) -> Tuple[str, ...]
self: (unannotated)
Source docstring:
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.
operation(self, op: str) -> FeatureOperation
op: str
self: (unannotated)
Source docstring:
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.
operation_at(self, op: str, contract_version: str) -> FeatureOperation
contract_version: str
op: str
self: (unannotated)
Source docstring:
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.
operation_contracts(self) -> List[Mapping[str, Any]]
self: (unannotated)
Source docstring:
Detached versioned operation contracts in declaration order.
lsdtools.extend.FeatureAdapter.feature_target#
Kind: method. Source: core/git/src/lsd_git/featureadapters.py:316.
feature_target(self, feature_id: Any) -> Optional[Mapping[str, Any]]
feature_id: Any
self: (unannotated)
Source docstring:
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.
check(self, op: EditOp) -> None
op: EditOp
self: (unannotated)
Source docstring:
Raise unless this adapter can carry out *op*.
lsdtools.extend.FeatureAdapter.operation_result#
Kind: method. Source: core/git/src/lsd_git/featureadapters.py:348.
operation_result(self, op: EditOp) -> Mapping[str, Any]
op: EditOp
self: (unannotated)
Source docstring:
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.
describe(self, op: EditOp) -> str
op: EditOp
self: (unannotated)
Source docstring:
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.
observe_current(self, table: Any, op: EditOp) -> Mapping[str, Any]
op: EditOp
self: (unannotated)
table: Any
Source docstring:
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.
check_previous(self, table: Any, op: EditOp) -> Mapping[str, Any]
op: EditOp
self: (unannotated)
table: Any
Source docstring:
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:
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.
op: str
lsdtools.extend.FeatureOperation.version#
Kind: attribute. Source: core/git/src/lsd_git/featureadapters.py:181.
version: str
lsdtools.extend.FeatureOperation.description#
Kind: attribute. Source: core/git/src/lsd_git/featureadapters.py:182.
description: str
lsdtools.extend.FeatureOperation.target_schema#
Kind: attribute. Source: core/git/src/lsd_git/featureadapters.py:183.
target_schema: Mapping[str, Any]
lsdtools.extend.FeatureOperation.value_schema#
Kind: attribute. Source: core/git/src/lsd_git/featureadapters.py:184.
value_schema: Mapping[str, Any]
lsdtools.extend.FeatureOperation.result_schema#
Kind: attribute. Source: core/git/src/lsd_git/featureadapters.py:185.
result_schema: Mapping[str, Any]
lsdtools.extend.FeatureOperation.to_dict#
Kind: method. Source: core/git/src/lsd_git/featureadapters.py:210.
to_dict(self) -> Mapping[str, Any]
self: (unannotated)
Source docstring:
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:
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.
name: str
lsdtools.extend.FileRole.fields#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:542.
fields: Tuple[str, ...]
fields = ()
lsdtools.extend.FileRole.aliases#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:543.
aliases: Mapping[str, Tuple[str, ...]]
aliases = field(default_factory=dict)
lsdtools.extend.FileRole.rules#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:544.
rules: str
rules = ''
lsdtools.extend.FileRole.required#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:545.
required: bool
required = True
lsdtools.extend.FileSourceConfig#
Kind: class. Source: core/lsd/src/lsd/core/source.py:115.
Source docstring:
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.
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.
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.
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.
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.
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.
FormControl(self, *, label_placement: str='beside') -> None
Source docstring:
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.
__init__(self, *, label_placement: str='beside') -> None
label_placement: str
self: (unannotated)
lsdtools.extend.FormControl.label_placement#
Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:75.
label_placement(self) -> str
self: (unannotated)
Source docstring:
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.
value(self) -> Any
self: (unannotated)
lsdtools.extend.FormControl.set_value#
Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:101.
set_value(self, v: Any) -> None
self: (unannotated)
v: Any
lsdtools.extend.FormControl.connect_changed#
Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:104.
connect_changed(self, cb: Callable[[Any], None]) -> None
cb: Callable[[Any], None]
self: (unannotated)
lsdtools.extend.FormControl.set_enabled#
Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:118.
set_enabled(self, enabled: bool) -> None
enabled: bool
self: (unannotated)
Source docstring:
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.
enabled(self) -> bool
self: (unannotated)
Source docstring:
True if the control is currently interactive.
lsdtools.extend.FormControl.widget#
Kind: attribute. Source: views/widgets/forms/src/lsd_forms/controls.py:70.
widget: Optional['Gtk.Widget']
widget = None
lsdtools.extend.FrameSnapshot#
Kind: class. Source: views/runtime/src/lsd_runtime_view/protocols.py:48.
Source docstring:
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.
position: np.ndarray
lsdtools.extend.FrameSnapshot.orientation#
Kind: attribute. Source: views/runtime/src/lsd_runtime_view/protocols.py:57.
orientation: np.ndarray
lsdtools.extend.FrameSnapshot.half_extent#
Kind: attribute. Source: views/runtime/src/lsd_runtime_view/protocols.py:58.
half_extent: np.ndarray
lsdtools.extend.FrameSnapshot.kind#
Kind: attribute. Source: views/runtime/src/lsd_runtime_view/protocols.py:59.
kind: np.ndarray
lsdtools.extend.FrameSnapshot.alive#
Kind: attribute. Source: views/runtime/src/lsd_runtime_view/protocols.py:60.
alive: np.ndarray
lsdtools.extend.FrameSnapshot.shader#
Kind: attribute. Source: views/runtime/src/lsd_runtime_view/protocols.py:61.
shader: tuple[str, ...]
shader = ()
lsdtools.extend.FrameSnapshot.frame_index#
Kind: attribute. Source: views/runtime/src/lsd_runtime_view/protocols.py:62.
frame_index: int
frame_index = 0
lsdtools.extend.FrameSnapshot.sim_time#
Kind: attribute. Source: views/runtime/src/lsd_runtime_view/protocols.py:63.
sim_time: float
sim_time = 0.0
lsdtools.extend.FrameSnapshot.stats#
Kind: attribute. Source: views/runtime/src/lsd_runtime_view/protocols.py:64.
stats: Mapping[str, int]
stats = None
lsdtools.extend.FrameSnapshot.lighting#
Kind: attribute. Source: views/runtime/src/lsd_runtime_view/protocols.py:65.
lighting: Any
lighting = None
lsdtools.extend.FrameSnapshot.rows#
Kind: method. Source: views/runtime/src/lsd_runtime_view/protocols.py:90.
rows(self) -> int
self: (unannotated)
lsdtools.extend.FrameSnapshot.from_driver_frame#
Kind: method. Source: views/runtime/src/lsd_runtime_view/protocols.py:94.
from_driver_frame(cls, frame: Any) -> 'FrameSnapshot'
cls: (unannotated)
frame: Any
Source docstring:
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.
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:
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.
NONE = 'none'
lsdtools.extend.GizmoConstraint.AXIS#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:440.
AXIS = 'axis'
lsdtools.extend.GizmoConstraint.ROTATION#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:441.
ROTATION = 'rotation'
lsdtools.extend.GizmoConstraint.PLANE#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:442.
PLANE = 'plane'
lsdtools.extend.GizmoConstraint.SURFACE#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:443.
SURFACE = 'surface'
lsdtools.extend.GizmoConstraint.GRID#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:444.
GRID = 'grid'
lsdtools.extend.GizmoConstraint.FEATURE#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:445.
FEATURE = 'feature'
lsdtools.extend.GizmoCursor#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:420.
Source docstring:
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.
DEFAULT = 'default'
lsdtools.extend.GizmoCursor.POINTER#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:424.
POINTER = 'pointer'
lsdtools.extend.GizmoCursor.CROSSHAIR#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:425.
CROSSHAIR = 'crosshair'
lsdtools.extend.GizmoCursor.MOVE#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:426.
MOVE = 'move'
lsdtools.extend.GizmoCursor.GRAB#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:427.
GRAB = 'grab'
lsdtools.extend.GizmoCursor.GRABBING#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:428.
GRABBING = 'grabbing'
lsdtools.extend.GizmoCursor.RESIZE_X#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:429.
RESIZE_X = 'resize_x'
lsdtools.extend.GizmoCursor.RESIZE_Y#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:430.
RESIZE_Y = 'resize_y'
lsdtools.extend.GizmoCursor.RESIZE_Z#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:431.
RESIZE_Z = 'resize_z'
lsdtools.extend.GizmoCursor.ROTATE#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:432.
ROTATE = 'rotate'
lsdtools.extend.GizmoCursor.NOT_ALLOWED#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:433.
NOT_ALLOWED = 'not_allowed'
lsdtools.extend.GizmoDatasetActionSpec#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2164.
Source docstring:
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.
id: str
lsdtools.extend.GizmoDatasetActionSpec.label#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2177.
label: str
lsdtools.extend.GizmoDatasetActionSpec.operation#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2178.
operation: str
lsdtools.extend.GizmoDatasetActionSpec.position#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2179.
position: GizmoPoint
lsdtools.extend.GizmoDatasetActionSpec.role#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2180.
role: ViewerDatasetActionRole
lsdtools.extend.GizmoDatasetActionSpec.enabled#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2181.
enabled: bool
enabled = True
lsdtools.extend.GizmoDatasetActionSpec.visible#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2182.
visible: bool
visible = True
lsdtools.extend.GizmoDatasetActionSpec.metadata#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2183.
metadata: tuple[tuple[str, GizmoScalar], ...]
metadata = ()
lsdtools.extend.GizmoDatasetActionSpec.as_dict#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2217.
as_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.GizmoHandleSpec#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2005.
Source docstring:
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.
id: str
lsdtools.extend.GizmoHandleSpec.label#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2025.
label: str
lsdtools.extend.GizmoHandleSpec.cursor#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2026.
cursor: GizmoCursor
cursor = GizmoCursor.DEFAULT
lsdtools.extend.GizmoHandleSpec.constraint#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2027.
constraint: GizmoConstraint
constraint = GizmoConstraint.NONE
lsdtools.extend.GizmoHandleSpec.operation#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2028.
operation: str | None
operation = None
lsdtools.extend.GizmoHandleSpec.position#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2029.
position: GizmoPoint | None
position = None
lsdtools.extend.GizmoHandleSpec.axis#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2030.
axis: GizmoPoint | None
axis = None
lsdtools.extend.GizmoHandleSpec.reference#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2031.
reference: GizmoPoint | None
reference = None
lsdtools.extend.GizmoHandleSpec.preview#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2032.
preview: GizmoPreviewPolicy
preview = GizmoPreviewPolicy.MEASUREMENT_ONLY
lsdtools.extend.GizmoHandleSpec.unit#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2033.
unit: str
unit = ''
lsdtools.extend.GizmoHandleSpec.shift_snap_increment#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2034.
shift_snap_increment: float | None
shift_snap_increment = None
lsdtools.extend.GizmoHandleSpec.enabled#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2035.
enabled: bool
enabled = True
lsdtools.extend.GizmoHandleSpec.visible#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2036.
visible: bool
visible = True
lsdtools.extend.GizmoHandleSpec.metadata#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2037.
metadata: tuple[tuple[str, GizmoScalar], ...]
metadata = ()
lsdtools.extend.GizmoHandleSpec.as_dict#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2142.
as_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.GizmoModel#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2234.
Source docstring:
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.
id: OwnedContributionId
lsdtools.extend.GizmoModel.revision#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2243.
revision: int
revision = 0
lsdtools.extend.GizmoModel.visible#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2244.
visible: bool
visible = True
lsdtools.extend.GizmoModel.primitives#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2245.
primitives: tuple[GizmoPrimitiveSpec, ...]
primitives = ()
lsdtools.extend.GizmoModel.handles#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2246.
handles: tuple[GizmoHandleSpec, ...]
handles = ()
lsdtools.extend.GizmoModel.dataset_actions#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2247.
dataset_actions: tuple[GizmoDatasetActionSpec, ...]
dataset_actions = ()
lsdtools.extend.GizmoModel.target#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2248.
target: str | None
target = None
lsdtools.extend.GizmoModel.generation#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2249.
generation: str | int | None
generation = None
lsdtools.extend.GizmoModel.state#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2250.
state: str
state = 'idle'
lsdtools.extend.GizmoModel.description#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2251.
description: tuple[tuple[str, GizmoScalar], ...]
description = ()
lsdtools.extend.GizmoModel.as_dict#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2329.
as_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.GizmoPoint#
Kind: value. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1776.
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:
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.
MEASUREMENT_ONLY = 'measurement_only'
lsdtools.extend.GizmoPreviewPolicy.RIGID#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:459.
RIGID = 'rigid'
lsdtools.extend.GizmoPreviewPolicy.ENDPOINT#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:460.
ENDPOINT = 'endpoint'
lsdtools.extend.GizmoPreviewPolicy.SEMANTIC#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:461.
SEMANTIC = 'semantic'
lsdtools.extend.GizmoPrimitiveKind#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:464.
Source docstring:
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.
POINT = 'point'
lsdtools.extend.GizmoPrimitiveKind.SEGMENT#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:468.
SEGMENT = 'segment'
lsdtools.extend.GizmoPrimitiveKind.POLYLINE#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:469.
POLYLINE = 'polyline'
lsdtools.extend.GizmoPrimitiveKind.ARROW#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:470.
ARROW = 'arrow'
lsdtools.extend.GizmoPrimitiveKind.BOX#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:471.
BOX = 'box'
lsdtools.extend.GizmoPrimitiveKind.PLANE#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:472.
PLANE = 'plane'
lsdtools.extend.GizmoPrimitiveKind.RING#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:473.
RING = 'ring'
lsdtools.extend.GizmoPrimitiveKind.LABEL#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:474.
LABEL = 'label'
lsdtools.extend.GizmoPrimitiveKind.FILL#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:475.
FILL = 'fill'
lsdtools.extend.GizmoPrimitiveSpec#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1829.
Source docstring:
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.
id: str
lsdtools.extend.GizmoPrimitiveSpec.kind#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1838.
kind: GizmoPrimitiveKind
lsdtools.extend.GizmoPrimitiveSpec.points#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1839.
points: tuple[GizmoPoint, ...]
lsdtools.extend.GizmoPrimitiveSpec.text#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1840.
text: str | None
text = None
lsdtools.extend.GizmoPrimitiveSpec.theme_role#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1841.
theme_role: str
theme_role = 'gizmo.default'
lsdtools.extend.GizmoPrimitiveSpec.color#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1842.
color: GizmoColor | None
color = None
lsdtools.extend.GizmoPrimitiveSpec.width#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1843.
width: float
width = 1.0
lsdtools.extend.GizmoPrimitiveSpec.size#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1844.
size: float
size = 1.0
lsdtools.extend.GizmoPrimitiveSpec.visible#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1845.
visible: bool
visible = True
lsdtools.extend.GizmoPrimitiveSpec.metadata#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1846.
metadata: tuple[tuple[str, GizmoScalar], ...]
metadata = ()
lsdtools.extend.GizmoPrimitiveSpec.as_dict#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1989.
as_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.GizmoScalar#
Kind: value. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1775.
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:
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.
provider_id: str
lsdtools.extend.HapticsRequest.device_id#
Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:295.
device_id: str
lsdtools.extend.HapticsRequest.stable_id#
Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:296.
stable_id: str
lsdtools.extend.HapticsRequest.channel#
Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:297.
channel: str
lsdtools.extend.HapticsRequest.amplitude#
Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:298.
amplitude: float
lsdtools.extend.HapticsRequest.duration_ns#
Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:299.
duration_ns: int
lsdtools.extend.HapticsRequest.timestamp_ns#
Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:300.
timestamp_ns: int
lsdtools.extend.INPUT_ACTION_ASSET_SCHEMA#
Kind: value. Source: services/input/src/lsd_input/asset.py:34.
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.
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.
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.
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.
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.
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.
id: OwnedContributionId
lsdtools.extend.InactiveViewerExtension.reasons#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2822.
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.
name: str
lsdtools.extend.InputActionAsset.maps#
Kind: attribute. Source: services/input/src/lsd_input/asset.py:513.
maps: tuple[InputActionMap, ...]
maps = ()
lsdtools.extend.InputActionAsset.control_schemes#
Kind: attribute. Source: services/input/src/lsd_input/asset.py:514.
control_schemes: tuple[ControlScheme, ...]
control_schemes = ()
lsdtools.extend.InputActionAsset.schema#
Kind: attribute. Source: services/input/src/lsd_input/asset.py:515.
schema: str
schema = SCHEMA
lsdtools.extend.InputActionAsset.asset_id#
Kind: attribute. Source: services/input/src/lsd_input/asset.py:516.
asset_id: str | None
asset_id = field(default=None, kw_only=True)
lsdtools.extend.InputActionAsset.map#
Kind: method. Source: services/input/src/lsd_input/asset.py:573.
map(self, name: str) -> InputActionMap
name: str
self: (unannotated)
lsdtools.extend.InputActionAsset.map_by_id#
Kind: method. Source: services/input/src/lsd_input/asset.py:579.
map_by_id(self, map_id: str) -> InputActionMap
map_id: str
self: (unannotated)
lsdtools.extend.InputActionAsset.action#
Kind: method. Source: services/input/src/lsd_input/asset.py:586.
action(self, ref: str) -> InputAction
ref: str
self: (unannotated)
Source docstring:
``"Map/action"`` -> the action.
lsdtools.extend.InputActionAsset.action_by_id#
Kind: method. Source: services/input/src/lsd_input/asset.py:594.
action_by_id(self, map_id: str, action_id: str) -> InputAction
action_id: str
map_id: str
self: (unannotated)
lsdtools.extend.InputActionAsset.identity_for#
Kind: method. Source: services/input/src/lsd_input/asset.py:597.
identity_for(self, ref: str) -> tuple[str, str]
ref: str
self: (unannotated)
Source docstring:
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.
action_refs(self) -> tuple[str, ...]
self: (unannotated)
lsdtools.extend.InputActionAsset.scheme#
Kind: method. Source: services/input/src/lsd_input/asset.py:611.
scheme(self, name: str) -> ControlScheme
name: str
self: (unannotated)
lsdtools.extend.InputActionAsset.with_binding_path#
Kind: method. Source: services/input/src/lsd_input/asset.py:617.
with_binding_path(self, ref: str, binding_id: str, path: str) -> 'InputActionAsset'
binding_id: str
path: str
ref: str
self: (unannotated)
Source docstring:
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.
with_binding_path_by_id(self, map_id: str, action_id: str, binding_id: str, path: str) -> 'InputActionAsset'
action_id: str
binding_id: str
map_id: str
path: str
self: (unannotated)
Source docstring:
ID-addressed counterpart to :meth:`with_binding_path`.
lsdtools.extend.InputActionAsset.to_dict#
Kind: method. Source: services/input/src/lsd_input/asset.py:682.
to_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.InputActionAsset.from_dict#
Kind: method. Source: services/input/src/lsd_input/asset.py:692.
from_dict(cls, data: Mapping[str, Any]) -> 'InputActionAsset'
cls: (unannotated)
data: Mapping[str, Any]
lsdtools.extend.InputActionAsset.fingerprint#
Kind: method. Source: services/input/src/lsd_input/asset.py:715.
fingerprint(self) -> str
self: (unannotated)
lsdtools.extend.InputExtensionSpec#
Kind: class. Source: core/lsd/src/lsd/packages/input_extensions.py:177.
Source docstring:
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.
name: str
lsdtools.extend.InputExtensionSpec.manifest#
Kind: attribute. Source: core/lsd/src/lsd/packages/input_extensions.py:191.
manifest: Mapping[str, Any]
lsdtools.extend.InputExtensionSpec.revision#
Kind: attribute. Source: core/lsd/src/lsd/packages/input_extensions.py:193.
revision: int
revision = 1
lsdtools.extend.InputExtensionSpec.capabilities#
Kind: attribute. Source: core/lsd/src/lsd/packages/input_extensions.py:194.
capabilities: Tuple[str, ...]
capabilities = ()
lsdtools.extend.InputExtensionSpec.provider_factory#
Kind: attribute. Source: core/lsd/src/lsd/packages/input_extensions.py:195.
provider_factory: Optional[Callable[..., Any]]
provider_factory = None
lsdtools.extend.InputExtensionSpec.package#
Kind: attribute. Source: core/lsd/src/lsd/packages/input_extensions.py:196.
package: Optional[str]
package = None
lsdtools.extend.InputExtensionSpec.qualified_id#
Kind: method. Source: core/lsd/src/lsd/packages/input_extensions.py:243.
qualified_id(self) -> str
self: (unannotated)
Source docstring:
The owner-qualified registry identity, ``<package>/<name>``.
lsdtools.extend.InputExtensionSpec.manifest_dict#
Kind: method. Source: core/lsd/src/lsd/packages/input_extensions.py:252.
manifest_dict(self) -> dict[str, Any]
self: (unannotated)
Source docstring:
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.
InputPort(self, *, clock_ns: Callable[[], int]=time.perf_counter_ns, edge_capacity: int=DEFAULT_EDGE_CAPACITY) -> None
Source docstring:
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.
__init__(self, *, clock_ns: Callable[[], int]=time.perf_counter_ns, edge_capacity: int=DEFAULT_EDGE_CAPACITY) -> None
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.
service(self) -> Any
self: (unannotated)
lsdtools.extend.InputPort.bound#
Kind: method. Source: views/runtime/src/lsd_runtime_view/input_port.py:159.
bound(self) -> bool
self: (unannotated)
lsdtools.extend.InputPort.bind#
Kind: method. Source: views/runtime/src/lsd_runtime_view/input_port.py:163.
bind(self, service: Any) -> Any
self: (unannotated)
service: Any
Source docstring:
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.
bind_frame_observer(self, callback: Callable[[Any], None]) -> Callable[[], None]
callback: Callable[[Any], None]
self: (unannotated)
Source docstring:
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.
frame(self) -> Any
self: (unannotated)
lsdtools.extend.InputPort.update#
Kind: method. Source: views/runtime/src/lsd_runtime_view/input_port.py:327.
update(self, now_ns: int | None=None) -> Any
now_ns: int | None
self: (unannotated)
lsdtools.extend.InputPort.consume_frame#
Kind: method. Source: views/runtime/src/lsd_runtime_view/input_port.py:349.
consume_frame(self) -> Any
self: (unannotated)
Source docstring:
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.
cancel_pending(self, *, until_neutral: bool=False) -> None
self: (unannotated)
until_neutral: bool
Source docstring:
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.
feed_key(self, key: str, pressed: bool, timestamp_ns: int | None=None, *, repeat: bool=False) -> None
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.
feed_pointer(self, x: float, y: float, dx: float=0.0, dy: float=0.0, timestamp_ns: int | None=None) -> None
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.
feed_pointer_button(self, button: int, pressed: bool, x: float=0.0, y: float=0.0, timestamp_ns: int | None=None) -> None
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.
feed_scroll(self, dx: float, dy: float, timestamp_ns: int | None=None) -> None
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.
feed_focus(self, focused: bool, timestamp_ns: int | None=None) -> None
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.
feeds(self) -> bool
self: (unannotated)
Source docstring:
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.
replaying(self) -> bool
self: (unannotated)
lsdtools.extend.InputPort.replay_trace#
Kind: method. Source: views/runtime/src/lsd_runtime_view/input_port.py:533.
replay_trace(self, samples: Iterable[Any]) -> TraceSamples
samples: Iterable[Any]
self: (unannotated)
Source docstring:
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.
end_replay(self) -> dict[str, int]
self: (unannotated)
Source docstring:
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.
schedule_events(self, events: Iterable[Any], *, base_ns: int | None=None) -> int
base_ns: int | None
events: Iterable[Any]
self: (unannotated)
Source docstring:
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.
pump(self, now_ns: int | None=None) -> int
now_ns: int | None
self: (unannotated)
Source docstring:
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.
clear_events(self) -> int
self: (unannotated)
lsdtools.extend.InputPort.describe#
Kind: method. Source: views/runtime/src/lsd_runtime_view/input_port.py:587.
describe(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.InputPort.edge_overflows#
Kind: attribute. Source: views/runtime/src/lsd_runtime_view/input_port.py:142.
edge_overflows: (unannotated)
edge_overflows = 0
lsdtools.extend.InputPort.edge_cancellations#
Kind: attribute. Source: views/runtime/src/lsd_runtime_view/input_port.py:143.
edge_cancellations: (unannotated)
edge_cancellations = 0
lsdtools.extend.InputPort.dropped_edges#
Kind: attribute. Source: views/runtime/src/lsd_runtime_view/input_port.py:144.
dropped_edges: (unannotated)
dropped_edges = 0
lsdtools.extend.InputPort.dropped_feeds#
Kind: attribute. Source: views/runtime/src/lsd_runtime_view/input_port.py:147.
dropped_feeds: (unannotated)
dropped_feeds = 0
lsdtools.extend.InputPort.replays#
Kind: attribute. Source: views/runtime/src/lsd_runtime_view/input_port.py:148.
replays: (unannotated)
replays = 0
lsdtools.extend.InputPort.pumped#
Kind: attribute. Source: views/runtime/src/lsd_runtime_view/input_port.py:149.
pumped: (unannotated)
pumped = 0
lsdtools.extend.InputProviderV1#
Kind: class. Source: services/input/src/lsd_input/provider_protocol.py:420.
Source docstring:
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.
protocol: str
lsdtools.extend.InputProviderV1.enumerate_devices#
Kind: method. Source: services/input/src/lsd_input/provider_protocol.py:425.
enumerate_devices(self, *, max_devices: int) -> Iterable[ProviderDeviceDescription]
max_devices: int
self: (unannotated)
lsdtools.extend.InputProviderV1.poll#
Kind: method. Source: services/input/src/lsd_input/provider_protocol.py:427.
poll(self, *, max_events: int) -> Iterable[ProviderEvent]
max_events: int
self: (unannotated)
lsdtools.extend.InputProviderV1.close#
Kind: method. Source: services/input/src/lsd_input/provider_protocol.py:429.
close(self) -> None
self: (unannotated)
lsdtools.extend.KERNEL_OWNER#
Kind: value. Source: core/platform/src/lsd_platform/components.py:30.
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:
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.
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.
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.
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.
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.
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.
name = 'largecsv'
lsdtools.extend.LargeCsvSourceKind.label#
Kind: attribute. Source: core/lsd/src/lsd/core/largecsv.py:312.
label = 'Large CSV (streamed)'
lsdtools.extend.LargeCsvSourceKind.config_cls#
Kind: attribute. Source: core/lsd/src/lsd/core/largecsv.py:313.
config_cls = LargeCsvConfig
lsdtools.extend.LargeCsvSourceKind.paths#
Kind: method. Source: core/lsd/src/lsd/core/largecsv.py:325.
paths(self, cfg: Configurable) -> List[str]
cfg: Configurable
self: (unannotated)
lsdtools.extend.LargeCsvSourceKind.cache_path#
Kind: method. Source: core/lsd/src/lsd/core/largecsv.py:329.
cache_path(self, cfg: Configurable) -> str
cfg: Configurable
self: (unannotated)
lsdtools.extend.LargeCsvSourceKind.ensure_cache#
Kind: method. Source: core/lsd/src/lsd/core/largecsv.py:332.
ensure_cache(self, cfg: Configurable, *, progress=None) -> Optional[str]
cfg: Configurable
progress: (unannotated)
self: (unannotated)
Source docstring:
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.
read(self, cfg: Configurable, read_one: Callable[[str], Any]) -> Any
cfg: Configurable
read_one: Callable[[str], Any]
self: (unannotated)
lsdtools.extend.LargeCsvSourceKind.fingerprint#
Kind: method. Source: core/lsd/src/lsd/core/largecsv.py:360.
fingerprint(self, cfg: Configurable) -> str
cfg: Configurable
self: (unannotated)
lsdtools.extend.Lease#
Kind: class. Source: core/lsd/src/lsd/packages/resources.py:19.
Lease(self, dispose: Dispose, *, label: str='') -> None
Source docstring:
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.
__init__(self, dispose: Dispose, *, label: str='') -> None
dispose: Dispose
label: str
self: (unannotated)
lsdtools.extend.Lease.disposed#
Kind: method. Source: core/lsd/src/lsd/packages/resources.py:32.
disposed(self) -> bool
self: (unannotated)
lsdtools.extend.Lease.dispose#
Kind: method. Source: core/lsd/src/lsd/packages/resources.py:35.
dispose(self) -> None
self: (unannotated)
Source docstring:
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.
close = dispose
lsdtools.extend.Lease.__enter__#
Kind: method. Source: core/lsd/src/lsd/packages/resources.py:55.
__enter__(self) -> 'Lease'
self: (unannotated)
lsdtools.extend.Lease.__exit__#
Kind: method. Source: core/lsd/src/lsd/packages/resources.py:58.
__exit__(self, *_exc: object) -> None
_exc: object
self: (unannotated)
lsdtools.extend.Lease.label#
Kind: attribute. Source: core/lsd/src/lsd/packages/resources.py:29.
label: (unannotated)
label = str(label)
lsdtools.extend.LoadStep#
Kind: class. Source: core/lsd/src/lsd/flow/steps.py:1432.
LoadStep(self, *, path: Optional[str]=None, **kwargs: Any) -> None
Source docstring:
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.
accepted_source_kinds: ClassVar[tuple]
accepted_source_kinds = ('file',)
lsdtools.extend.LoadStep.source#
Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:1453.
source = source_param(group='Source', label='Source')
lsdtools.extend.LoadStep.varmap#
Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:1455.
varmap = varmap_param(group='Variables', label='Variables')
lsdtools.extend.LoadStep.__init__#
Kind: method. Source: core/lsd/src/lsd/flow/steps.py:1457.
__init__(self, *, path: Optional[str]=None, **kwargs: Any) -> None
kwargs: Any
path: Optional[str]
self: (unannotated)
lsdtools.extend.LoadStep.run#
Kind: method. Source: core/lsd/src/lsd/flow/steps.py:1468.
run(self) -> Union[pa.Table, StepOutputs]
self: (unannotated)
lsdtools.extend.LoadStep.source_obj#
Kind: method. Source: core/lsd/src/lsd/flow/steps.py:1507.
source_obj(self) -> 'ResolvedSource'
self: (unannotated)
lsdtools.extend.LoadStep.source_one#
Kind: method. Source: core/lsd/src/lsd/flow/steps.py:1514.
source_one(self) -> str
self: (unannotated)
Source docstring:
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.
source_table(self, read_one: 'Callable[[str], Any]')
read_one: 'Callable[[str], Any]'
self: (unannotated)
Source docstring:
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.
watch_targets(self) -> List[str]
self: (unannotated)
Source docstring:
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.
watch_frequency(self) -> str
self: (unannotated)
Source docstring:
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.
get_parameters(self)
self: (unannotated)
Source docstring:
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.
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.
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.
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.
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.
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:
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.
kind: str
lsdtools.extend.MainViewType.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:259.
title: str
lsdtools.extend.MainViewType.factory#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:260.
factory: Callable[..., Any]
lsdtools.extend.MainViewType.icon#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:261.
icon: Optional[str]
icon = None
lsdtools.extend.MainViewType.instance_policy#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:262.
instance_policy: str
instance_policy = 'reusable'
lsdtools.extend.MainViewType.default_open#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:263.
default_open: bool
default_open = False
lsdtools.extend.MainViewType.deliver_entity#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:264.
deliver_entity: Optional[Callable[..., Any]]
deliver_entity = None
lsdtools.extend.MainViewType.binding_cardinality#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:265.
binding_cardinality: str
binding_cardinality = 'none'
lsdtools.extend.MainViewType.accepts_entity#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:266.
accepts_entity: Optional[Callable[[Any], bool]]
accepts_entity = None
lsdtools.extend.MainViewType.route_parameter#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:267.
route_parameter: Optional[str]
route_parameter = None
lsdtools.extend.MainViewType.package#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:268.
package: Optional[str]
package = None
lsdtools.extend.MainViewType.accepts#
Kind: method. Source: core/lsd/src/lsd/packages/contributions.py:327.
accepts(self, entity: Any) -> bool
entity: Any
self: (unannotated)
Source docstring:
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.
accepts_binding(self, entity: Any) -> bool
entity: Any
self: (unannotated)
Source docstring:
Whether this declaration permits a persistent binding to ``entity``.
lsdtools.extend.MainViewType.lockable#
Kind: method. Source: core/lsd/src/lsd/packages/contributions.py:345.
lockable(self) -> bool
self: (unannotated)
Source docstring:
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.
accepts_drop(self) -> bool
self: (unannotated)
Source docstring:
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:
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.
command_id: str
lsdtools.extend.MenuItem.label#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:501.
label: str
lsdtools.extend.MenuItem.callback#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:502.
callback: Callable[[], None]
lsdtools.extend.MenuItem.menu#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:503.
menu: str
lsdtools.extend.MenuItem.icon#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:504.
icon: Optional[str]
icon = None
lsdtools.extend.MenuItem.section#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:505.
section: str
section = ''
lsdtools.extend.MenuItem.order#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:506.
order: int
order = 0
lsdtools.extend.MenuItem.accelerator#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:507.
accelerator: Optional[str]
accelerator = None
lsdtools.extend.MenuItem.package#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:508.
package: Optional[str]
package = None
lsdtools.extend.MutationContext#
Kind: class. Source: core/git/src/lsd_git/editops.py:144.
Source docstring:
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.
actor: Author
lsdtools.extend.MutationContext.timestamp#
Kind: attribute. Source: core/git/src/lsd_git/editops.py:154.
timestamp: str
lsdtools.extend.MutationContext.version#
Kind: attribute. Source: core/git/src/lsd_git/editops.py:155.
version: str
version = MUTATION_CONTEXT_VERSION
lsdtools.extend.MutationContext.stamp#
Kind: method. Source: core/git/src/lsd_git/editops.py:173.
stamp(cls, actor: Author) -> 'MutationContext'
actor: Author
cls: (unannotated)
Source docstring:
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.
reseal_actor(self, actor: Author) -> 'MutationContext'
actor: Author
self: (unannotated)
Source docstring:
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.
to_dict(self) -> Dict[str, Any]
self: (unannotated)
lsdtools.extend.MutationContext.from_dict#
Kind: method. Source: core/git/src/lsd_git/editops.py:191.
from_dict(cls, data: Any) -> 'MutationContext'
cls: (unannotated)
data: Any
lsdtools.extend.OBJECT_CONTEXT_ACTION_VERSION#
Kind: value. Source: core/lsd/src/lsd/packages/object_explorer.py:46.
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.
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.
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:
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.
NEUTRAL = 'neutral'
lsdtools.extend.ObjectContextActionRole.ADD#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:121.
ADD = 'add'
lsdtools.extend.ObjectContextActionRole.REMOVE#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:122.
REMOVE = 'remove'
lsdtools.extend.ObjectContextActionSpec#
Kind: class. Source: core/lsd/src/lsd/packages/object_explorer.py:248.
Source docstring:
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.
id: OwnedContributionId
lsdtools.extend.ObjectContextActionSpec.object_type#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:276.
object_type: OwnedContributionId
lsdtools.extend.ObjectContextActionSpec.command_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:277.
command_id: OwnedContributionId
lsdtools.extend.ObjectContextActionSpec.label#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:278.
label: str
lsdtools.extend.ObjectContextActionSpec.group#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:279.
group: str
lsdtools.extend.ObjectContextActionSpec.role#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:280.
role: ObjectContextActionRole
lsdtools.extend.ObjectContextActionSpec.min_selection#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:281.
min_selection: int
min_selection = 1
lsdtools.extend.ObjectContextActionSpec.max_selection#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:282.
max_selection: int
max_selection = 1
lsdtools.extend.ObjectContextActionSpec.version#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:283.
version: str
version = OBJECT_CONTEXT_ACTION_VERSION
lsdtools.extend.ObjectContextActionSpec.accepts_selection#
Kind: method. Source: core/lsd/src/lsd/packages/object_explorer.py:320.
accepts_selection(self, count: int) -> bool
count: int
self: (unannotated)
lsdtools.extend.ObjectContextActionSpec.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/object_explorer.py:325.
to_dict(self) -> dict[str, Any]
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.
severity: ObjectExplorerDiagnosticSeverity
lsdtools.extend.ObjectExplorerDiagnostic.code#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:342.
code: str
lsdtools.extend.ObjectExplorerDiagnostic.message#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:343.
message: str
lsdtools.extend.ObjectExplorerDiagnostic.subjects#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:344.
subjects: tuple[str, ...]
subjects = ()
lsdtools.extend.ObjectExplorerDiagnostic.blocks_plan#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:345.
blocks_plan: bool
blocks_plan = False
lsdtools.extend.ObjectExplorerDiagnostic.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/object_explorer.py:367.
to_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.ObjectExplorerDiagnosticSeverity#
Kind: class. Source: core/lsd/src/lsd/packages/object_explorer.py:104.
Source docstring:
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.
WARNING = 'warning'
lsdtools.extend.ObjectExplorerDiagnosticSeverity.ERROR#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:108.
ERROR = 'error'
lsdtools.extend.ObjectExplorerParentBindingSpec#
Kind: class. Source: core/lsd/src/lsd/packages/object_explorer.py:126.
Source docstring:
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.
reference_field: str
lsdtools.extend.ObjectExplorerParentBindingSpec.source_field#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:138.
source_field: str
lsdtools.extend.ObjectExplorerParentBindingSpec.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/object_explorer.py:150.
to_dict(self) -> dict[str, str]
self: (unannotated)
lsdtools.extend.ObjectExplorerSpec#
Kind: class. Source: core/lsd/src/lsd/packages/object_explorer.py:158.
Source docstring:
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.
id: OwnedContributionId
lsdtools.extend.ObjectExplorerSpec.object_type#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:178.
object_type: OwnedContributionId
lsdtools.extend.ObjectExplorerSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:179.
title: str
lsdtools.extend.ObjectExplorerSpec.label_field#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:180.
label_field: str | None
label_field = None
lsdtools.extend.ObjectExplorerSpec.group_field#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:181.
group_field: str | None
group_field = None
lsdtools.extend.ObjectExplorerSpec.parent_key_bindings#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:182.
parent_key_bindings: tuple[ObjectExplorerParentBindingSpec, ...]
parent_key_bindings = ()
lsdtools.extend.ObjectExplorerSpec.version#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:183.
version: str
version = '1.0'
lsdtools.extend.ObjectExplorerSpec.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/object_explorer.py:233.
to_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.ObjectPropertyChoiceSpec#
Kind: class. Source: core/lsd/src/lsd/packages/object_properties.py:364.
Source docstring:
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.
value: str | int | float | bool
lsdtools.extend.ObjectPropertyChoiceSpec.label#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:368.
label: str
lsdtools.extend.ObjectPropertyChoiceSpec.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:374.
to_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.ObjectPropertyComponentSpec#
Kind: class. Source: core/lsd/src/lsd/packages/object_properties.py:173.
Source docstring:
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.
add_operation: str
lsdtools.extend.ObjectPropertyComponentSpec.remove_operation#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:189.
remove_operation: str
lsdtools.extend.ObjectPropertyComponentSpec.contract_version#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:190.
contract_version: str
contract_version = '1.0'
lsdtools.extend.ObjectPropertyComponentSpec.TARGET_KEYS_FIELD#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:192.
TARGET_KEYS_FIELD: ClassVar[str]
TARGET_KEYS_FIELD = 'keys'
lsdtools.extend.ObjectPropertyComponentSpec.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:213.
to_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.ObjectPropertyDatasetBindingSpec#
Kind: class. Source: core/lsd/src/lsd/packages/object_properties.py:223.
Source docstring:
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.
adapter_kind: str
lsdtools.extend.ObjectPropertyDatasetBindingSpec.key_bindings#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:240.
key_bindings: tuple[ObjectPropertyKeyBinding, ...]
lsdtools.extend.ObjectPropertyDatasetBindingSpec.patch_operation#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:241.
patch_operation: str | None
patch_operation = None
lsdtools.extend.ObjectPropertyDatasetBindingSpec.contract_version#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:242.
contract_version: str
contract_version = '1.0'
lsdtools.extend.ObjectPropertyDatasetBindingSpec.component#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:243.
component: ObjectPropertyComponentSpec | None
component = None
lsdtools.extend.ObjectPropertyDatasetBindingSpec.TARGET_KEYS_FIELD#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:245.
TARGET_KEYS_FIELD: ClassVar[str]
TARGET_KEYS_FIELD = 'keys'
lsdtools.extend.ObjectPropertyDatasetBindingSpec.VALUE_CHANGES_FIELD#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:246.
VALUE_CHANGES_FIELD: ClassVar[str]
VALUE_CHANGES_FIELD = 'changes'
lsdtools.extend.ObjectPropertyDatasetBindingSpec.writable#
Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:302.
writable(self) -> bool
self: (unannotated)
lsdtools.extend.ObjectPropertyDatasetBindingSpec.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:305.
to_dict(self) -> dict[str, Any]
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.
severity: ObjectPropertyDiagnosticSeverity
lsdtools.extend.ObjectPropertyDiagnostic.code#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:738.
code: str
lsdtools.extend.ObjectPropertyDiagnostic.message#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:739.
message: str
lsdtools.extend.ObjectPropertyDiagnostic.subjects#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:740.
subjects: tuple[str, ...]
subjects = ()
lsdtools.extend.ObjectPropertyDiagnostic.blocks_plan#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:741.
blocks_plan: bool
blocks_plan = False
lsdtools.extend.ObjectPropertyDiagnostic.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:762.
to_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.ObjectPropertyDiagnosticSeverity#
Kind: class. Source: core/lsd/src/lsd/packages/object_properties.py:135.
Source docstring:
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.
WARNING = 'warning'
lsdtools.extend.ObjectPropertyDiagnosticSeverity.ERROR#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:139.
ERROR = 'error'
lsdtools.extend.ObjectPropertyFieldKind#
Kind: class. Source: core/lsd/src/lsd/packages/object_properties.py:142.
Source docstring:
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.
TEXT = 'text'
lsdtools.extend.ObjectPropertyFieldKind.BOOLEAN#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:146.
BOOLEAN = 'boolean'
lsdtools.extend.ObjectPropertyFieldKind.INTEGER#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:147.
INTEGER = 'integer'
lsdtools.extend.ObjectPropertyFieldKind.NUMBER#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:148.
NUMBER = 'number'
lsdtools.extend.ObjectPropertyFieldKind.CHOICE#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:149.
CHOICE = 'choice'
lsdtools.extend.ObjectPropertyFieldKind.DATE#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:150.
DATE = 'date'
lsdtools.extend.ObjectPropertyFieldKind.DATETIME#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:151.
DATETIME = 'datetime'
lsdtools.extend.ObjectPropertyFieldSpec#
Kind: class. Source: core/lsd/src/lsd/packages/object_properties.py:379.
Source docstring:
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.
MAX_CHOICES: ClassVar[int]
MAX_CHOICES = 64
lsdtools.extend.ObjectPropertyFieldSpec.id#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:384.
id: str
lsdtools.extend.ObjectPropertyFieldSpec.source_field#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:385.
source_field: str
lsdtools.extend.ObjectPropertyFieldSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:386.
title: str
lsdtools.extend.ObjectPropertyFieldSpec.kind#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:387.
kind: ObjectPropertyFieldKind
lsdtools.extend.ObjectPropertyFieldSpec.editable#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:388.
editable: bool
editable = True
lsdtools.extend.ObjectPropertyFieldSpec.nullable#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:389.
nullable: bool
nullable = True
lsdtools.extend.ObjectPropertyFieldSpec.multi_edit#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:390.
multi_edit: bool
multi_edit = True
lsdtools.extend.ObjectPropertyFieldSpec.description#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:391.
description: str
description = ''
lsdtools.extend.ObjectPropertyFieldSpec.unit#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:392.
unit: str
unit = ''
lsdtools.extend.ObjectPropertyFieldSpec.minimum#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:393.
minimum: int | float | None
minimum = None
lsdtools.extend.ObjectPropertyFieldSpec.maximum#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:394.
maximum: int | float | None
maximum = None
lsdtools.extend.ObjectPropertyFieldSpec.step#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:395.
step: int | float | None
step = None
lsdtools.extend.ObjectPropertyFieldSpec.choices#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:396.
choices: tuple[ObjectPropertyChoiceSpec, ...]
choices = ()
lsdtools.extend.ObjectPropertyFieldSpec.default#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:397.
default: str | int | float | bool | None
default = None
lsdtools.extend.ObjectPropertyFieldSpec.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:555.
to_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.ObjectPropertyKeyBinding#
Kind: class. Source: core/lsd/src/lsd/packages/object_properties.py:155.
Source docstring:
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.
reference_field: str
lsdtools.extend.ObjectPropertyKeyBinding.dataset_field#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:159.
dataset_field: str
lsdtools.extend.ObjectPropertyKeyBinding.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:165.
to_dict(self) -> dict[str, str]
self: (unannotated)
lsdtools.extend.ObjectPropertyResidentBindingSpec#
Kind: class. Source: core/lsd/src/lsd/packages/object_properties.py:321.
Source docstring:
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.
contract_version: str
contract_version = '1.0'
lsdtools.extend.ObjectPropertyResidentBindingSpec.writable#
Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:339.
writable(self) -> bool
self: (unannotated)
lsdtools.extend.ObjectPropertyResidentBindingSpec.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:342.
to_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.ObjectPropertySectionSpec#
Kind: class. Source: core/lsd/src/lsd/packages/object_properties.py:615.
Source docstring:
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.
MAX_FIELDS: ClassVar[int]
MAX_FIELDS = 64
lsdtools.extend.ObjectPropertySectionSpec.MAX_ORDER_ANCHORS#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:624.
MAX_ORDER_ANCHORS: ClassVar[int]
MAX_ORDER_ANCHORS = 64
lsdtools.extend.ObjectPropertySectionSpec.id#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:626.
id: OwnedContributionId
lsdtools.extend.ObjectPropertySectionSpec.object_type#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:627.
object_type: OwnedContributionId
lsdtools.extend.ObjectPropertySectionSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:628.
title: str
lsdtools.extend.ObjectPropertySectionSpec.fields#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:629.
fields: tuple[ObjectPropertyFieldSpec, ...]
lsdtools.extend.ObjectPropertySectionSpec.binding#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:630.
binding: ObjectPropertyDatasetBindingSpec | ObjectPropertyResidentBindingSpec
lsdtools.extend.ObjectPropertySectionSpec.before#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:631.
before: tuple[OwnedContributionId, ...]
before = ()
lsdtools.extend.ObjectPropertySectionSpec.after#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:632.
after: tuple[OwnedContributionId, ...]
after = ()
lsdtools.extend.ObjectPropertySectionSpec.version#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:633.
version: str
version = '1.0'
lsdtools.extend.ObjectPropertySectionSpec.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:722.
to_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.ObjectTypeSpec#
Kind: class. Source: core/lsd/src/lsd/packages/object_properties.py:575.
Source docstring:
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.
id: OwnedContributionId
lsdtools.extend.ObjectTypeSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:579.
title: str
lsdtools.extend.ObjectTypeSpec.feature_namespace#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:580.
feature_namespace: str
lsdtools.extend.ObjectTypeSpec.reference_fields#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:581.
reference_fields: tuple[str, ...]
lsdtools.extend.ObjectTypeSpec.version#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:582.
version: str
version = '1.0'
lsdtools.extend.ObjectTypeSpec.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:604.
to_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.OffscreenAgentView#
Kind: class. Source: views/viewer3d/src/lsd_viewer/agent.py:1722.
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:
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.
__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
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.
add_gizmo(self, gizmo: Any) -> Any
gizmo: Any
self: (unannotated)
Source docstring:
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.
remove_gizmo(self, gizmo_id: str) -> None
gizmo_id: str
self: (unannotated)
Source docstring:
Unmount one gizmo and every primitive it declared.
lsdtools.extend.OffscreenAgentView.describe_gizmos#
Kind: method. Source: views/viewer3d/src/lsd_viewer/agent.py:1929.
describe_gizmos(self) -> dict[str, Any]
self: (unannotated)
Source docstring:
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.
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]
actor: str
changes: Mapping[str, Any]
expected_plan_digest: str
expected_selection_digest: str
section_id: str
self: (unannotated)
Source docstring:
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.
set_viewer_object_component(self, section_id: str, present: bool, *, expected_selection_digest: str, expected_plan_digest: str, actor: str='') -> dict[str, Any]
actor: str
expected_plan_digest: str
expected_selection_digest: str
present: bool
section_id: str
self: (unannotated)
Source docstring:
Stage component membership through the canonical Object Editor.
lsdtools.extend.OffscreenAgentView.attach_bus#
Kind: method. Source: views/viewer3d/src/lsd_viewer/agent.py:2204.
attach_bus(self, bus) -> None
bus: (unannotated)
self: (unannotated)
lsdtools.extend.OffscreenAgentView.perceive#
Kind: method. Source: views/viewer3d/src/lsd_viewer/agent.py:2208.
perceive(self) -> dict
self: (unannotated)
Source docstring:
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.
add_layer(self, layer_id: str, kind: str, path: str, *, style: Optional[dict]=None, **extra) -> dict
extra: (unannotated)
kind: str
layer_id: str
path: str
self: (unannotated)
style: Optional[dict]
Source docstring:
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.
remove_layer(self, layer_id: str) -> None
layer_id: str
self: (unannotated)
lsdtools.extend.OffscreenAgentView.frame_all#
Kind: method. Source: views/viewer3d/src/lsd_viewer/agent.py:2261.
frame_all(self, *, padding: float=0.2, azimuth: float=0.8, elevation: float=0.5) -> None
azimuth: float
elevation: float
padding: float
self: (unannotated)
Source docstring:
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.
snapshot_png(self, width: int=1024, height: int=768, *, overlay: bool=True) -> bytes
height: int
overlay: bool
self: (unannotated)
width: int
Source docstring:
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.
save_snapshot(self, path: str, width: int=1024, height: int=768) -> str
height: int
path: str
self: (unannotated)
width: int
Source docstring:
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.
dispose(self) -> None
self: (unannotated)
Source docstring:
Release the headless surface without settling any participant draft.
lsdtools.extend.OffscreenAgentView.scene#
Kind: attribute. Source: views/viewer3d/src/lsd_viewer/agent.py:1755.
scene: (unannotated)
scene = Scene(name='agent')
lsdtools.extend.OffscreenAgentView.camera#
Kind: attribute. Source: views/viewer3d/src/lsd_viewer/agent.py:1756.
camera: (unannotated)
camera = camera or Camera()
lsdtools.extend.OffscreenAgentView.gizmos#
Kind: attribute. Source: views/viewer3d/src/lsd_viewer/agent.py:1759.
gizmos: (unannotated)
gizmos = None
lsdtools.extend.OffscreenAgentView.sink#
Kind: attribute. Source: views/viewer3d/src/lsd_viewer/agent.py:1764.
sink: (unannotated)
sink = GeometryLayerSink(self._surface)
lsdtools.extend.OffscreenAgentView.surface#
Kind: attribute. Source: views/viewer3d/src/lsd_viewer/agent.py:1770.
surface: (unannotated)
surface = self._surface
lsdtools.extend.OffscreenAgentView.selection#
Kind: attribute. Source: views/viewer3d/src/lsd_viewer/agent.py:1772.
selection: (unannotated)
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.
control: (unannotated)
control = ControlSurface()
lsdtools.extend.OffscreenAgentView.editing#
Kind: attribute. Source: views/viewer3d/src/lsd_viewer/agent.py:1797.
editing: (unannotated)
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.
object_editor: (unannotated)
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.
scene_commands: (unannotated)
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.
object_explorer: (unannotated)
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:
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.
package: str
lsdtools.extend.OwnedContributionId.local_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:127.
local_id: str
lsdtools.extend.OwnedContributionId.qualified#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:135.
qualified(self) -> str
self: (unannotated)
lsdtools.extend.OwnedContributionId.parse#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:139.
parse(cls, value: str) -> 'OwnedContributionId'
cls: (unannotated)
value: str
lsdtools.extend.PackageHost#
Kind: class. Source: core/lsd/src/lsd/packages/host.py:30.
PackageHost(self, bus: Any=None, *, services: Optional[Dict[str, Callable]]=None) -> None
Source docstring:
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.
__init__(self, bus: Any=None, *, services: Optional[Dict[str, Callable]]=None) -> None
bus: Any
self: (unannotated)
services: Optional[Dict[str, Callable]]
lsdtools.extend.PackageHost.wrap#
Kind: method. Source: core/lsd/src/lsd/packages/host.py:56.
wrap(cls, obj: Any, services: Optional[Dict[str, Callable]]=None) -> 'PackageHost'
cls: (unannotated)
obj: Any
services: Optional[Dict[str, Callable]]
Source docstring:
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.
for_package(self, package: str) -> '_PackageBoundHost'
package: str
self: (unannotated)
Source docstring:
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.
bus(self) -> Any
self: (unannotated)
Source docstring:
The underlying event bus (or ``None``).
lsdtools.extend.PackageHost.service#
Kind: method. Source: core/lsd/src/lsd/packages/host.py:88.
service(self, name: str, default: Any=None) -> Any
default: Any
name: str
self: (unannotated)
Source docstring:
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.
register_service(self, name: str, provider: Callable, *, package: Optional[str]=None) -> None
name: str
package: Optional[str]
provider: Callable
self: (unannotated)
Source docstring:
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.
unregister_package_services(self, package: Optional[str]) -> None
package: Optional[str]
self: (unannotated)
Source docstring:
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.
unmount_package(self, package: str) -> None
package: str
self: (unannotated)
Source docstring:
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.
mounting(self, package: str)
package: str
self: (unannotated)
Source docstring:
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.
set_package_active(self, package: str, active: bool) -> None
active: bool
package: str
self: (unannotated)
Source docstring:
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.
snapshot_runtime_state(self) -> dict
self: (unannotated)
Source docstring:
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.
restore_runtime_state(self, state: dict) -> None
self: (unannotated)
state: dict
Source docstring:
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.
on(self, pattern: str, handler: Callable, priority: int=100) -> Any
handler: Callable
pattern: str
priority: int
self: (unannotated)
lsdtools.extend.PackageHost.off#
Kind: method. Source: core/lsd/src/lsd/packages/host.py:225.
off(self, pattern: str, handler: Callable) -> None
handler: Callable
pattern: str
self: (unannotated)
lsdtools.extend.PackageHost.emit#
Kind: method. Source: core/lsd/src/lsd/packages/host.py:250.
emit(self, *args: Any, **kwargs: Any) -> Any
args: Any
kwargs: Any
self: (unannotated)
lsdtools.extend.PackageHost.emit_collect#
Kind: method. Source: core/lsd/src/lsd/packages/host.py:255.
emit_collect(self, *args: Any, **kwargs: Any) -> Any
args: Any
kwargs: Any
self: (unannotated)
lsdtools.extend.PackageHost.engine#
Kind: method. Source: core/lsd/src/lsd/packages/host.py:263.
engine(self) -> Any
self: (unannotated)
Source docstring:
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.
project_dir(self) -> Optional[str]
self: (unannotated)
Source docstring:
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.
notify(self, message: str, level: str='info') -> None
level: str
message: str
self: (unannotated)
Source docstring:
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.
open_in_editor(self, path: Optional[str]=None) -> None
path: Optional[str]
self: (unannotated)
Source docstring:
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.
request_reload(self) -> None
self: (unannotated)
Source docstring:
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:
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.
name: str
lsdtools.extend.PackageInfo.version#
Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:336.
version: str
lsdtools.extend.PackageInfo.display_name#
Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:337.
display_name: str
display_name = ''
lsdtools.extend.PackageInfo.description#
Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:338.
description: str
description = ''
lsdtools.extend.PackageInfo.author#
Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:339.
author: str
author = ''
lsdtools.extend.PackageInfo.publisher#
Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:340.
publisher: str
publisher = ''
lsdtools.extend.PackageInfo.keywords#
Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:341.
keywords: List[str]
keywords = field(default_factory=list)
lsdtools.extend.PackageInfo.min_lsd#
Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:342.
min_lsd: str
min_lsd = '1.0.0'
lsdtools.extend.PackageInfo.dependencies#
Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:343.
dependencies: Dict[str, str]
dependencies = field(default_factory=dict)
lsdtools.extend.PackageInfo.runtime_dependencies#
Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:346.
runtime_dependencies: Dict[str, str]
runtime_dependencies = field(default_factory=dict)
lsdtools.extend.PackageInfo.tier#
Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:350.
tier: str
tier = 'domain'
lsdtools.extend.PackageInfo.group#
Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:351.
group: str
group = ''
lsdtools.extend.PackageInfo.code#
Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:353.
code: Optional[str]
code = None
lsdtools.extend.PackageInfo.tool#
Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:355.
tool: Optional[str]
tool = None
lsdtools.extend.PackageInfo.sealed#
Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:357.
sealed: bool
sealed = False
lsdtools.extend.PackageInfo.paid#
Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:358.
paid: bool
paid = False
lsdtools.extend.PackageInfo.key_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:359.
key_id: Optional[str]
key_id = None
lsdtools.extend.PackageInfo.artifact_sha256#
Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:360.
artifact_sha256: Optional[str]
artifact_sha256 = None
lsdtools.extend.PackageInfo.resources#
Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:361.
resources: List[str]
resources = field(default_factory=list)
lsdtools.extend.PackageInfo.path#
Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:364.
path: Optional[str]
path = None
lsdtools.extend.PackageInfo.installed_at#
Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:365.
installed_at: Optional[str]
installed_at = None
lsdtools.extend.PackageInfo.source#
Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:368.
source: str
source = 'local'
lsdtools.extend.PackageInfo.distribution#
Kind: attribute. Source: core/lsd/src/lsd/packages/manifest.py:371.
distribution: Optional[str]
distribution = None
lsdtools.extend.PackageInfo.to_manifest_dict#
Kind: method. Source: core/lsd/src/lsd/packages/manifest.py:373.
to_manifest_dict(self) -> dict
self: (unannotated)
Source docstring:
Return the serialisable lsd_package.json content (v1).
lsdtools.extend.PackageInfo.from_dict#
Kind: method. Source: core/lsd/src/lsd/packages/manifest.py:405.
from_dict(cls, data: dict) -> 'PackageInfo'
cls: (unannotated)
data: dict
Source docstring:
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.
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:
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.
__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
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.
blocked(self) -> 'dict[str, str]'
self: (unannotated)
Source docstring:
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.
licenses(self) -> 'dict[str, dict]'
self: (unannotated)
Source docstring:
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.
license_of(self, name: str) -> 'Optional[dict]'
name: str
self: (unannotated)
lsdtools.extend.PackageManager.dependency_report#
Kind: method. Source: core/lsd/src/lsd/packages/manager.py:951.
dependency_report(self, name: str) -> Optional[DepReport]
name: str
self: (unannotated)
Source docstring:
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.
runtime_package_infos(self) -> 'dict[str, PackageInfo]'
self: (unannotated)
Source docstring:
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.
runtime_dependency_report(self, info: Any) -> DepReport
info: Any
self: (unannotated)
Source docstring:
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.
require_runtime_dependencies(self, owner: str, requirements: Mapping[str, str]) -> None
owner: str
requirements: Mapping[str, str]
self: (unannotated)
Source docstring:
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.
dependency_closure(self, names: Iterable[str]) -> 'list[str]'
names: Iterable[str]
self: (unannotated)
Source docstring:
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.
search_paths(self) -> List[Path]
self: (unannotated)
Source docstring:
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.
trusted_shell_infos(self) -> List[PackageInfo]
self: (unannotated)
Source docstring:
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.
installed(self) -> List[PackageInfo]
self: (unannotated)
Source docstring:
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.
is_trusted_shell_package(self, name: str) -> bool
name: str
self: (unannotated)
Source docstring:
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.
loaded_names(self) -> List[str]
self: (unannotated)
Source docstring:
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.
loaded_package_infos(self) -> 'dict[str, PackageInfo]'
self: (unannotated)
Source docstring:
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.
loaded_coordinates(self) -> 'dict[str, tuple[str, str]]'
self: (unannotated)
Source docstring:
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.
exact_info(self, name: str, version: str, artifact_sha256: str) -> Optional[PackageInfo]
artifact_sha256: str
name: str
self: (unannotated)
version: str
Source docstring:
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.
preflight_compatibility(self, info: PackageInfo) -> None
info: PackageInfo
self: (unannotated)
Source docstring:
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.
discard_exact_cache(self, name: str, version: str, artifact_sha256: str) -> None
artifact_sha256: str
name: str
self: (unannotated)
version: str
Source docstring:
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.
load_locked(self, package_lock: dict, bus: Any=None) -> List[str]
bus: Any
package_lock: dict
self: (unannotated)
Source docstring:
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.
activate_graph(self, *, root: str, names: Iterable[str]=(), package_lock: Optional[dict]=None, bus: Any=None, finalize: Optional[Callable[[tuple[str, ...]], None]]=None) -> PackageActivationReport
bus: Any
finalize: Optional[Callable[[tuple[str, ...]], None]]
names: Iterable[str]
package_lock: Optional[dict]
root: str
self: (unannotated)
Source docstring:
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.
invalidate_catalog(self) -> None
self: (unannotated)
Source docstring:
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.
is_project_local(self, name: str) -> bool
name: str
self: (unannotated)
Source docstring:
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.
set_workspace_dir(self, workspace_dir: Optional[str]) -> None
self: (unannotated)
workspace_dir: Optional[str]
Source docstring:
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.
available(self, *, refresh: bool=False) -> List[PackageInfo]
refresh: bool
self: (unannotated)
Source docstring:
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.
load_trusted_shells(self, bus: Any=None) -> List[str]
bus: Any
self: (unannotated)
Source docstring:
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.
load_all(self, bus: Any=None) -> List[str]
bus: Any
self: (unannotated)
Source docstring:
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.
load(self, names: Iterable[str], bus: Any=None) -> List[str]
bus: Any
names: Iterable[str]
self: (unannotated)
Source docstring:
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.
reload(self, name: str, bus: Any=None) -> ReloadResult
bus: Any
name: str
self: (unannotated)
Source docstring:
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.
reload_exact(self, name: str, version: str, artifact_sha256: str, bus: Any=None) -> ReloadResult
artifact_sha256: str
bus: Any
name: str
self: (unannotated)
version: str
Source docstring:
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.
reload_path(self, package_dir: Any, bus: Any=None, *, expected_name: Optional[str]=None) -> ReloadResult
bus: Any
expected_name: Optional[str]
package_dir: Any
self: (unannotated)
Source docstring:
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.
load_project_scripts(self, project_dir: Any, bus: Any=None, *, source_dir: Any=None) -> ReloadResult
bus: Any
project_dir: Any
self: (unannotated)
source_dir: Any
Source docstring:
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.
unload_project_scripts(self, project_dir: Any) -> None
project_dir: Any
self: (unannotated)
Source docstring:
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.
owned_type_ids(name: str) -> List[str]
name: str
Source docstring:
Exact Configurable type ids currently attributed to package *name*.
lsdtools.extend.PackageManager.unload#
Kind: method. Source: core/lsd/src/lsd/packages/manager.py:3053.
unload(self, name: str) -> None
name: str
self: (unannotated)
Source docstring:
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.
release_finished_activations(self) -> List[str]
self: (unannotated)
Source docstring:
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.
store_transaction()
Source docstring:
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.
install(self, source: str, *, distribution: Optional[str]=None, register: bool=True) -> Optional[PackageInfo]
distribution: Optional[str]
register: bool
self: (unannotated)
source: str
Source docstring:
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.
snapshot(self, source: str) -> Optional[PackageInfo]
self: (unannotated)
source: str
Source docstring:
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.
snapshot_install(self, name: str) -> InstallSnapshot
name: str
self: (unannotated)
Source docstring:
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.
discard_install_snapshot(self, snapshot: InstallSnapshot) -> None
self: (unannotated)
snapshot: InstallSnapshot
lsdtools.extend.PackageManager.install_snapshot_unchanged#
Kind: method. Source: core/lsd/src/lsd/packages/manager.py:3257.
install_snapshot_unchanged(self, snapshot: InstallSnapshot) -> bool
self: (unannotated)
snapshot: InstallSnapshot
Source docstring:
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.
install_snapshot_matches(self, snapshot: InstallSnapshot, version: str) -> bool
self: (unannotated)
snapshot: InstallSnapshot
version: str
Source docstring:
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.
record_install_graph(self, root: str, version: str, graph: dict) -> None
graph: dict
root: str
self: (unannotated)
version: str
Source docstring:
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.
exact_root_graph(self, root: str, version: str, artifact_sha256: str) -> tuple[list[str], dict]
artifact_sha256: str
root: str
self: (unannotated)
version: str
Source docstring:
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.
installed_root_graph(self, root: str) -> tuple[list[str], dict]
root: str
self: (unannotated)
Source docstring:
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.
restore_install_snapshot(self, snapshot: InstallSnapshot, failed_version: Optional[str]=None) -> None
failed_version: Optional[str]
self: (unannotated)
snapshot: InstallSnapshot
Source docstring:
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.
install_url(self, url: str) -> Optional[PackageInfo]
self: (unannotated)
url: str
Source docstring:
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.
add_local(self, source: str) -> PackageInfo
self: (unannotated)
source: str
Source docstring:
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.
remove(self, name: str) -> bool
name: str
self: (unannotated)
lsdtools.extend.PalettePayload#
Kind: class. Source: core/style/src/lsd_style/assets.py:170.
Source docstring:
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.
colors: Tuple[RGBA, ...]
lsdtools.extend.PalettePayload.named#
Kind: attribute. Source: core/style/src/lsd_style/assets.py:174.
named: Tuple[Tuple[str, RGBA], ...]
named = ()
lsdtools.extend.PalettePayload.kind#
Kind: attribute. Source: core/style/src/lsd_style/assets.py:175.
kind = 'palette'
lsdtools.extend.PalettePayload.color_for#
Kind: method. Source: core/style/src/lsd_style/assets.py:185.
color_for(self, value: Any, index: int) -> RGBA
index: int
self: (unannotated)
value: Any
lsdtools.extend.PalettePayload.categories_mapping#
Kind: method. Source: core/style/src/lsd_style/assets.py:192.
categories_mapping(self, values: Sequence[Any], *, fallback: Any=None) -> Dict[str, Any]
fallback: Any
self: (unannotated)
values: Sequence[Any]
lsdtools.extend.PalettePayload.to_bytes#
Kind: method. Source: core/style/src/lsd_style/assets.py:202.
to_bytes(self) -> bytes
self: (unannotated)
lsdtools.extend.PalettePayload.from_parts#
Kind: method. Source: core/style/src/lsd_style/assets.py:207.
from_parts(cls, header: Mapping[str, Any], arrays: Sequence[np.ndarray]) -> 'PalettePayload'
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:
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.
name: str
lsdtools.extend.ParameterInfo.label#
Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:216.
label: str
lsdtools.extend.ParameterInfo.description#
Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:217.
description: str
lsdtools.extend.ParameterInfo.current_value#
Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:218.
current_value: Any
lsdtools.extend.ParameterInfo.default#
Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:219.
default: Any
lsdtools.extend.ParameterInfo.param_type#
Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:220.
param_type: type
lsdtools.extend.ParameterInfo.required#
Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:221.
required: bool
lsdtools.extend.ParameterInfo.choices#
Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:222.
choices: Optional[List[Any]]
lsdtools.extend.ParameterInfo.min#
Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:223.
min: Optional[Any]
lsdtools.extend.ParameterInfo.max#
Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:224.
max: Optional[Any]
lsdtools.extend.ParameterInfo.widget#
Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:225.
widget: Optional[str]
lsdtools.extend.ParameterInfo.visibility#
Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:226.
visibility: str
lsdtools.extend.ParameterInfo.group#
Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:227.
group: str
lsdtools.extend.ParameterInfo.graph#
Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:228.
graph: bool
graph = False
lsdtools.extend.ParameterInfo.output#
Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:229.
output: bool
output = False
lsdtools.extend.ParameterInfo.step#
Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:230.
step: Optional[float]
step = None
lsdtools.extend.ParameterInfo.digits#
Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:231.
digits: Optional[int]
digits = None
lsdtools.extend.ParameterInfo.to_json_schema#
Kind: method. Source: core/lsd/src/lsd/core/configurable.py:233.
to_json_schema(self) -> Dict[str, Any]
self: (unannotated)
Source docstring:
Return a JSON Schema property dict for this parameter.
lsdtools.extend.ParameterInspector#
Kind: class. Source: views/inspector/src/lsd_view_inspector/inspector.py:147.
ParameterInspector(self) -> None
Source docstring:
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.
__init__(self) -> None
self: (unannotated)
lsdtools.extend.ParameterInspector.connect_any_changed#
Kind: method. Source: views/inspector/src/lsd_view_inspector/inspector.py:181.
connect_any_changed(self, cb) -> None
cb: (unannotated)
self: (unannotated)
Source docstring:
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.
current_configurable(self) -> Optional['Configurable']
self: (unannotated)
Source docstring:
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.
set_edit_handler_factory(self, factory: Optional[Callable[[Any], Any]]) -> None
factory: Optional[Callable[[Any], Any]]
self: (unannotated)
Source docstring:
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.
load(self, configurable: 'Configurable', *, edit_handler: Optional[Callable[[str, Any], Any]]=None, values: Optional[Mapping[str, Any]]=None, read_only: bool=False) -> None
configurable: 'Configurable'
edit_handler: Optional[Callable[[str, Any], Any]]
read_only: bool
self: (unannotated)
values: Optional[Mapping[str, Any]]
Source docstring:
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.
set_style_editor_opener(self, opener) -> None
opener: (unannotated)
self: (unannotated)
Source docstring:
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.
clear(self) -> None
self: (unannotated)
Source docstring:
Remove the loaded configurable.
lsdtools.extend.ParameterInspector.refresh#
Kind: method. Source: views/inspector/src/lsd_view_inspector/inspector.py:384.
refresh(self) -> None
self: (unannotated)
Source docstring:
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:
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.
mask: np.ndarray
lsdtools.extend.PatternMaskPayload.kind#
Kind: attribute. Source: core/style/src/lsd_style/assets.py:218.
kind = 'pattern_mask'
lsdtools.extend.PatternMaskPayload.to_bytes#
Kind: method. Source: core/style/src/lsd_style/assets.py:223.
to_bytes(self) -> bytes
self: (unannotated)
lsdtools.extend.PatternMaskPayload.from_parts#
Kind: method. Source: core/style/src/lsd_style/assets.py:227.
from_parts(cls, header: Mapping[str, Any], arrays: Sequence[np.ndarray]) -> 'PatternMaskPayload'
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:
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.
ok: bool
lsdtools.extend.PipelineResult.step_results#
Kind: attribute. Source: core/lsd/src/lsd/runtime/runner.py:139.
step_results: List[StepResult]
lsdtools.extend.PipelineResult.error#
Kind: attribute. Source: core/lsd/src/lsd/runtime/runner.py:140.
error: Optional[Exception]
lsdtools.extend.PipelineResult.error_step#
Kind: attribute. Source: core/lsd/src/lsd/runtime/runner.py:141.
error_step: Optional[str]
lsdtools.extend.PipelineResult.total_duration_s#
Kind: attribute. Source: core/lsd/src/lsd/runtime/runner.py:142.
total_duration_s: float
lsdtools.extend.PipelineResult.output#
Kind: method. Source: core/lsd/src/lsd/runtime/runner.py:145.
output(self) -> Optional[pa.Table]
self: (unannotated)
Source docstring:
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.
artifacts(self) -> dict
self: (unannotated)
Source docstring:
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.
raise_on_error(self) -> 'PipelineResult'
self: (unannotated)
Source docstring:
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:
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.
instruction: str
lsdtools.extend.PointerToolPrompt.cursor#
Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/tool.py:37.
cursor: str
cursor = 'default'
lsdtools.extend.PointerToolPrompt.primary_gesture#
Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/tool.py:38.
primary_gesture: str
primary_gesture = ''
lsdtools.extend.PointerToolPrompt.cancel_gesture#
Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/tool.py:39.
cancel_gesture: str
cancel_gesture = 'Escape cancels the current preview'
lsdtools.extend.PointerToolPrompt.phase#
Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/tool.py:40.
phase: str
phase = 'ready'
lsdtools.extend.PointerToolPrompt.as_dict#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:54.
as_dict(self) -> dict[str, str]
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.
providers: Mapping[Capability | str, OwnedContributionId | str]
providers = field(default_factory=dict)
lsdtools.extend.ProjectStatusBindings.provider_for#
Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:683.
provider_for(self, capability: Capability) -> OwnedContributionId | None
capability: Capability
self: (unannotated)
lsdtools.extend.ProjectStatusBindings.from_mapping#
Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:687.
from_mapping(cls, values: Mapping[Capability | str, OwnedContributionId | str]) -> 'ProjectStatusBindings'
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.
as_dict(self) -> dict[str, str]
self: (unannotated)
lsdtools.extend.ProjectStyleImportCandidate#
Kind: class. Source: core/lsd/src/lsd/project_semantics.py:895.
Source docstring:
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.
style: StyleDefinition
lsdtools.extend.ProjectStyleImportCandidate.status#
Kind: attribute. Source: core/lsd/src/lsd/project_semantics.py:899.
status: ProjectStyleImportStatus
lsdtools.extend.ProjectStyleImportConflictError#
Kind: class. Source: core/lsd/src/lsd/project_semantics.py:902.
ProjectStyleImportConflictError(self, style_ids: Iterable[str]) -> None
Source docstring:
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.
__init__(self, style_ids: Iterable[str]) -> None
self: (unannotated)
style_ids: Iterable[str]
lsdtools.extend.ProjectStyleImportConflictError.style_ids#
Kind: attribute. Source: core/lsd/src/lsd/project_semantics.py:906.
style_ids: (unannotated)
style_ids = tuple(style_ids)
lsdtools.extend.ProjectStyleImportResult#
Kind: class. Source: core/lsd/src/lsd/project_semantics.py:912.
Source docstring:
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.
catalog: ProjectSemanticsCatalog
lsdtools.extend.ProjectStyleImportResult.imported_style_ids#
Kind: attribute. Source: core/lsd/src/lsd/project_semantics.py:916.
imported_style_ids: tuple[str, ...]
lsdtools.extend.ProjectStyleImportResult.already_present_style_ids#
Kind: attribute. Source: core/lsd/src/lsd/project_semantics.py:917.
already_present_style_ids: tuple[str, ...]
lsdtools.extend.ProjectStyleImportStatus#
Kind: class. Source: core/lsd/src/lsd/project_semantics.py:886.
Source docstring:
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.
AVAILABLE = 'available'
lsdtools.extend.ProjectStyleImportStatus.ALREADY_PRESENT#
Kind: attribute. Source: core/lsd/src/lsd/project_semantics.py:890.
ALREADY_PRESENT = 'already-present'
lsdtools.extend.ProjectStyleImportStatus.CONFLICT#
Kind: attribute. Source: core/lsd/src/lsd/project_semantics.py:891.
CONFLICT = 'conflict'
lsdtools.extend.ProjectViewerBindings#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2580.
Source docstring:
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.
providers: tuple[tuple[Capability, OwnedContributionId], ...]
providers = ()
lsdtools.extend.ProjectViewerBindings.from_mapping#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2594.
from_mapping(cls, values: Mapping[Capability | str, OwnedContributionId | str]) -> 'ProjectViewerBindings'
cls: (unannotated)
values: Mapping[Capability | str, OwnedContributionId | str]
lsdtools.extend.ProjectViewerBindings.get#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2610.
get(self, capability: Capability) -> OwnedContributionId | None
capability: Capability
self: (unannotated)
lsdtools.extend.ProjectViewerBindings.as_dict#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2613.
as_dict(self) -> dict[str, str]
self: (unannotated)
lsdtools.extend.ProviderContextV1#
Kind: class. Source: services/input/src/lsd_input/provider_protocol.py:362.
ProviderContextV1(self, registration: ProviderRegistration, *, clock_ns: Callable[[], int]=time.perf_counter_ns) -> None
Source docstring:
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.
schema = INPUT_PROVIDER_CONTEXT_V1
lsdtools.extend.ProviderContextV1.__init__#
Kind: method. Source: services/input/src/lsd_input/provider_protocol.py:373.
__init__(self, registration: ProviderRegistration, *, clock_ns: Callable[[], int]=time.perf_counter_ns) -> None
clock_ns: Callable[[], int]
registration: ProviderRegistration
self: (unannotated)
lsdtools.extend.ProviderContextV1.owner#
Kind: method. Source: services/input/src/lsd_input/provider_protocol.py:393.
owner(self) -> str
self: (unannotated)
lsdtools.extend.ProviderContextV1.provider_id#
Kind: method. Source: services/input/src/lsd_input/provider_protocol.py:397.
provider_id(self) -> str
self: (unannotated)
lsdtools.extend.ProviderContextV1.grants#
Kind: method. Source: services/input/src/lsd_input/provider_protocol.py:401.
grants(self) -> tuple[str, ...]
self: (unannotated)
lsdtools.extend.ProviderContextV1.has_capability#
Kind: method. Source: services/input/src/lsd_input/provider_protocol.py:404.
has_capability(self, capability: str) -> bool
capability: str
self: (unannotated)
lsdtools.extend.ProviderContextV1.now_ns#
Kind: method. Source: services/input/src/lsd_input/provider_protocol.py:409.
now_ns(self) -> int
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.
stable_id: str
lsdtools.extend.ProviderDeviceConnected.description#
Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:229.
description: DeviceDescription
lsdtools.extend.ProviderDeviceConnected.timestamp_ns#
Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:230.
timestamp_ns: int
lsdtools.extend.ProviderDeviceDescription#
Kind: class. Source: services/input/src/lsd_input/provider_protocol.py:212.
Source docstring:
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.
stable_id: str
lsdtools.extend.ProviderDeviceDescription.description#
Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:216.
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.
stable_id: str
lsdtools.extend.ProviderDeviceDisconnected.timestamp_ns#
Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:275.
timestamp_ns: int
lsdtools.extend.ProviderDeviceDisconnected.reason#
Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:276.
reason: str
reason = ''
lsdtools.extend.ProviderDeviceState#
Kind: class. Source: services/input/src/lsd_input/provider_protocol.py:242.
Source docstring:
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.
stable_id: str
lsdtools.extend.ProviderDeviceState.timestamp_ns#
Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:246.
timestamp_ns: int
lsdtools.extend.ProviderDeviceState.values#
Kind: attribute. Source: services/input/src/lsd_input/provider_protocol.py:247.
values: Mapping[str, Any]
lsdtools.extend.RampPayload#
Kind: class. Source: core/style/src/lsd_style/assets.py:107.
Source docstring:
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.
stops: Tuple[Tuple[float, RGBA], ...]
lsdtools.extend.RampPayload.kind#
Kind: attribute. Source: core/style/src/lsd_style/assets.py:111.
kind = 'ramp'
lsdtools.extend.RampPayload.sample#
Kind: method. Source: core/style/src/lsd_style/assets.py:128.
sample(self, t: Any) -> np.ndarray
self: (unannotated)
t: Any
Source docstring:
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.
continuous_mapping(self, minimum: float, maximum: float, *, fallback: Any=None, samples: int=0) -> Dict[str, Any]
fallback: Any
maximum: float
minimum: float
samples: int
self: (unannotated)
Source docstring:
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.
to_bytes(self) -> bytes
self: (unannotated)
lsdtools.extend.RampPayload.from_parts#
Kind: method. Source: core/style/src/lsd_style/assets.py:164.
from_parts(cls, header: Mapping[str, Any], arrays: Sequence[np.ndarray]) -> 'RampPayload'
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.
spec: ObjectContextActionSpec
lsdtools.extend.ResolvedObjectContextAction.object_type#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:392.
object_type: ObjectTypeSpec
lsdtools.extend.ResolvedObjectContextAction.id#
Kind: method. Source: core/lsd/src/lsd/packages/object_explorer.py:395.
id(self) -> OwnedContributionId
self: (unannotated)
lsdtools.extend.ResolvedObjectContextAction.command_id#
Kind: method. Source: core/lsd/src/lsd/packages/object_explorer.py:399.
command_id(self) -> OwnedContributionId
self: (unannotated)
lsdtools.extend.ResolvedObjectContextAction.invocation_params#
Kind: method. Source: core/lsd/src/lsd/packages/object_explorer.py:402.
invocation_params(self, selection: Iterable[ViewerObjectRef], *, selection_digest: str) -> dict[str, Any]
selection: Iterable[ViewerObjectRef]
selection_digest: str
self: (unannotated)
Source docstring:
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.
to_dict(self) -> dict[str, Any]
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.
spec: ObjectExplorerSpec
lsdtools.extend.ResolvedObjectExplorer.id#
Kind: method. Source: core/lsd/src/lsd/packages/object_explorer.py:382.
id(self) -> OwnedContributionId
self: (unannotated)
lsdtools.extend.ResolvedObjectExplorer.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/object_explorer.py:385.
to_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.ResolvedObjectExplorerPlan#
Kind: class. Source: core/lsd/src/lsd/packages/object_explorer.py:464.
Source docstring:
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.
MAX_DIAGNOSTICS: ClassVar[int]
MAX_DIAGNOSTICS = 128
lsdtools.extend.ResolvedObjectExplorerPlan.feature_namespace#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:469.
feature_namespace: str
lsdtools.extend.ResolvedObjectExplorerPlan.object_type#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:470.
object_type: ObjectTypeSpec | None
lsdtools.extend.ResolvedObjectExplorerPlan.explorers#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:471.
explorers: tuple[ResolvedObjectExplorer, ...]
lsdtools.extend.ResolvedObjectExplorerPlan.context_actions#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:472.
context_actions: tuple[ResolvedObjectContextAction, ...]
lsdtools.extend.ResolvedObjectExplorerPlan.diagnostics#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:473.
diagnostics: tuple[ObjectExplorerDiagnostic, ...]
lsdtools.extend.ResolvedObjectExplorerPlan.digest#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_explorer.py:474.
digest: str
lsdtools.extend.ResolvedObjectExplorerPlan.valid#
Kind: method. Source: core/lsd/src/lsd/packages/object_explorer.py:477.
valid(self) -> bool
self: (unannotated)
lsdtools.extend.ResolvedObjectExplorerPlan.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/object_explorer.py:482.
to_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.ResolvedObjectPropertyPlan#
Kind: class. Source: core/lsd/src/lsd/packages/object_properties.py:797.
Source docstring:
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.
MAX_SECTIONS: ClassVar[int]
MAX_SECTIONS = 32
lsdtools.extend.ResolvedObjectPropertyPlan.MAX_FIELDS#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:807.
MAX_FIELDS: ClassVar[int]
MAX_FIELDS = 256
lsdtools.extend.ResolvedObjectPropertyPlan.MAX_CHOICES#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:808.
MAX_CHOICES: ClassVar[int]
MAX_CHOICES = 1024
lsdtools.extend.ResolvedObjectPropertyPlan.MAX_DIAGNOSTICS#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:809.
MAX_DIAGNOSTICS: ClassVar[int]
MAX_DIAGNOSTICS = 128
lsdtools.extend.ResolvedObjectPropertyPlan.feature_namespace#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:811.
feature_namespace: str
lsdtools.extend.ResolvedObjectPropertyPlan.object_type#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:812.
object_type: ObjectTypeSpec | None
lsdtools.extend.ResolvedObjectPropertyPlan.sections#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:813.
sections: tuple[ResolvedObjectPropertySection, ...]
lsdtools.extend.ResolvedObjectPropertyPlan.diagnostics#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:814.
diagnostics: tuple[ObjectPropertyDiagnostic, ...]
lsdtools.extend.ResolvedObjectPropertyPlan.digest#
Kind: attribute. Source: core/lsd/src/lsd/packages/object_properties.py:815.
digest: str
lsdtools.extend.ResolvedObjectPropertyPlan.valid#
Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:818.
valid(self) -> bool
self: (unannotated)
lsdtools.extend.ResolvedObjectPropertyPlan.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:824.
to_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.ResolvedObjectPropertySection#
Kind: class. Source: core/lsd/src/lsd/packages/object_properties.py:773.
Source docstring:
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.
spec: ObjectPropertySectionSpec
lsdtools.extend.ResolvedObjectPropertySection.id#
Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:779.
id(self) -> OwnedContributionId
self: (unannotated)
lsdtools.extend.ResolvedObjectPropertySection.fields#
Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:783.
fields(self) -> tuple[ObjectPropertyFieldSpec, ...]
self: (unannotated)
lsdtools.extend.ResolvedObjectPropertySection.binding#
Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:787.
binding(self) -> ObjectPropertyDatasetBindingSpec | ObjectPropertyResidentBindingSpec
self: (unannotated)
lsdtools.extend.ResolvedObjectPropertySection.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/object_properties.py:792.
to_dict(self) -> dict[str, Any]
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.
item: StatusItemSpec
lsdtools.extend.ResolvedStatusItem.content#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:724.
content: SurfaceContentSpec
lsdtools.extend.ResolvedStatusItem.extension_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:725.
extension_id: OwnedContributionId
lsdtools.extend.ResolvedStatusItem.capability#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:726.
capability: Capability | None
capability = None
lsdtools.extend.ResolvedStatusItem.id#
Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:729.
id(self) -> OwnedContributionId
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.
items: tuple[ResolvedStatusItem, ...]
lsdtools.extend.ResolvedStatusPlan.contents#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:736.
contents: Mapping[str, SurfaceContentSpec]
lsdtools.extend.ResolvedStatusPlan.selected_providers#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:737.
selected_providers: Mapping[str, OwnedContributionId]
lsdtools.extend.ResolvedStatusPlan.available_providers#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:738.
available_providers: Mapping[str, tuple[OwnedContributionId, ...]]
lsdtools.extend.ResolvedStatusPlan.active_extensions#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:739.
active_extensions: tuple[OwnedContributionId, ...]
lsdtools.extend.ResolvedStatusPlan.inactive_extensions#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:740.
inactive_extensions: tuple[OwnedContributionId, ...]
lsdtools.extend.ResolvedStatusPlan.unresolved_bindings#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:741.
unresolved_bindings: Mapping[str, OwnedContributionId]
lsdtools.extend.ResolvedStatusPlan.desktop_refresh_on#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:742.
desktop_refresh_on: tuple[str, ...]
lsdtools.extend.ResolvedStatusPlan.engine_refresh_on#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:743.
engine_refresh_on: tuple[str, ...]
lsdtools.extend.ResolvedStatusPlan.diagnostics#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:744.
diagnostics: tuple[StatusDiagnostic, ...]
lsdtools.extend.ResolvedStatusPlan.digest#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:745.
digest: str
lsdtools.extend.ResolvedStatusPlan.ok#
Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:748.
ok(self) -> bool
self: (unannotated)
lsdtools.extend.ResolvedStatusPlan.content#
Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:754.
content(self, content_id: str | OwnedContributionId) -> SurfaceContentSpec | None
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.
bindings: tuple[TimelineEditorBindingSpec, ...]
lsdtools.extend.ResolvedTimelineEditorBindings.diagnostics#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:86.
diagnostics: tuple[TimelineEditorBindingDiagnostic, ...]
lsdtools.extend.ResolvedTimelineEditorBindings.digest#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:87.
digest: str
lsdtools.extend.ResolvedTimelineEditorBindings.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:89.
to_dict(self)
self: (unannotated)
lsdtools.extend.ResolvedTreePlan#
Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:826.
Source docstring:
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.
target_kind: str
lsdtools.extend.ResolvedTreePlan.scope#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:830.
scope: TreeScope
lsdtools.extend.ResolvedTreePlan.active_extensions#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:831.
active_extensions: tuple[OwnedContributionId, ...]
lsdtools.extend.ResolvedTreePlan.refresh_on#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:832.
refresh_on: tuple[str, ...]
lsdtools.extend.ResolvedTreePlan.filters#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:833.
filters: tuple[TreeFilterSpec, ...]
lsdtools.extend.ResolvedTreePlan.selection_routes#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:834.
selection_routes: tuple[TreeSelectionRouteSpec, ...]
lsdtools.extend.ResolvedTreePlan.commands#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:835.
commands: tuple[TreeCommandSpec, ...]
lsdtools.extend.ResolvedTreePlan.columns#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:836.
columns: tuple[TreeColumnSpec, ...]
lsdtools.extend.ResolvedTreePlan.decorations#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:837.
decorations: tuple[TreeDecorationSpec, ...]
lsdtools.extend.ResolvedTreePlan.menu_sections#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:838.
menu_sections: tuple[TreeMenuSectionSpec, ...]
lsdtools.extend.ResolvedTreePlan.surfaces#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:839.
surfaces: tuple[TreeSurfaceSpec, ...]
lsdtools.extend.ResolvedTreePlan.diagnostics#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:840.
diagnostics: tuple[TreeDiagnostic, ...]
lsdtools.extend.ResolvedTreePlan.digest#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:841.
digest: str
lsdtools.extend.ResolvedTreePlan.ok#
Kind: method. Source: core/lsd/src/lsd/packages/tree_extensions.py:844.
ok(self) -> bool
self: (unannotated)
lsdtools.extend.ResolvedTreePlan.command#
Kind: method. Source: core/lsd/src/lsd/packages/tree_extensions.py:850.
command(self, action: str) -> TreeCommandSpec | None
action: str
self: (unannotated)
lsdtools.extend.ResolvedTreePlan.as_dict#
Kind: method. Source: core/lsd/src/lsd/packages/tree_extensions.py:853.
as_dict(self) -> dict[str, Any]
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.
id: OwnedContributionId
lsdtools.extend.ResolvedViewerCommand.provider_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2789.
provider_id: OwnedContributionId | None
lsdtools.extend.ResolvedViewerCommand.capability#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2790.
capability: Capability | None
lsdtools.extend.ResolvedViewerCommand.source_extension#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2791.
source_extension: OwnedContributionId
lsdtools.extend.ResolvedViewerCommand.requires#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2792.
requires: tuple[Capability, ...]
lsdtools.extend.ResolvedViewerCommand.action#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2793.
action: str
lsdtools.extend.ResolvedViewerCommand.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2794.
title: str
lsdtools.extend.ResolvedViewerCommand.target#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2795.
target: Capability | None
lsdtools.extend.ResolvedViewerCommand.handler#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2796.
handler: RuntimeHandler | None
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.
source_package(self) -> str
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.
id: OwnedContributionId
lsdtools.extend.ResolvedViewerDataEditor.provider_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2713.
provider_id: OwnedContributionId | None
lsdtools.extend.ResolvedViewerDataEditor.capability#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2714.
capability: Capability | None
lsdtools.extend.ResolvedViewerDataEditor.source_extension#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2715.
source_extension: OwnedContributionId
lsdtools.extend.ResolvedViewerDataEditor.requires#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2716.
requires: tuple[Capability, ...]
lsdtools.extend.ResolvedViewerDataEditor.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2717.
title: str
lsdtools.extend.ResolvedViewerDataEditor.feature_kind#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2718.
feature_kind: str
lsdtools.extend.ResolvedViewerDataEditor.object_type#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2719.
object_type: OwnedContributionId
lsdtools.extend.ResolvedViewerDataEditor.scope#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2720.
scope: ViewerDataEditorScope
lsdtools.extend.ResolvedViewerDataEditor.modes#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2721.
modes: tuple[ViewerDataEditorModeSpec, ...]
lsdtools.extend.ResolvedViewerDataEditor.config_fields#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2722.
config_fields: tuple[ViewerDataEditorFieldSpec, ...]
lsdtools.extend.ResolvedViewerDataEditor.working_layer#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2723.
working_layer: ViewerDataEditorWorkingLayerSpec | None
lsdtools.extend.ResolvedViewerDataEditor.factory#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2724.
factory: RuntimeFactory | None
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.
source_package(self) -> str
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.
id: OwnedContributionId
lsdtools.extend.ResolvedViewerEvent.provider_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2806.
provider_id: OwnedContributionId | None
lsdtools.extend.ResolvedViewerEvent.capability#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2807.
capability: Capability | None
lsdtools.extend.ResolvedViewerEvent.source_extension#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2808.
source_extension: OwnedContributionId
lsdtools.extend.ResolvedViewerEvent.topic#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2809.
topic: str
lsdtools.extend.ResolvedViewerEvent.payload#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2810.
payload: str
lsdtools.extend.ResolvedViewerEvent.version#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2811.
version: int
lsdtools.extend.ResolvedViewerEvent.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2812.
title: str
lsdtools.extend.ResolvedViewerEvent.source_package#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2815.
source_package(self) -> str
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.
id: OwnedContributionId
lsdtools.extend.ResolvedViewerGizmo.provider_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2741.
provider_id: OwnedContributionId | None
lsdtools.extend.ResolvedViewerGizmo.capability#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2742.
capability: Capability | None
lsdtools.extend.ResolvedViewerGizmo.source_extension#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2743.
source_extension: OwnedContributionId
lsdtools.extend.ResolvedViewerGizmo.requires#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2744.
requires: tuple[Capability, ...]
lsdtools.extend.ResolvedViewerGizmo.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2745.
title: str
lsdtools.extend.ResolvedViewerGizmo.role#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2746.
role: ViewerGizmoRole
lsdtools.extend.ResolvedViewerGizmo.owning_tool#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2747.
owning_tool: OwnedContributionId | None
lsdtools.extend.ResolvedViewerGizmo.visible#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2748.
visible: bool
lsdtools.extend.ResolvedViewerGizmo.layer#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2749.
layer: ViewerGizmoLayer
lsdtools.extend.ResolvedViewerGizmo.depth_mode#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2750.
depth_mode: ViewerGizmoDepthMode
lsdtools.extend.ResolvedViewerGizmo.factory#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2751.
factory: RuntimeFactory | None
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.
source_package(self) -> str
self: (unannotated)
lsdtools.extend.ResolvedViewerPlan#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2826.
Source docstring:
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.
viewer_kind: str
lsdtools.extend.ResolvedViewerPlan.providers#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2830.
providers: tuple[ResolvedViewerProvider, ...]
lsdtools.extend.ResolvedViewerPlan.available_providers#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2831.
available_providers: tuple[ViewerExtensionSpec, ...]
lsdtools.extend.ResolvedViewerPlan.active_extensions#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2832.
active_extensions: tuple[OwnedContributionId, ...]
lsdtools.extend.ResolvedViewerPlan.inactive_extensions#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2833.
inactive_extensions: tuple[InactiveViewerExtension, ...]
lsdtools.extend.ResolvedViewerPlan.pointer_tools#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2834.
pointer_tools: tuple[ResolvedViewerPointerTool, ...]
lsdtools.extend.ResolvedViewerPlan.visualization_tools#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2835.
visualization_tools: tuple[ResolvedViewerVisualizationTool, ...]
lsdtools.extend.ResolvedViewerPlan.data_editors#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2836.
data_editors: tuple[ResolvedViewerDataEditor, ...]
lsdtools.extend.ResolvedViewerPlan.surfaces#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2837.
surfaces: tuple[ResolvedViewerSurface, ...]
lsdtools.extend.ResolvedViewerPlan.gizmos#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2838.
gizmos: tuple[ResolvedViewerGizmo, ...]
lsdtools.extend.ResolvedViewerPlan.commands#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2839.
commands: tuple[ResolvedViewerCommand, ...]
lsdtools.extend.ResolvedViewerPlan.events#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2840.
events: tuple[ResolvedViewerEvent, ...]
lsdtools.extend.ResolvedViewerPlan.layout#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2841.
layout: tuple[ViewerLayoutEntry, ...]
lsdtools.extend.ResolvedViewerPlan.orphaned_layout#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2842.
orphaned_layout: tuple[ViewerLayoutEntry, ...]
lsdtools.extend.ResolvedViewerPlan.unresolved_bindings#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2843.
unresolved_bindings: tuple[tuple[Capability, OwnedContributionId], ...]
lsdtools.extend.ResolvedViewerPlan.diagnostics#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2844.
diagnostics: tuple[ViewerDiagnostic, ...]
lsdtools.extend.ResolvedViewerPlan.digest#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2845.
digest: str
lsdtools.extend.ResolvedViewerPlan.ok#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2848.
ok(self) -> bool
self: (unannotated)
lsdtools.extend.ResolvedViewerPlan.provider_for#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2853.
provider_for(self, capability: Capability | str) -> ResolvedViewerProvider | None
capability: Capability | str
self: (unannotated)
lsdtools.extend.ResolvedViewerPlan.surface#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2859.
surface(self, contribution_id: OwnedContributionId | str) -> ResolvedViewerSurface | None
contribution_id: OwnedContributionId | str
self: (unannotated)
lsdtools.extend.ResolvedViewerPlan.pointer_tool#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2868.
pointer_tool(self, contribution_id: OwnedContributionId | str) -> ResolvedViewerPointerTool | None
contribution_id: OwnedContributionId | str
self: (unannotated)
lsdtools.extend.ResolvedViewerPlan.visualization_tool#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2877.
visualization_tool(self, contribution_id: OwnedContributionId | str) -> ResolvedViewerVisualizationTool | None
contribution_id: OwnedContributionId | str
self: (unannotated)
lsdtools.extend.ResolvedViewerPlan.data_editor#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2889.
data_editor(self, feature_kind: str) -> ResolvedViewerDataEditor | None
feature_kind: str
self: (unannotated)
Source docstring:
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.
gizmo(self, contribution_id: OwnedContributionId | str) -> ResolvedViewerGizmo | None
contribution_id: OwnedContributionId | str
self: (unannotated)
lsdtools.extend.ResolvedViewerPlan.command#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2908.
command(self, action: str) -> ResolvedViewerCommand | None
action: str
self: (unannotated)
lsdtools.extend.ResolvedViewerPlan.as_dict#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2911.
as_dict(self) -> dict[str, Any]
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.
id: OwnedContributionId
lsdtools.extend.ResolvedViewerPointerTool.provider_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2680.
provider_id: OwnedContributionId | None
lsdtools.extend.ResolvedViewerPointerTool.capability#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2681.
capability: Capability | None
lsdtools.extend.ResolvedViewerPointerTool.source_extension#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2682.
source_extension: OwnedContributionId
lsdtools.extend.ResolvedViewerPointerTool.requires#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2683.
requires: tuple[Capability, ...]
lsdtools.extend.ResolvedViewerPointerTool.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2684.
title: str
lsdtools.extend.ResolvedViewerPointerTool.icon#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2685.
icon: str
lsdtools.extend.ResolvedViewerPointerTool.visible_in_toolbar#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2686.
visible_in_toolbar: bool
lsdtools.extend.ResolvedViewerPointerTool.factory#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2687.
factory: RuntimeFactory | None
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.
source_package(self) -> str
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.
id: OwnedContributionId
lsdtools.extend.ResolvedViewerProvider.capability#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2671.
capability: Capability
lsdtools.extend.ResolvedViewerProvider.source_extension#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2672.
source_extension: OwnedContributionId
lsdtools.extend.ResolvedViewerProvider.requires#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2673.
requires: tuple[Capability, ...]
lsdtools.extend.ResolvedViewerProvider.factory#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2674.
factory: RuntimeFactory | None
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.
id: OwnedContributionId
lsdtools.extend.ResolvedViewerSurface.provider_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2761.
provider_id: OwnedContributionId | None
lsdtools.extend.ResolvedViewerSurface.capability#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2762.
capability: Capability | None
lsdtools.extend.ResolvedViewerSurface.source_extension#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2763.
source_extension: OwnedContributionId
lsdtools.extend.ResolvedViewerSurface.requires#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2764.
requires: tuple[Capability, ...]
lsdtools.extend.ResolvedViewerSurface.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2765.
title: str
lsdtools.extend.ResolvedViewerSurface.kind#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2766.
kind: ViewerSurfaceKind
lsdtools.extend.ResolvedViewerSurface.region#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2767.
region: str
lsdtools.extend.ResolvedViewerSurface.slot#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2768.
slot: str
lsdtools.extend.ResolvedViewerSurface.role#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2769.
role: str
lsdtools.extend.ResolvedViewerSurface.visible#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2770.
visible: bool
lsdtools.extend.ResolvedViewerSurface.anchors#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2771.
anchors: tuple[ViewerSurfaceAnchor, ...]
lsdtools.extend.ResolvedViewerSurface.before#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2772.
before: tuple[ViewerSurfaceAnchor, ...]
lsdtools.extend.ResolvedViewerSurface.after#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2773.
after: tuple[ViewerSurfaceAnchor, ...]
lsdtools.extend.ResolvedViewerSurface.command#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2774.
command: str | None
lsdtools.extend.ResolvedViewerSurface.layout#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2775.
layout: ViewerLayoutEntry | None
lsdtools.extend.ResolvedViewerSurface.resizable#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2776.
resizable: bool
resizable = False
lsdtools.extend.ResolvedViewerSurface.min_size#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2777.
min_size: tuple[int, int]
min_size = (96, 48)
lsdtools.extend.ResolvedViewerSurface.icon#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2778.
icon: str | None
icon = None
lsdtools.extend.ResolvedViewerSurface.build#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2779.
build: RuntimeFactory | None
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.
source_package(self) -> str
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.
id: OwnedContributionId
lsdtools.extend.ResolvedViewerVisualizationTool.provider_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2697.
provider_id: OwnedContributionId | None
lsdtools.extend.ResolvedViewerVisualizationTool.capability#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2698.
capability: Capability | None
lsdtools.extend.ResolvedViewerVisualizationTool.source_extension#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2699.
source_extension: OwnedContributionId
lsdtools.extend.ResolvedViewerVisualizationTool.requires#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2700.
requires: tuple[Capability, ...]
lsdtools.extend.ResolvedViewerVisualizationTool.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2701.
title: str
lsdtools.extend.ResolvedViewerVisualizationTool.icon#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2702.
icon: str
lsdtools.extend.ResolvedViewerVisualizationTool.factory#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2703.
factory: RuntimeFactory | None
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.
source_package(self) -> str
self: (unannotated)
lsdtools.extend.ResourceScope#
Kind: class. Source: core/lsd/src/lsd/packages/resources.py:62.
ResourceScope(self, owner: str) -> None
Source docstring:
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.
__init__(self, owner: str) -> None
owner: str
self: (unannotated)
lsdtools.extend.ResourceScope.disposed#
Kind: method. Source: core/lsd/src/lsd/packages/resources.py:76.
disposed(self) -> bool
self: (unannotated)
lsdtools.extend.ResourceScope.lease#
Kind: method. Source: core/lsd/src/lsd/packages/resources.py:79.
lease(self, dispose: Dispose, *, label: str='') -> Lease
dispose: Dispose
label: str
self: (unannotated)
Source docstring:
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.
own(self, resource: Any, *, disposer: Optional[Callable[[Any], Any]]=None, label: str='') -> Any
disposer: Optional[Callable[[Any], Any]]
label: str
resource: Any
self: (unannotated)
Source docstring:
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.
child(self, owner: str) -> 'ResourceScope'
owner: str
self: (unannotated)
Source docstring:
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.
release(self, lease: Lease) -> None
lease: Lease
self: (unannotated)
Source docstring:
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.
dispose(self) -> None
self: (unannotated)
Source docstring:
Release every tracked resource in reverse creation order.
lsdtools.extend.ResourceScope.close#
Kind: attribute. Source: core/lsd/src/lsd/packages/resources.py:127.
close = dispose
lsdtools.extend.ResourceScope.__enter__#
Kind: method. Source: core/lsd/src/lsd/packages/resources.py:129.
__enter__(self) -> 'ResourceScope'
self: (unannotated)
lsdtools.extend.ResourceScope.__exit__#
Kind: method. Source: core/lsd/src/lsd/packages/resources.py:132.
__exit__(self, *_exc: object) -> None
_exc: object
self: (unannotated)
lsdtools.extend.ResourceScope.owner#
Kind: attribute. Source: core/lsd/src/lsd/packages/resources.py:71.
owner: str
owner = owner
lsdtools.extend.RunReport#
Kind: class. Source: core/lsd/src/lsd/observe/report.py:59.
Source docstring:
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.
entities: Dict[str, EntityRecord]
entities = field(default_factory=dict)
lsdtools.extend.RunReport.started_at#
Kind: attribute. Source: core/lsd/src/lsd/observe/report.py:69.
started_at: float
started_at = field(default_factory=time.time)
lsdtools.extend.RunReport.finished_at#
Kind: attribute. Source: core/lsd/src/lsd/observe/report.py:70.
finished_at: Optional[float]
finished_at = None
lsdtools.extend.RunReport.order#
Kind: attribute. Source: core/lsd/src/lsd/observe/report.py:71.
order: List[str]
order = field(default_factory=list)
lsdtools.extend.RunReport.attach#
Kind: method. Source: core/lsd/src/lsd/observe/report.py:76.
attach(cls, bus: EventBus) -> 'RunReport'
bus: EventBus
cls: (unannotated)
Source docstring:
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.
ok(self) -> bool
self: (unannotated)
Source docstring:
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.
total_rows(self) -> int
self: (unannotated)
Source docstring:
Sum of rows_written across all entities.
lsdtools.extend.RunReport.wall_s#
Kind: method. Source: core/lsd/src/lsd/observe/report.py:181.
wall_s(self) -> float
self: (unannotated)
Source docstring:
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.
entity(self, entity_id: str) -> Optional[EntityRecord]
entity_id: str
self: (unannotated)
Source docstring:
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.
as_dict(self) -> dict
self: (unannotated)
Source docstring:
JSON-friendly representation of the whole report.
lsdtools.extend.RuntimeInput#
Kind: class. Source: views/runtime/src/lsd_runtime_view/protocols.py:120.
Source docstring:
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.
frame(self) -> Any
self: (unannotated)
lsdtools.extend.RuntimeInput.update#
Kind: method. Source: views/runtime/src/lsd_runtime_view/protocols.py:125.
update(self, now_ns: int | None=None) -> Any
now_ns: int | None
self: (unannotated)
lsdtools.extend.RuntimeInput.describe#
Kind: method. Source: views/runtime/src/lsd_runtime_view/protocols.py:126.
describe(self) -> dict
self: (unannotated)
lsdtools.extend.RuntimeInput.close#
Kind: method. Source: views/runtime/src/lsd_runtime_view/protocols.py:127.
close(self) -> None
self: (unannotated)
lsdtools.extend.SHADER_GEOMETRIES#
Kind: value. Source: core/lsd/src/lsd/packages/shader_programs.py:31.
SHADER_GEOMETRIES: Tuple[str, ...]
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.
SHADER_LIGHTING_MODELS: Tuple[str, ...]
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.
SHADER_UNIFORM_TYPES: Tuple[str, ...]
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.
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.
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.
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.
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.
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.
ScriptEntity(self, name: str, *, source_path: str='', **kwargs: Any) -> None
Source docstring:
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.
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.
__init__(self, name: str, *, source_path: str='', **kwargs: Any) -> None
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.
starter_code() -> str
Source docstring:
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.
name: str
lsdtools.extend.Series.x#
Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:36.
x: List[float]
lsdtools.extend.Series.y#
Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:37.
y: List[float]
lsdtools.extend.Series.color#
Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:38.
color: Tuple[float, float, float, float]
lsdtools.extend.Series.hidden#
Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:39.
hidden: bool
hidden = False
lsdtools.extend.Series.id#
Kind: attribute. Source: views/chart/src/lsd_view_chart/spec.py:43.
id: str
id = ''
lsdtools.extend.ShaderProgramRef#
Kind: class. Source: core/lsd/src/lsd/packages/shader_programs.py:240.
Source docstring:
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.
resource_id: str
lsdtools.extend.ShaderProgramRef.version#
Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:244.
version: str
lsdtools.extend.ShaderProgramRef.digest#
Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:245.
digest: str
lsdtools.extend.ShaderProgramRef.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/shader_programs.py:253.
to_dict(self) -> dict[str, str]
self: (unannotated)
lsdtools.extend.ShaderProgramRef.from_dict#
Kind: method. Source: core/lsd/src/lsd/packages/shader_programs.py:261.
from_dict(cls, payload: Mapping[str, Any]) -> 'ShaderProgramRef'
cls: (unannotated)
payload: Mapping[str, Any]
lsdtools.extend.ShaderProgramSpec#
Kind: class. Source: core/lsd/src/lsd/packages/shader_programs.py:431.
Source docstring:
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.
name: str
lsdtools.extend.ShaderProgramSpec.version#
Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:442.
version: str
lsdtools.extend.ShaderProgramSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:443.
title: str
lsdtools.extend.ShaderProgramSpec.source#
Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:444.
source: str
lsdtools.extend.ShaderProgramSpec.uniforms#
Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:445.
uniforms: Tuple[ShaderUniformSpec, ...]
uniforms = ()
lsdtools.extend.ShaderProgramSpec.description#
Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:446.
description: str
description = ''
lsdtools.extend.ShaderProgramSpec.geometries#
Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:447.
geometries: Tuple[str, ...]
geometries = SHADER_GEOMETRIES
lsdtools.extend.ShaderProgramSpec.interface#
Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:448.
interface: str
interface = SURFACE_SHADER_INTERFACE
lsdtools.extend.ShaderProgramSpec.package#
Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:449.
package: Optional[str]
package = None
lsdtools.extend.ShaderProgramSpec.lighting_model#
Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:450.
lighting_model: str
lighting_model = 'custom'
lsdtools.extend.ShaderProgramSpec.resource_id#
Kind: method. Source: core/lsd/src/lsd/packages/shader_programs.py:509.
resource_id(self) -> str
self: (unannotated)
Source docstring:
Return the stable ``<package>/<name>`` runtime identity.
lsdtools.extend.ShaderProgramSpec.digest#
Kind: method. Source: core/lsd/src/lsd/packages/shader_programs.py:518.
digest(self) -> str
self: (unannotated)
lsdtools.extend.ShaderProgramSpec.reference#
Kind: method. Source: core/lsd/src/lsd/packages/shader_programs.py:538.
reference(self) -> ShaderProgramRef
self: (unannotated)
lsdtools.extend.ShaderUniformSpec#
Kind: class. Source: core/lsd/src/lsd/packages/shader_programs.py:131.
Source docstring:
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.
name: str
lsdtools.extend.ShaderUniformSpec.property_key#
Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:135.
property_key: str
lsdtools.extend.ShaderUniformSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:136.
title: str
lsdtools.extend.ShaderUniformSpec.value_type#
Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:137.
value_type: str
lsdtools.extend.ShaderUniformSpec.default#
Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:138.
default: Any
lsdtools.extend.ShaderUniformSpec.description#
Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:139.
description: str
description = ''
lsdtools.extend.ShaderUniformSpec.minimum#
Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:140.
minimum: Optional[float]
minimum = None
lsdtools.extend.ShaderUniformSpec.maximum#
Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:141.
maximum: Optional[float]
maximum = None
lsdtools.extend.ShaderUniformSpec.step#
Kind: attribute. Source: core/lsd/src/lsd/packages/shader_programs.py:142.
step: Optional[float]
step = None
lsdtools.extend.ShapeStep#
Kind: class. Source: core/lsd/src/lsd/flow/steps.py:1573.
Source docstring:
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.
run(self, inputs: Tables) -> Union[pa.Table, StepOutputs]
inputs: Tables
self: (unannotated)
lsdtools.extend.SidebarViewContribution#
Kind: class. Source: core/lsd/src/lsd/packages/contributions.py:356.
Source docstring:
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.
view_id: str
lsdtools.extend.SidebarViewContribution.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:383.
title: str
lsdtools.extend.SidebarViewContribution.factory#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:384.
factory: Callable[..., Any]
lsdtools.extend.SidebarViewContribution.icon#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:385.
icon: Optional[str]
icon = None
lsdtools.extend.SidebarViewContribution.position#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:386.
position: int
position = 0
lsdtools.extend.SidebarViewContribution.primary#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:387.
primary: bool
primary = False
lsdtools.extend.SidebarViewContribution.default_open#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:388.
default_open: bool
default_open = True
lsdtools.extend.SidebarViewContribution.side#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:389.
side: str
side = 'left'
lsdtools.extend.SidebarViewContribution.accepts_entity#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:390.
accepts_entity: Optional[Callable[[Any], bool]]
accepts_entity = None
lsdtools.extend.SidebarViewContribution.deliver_entity#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:391.
deliver_entity: Optional[Callable[..., Any]]
deliver_entity = None
lsdtools.extend.SidebarViewContribution.package#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:392.
package: Optional[str]
package = None
lsdtools.extend.SidebarViewContribution.accepts#
Kind: method. Source: core/lsd/src/lsd/packages/contributions.py:447.
accepts(self, entity: Any) -> bool
entity: Any
self: (unannotated)
Source docstring:
Whether this exact sidebar declaration can receive *entity*.
lsdtools.extend.SourceKind#
Kind: class. Source: core/lsd/src/lsd/core/source.py:45.
Source docstring:
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.
name: str
name = ''
lsdtools.extend.SourceKind.label#
Kind: attribute. Source: core/lsd/src/lsd/core/source.py:48.
label: str
label = ''
lsdtools.extend.SourceKind.config_cls#
Kind: attribute. Source: core/lsd/src/lsd/core/source.py:49.
config_cls: type
config_cls = Configurable
lsdtools.extend.SourceKind.read#
Kind: method. Source: core/lsd/src/lsd/core/source.py:51.
read(self, cfg: Configurable, read_one: Callable[[str], Any]) -> Any
cfg: Configurable
read_one: Callable[[str], Any]
self: (unannotated)
Source docstring:
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.
paths(self, cfg: Configurable) -> List[str]
cfg: Configurable
self: (unannotated)
Source docstring:
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.
watch_targets(self, cfg: Configurable) -> List[str]
cfg: Configurable
self: (unannotated)
Source docstring:
Files to poll for changes (defaults to :meth:`paths`).
lsdtools.extend.SourceKind.fingerprint#
Kind: method. Source: core/lsd/src/lsd/core/source.py:64.
fingerprint(self, cfg: Configurable) -> str
cfg: Configurable
self: (unannotated)
Source docstring:
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:
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.
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.
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:
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.
kind: str
lsdtools.extend.StatusActionBinding.params#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:254.
params: Mapping[str, JsonValue]
params = field(default_factory=dict)
lsdtools.extend.StatusActionBinding.value_param#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:255.
value_param: str | None
value_param = None
lsdtools.extend.StatusActionBinding.bind#
Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:275.
bind(self, value: JsonValue=None) -> dict[str, JsonValue]
self: (unannotated)
value: JsonValue
lsdtools.extend.StatusActionBinding.to_wire#
Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:281.
to_wire(self) -> dict[str, JsonValue]
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.
key: str
lsdtools.extend.StatusAnchor.item#
Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:538.
item(cls, item_id: OwnedContributionId) -> 'StatusAnchor'
cls: (unannotated)
item_id: OwnedContributionId
lsdtools.extend.StatusAnchor.capability#
Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:542.
capability(cls, capability: Capability) -> 'StatusAnchor'
capability: Capability
cls: (unannotated)
lsdtools.extend.StatusAnchor.named#
Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:546.
named(cls, name: str) -> 'StatusAnchor'
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.
value: JsonValue
lsdtools.extend.StatusChoice.label#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:231.
label: str
lsdtools.extend.StatusChoice.to_wire#
Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:239.
to_wire(self) -> dict[str, JsonValue]
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.
id: str
lsdtools.extend.StatusControl.label#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:292.
label: str
lsdtools.extend.StatusControl.kind#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:293.
kind: StatusControlKind
kind = StatusControlKind.COMMAND
lsdtools.extend.StatusControl.value#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:294.
value: JsonValue
value = None
lsdtools.extend.StatusControl.enabled#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:295.
enabled: bool
enabled = True
lsdtools.extend.StatusControl.icon#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:296.
icon: str | None
icon = None
lsdtools.extend.StatusControl.description#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:297.
description: str | None
description = None
lsdtools.extend.StatusControl.choices#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:298.
choices: tuple[StatusChoice, ...]
choices = ()
lsdtools.extend.StatusControl.minimum#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:299.
minimum: float | None
minimum = None
lsdtools.extend.StatusControl.maximum#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:300.
maximum: float | None
maximum = None
lsdtools.extend.StatusControl.step#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:301.
step: float | None
step = None
lsdtools.extend.StatusControl.action#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:302.
action: StatusActionBinding | None
action = None
lsdtools.extend.StatusControl.validate_invocation#
Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:357.
validate_invocation(self, value: Any) -> JsonValue
self: (unannotated)
value: Any
Source docstring:
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.
to_wire(self) -> dict[str, JsonValue]
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.
COMMAND = 'command'
lsdtools.extend.StatusControlKind.TOGGLE#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:111.
TOGGLE = 'toggle'
lsdtools.extend.StatusControlKind.CHOICE#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:112.
CHOICE = 'choice'
lsdtools.extend.StatusControlKind.RANGE#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:113.
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.
severity: DiagnosticSeverity
lsdtools.extend.StatusDiagnostic.code#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:703.
code: str
lsdtools.extend.StatusDiagnostic.message#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:704.
message: str
lsdtools.extend.StatusDiagnostic.contribution_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:705.
contribution_id: str | None
contribution_id = None
lsdtools.extend.StatusDiagnostic.to_wire#
Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:712.
to_wire(self) -> dict[str, JsonValue]
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.
id: OwnedContributionId
lsdtools.extend.StatusExtensionSpec.semantics#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:614.
semantics: ExtensionSemantics
semantics = ExtensionSemantics.ADD
lsdtools.extend.StatusExtensionSpec.capability#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:615.
capability: Capability | None
capability = None
lsdtools.extend.StatusExtensionSpec.contents#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:616.
contents: tuple[SurfaceContentSpec, ...]
contents = ()
lsdtools.extend.StatusExtensionSpec.items#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:617.
items: tuple[StatusItemSpec, ...]
items = ()
lsdtools.extend.StatusExtensionSpec.default#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:618.
default: bool
default = False
lsdtools.extend.StatusExtensionSpec.replaces#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:619.
replaces: tuple[OwnedContributionId, ...]
replaces = ()
lsdtools.extend.StatusExtensionSpec.requires#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:620.
requires: tuple[Capability, ...]
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.
id: OwnedContributionId
lsdtools.extend.StatusItemSpec.content_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:553.
content_id: OwnedContributionId
lsdtools.extend.StatusItemSpec.scope#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:554.
scope: StatusScope
scope = StatusScope.PROJECT
lsdtools.extend.StatusItemSpec.region#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:555.
region: StatusRegion
region = StatusRegion.TRAILING
lsdtools.extend.StatusItemSpec.role#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:556.
role: StatusRole
role = StatusRole.NORMAL
lsdtools.extend.StatusItemSpec.view_kinds#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:557.
view_kinds: tuple[str, ...]
view_kinds = ()
lsdtools.extend.StatusItemSpec.entity_types#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:558.
entity_types: tuple[str, ...]
entity_types = ()
lsdtools.extend.StatusItemSpec.default_visible#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:559.
default_visible: bool
default_visible = True
lsdtools.extend.StatusItemSpec.primary_control_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:560.
primary_control_id: str | None
primary_control_id = None
lsdtools.extend.StatusItemSpec.anchors#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:561.
anchors: tuple[StatusAnchor, ...]
anchors = ()
lsdtools.extend.StatusItemSpec.before#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:562.
before: tuple[StatusAnchor, ...]
before = ()
lsdtools.extend.StatusItemSpec.after#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:563.
after: tuple[StatusAnchor, ...]
after = ()
lsdtools.extend.StatusItemSpec.replaces#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:564.
replaces: tuple[OwnedContributionId, ...]
replaces = ()
lsdtools.extend.StatusItemSpec.own_anchor#
Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:607.
own_anchor(self) -> StatusAnchor
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.
LEADING = 'leading'
lsdtools.extend.StatusRegion.CENTER#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:133.
CENTER = 'center'
lsdtools.extend.StatusRegion.TRAILING#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:134.
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.
NORMAL = 'normal'
lsdtools.extend.StatusRole.PRIMARY#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:139.
PRIMARY = 'primary'
lsdtools.extend.StatusRole.ATTENTION#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:140.
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.
WINDOW = 'window'
lsdtools.extend.StatusScope.PROJECT#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:126.
PROJECT = 'project'
lsdtools.extend.StatusScope.ACTIVE_VIEW#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:127.
ACTIVE_VIEW = 'active_view'
lsdtools.extend.StatusScope.SELECTED_ENTITY#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:128.
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.
NORMAL = 'normal'
lsdtools.extend.StatusTone.INFO#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:118.
INFO = 'info'
lsdtools.extend.StatusTone.SUCCESS#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:119.
SUCCESS = 'success'
lsdtools.extend.StatusTone.WARNING#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:120.
WARNING = 'warning'
lsdtools.extend.StatusTone.ERROR#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:121.
ERROR = 'error'
lsdtools.extend.StepOutputDependency#
Kind: class. Source: core/lsd/src/lsd/flow/steps.py:227.
Source docstring:
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.
entity_id: str
lsdtools.extend.StepOutputDependency.step_id#
Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:239.
step_id: str
lsdtools.extend.StepOutputDependency.output_port#
Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:240.
output_port: str
output_port = OUTPUT_KEY
lsdtools.extend.StepOutputs#
Kind: value. Source: core/lsd/src/lsd/flow/steps.py:187.
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:
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.
step_kind: str
lsdtools.extend.StepResult.step_class#
Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:291.
step_class: str
lsdtools.extend.StepResult.step_id#
Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:292.
step_id: str
lsdtools.extend.StepResult.outputs#
Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:293.
outputs: StepOutputs
lsdtools.extend.StepResult.output_paths#
Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:294.
output_paths: Dict[str, str]
lsdtools.extend.StepResult.duration_s#
Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:295.
duration_s: float
lsdtools.extend.StepResult.schema_validated#
Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:296.
schema_validated: bool
lsdtools.extend.StepResult.rows_written#
Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:297.
rows_written: int
lsdtools.extend.StepResult.skipped#
Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:298.
skipped: bool
skipped = False
lsdtools.extend.StepResult.artifacts#
Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:299.
artifacts: Dict[str, FileArtifact]
artifacts = field(default_factory=dict)
lsdtools.extend.StepResult.output_profiles#
Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:300.
output_profiles: Dict[str, 'TableProfile']
output_profiles = field(default_factory=dict)
lsdtools.extend.StepResult.trips#
Kind: attribute. Source: core/lsd/src/lsd/flow/steps.py:303.
trips: Dict[str, 'TripRecord']
trips = field(default_factory=dict)
lsdtools.extend.StyleAssetSpec#
Kind: class. Source: core/lsd/src/lsd/packages/contributions.py:740.
Source docstring:
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.
name: str
lsdtools.extend.StyleAssetSpec.kind#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:757.
kind: str
lsdtools.extend.StyleAssetSpec.payload#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:758.
payload: Any
lsdtools.extend.StyleAssetSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:759.
title: str
title = ''
lsdtools.extend.StyleAssetSpec.tags#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:760.
tags: Tuple[str, ...]
tags = ()
lsdtools.extend.StyleAssetSpec.package#
Kind: attribute. Source: core/lsd/src/lsd/packages/contributions.py:761.
package: Optional[str]
package = None
lsdtools.extend.StyleAssetSpec.resource_id#
Kind: method. Source: core/lsd/src/lsd/packages/contributions.py:790.
resource_id(self) -> str
self: (unannotated)
Source docstring:
``<package>/<name>``: the id documents, plans and renderers use.
lsdtools.extend.StyleDraft#
Kind: class. Source: views/widgets/symbology/src/lsd_symbology/draft.py:81.
StyleDraft(self, context: StyleContext, *, resolve: Optional[Callable[[str], Optional[StyleContext]]]=None) -> None
Source docstring:
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.
__init__(self, context: StyleContext, *, resolve: Optional[Callable[[str], Optional[StyleContext]]]=None) -> None
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.
context(self) -> StyleContext
self: (unannotated)
lsdtools.extend.StyleDraft.kind#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:104.
kind(self) -> str
self: (unannotated)
lsdtools.extend.StyleDraft.symbology#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:108.
symbology(self) -> Symbology
self: (unannotated)
lsdtools.extend.StyleDraft.value_field#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:112.
value_field(self) -> str
self: (unannotated)
lsdtools.extend.StyleDraft.source#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:116.
source(self) -> str
self: (unannotated)
lsdtools.extend.StyleDraft.style_ref#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:120.
style_ref(self) -> str
self: (unannotated)
lsdtools.extend.StyleDraft.title#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:124.
title(self) -> str
self: (unannotated)
lsdtools.extend.StyleDraft.dirty#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:128.
dirty(self) -> bool
self: (unannotated)
lsdtools.extend.StyleDraft.changes#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:132.
changes(self) -> Tuple[DraftChange, ...]
self: (unannotated)
lsdtools.extend.StyleDraft.original#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:136.
original(self) -> Symbology
self: (unannotated)
lsdtools.extend.StyleDraft.original_field#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:140.
original_field(self) -> str
self: (unannotated)
lsdtools.extend.StyleDraft.profile#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:143.
profile(self) -> Any
self: (unannotated)
Source docstring:
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.
mode(self) -> str
self: (unannotated)
Source docstring:
``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.
modes(self) -> Tuple[str, ...]
self: (unannotated)
lsdtools.extend.StyleDraft.style_type#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:162.
style_type(self) -> str
self: (unannotated)
lsdtools.extend.StyleDraft.type_availability#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:166.
type_availability(self) -> List[Dict[str, Any]]
self: (unannotated)
Source docstring:
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.
available_types(self) -> Tuple[StyleType, ...]
self: (unannotated)
lsdtools.extend.StyleDraft.render_form#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:194.
render_form(self) -> str
self: (unannotated)
Source docstring:
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.
render_form_availability(self) -> List[Dict[str, Any]]
self: (unannotated)
Source docstring:
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.
available_render_forms(self) -> Tuple[RenderForm, ...]
self: (unannotated)
lsdtools.extend.StyleDraft.overlay_types#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:218.
overlay_types(self) -> Tuple[StyleType, ...]
self: (unannotated)
Source docstring:
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.
primary_layer(self) -> SymbolLayer
self: (unannotated)
lsdtools.extend.StyleDraft.mapping#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:228.
mapping(self) -> Optional[Dict[str, Any]]
self: (unannotated)
lsdtools.extend.StyleDraft.primary_color#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:233.
primary_color(self) -> Tuple[float, float, float, float]
self: (unannotated)
lsdtools.extend.StyleDraft.settings#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:237.
settings(self) -> List[Dict[str, Any]]
self: (unannotated)
Source docstring:
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.
layers(self) -> List[Dict[str, Any]]
self: (unannotated)
lsdtools.extend.StyleDraft.overlay_settings#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:284.
overlay_settings(self, layer_id: str) -> List[Dict[str, Any]]
layer_id: str
self: (unannotated)
Source docstring:
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.
distribution(self) -> Tuple[str, int]
self: (unannotated)
Source docstring:
``(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.
describe(self) -> Dict[str, Any]
self: (unannotated)
lsdtools.extend.StyleDraft.connect_changed#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:344.
connect_changed(self, callback: Callable[[DraftChange], None]) -> None
callback: Callable[[DraftChange], None]
self: (unannotated)
lsdtools.extend.StyleDraft.set_field#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:350.
set_field(self, name: str) -> Optional[DraftChange]
name: str
self: (unannotated)
Source docstring:
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.
set_type(self, type_id: str) -> Optional[DraftChange]
self: (unannotated)
type_id: str
Source docstring:
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.
set_render_form(self, form_id: str) -> Optional[DraftChange]
form_id: str
self: (unannotated)
Source docstring:
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.
set_mode(self, mode: str) -> Optional[DraftChange]
mode: str
self: (unannotated)
Source docstring:
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.
set_setting(self, name: str, value: Any) -> Optional[DraftChange]
name: str
self: (unannotated)
value: Any
Source docstring:
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.
set_property(self, layer_id: str, name: str, value: Any) -> Optional[DraftChange]
layer_id: str
name: str
self: (unannotated)
value: Any
Source docstring:
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.
set_mapping(self, mapping: Mapping[str, Any]) -> Optional[DraftChange]
mapping: Mapping[str, Any]
self: (unannotated)
Source docstring:
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.
set_clamp(self, clamp: bool) -> Optional[DraftChange]
clamp: bool
self: (unannotated)
lsdtools.extend.StyleDraft.set_fallback#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:533.
set_fallback(self, color: Any) -> Optional[DraftChange]
color: Any
self: (unannotated)
lsdtools.extend.StyleDraft.breaks#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:542.
breaks(self) -> List[float]
self: (unannotated)
lsdtools.extend.StyleDraft.move_break#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:548.
move_break(self, index: int, value: Any) -> Optional[DraftChange]
index: int
self: (unannotated)
value: Any
lsdtools.extend.StyleDraft.add_break#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:565.
add_break(self, value: Any) -> Optional[DraftChange]
self: (unannotated)
value: Any
lsdtools.extend.StyleDraft.remove_break#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:589.
remove_break(self, index: int) -> Optional[DraftChange]
index: int
self: (unannotated)
lsdtools.extend.StyleDraft.set_segment_discrete#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:606.
set_segment_discrete(self, index: int, discrete: bool) -> Optional[DraftChange]
discrete: bool
index: int
self: (unannotated)
lsdtools.extend.StyleDraft.set_segment_output#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:630.
set_segment_output(self, index: int, color: Any, *, end: str='') -> Optional[DraftChange]
color: Any
end: str
index: int
self: (unannotated)
Source docstring:
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.
set_break_color(self, index: int, color: Any) -> Optional[DraftChange]
color: Any
index: int
self: (unannotated)
Source docstring:
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.
break_color(self, index: int) -> Tuple[float, float, float, float]
index: int
self: (unannotated)
Source docstring:
The colour drawn at one break.
lsdtools.extend.StyleDraft.classify#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:686.
classify(self, count: int, method: str='equal') -> Optional[DraftChange]
count: int
method: str
self: (unannotated)
Source docstring:
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.
set_gradient(self) -> Optional[DraftChange]
self: (unannotated)
Source docstring:
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.
set_ramp(self, ramp: Any) -> Optional[DraftChange]
ramp: Any
self: (unannotated)
Source docstring:
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.
categories(self) -> List[Dict[str, Any]]
self: (unannotated)
lsdtools.extend.StyleDraft.classes#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:768.
classes(self) -> List[Dict[str, Any]]
self: (unannotated)
Source docstring:
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.
families(self) -> List[Dict[str, Any]]
self: (unannotated)
Source docstring:
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.
symbol_family(self) -> str
self: (unannotated)
Source docstring:
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.
family_glyphs(self, sheet: Optional[str]=None) -> List[str]
self: (unannotated)
sheet: Optional[str]
lsdtools.extend.StyleDraft.set_symbol_family#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:818.
set_symbol_family(self, sheet: str) -> Optional[DraftChange]
self: (unannotated)
sheet: str
Source docstring:
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.
set_category_symbol(self, value: Any, glyph: Any) -> Optional[DraftChange]
glyph: Any
self: (unannotated)
value: Any
Source docstring:
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.
set_class_symbol(self, index: int, glyph: Any) -> Optional[DraftChange]
glyph: Any
index: int
self: (unannotated)
Source docstring:
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.
pins(self) -> List[Tuple[str, str]]
self: (unannotated)
lsdtools.extend.StyleDraft.is_pinned#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:900.
is_pinned(self, layer_id: str, name: str) -> bool
layer_id: str
name: str
self: (unannotated)
lsdtools.extend.StyleDraft.pin_setting#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:903.
pin_setting(self, layer_id: str, name: str) -> Optional[DraftChange]
layer_id: str
name: str
self: (unannotated)
lsdtools.extend.StyleDraft.unpin_setting#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:915.
unpin_setting(self, layer_id: str, name: str) -> Optional[DraftChange]
layer_id: str
name: str
self: (unannotated)
lsdtools.extend.StyleDraft.reference_document#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:923.
reference_document(self) -> Symbology
self: (unannotated)
Source docstring:
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.
surfaced(self) -> List[Dict[str, Any]]
self: (unannotated)
Source docstring:
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.
reset_setting(self, layer_id: str, name: str) -> Optional[DraftChange]
layer_id: str
name: str
self: (unannotated)
Source docstring:
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.
text_variable(self) -> Optional[Dict[str, Any]]
self: (unannotated)
Source docstring:
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.
set_text_variable(self, layer_id: str, text: Optional[str]=None, priority: Optional[str]=None) -> Optional[DraftChange]
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.
set_category_output(self, value: Any, color: Any) -> Optional[DraftChange]
color: Any
self: (unannotated)
value: Any
lsdtools.extend.StyleDraft.set_category_enabled#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1012.
set_category_enabled(self, value: Any, enabled: bool) -> Optional[DraftChange]
enabled: bool
self: (unannotated)
value: Any
lsdtools.extend.StyleDraft.set_category_label#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1021.
set_category_label(self, value: Any, label: str) -> Optional[DraftChange]
label: str
self: (unannotated)
value: Any
lsdtools.extend.StyleDraft.add_category#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1030.
add_category(self, value: Any, color: Any=None) -> Optional[DraftChange]
color: Any
self: (unannotated)
value: Any
lsdtools.extend.StyleDraft.remove_category#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1042.
remove_category(self, value: Any) -> Optional[DraftChange]
self: (unannotated)
value: Any
lsdtools.extend.StyleDraft.set_palette#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1052.
set_palette(self, palette: Any) -> Optional[DraftChange]
palette: Any
self: (unannotated)
Source docstring:
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.
add_layer(self, type_id: str, properties: Optional[Mapping[str, Any]]=None) -> Optional[DraftChange]
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.
label_columns(self) -> List[str]
self: (unannotated)
Source docstring:
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.
missing_columns(self) -> List[str]
self: (unannotated)
Source docstring:
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.
remove_layer(self, layer_id: str) -> Optional[DraftChange]
layer_id: str
self: (unannotated)
lsdtools.extend.StyleDraft.move_layer#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1101.
move_layer(self, layer_id: str, destination: int) -> Optional[DraftChange]
destination: int
layer_id: str
self: (unannotated)
lsdtools.extend.StyleDraft.set_name#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1112.
set_name(self, name: str) -> Optional[DraftChange]
name: str
self: (unannotated)
Source docstring:
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.
set_layer_enabled(self, layer_id: str, enabled: bool) -> Optional[DraftChange]
enabled: bool
layer_id: str
self: (unannotated)
lsdtools.extend.StyleDraft.rename_layer#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1133.
rename_layer(self, layer_id: str, name: str) -> Optional[DraftChange]
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.
set_layer_blend(self, layer_id: str, blend: str) -> Optional[DraftChange]
blend: str
layer_id: str
self: (unannotated)
lsdtools.extend.StyleDraft.duplicate_layer#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1159.
duplicate_layer(self, layer_id: str) -> Optional[DraftChange]
layer_id: str
self: (unannotated)
Source docstring:
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.
set_layer_type(self, layer_id: str, type_id: str) -> Optional[DraftChange]
layer_id: str
self: (unannotated)
type_id: str
Source docstring:
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.
set_layer_opacity(self, layer_id: str, opacity: Any) -> Optional[DraftChange]
layer_id: str
opacity: Any
self: (unannotated)
lsdtools.extend.StyleDraft.replace_document#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1206.
replace_document(self, symbology: Any, *, op: str='replace_document', **detail: Any) -> Optional[DraftChange]
detail: Any
op: str
self: (unannotated)
symbology: Any
lsdtools.extend.StyleDraft.adapted#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/draft.py:1214.
adapted(self, symbology: Any) -> Symbology
self: (unannotated)
symbology: Any
Source docstring:
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.
reset_to_default(self) -> Optional[DraftChange]
self: (unannotated)
Source docstring:
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.
revert(self) -> Optional[DraftChange]
self: (unannotated)
Source docstring:
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.
mark_applied(self, context: Optional[StyleContext]=None) -> None
context: Optional[StyleContext]
self: (unannotated)
Source docstring:
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.
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:
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.
__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
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.
widget(self)
self: (unannotated)
lsdtools.extend.StyleEditor.draft#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:100.
draft(self) -> StyleDraft
self: (unannotated)
lsdtools.extend.StyleEditor.context#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:104.
context(self) -> Any
self: (unannotated)
lsdtools.extend.StyleEditor.symbology#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:108.
symbology(self) -> Symbology
self: (unannotated)
lsdtools.extend.StyleEditor.value_field#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:112.
value_field(self) -> str
self: (unannotated)
lsdtools.extend.StyleEditor.mode#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:116.
mode(self) -> str
self: (unannotated)
lsdtools.extend.StyleEditor.page#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:120.
page(self) -> str
self: (unannotated)
lsdtools.extend.StyleEditor.preview_pushed#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:124.
preview_pushed(self) -> int
self: (unannotated)
lsdtools.extend.StyleEditor.first_focus#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:128.
first_focus(self)
self: (unannotated)
Source docstring:
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.
describe(self) -> dict
self: (unannotated)
Source docstring:
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.
set_field(self, name: str) -> None
name: str
self: (unannotated)
lsdtools.extend.StyleEditor.set_mode#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:193.
set_mode(self, mode: str) -> None
mode: str
self: (unannotated)
lsdtools.extend.StyleEditor.set_page#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:201.
set_page(self, page: str) -> None
page: str
self: (unannotated)
lsdtools.extend.StyleEditor.set_expanded#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:210.
set_expanded(self, layer_id: Optional[str]) -> None
layer_id: Optional[str]
self: (unannotated)
Source docstring:
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.
select(self, target: Optional[str]) -> None
self: (unannotated)
target: Optional[str]
lsdtools.extend.StyleEditor.drive#
Kind: method. Source: views/widgets/symbology/src/lsd_symbology/style_editor.py:223.
drive(self, op: str, params: Optional[Mapping[str, Any]]=None) -> dict
op: str
params: Optional[Mapping[str, Any]]
self: (unannotated)
Source docstring:
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.
flush_preview(self) -> bool
self: (unannotated)
Source docstring:
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.
apply(self, *, save_as: str='', update_shared: bool=False, detach: bool=False) -> Any
detach: bool
save_as: str
self: (unannotated)
update_shared: bool
Source docstring:
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.
cancel(self) -> None
self: (unannotated)
Source docstring:
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.
FOLLOW_CONTEXT = 'follow_context'
lsdtools.extend.SurfaceBindingMode.EXACT_TARGET#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:106.
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.
revision: str | int
lsdtools.extend.SurfaceContentSnapshot.summary#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:447.
summary: str
lsdtools.extend.SurfaceContentSnapshot.icon#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:448.
icon: str | None
icon = None
lsdtools.extend.SurfaceContentSnapshot.tone#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:449.
tone: StatusTone
tone = StatusTone.NORMAL
lsdtools.extend.SurfaceContentSnapshot.progress#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:450.
progress: float | None
progress = None
lsdtools.extend.SurfaceContentSnapshot.tooltip#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:451.
tooltip: str | None
tooltip = None
lsdtools.extend.SurfaceContentSnapshot.sections#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:452.
sections: tuple[SurfaceSection, ...]
sections = ()
lsdtools.extend.SurfaceContentSnapshot.control#
Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:480.
control(self, control_id: str) -> StatusControl | None
control_id: str
self: (unannotated)
lsdtools.extend.SurfaceContentSnapshot.to_wire#
Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:487.
to_wire(self) -> dict[str, JsonValue]
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.
id: OwnedContributionId
lsdtools.extend.SurfaceContentSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:502.
title: str
lsdtools.extend.SurfaceContentSpec.observe#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:503.
observe: SurfaceObserver
observe = field(compare=False, repr=False)
lsdtools.extend.SurfaceContentSpec.invoke#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:504.
invoke: SurfaceInvoker | None
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.
desktop_refresh_on: tuple[str, ...]
desktop_refresh_on = ()
lsdtools.extend.SurfaceContentSpec.engine_refresh_on#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:506.
engine_refresh_on: tuple[str, ...]
engine_refresh_on = ()
lsdtools.extend.SurfaceContentSpec.projection#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:507.
projection: SurfaceProjectionSpec
projection = field(default_factory=SurfaceProjectionSpec)
lsdtools.extend.SurfaceContext#
Kind: class. Source: core/lsd/src/lsd/packages/status_extensions.py:172.
Source docstring:
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.
context_revision: int
lsdtools.extend.SurfaceContext.project_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:182.
project_id: str | None
project_id = None
lsdtools.extend.SurfaceContext.project_path#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:183.
project_path: str | None
project_path = None
lsdtools.extend.SurfaceContext.active_view_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:184.
active_view_id: str | None
active_view_id = None
lsdtools.extend.SurfaceContext.active_view_kind#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:185.
active_view_kind: str | None
active_view_kind = None
lsdtools.extend.SurfaceContext.active_view_title#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:186.
active_view_title: str | None
active_view_title = None
lsdtools.extend.SurfaceContext.active_view_entity_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:187.
active_view_entity_id: str | None
active_view_entity_id = None
lsdtools.extend.SurfaceContext.selected_entity_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:188.
selected_entity_id: str | None
selected_entity_id = None
lsdtools.extend.SurfaceContext.binding_mode#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:189.
binding_mode: SurfaceBindingMode
binding_mode = SurfaceBindingMode.FOLLOW_CONTEXT
lsdtools.extend.SurfaceContext.target_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:190.
target_id: str | None
target_id = None
lsdtools.extend.SurfaceContext.host#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:191.
host: Any
host = field(default=None, compare=False, repr=False)
lsdtools.extend.SurfaceContext.engine#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:192.
engine: Any
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.
active_view: Any
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.
selected_entity: Any
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.
to_wire(self) -> dict[str, JsonValue]
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.
id: str
lsdtools.extend.SurfaceDetail.label#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:401.
label: str
lsdtools.extend.SurfaceDetail.value#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:402.
value: JsonValue
lsdtools.extend.SurfaceDetail.to_wire#
Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:409.
to_wire(self) -> dict[str, JsonValue]
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.
STATUS_POPOVER = 'status_popover'
lsdtools.extend.SurfaceHome.VIEWER_HUD#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:93.
VIEWER_HUD = 'viewer_hud'
lsdtools.extend.SurfaceHome.SIDEBAR#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:94.
SIDEBAR = 'sidebar'
lsdtools.extend.SurfaceHome.EDITOR#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:95.
EDITOR = 'editor'
lsdtools.extend.SurfaceHome.WINDOW#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:96.
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.
SINGLE = 'single'
lsdtools.extend.SurfaceMultiplicity.MULTIPLE#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:101.
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.
homes: tuple[SurfaceHome, ...]
homes = (SurfaceHome.STATUS_POPOVER,)
lsdtools.extend.SurfaceProjectionSpec.multiplicity#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:146.
multiplicity: SurfaceMultiplicity
multiplicity = SurfaceMultiplicity.SINGLE
lsdtools.extend.SurfaceProjectionSpec.binding_modes#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:147.
binding_modes: tuple[SurfaceBindingMode, ...]
binding_modes = (SurfaceBindingMode.FOLLOW_CONTEXT,)
lsdtools.extend.SurfaceProjectionSpec.default_binding#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:150.
default_binding: SurfaceBindingMode
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.
id: str
lsdtools.extend.SurfaceSection.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:416.
title: str | None
title = None
lsdtools.extend.SurfaceSection.details#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:417.
details: tuple[SurfaceDetail, ...]
details = ()
lsdtools.extend.SurfaceSection.controls#
Kind: attribute. Source: core/lsd/src/lsd/packages/status_extensions.py:418.
controls: tuple[StatusControl, ...]
controls = ()
lsdtools.extend.SurfaceSection.to_wire#
Kind: method. Source: core/lsd/src/lsd/packages/status_extensions.py:435.
to_wire(self) -> dict[str, JsonValue]
self: (unannotated)
lsdtools.extend.SurfaceTexturePayload#
Kind: class. Source: core/style/src/lsd_style/assets.py:232.
Source docstring:
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.
image: np.ndarray
lsdtools.extend.SurfaceTexturePayload.kind#
Kind: attribute. Source: core/style/src/lsd_style/assets.py:236.
kind = 'surface_texture'
lsdtools.extend.SurfaceTexturePayload.to_bytes#
Kind: method. Source: core/style/src/lsd_style/assets.py:241.
to_bytes(self) -> bytes
self: (unannotated)
lsdtools.extend.SurfaceTexturePayload.from_parts#
Kind: method. Source: core/style/src/lsd_style/assets.py:245.
from_parts(cls, header: Mapping[str, Any], arrays: Sequence[np.ndarray]) -> 'SurfaceTexturePayload'
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:
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.
image: np.ndarray
lsdtools.extend.SymbolGlyphsPayload.uv_rects#
Kind: attribute. Source: core/style/src/lsd_style/assets.py:254.
uv_rects: np.ndarray
lsdtools.extend.SymbolGlyphsPayload.names#
Kind: attribute. Source: core/style/src/lsd_style/assets.py:255.
names: Tuple[str, ...]
lsdtools.extend.SymbolGlyphsPayload.kind#
Kind: attribute. Source: core/style/src/lsd_style/assets.py:256.
kind = 'symbol_glyphs'
lsdtools.extend.SymbolGlyphsPayload.to_bytes#
Kind: method. Source: core/style/src/lsd_style/assets.py:275.
to_bytes(self) -> bytes
self: (unannotated)
lsdtools.extend.SymbolGlyphsPayload.from_parts#
Kind: method. Source: core/style/src/lsd_style/assets.py:279.
from_parts(cls, header: Mapping[str, Any], arrays: Sequence[np.ndarray]) -> 'SymbolGlyphsPayload'
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:
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.
id: str
lsdtools.extend.SymbolLayer.kind#
Kind: attribute. Source: core/style/src/lsd_style/model.py:386.
kind: str
lsdtools.extend.SymbolLayer.name#
Kind: attribute. Source: core/style/src/lsd_style/model.py:387.
name: str
name = ''
lsdtools.extend.SymbolLayer.enabled#
Kind: attribute. Source: core/style/src/lsd_style/model.py:388.
enabled: bool
enabled = True
lsdtools.extend.SymbolLayer.opacity#
Kind: attribute. Source: core/style/src/lsd_style/model.py:389.
opacity: float
opacity = 1.0
lsdtools.extend.SymbolLayer.blend#
Kind: attribute. Source: core/style/src/lsd_style/model.py:390.
blend: str
blend = 'normal'
lsdtools.extend.SymbolLayer.properties#
Kind: attribute. Source: core/style/src/lsd_style/model.py:391.
properties: Dict[str, JSONValue]
properties = dc_field(default_factory=dict)
lsdtools.extend.SymbolLayer.metadata#
Kind: attribute. Source: core/style/src/lsd_style/model.py:392.
metadata: Dict[str, JSONValue]
metadata = dc_field(default_factory=dict)
lsdtools.extend.SymbolLayer.extensions#
Kind: attribute. Source: core/style/src/lsd_style/model.py:393.
extensions: Dict[str, JSONValue]
extensions = dc_field(default_factory=dict)
lsdtools.extend.SymbolLayer.from_dict#
Kind: method. Source: core/style/src/lsd_style/model.py:423.
from_dict(cls, data: Mapping[str, JSONValue]) -> 'SymbolLayer'
cls: (unannotated)
data: Mapping[str, JSONValue]
lsdtools.extend.SymbolLayer.to_dict#
Kind: method. Source: core/style/src/lsd_style/model.py:450.
to_dict(self) -> Dict[str, JSONValue]
self: (unannotated)
lsdtools.extend.SymbolLayer.clone#
Kind: method. Source: core/style/src/lsd_style/model.py:463.
clone(self, *, new_id: Optional[str]=None) -> 'SymbolLayer'
new_id: Optional[str]
self: (unannotated)
lsdtools.extend.SymbolLayer.set_property#
Kind: method. Source: core/style/src/lsd_style/model.py:469.
set_property(self, name: str, value: JSONValue | ValueMapping) -> None
name: str
self: (unannotated)
value: JSONValue | ValueMapping
lsdtools.extend.SymbolLayer.resolve#
Kind: method. Source: core/style/src/lsd_style/model.py:478.
resolve(self, name: str, input_value: Any=None) -> JSONValue
input_value: Any
name: str
self: (unannotated)
lsdtools.extend.Symbology#
Kind: class. Source: core/style/src/lsd_style/model.py:496.
Source docstring:
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.
name: str
name = 'Untitled symbology'
lsdtools.extend.Symbology.geometry#
Kind: attribute. Source: core/style/src/lsd_style/model.py:500.
geometry: str
geometry = 'any'
lsdtools.extend.Symbology.layers#
Kind: attribute. Source: core/style/src/lsd_style/model.py:501.
layers: List[SymbolLayer]
layers = dc_field(default_factory=list)
lsdtools.extend.Symbology.legend#
Kind: attribute. Source: core/style/src/lsd_style/model.py:502.
legend: Dict[str, JSONValue]
legend = dc_field(default_factory=_default_legend)
lsdtools.extend.Symbology.metadata#
Kind: attribute. Source: core/style/src/lsd_style/model.py:503.
metadata: Dict[str, JSONValue]
metadata = dc_field(default_factory=dict)
lsdtools.extend.Symbology.description#
Kind: attribute. Source: core/style/src/lsd_style/model.py:504.
description: str
description = ''
lsdtools.extend.Symbology.unique_id#
Kind: method. Source: core/style/src/lsd_style/model.py:529.
unique_id(self, preferred: str) -> str
preferred: str
self: (unannotated)
lsdtools.extend.Symbology.add_layer#
Kind: method. Source: core/style/src/lsd_style/model.py:539.
add_layer(self, layer: SymbolLayer | Mapping[str, JSONValue], *, index: Optional[int]=None) -> SymbolLayer
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.
new_layer(self, kind: str, *, name: str='', properties: Optional[Mapping[str, JSONValue]]=None, index: Optional[int]=None) -> SymbolLayer
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.
layer(self, layer_id: str) -> Optional[SymbolLayer]
layer_id: str
self: (unannotated)
lsdtools.extend.Symbology.remove_layer#
Kind: method. Source: core/style/src/lsd_style/model.py:561.
remove_layer(self, layer_id: str) -> bool
layer_id: str
self: (unannotated)
lsdtools.extend.Symbology.move_layer#
Kind: method. Source: core/style/src/lsd_style/model.py:568.
move_layer(self, source: int | str, destination: int) -> None
destination: int
self: (unannotated)
source: int | str
lsdtools.extend.Symbology.duplicate_layer#
Kind: method. Source: core/style/src/lsd_style/model.py:576.
duplicate_layer(self, layer_id: str) -> SymbolLayer
layer_id: str
self: (unannotated)
lsdtools.extend.Symbology.from_dict#
Kind: method. Source: core/style/src/lsd_style/model.py:587.
from_dict(cls, data: Mapping[str, JSONValue]) -> 'Symbology'
cls: (unannotated)
data: Mapping[str, JSONValue]
lsdtools.extend.Symbology.to_dict#
Kind: method. Source: core/style/src/lsd_style/model.py:620.
to_dict(self) -> Dict[str, JSONValue]
self: (unannotated)
lsdtools.extend.Symbology.from_json#
Kind: method. Source: core/style/src/lsd_style/model.py:633.
from_json(cls, text: str) -> 'Symbology'
cls: (unannotated)
text: str
lsdtools.extend.Symbology.to_json#
Kind: method. Source: core/style/src/lsd_style/model.py:640.
to_json(self, *, indent: Optional[int]=2) -> str
indent: Optional[int]
self: (unannotated)
lsdtools.extend.Symbology.clone#
Kind: method. Source: core/style/src/lsd_style/model.py:643.
clone(self) -> 'Symbology'
self: (unannotated)
lsdtools.extend.Symbology.resolve#
Kind: method. Source: core/style/src/lsd_style/model.py:646.
resolve(self, layer_id: str, property_name: str, input_value: Any=None) -> JSONValue
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:
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.
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:
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.
main(self) -> pa.Table
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.
id: str
lsdtools.extend.TimelineEditorBindingDiagnostic.code#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:76.
code: str
lsdtools.extend.TimelineEditorBindingDiagnostic.message#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:77.
message: str
lsdtools.extend.TimelineEditorBindingDiagnostic.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:79.
to_dict(self)
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.
version: int
lsdtools.extend.TimelineEditorBindingSpec.id#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:34.
id: OwnedContributionId
lsdtools.extend.TimelineEditorBindingSpec.extension#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:35.
extension: OwnedContributionId
lsdtools.extend.TimelineEditorBindingSpec.track_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:36.
track_id: str
lsdtools.extend.TimelineEditorBindingSpec.object_type#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:37.
object_type: OwnedContributionId
lsdtools.extend.TimelineEditorBindingSpec.section#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:38.
section: OwnedContributionId
lsdtools.extend.TimelineEditorBindingSpec.fields#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:39.
fields: tuple[str, ...]
lsdtools.extend.TimelineEditorBindingSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:40.
title: str
lsdtools.extend.TimelineEditorBindingSpec.value#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:41.
value: TimelineValueSpec
lsdtools.extend.TimelineEditorBindingSpec.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/timeline_editor_bindings.py:66.
to_dict(self)
self: (unannotated)
lsdtools.extend.TimelineEventFieldSpec#
Kind: class. Source: core/lsd/src/lsd/packages/timeline_extensions.py:203.
Source docstring:
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.
name: str
lsdtools.extend.TimelineEventFieldSpec.value#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:207.
value: TimelineValueSpec
lsdtools.extend.TimelineEventTrackSpec#
Kind: class. Source: core/lsd/src/lsd/packages/timeline_extensions.py:216.
Source docstring:
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.
id: str
lsdtools.extend.TimelineEventTrackSpec.event#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:224.
event: str
lsdtools.extend.TimelineEventTrackSpec.payload#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:225.
payload: tuple[TimelineEventFieldSpec, ...]
payload = ()
lsdtools.extend.TimelineEventTrackSpec.phase#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:227.
phase: str
phase = 'simulation_input'
lsdtools.extend.TimelineEventTrackSpec.replay#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:228.
replay: str
replay = 'intent_only'
lsdtools.extend.TimelineEventTrackSpec.checkpoint#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:229.
checkpoint: str
checkpoint = 'none'
lsdtools.extend.TimelineEventTrackSpec.native_lowering#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:230.
native_lowering: None
native_lowering = None
lsdtools.extend.TimelineEventTrackSpec.execution#
Kind: method. Source: core/lsd/src/lsd/packages/timeline_extensions.py:246.
execution(self) -> str
self: (unannotated)
lsdtools.extend.TimelineExtensionSpec#
Kind: class. Source: core/lsd/src/lsd/packages/timeline_extensions.py:251.
Source docstring:
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.
version: int
lsdtools.extend.TimelineExtensionSpec.id#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:261.
id: OwnedContributionId
lsdtools.extend.TimelineExtensionSpec.factory#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:262.
factory: Callable[[Any], Any]
lsdtools.extend.TimelineExtensionSpec.tracks#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:263.
tracks: tuple[TimelinePropertyTrackSpec | TimelineEventTrackSpec, ...]
lsdtools.extend.TimelinePropertySourceSpec#
Kind: class. Source: core/lsd/src/lsd/packages/timeline_extensions.py:101.
Source docstring:
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.
component: str
lsdtools.extend.TimelinePropertySourceSpec.columns#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:111.
columns: tuple[str, ...]
lsdtools.extend.TimelinePropertySourceSpec.target_kind#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:113.
target_kind: str
target_kind = 'object'
lsdtools.extend.TimelinePropertySourceSpec.selectors#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:114.
selectors: tuple[tuple[str, str | bool | int | float], ...]
selectors = ()
lsdtools.extend.TimelinePropertySourceSpec.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/timeline_extensions.py:147.
to_dict(self) -> dict
self: (unannotated)
lsdtools.extend.TimelinePropertyTrackSpec#
Kind: class. Source: core/lsd/src/lsd/packages/timeline_extensions.py:154.
Source docstring:
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.
id: str
lsdtools.extend.TimelinePropertyTrackSpec.binding#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:162.
binding: str
lsdtools.extend.TimelinePropertyTrackSpec.value#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:163.
value: TimelineValueSpec
lsdtools.extend.TimelinePropertyTrackSpec.authored#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:165.
authored: TimelinePropertySourceSpec | None
authored = None
lsdtools.extend.TimelinePropertyTrackSpec.constraints#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:166.
constraints: TimelineValueConstraints
constraints = TimelineValueConstraints()
lsdtools.extend.TimelinePropertyTrackSpec.interpolation#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:167.
interpolation: tuple[str, ...]
interpolation = ('hold', 'linear')
lsdtools.extend.TimelinePropertyTrackSpec.phase#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:168.
phase: str
phase = 'simulation_input'
lsdtools.extend.TimelinePropertyTrackSpec.checkpoint#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:169.
checkpoint: str
checkpoint = 'none'
lsdtools.extend.TimelinePropertyTrackSpec.native_lowering#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:170.
native_lowering: None
native_lowering = None
lsdtools.extend.TimelinePropertyTrackSpec.execution#
Kind: method. Source: core/lsd/src/lsd/packages/timeline_extensions.py:198.
execution(self) -> str
self: (unannotated)
lsdtools.extend.TimelineValueConstraints#
Kind: class. Source: core/lsd/src/lsd/packages/timeline_extensions.py:73.
Source docstring:
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.
minimum: float | None
minimum = None
lsdtools.extend.TimelineValueConstraints.maximum#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:77.
maximum: float | None
maximum = None
lsdtools.extend.TimelineValueConstraints.to_dict#
Kind: method. Source: core/lsd/src/lsd/packages/timeline_extensions.py:96.
to_dict(self) -> dict
self: (unannotated)
lsdtools.extend.TimelineValueSpec#
Kind: class. Source: core/lsd/src/lsd/packages/timeline_extensions.py:53.
Source docstring:
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.
kind: str
lsdtools.extend.TimelineValueSpec.unit#
Kind: attribute. Source: core/lsd/src/lsd/packages/timeline_extensions.py:61.
unit: str
lsdtools.extend.ToggleButtonControl#
Kind: class. Source: views/widgets/forms/src/lsd_forms/controls.py:801.
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:
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.
__init__(self, label: str='', *, icon_name: Optional[str]=None, active: bool=False, tooltip: Optional[str]=None, context_items: Optional[List[MenuItem]]=None) -> None
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.
value(self) -> bool
self: (unannotated)
lsdtools.extend.ToggleButtonControl.set_value#
Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:859.
set_value(self, v: Any) -> None
self: (unannotated)
v: Any
lsdtools.extend.ToggleButtonControl.set_active#
Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:862.
set_active(self, active: bool, *, notify: bool=False) -> None
active: bool
notify: bool
self: (unannotated)
lsdtools.extend.ToggleButtonControl.connect_toggled#
Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:872.
connect_toggled(self, cb: Callable[[bool], None]) -> None
cb: Callable[[bool], None]
self: (unannotated)
Source docstring:
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.
set_context_menu(self, items: List[MenuItem]) -> None
items: List[MenuItem]
self: (unannotated)
lsdtools.extend.ToolbarControl#
Kind: class. Source: views/widgets/forms/src/lsd_forms/controls.py:1037.
ToolbarControl(self, spacing: int=2, *, vertical: bool=False) -> None
Source docstring:
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.
__init__(self, spacing: int=2, *, vertical: bool=False) -> None
self: (unannotated)
spacing: int
vertical: bool
lsdtools.extend.ToolbarControl.add#
Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:1065.
add(self, ctrl, *, name: Optional[str]=None) -> 'ToolbarControl'
ctrl: (unannotated)
name: Optional[str]
self: (unannotated)
Source docstring:
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.
add_group_separator(self) -> 'ToolbarControl'
self: (unannotated)
Source docstring:
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.
vertical(self) -> bool
self: (unannotated)
lsdtools.extend.ToolbarControl.set_vertical#
Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:1084.
set_vertical(self, vertical: bool) -> None
self: (unannotated)
vertical: bool
Source docstring:
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.
value(self) -> None
self: (unannotated)
lsdtools.extend.ToolbarControl.set_value#
Kind: method. Source: views/widgets/forms/src/lsd_forms/controls.py:1111.
set_value(self, v: Any) -> None
self: (unannotated)
v: Any
lsdtools.extend.TreeAnchor#
Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:237.
Source docstring:
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.
key: str
lsdtools.extend.TreeAnchor.component#
Kind: method. Source: core/lsd/src/lsd/packages/tree_extensions.py:246.
component(cls, contribution_id: OwnedContributionId) -> 'TreeAnchor'
cls: (unannotated)
contribution_id: OwnedContributionId
lsdtools.extend.TreeAnchor.named#
Kind: method. Source: core/lsd/src/lsd/packages/tree_extensions.py:251.
named(cls, name: str) -> 'TreeAnchor'
cls: (unannotated)
name: str
lsdtools.extend.TreeChoiceSpec#
Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:316.
Source docstring:
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.
value: str | int | float | bool
lsdtools.extend.TreeChoiceSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:320.
title: str
lsdtools.extend.TreeChoiceSpec.icon#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:321.
icon: str | None
icon = None
lsdtools.extend.TreeColumnSpec#
Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:512.
Source docstring:
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.
id: OwnedContributionId
lsdtools.extend.TreeColumnSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:526.
title: str
lsdtools.extend.TreeColumnSpec.control#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:527.
control: TreeControlKind
control = TreeControlKind.DISPLAY
lsdtools.extend.TreeColumnSpec.entity_types#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:528.
entity_types: tuple[str, ...]
entity_types = ()
lsdtools.extend.TreeColumnSpec.command#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:529.
command: str | None
command = None
lsdtools.extend.TreeColumnSpec.actions#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:530.
actions: tuple[str, ...]
actions = ()
lsdtools.extend.TreeColumnSpec.value#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:531.
value: EntityValueReader | None
value = field(default=None, compare=False, repr=False)
lsdtools.extend.TreeColumnSpec.choices#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:532.
choices: tuple[TreeChoiceSpec, ...]
choices = ()
lsdtools.extend.TreeColumnSpec.minimum#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:533.
minimum: int | float | None
minimum = None
lsdtools.extend.TreeColumnSpec.maximum#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:534.
maximum: int | float | None
maximum = None
lsdtools.extend.TreeColumnSpec.step#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:535.
step: int | float | None
step = None
lsdtools.extend.TreeColumnSpec.icon#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:536.
icon: str | None
icon = None
lsdtools.extend.TreeColumnSpec.region#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:537.
region: str
region = 'row.trailing'
lsdtools.extend.TreeColumnSpec.default_visible#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:538.
default_visible: bool
default_visible = True
lsdtools.extend.TreeColumnSpec.anchors#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:539.
anchors: tuple[TreeAnchor, ...]
anchors = ()
lsdtools.extend.TreeColumnSpec.before#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:540.
before: tuple[TreeAnchor, ...]
before = ()
lsdtools.extend.TreeColumnSpec.after#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:541.
after: tuple[TreeAnchor, ...]
after = ()
lsdtools.extend.TreeColumnSpec.replaces#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:542.
replaces: tuple[OwnedContributionId, ...]
replaces = ()
lsdtools.extend.TreeColumnSpec.build#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:543.
build: RuntimeFactory | None
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.
own_anchor(self) -> TreeAnchor
self: (unannotated)
lsdtools.extend.TreeCommandSpec#
Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:464.
Source docstring:
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.
id: OwnedContributionId
lsdtools.extend.TreeCommandSpec.action#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:473.
action: str
lsdtools.extend.TreeCommandSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:474.
title: str
lsdtools.extend.TreeCommandSpec.entity_types#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:475.
entity_types: tuple[str, ...]
entity_types = ()
lsdtools.extend.TreeCommandSpec.route#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:476.
route: str | None
route = None
lsdtools.extend.TreeCommandSpec.handler#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:477.
handler: RuntimeHandler | None
handler = field(default=None, compare=False, repr=False)
lsdtools.extend.TreeCommandSpec.replaces#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:478.
replaces: tuple[OwnedContributionId, ...]
replaces = ()
lsdtools.extend.TreeControlKind#
Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:217.
Source docstring:
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.
DISPLAY = 'display'
lsdtools.extend.TreeControlKind.ACTION#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:221.
ACTION = 'action'
lsdtools.extend.TreeControlKind.TOGGLE#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:222.
TOGGLE = 'toggle'
lsdtools.extend.TreeControlKind.COLOR#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:223.
COLOR = 'color'
lsdtools.extend.TreeControlKind.SLIDER#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:224.
SLIDER = 'slider'
lsdtools.extend.TreeControlKind.CHOICE#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:225.
CHOICE = 'choice'
lsdtools.extend.TreeControlKind.CUSTOM#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:226.
CUSTOM = 'custom'
lsdtools.extend.TreeDecorationSpec#
Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:658.
Source docstring:
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.
id: OwnedContributionId
lsdtools.extend.TreeDecorationSpec.slot#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:662.
slot: str
lsdtools.extend.TreeDecorationSpec.decorate#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:663.
decorate: EntityDecorator
decorate = field(compare=False, repr=False)
lsdtools.extend.TreeDecorationSpec.entity_types#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:664.
entity_types: tuple[str, ...]
entity_types = ()
lsdtools.extend.TreeDecorationSpec.additive#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:665.
additive: bool
additive = False
lsdtools.extend.TreeDecorationSpec.replaces#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:666.
replaces: tuple[OwnedContributionId, ...]
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.
severity: DiagnosticSeverity
lsdtools.extend.TreeDiagnostic.code#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:815.
code: str
lsdtools.extend.TreeDiagnostic.message#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:816.
message: str
lsdtools.extend.TreeDiagnostic.subjects#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:817.
subjects: tuple[str, ...]
subjects = ()
lsdtools.extend.TreeExtensionSpec#
Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:762.
Source docstring:
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.
id: OwnedContributionId
lsdtools.extend.TreeExtensionSpec.target#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:766.
target: TreeTargetSpec
lsdtools.extend.TreeExtensionSpec.refresh_on#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:767.
refresh_on: tuple[str, ...]
refresh_on = ()
lsdtools.extend.TreeExtensionSpec.filters#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:768.
filters: tuple[TreeFilterSpec, ...]
filters = ()
lsdtools.extend.TreeExtensionSpec.selection_routes#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:769.
selection_routes: tuple[TreeSelectionRouteSpec, ...]
selection_routes = ()
lsdtools.extend.TreeExtensionSpec.commands#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:770.
commands: tuple[TreeCommandSpec, ...]
commands = ()
lsdtools.extend.TreeExtensionSpec.columns#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:771.
columns: tuple[TreeColumnSpec, ...]
columns = ()
lsdtools.extend.TreeExtensionSpec.decorations#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:772.
decorations: tuple[TreeDecorationSpec, ...]
decorations = ()
lsdtools.extend.TreeExtensionSpec.menu_sections#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:773.
menu_sections: tuple[TreeMenuSectionSpec, ...]
menu_sections = ()
lsdtools.extend.TreeExtensionSpec.surfaces#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:774.
surfaces: tuple[TreeSurfaceSpec, ...]
surfaces = ()
lsdtools.extend.TreeFilterSpec#
Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:396.
Source docstring:
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.
id: OwnedContributionId
lsdtools.extend.TreeFilterSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:404.
title: str
lsdtools.extend.TreeFilterSpec.matcher#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:405.
matcher: EntityMatcher
matcher = field(compare=False, repr=False)
lsdtools.extend.TreeFilterSpec.default_enabled#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:406.
default_enabled: bool
default_enabled = False
lsdtools.extend.TreeFilterSpec.replaces#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:407.
replaces: tuple[OwnedContributionId, ...]
replaces = ()
lsdtools.extend.TreeMenuItemSpec#
Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:339.
Source docstring:
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.
action: str
lsdtools.extend.TreeMenuItemSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:347.
title: str
lsdtools.extend.TreeMenuItemSpec.params#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:349.
params: Mapping[str, Any]
params = field(default_factory=dict)
lsdtools.extend.TreeMenuItemSpec.icon#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:350.
icon: str | None
icon = None
lsdtools.extend.TreeMenuItemSpec.shortcut#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:351.
shortcut: str | None
shortcut = None
lsdtools.extend.TreeMenuSectionSpec#
Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:679.
Source docstring:
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.
id: OwnedContributionId
lsdtools.extend.TreeMenuSectionSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:689.
title: str
lsdtools.extend.TreeMenuSectionSpec.items#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:690.
items: MenuItemsFactory
items = field(compare=False, repr=False)
lsdtools.extend.TreeMenuSectionSpec.entity_types#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:691.
entity_types: tuple[str, ...]
entity_types = ()
lsdtools.extend.TreeMenuSectionSpec.anchors#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:692.
anchors: tuple[TreeAnchor, ...]
anchors = ()
lsdtools.extend.TreeMenuSectionSpec.before#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:693.
before: tuple[TreeAnchor, ...]
before = ()
lsdtools.extend.TreeMenuSectionSpec.after#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:694.
after: tuple[TreeAnchor, ...]
after = ()
lsdtools.extend.TreeMenuSectionSpec.replaces#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:695.
replaces: tuple[OwnedContributionId, ...]
replaces = ()
lsdtools.extend.TreeMenuSectionSpec.region#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:696.
region: str
region = 'context'
lsdtools.extend.TreeMenuSectionSpec.own_anchor#
Kind: method. Source: core/lsd/src/lsd/packages/tree_extensions.py:712.
own_anchor(self) -> TreeAnchor
self: (unannotated)
lsdtools.extend.TreeRowDecoration#
Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:278.
Source docstring:
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.
icon: str | None
icon = None
lsdtools.extend.TreeRowDecoration.foreground#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:282.
foreground: str | None
foreground = None
lsdtools.extend.TreeRowDecoration.background#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:283.
background: str | None
background = None
lsdtools.extend.TreeRowDecoration.subtitle#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:284.
subtitle: str | None
subtitle = None
lsdtools.extend.TreeRowDecoration.css_classes#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:285.
css_classes: tuple[str, ...]
css_classes = ()
lsdtools.extend.TreeRowDecoration.badges#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:286.
badges: tuple[str, ...]
badges = ()
lsdtools.extend.TreeScope#
Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:210.
Source docstring:
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.
WORKSPACE = 'workspace'
lsdtools.extend.TreeScope.PICKER#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:214.
PICKER = 'picker'
lsdtools.extend.TreeSelectionRouteSpec#
Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:419.
Source docstring:
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.
id: OwnedContributionId
lsdtools.extend.TreeSelectionRouteSpec.entity_types#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:423.
entity_types: tuple[str, ...]
lsdtools.extend.TreeSelectionRouteSpec.target_view_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:424.
target_view_id: str
lsdtools.extend.TreeSelectionRouteSpec.trigger#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:425.
trigger: str
trigger = 'selected'
lsdtools.extend.TreeSelectionRouteSpec.include_subtypes#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:426.
include_subtypes: bool
include_subtypes = False
lsdtools.extend.TreeSelectionRouteSpec.replaces#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:427.
replaces: tuple[OwnedContributionId, ...]
replaces = ()
lsdtools.extend.TreeSurfaceKind#
Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:229.
Source docstring:
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.
HEADER = 'header'
lsdtools.extend.TreeSurfaceKind.FOOTER#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:233.
FOOTER = 'footer'
lsdtools.extend.TreeSurfaceSpec#
Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:717.
Source docstring:
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.
id: OwnedContributionId
lsdtools.extend.TreeSurfaceSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:727.
title: str
lsdtools.extend.TreeSurfaceSpec.kind#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:728.
kind: TreeSurfaceKind
lsdtools.extend.TreeSurfaceSpec.region#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:729.
region: str
lsdtools.extend.TreeSurfaceSpec.build#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:730.
build: RuntimeFactory
build = field(compare=False, repr=False)
lsdtools.extend.TreeSurfaceSpec.observe#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:731.
observe: TreeStateObserver
observe = field(compare=False, repr=False)
lsdtools.extend.TreeSurfaceSpec.actions#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:732.
actions: tuple[str, ...]
actions = ()
lsdtools.extend.TreeSurfaceSpec.entity_types#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:733.
entity_types: tuple[str, ...]
entity_types = ()
lsdtools.extend.TreeSurfaceSpec.default_visible#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:734.
default_visible: bool
default_visible = True
lsdtools.extend.TreeSurfaceSpec.anchors#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:735.
anchors: tuple[TreeAnchor, ...]
anchors = ()
lsdtools.extend.TreeSurfaceSpec.before#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:736.
before: tuple[TreeAnchor, ...]
before = ()
lsdtools.extend.TreeSurfaceSpec.after#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:737.
after: tuple[TreeAnchor, ...]
after = ()
lsdtools.extend.TreeSurfaceSpec.replaces#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:738.
replaces: tuple[OwnedContributionId, ...]
replaces = ()
lsdtools.extend.TreeSurfaceSpec.own_anchor#
Kind: method. Source: core/lsd/src/lsd/packages/tree_extensions.py:757.
own_anchor(self) -> TreeAnchor
self: (unannotated)
lsdtools.extend.TreeTargetSpec#
Kind: class. Source: core/lsd/src/lsd/packages/tree_extensions.py:259.
Source docstring:
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.
kind: str
lsdtools.extend.TreeTargetSpec.scopes#
Kind: attribute. Source: core/lsd/src/lsd/packages/tree_extensions.py:263.
scopes: tuple[TreeScope, ...]
scopes = (TreeScope.WORKSPACE,)
lsdtools.extend.TreeTargetSpec.matches#
Kind: method. Source: core/lsd/src/lsd/packages/tree_extensions.py:273.
matches(self, kind: str, scope: TreeScope | str) -> bool
kind: str
scope: TreeScope | str
self: (unannotated)
lsdtools.extend.ValidateStep#
Kind: class. Source: services/data/src/lsd_data/transforms.py:48.
Source docstring:
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.
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.
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.
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.
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.
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.
input_ports = ['input']
lsdtools.extend.ValidateStep.output_ports#
Kind: attribute. Source: services/data/src/lsd_data/transforms.py:67.
output_ports = ['output', 'report']
lsdtools.extend.ValidateStep.run#
Kind: method. Source: services/data/src/lsd_data/transforms.py:69.
run(self, inputs)
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.
ok: bool
lsdtools.extend.ValidationResult.errors#
Kind: attribute. Source: core/lsd/src/lsd/core/configurable.py:200.
errors: List[ValidationError]
lsdtools.extend.ValueMapping#
Kind: class. Source: core/style/src/lsd_style/model.py:157.
Source docstring:
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.
kind: str
lsdtools.extend.ValueMapping.config#
Kind: attribute. Source: core/style/src/lsd_style/model.py:166.
config: Dict[str, JSONValue]
config = dc_field(default_factory=dict)
lsdtools.extend.ValueMapping.from_dict#
Kind: method. Source: core/style/src/lsd_style/model.py:278.
from_dict(cls, data: Mapping[str, JSONValue]) -> 'ValueMapping'
cls: (unannotated)
data: Mapping[str, JSONValue]
lsdtools.extend.ValueMapping.to_dict#
Kind: method. Source: core/style/src/lsd_style/model.py:289.
to_dict(self) -> Dict[str, JSONValue]
self: (unannotated)
lsdtools.extend.ValueMapping.clone#
Kind: method. Source: core/style/src/lsd_style/model.py:294.
clone(self) -> 'ValueMapping'
self: (unannotated)
lsdtools.extend.ValueMapping.evaluate#
Kind: method. Source: core/style/src/lsd_style/model.py:297.
evaluate(self, input_value: Any) -> JSONValue
input_value: Any
self: (unannotated)
Source docstring:
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.
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:
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.
__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
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.
reconcile_viewer_extensions(self)
self: (unannotated)
lsdtools.extend.Viewer3DMainView.describe_viewer#
Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:240.
describe_viewer(self) -> dict
self: (unannotated)
lsdtools.extend.Viewer3DMainView.choose_runtime#
Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:262.
choose_runtime(self, entity_id) -> dict
entity_id: (unannotated)
self: (unannotated)
lsdtools.extend.Viewer3DMainView.runtime_transport_op#
Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:265.
runtime_transport_op(self, op: str, **params) -> dict
op: str
params: (unannotated)
self: (unannotated)
Source docstring:
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.
select_viewer_provider(self, capability: str, provider_id: str, *, defer_on_dirty: bool=True)
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.
select_viewer_pointer_tool(self, tool_id: str, *, actor: str='') -> bool
actor: str
self: (unannotated)
tool_id: str
Source docstring:
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.
select_viewer_data_editor_mode(self, target_id: str | None, mode_id: str, *, actor: str='') -> dict[str, Any]
actor: str
mode_id: str
self: (unannotated)
target_id: str | None
Source docstring:
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.
invoke_viewer_data_editor_action(self, mode_id: str, action_id: str, *, actor: str='')
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.
submit_viewer_data_editor_input(self, request_token: str, values: Mapping[str, Any], *, actor: str='')
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.
cancel_viewer_data_editor_input(self, request_token: str, *, actor: str='')
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.
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]
actor: str
changes: Mapping[str, Any]
expected_plan_digest: str
expected_selection_digest: str
section_id: str
self: (unannotated)
Source docstring:
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.
set_viewer_object_component(self, section_id: str, present: bool, *, expected_selection_digest: str, expected_plan_digest: str, actor: str='') -> dict[str, Any]
actor: str
expected_plan_digest: str
expected_selection_digest: str
present: bool
section_id: str
self: (unannotated)
Source docstring:
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.
set_viewer_objects_visible(self, residents: Iterable[Mapping[str, Any]], visible: bool) -> dict[str, Any]
residents: Iterable[Mapping[str, Any]]
self: (unannotated)
visible: bool
Source docstring:
Apply this explorer's participant-local eye mask.
lsdtools.extend.Viewer3DMainView.set_viewer_object_explorer_search#
Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:388.
set_viewer_object_explorer_search(self, query: str) -> dict[str, Any]
query: str
self: (unannotated)
Source docstring:
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.
set_viewer_object_explorer_tab(self, tab_id: str) -> dict[str, Any]
self: (unannotated)
tab_id: str
Source docstring:
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.
set_viewer_object_explorer_page(self, tab_id: str, page_index: int, *, expected_page_token: str) -> dict[str, Any]
expected_page_token: str
page_index: int
self: (unannotated)
tab_id: str
Source docstring:
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.
set_viewer_object_explorer_expanded(self, tab_id: str, node_id: str, expanded: bool, *, expected_tree_token: str) -> dict[str, Any]
expanded: bool
expected_tree_token: str
node_id: str
self: (unannotated)
tab_id: str
Source docstring:
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.
set_viewer_object_explorer_folder_visible(self, tab_id: str, node_id: str, visible: bool, *, expected_tree_token: str) -> dict[str, Any]
expected_tree_token: str
node_id: str
self: (unannotated)
tab_id: str
visible: bool
Source docstring:
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.
frame_viewer_object_explorer_folder(self, tab_id: str, node_id: str, *, expected_tree_token: str) -> dict[str, Any]
expected_tree_token: str
node_id: str
self: (unannotated)
tab_id: str
Source docstring:
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.
frame_viewer_objects(self, residents: Iterable[Mapping[str, Any]] | None=None) -> dict[str, Any]
residents: Iterable[Mapping[str, Any]] | None
self: (unannotated)
Source docstring:
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.
invoke_viewer_object_context_action(self, action_id: str, *, expected_selection_digest: str, expected_plan_digest: str, actor: str='') -> Any
action_id: str
actor: str
expected_plan_digest: str
expected_selection_digest: str
self: (unannotated)
Source docstring:
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.
viewer_pointer_tool_refusal(self, tool_id: str) -> str
self: (unannotated)
tool_id: str
lsdtools.extend.Viewer3DMainView.invoke_viewer_command#
Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:490.
invoke_viewer_command(self, command_id: str, params=None, *, actor: str='')
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.
describe_feature_edit(self, *, actor: str='') -> dict
actor: str
self: (unannotated)
lsdtools.extend.Viewer3DMainView.set_feature_edit_subject#
Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:510.
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
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.
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
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.
commit_feature_edits(self, message: str='', *, expected_batch_id: str, expected_batch_revision: int, actor: str='') -> dict
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.
discard_feature_edits(self, *, expected_batch_id: str, expected_batch_revision: int, actor: str='') -> dict
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.
undo_feature_edit(self, *, expected_batch_id: str, expected_batch_revision: int, actor: str='') -> dict
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.
redo_feature_edit(self, *, expected_batch_id: str, expected_batch_revision: int, actor: str='') -> dict
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.
pending_feature_edit_ops(self, *, expected_batch_id: str, expected_batch_revision: int, actor: str='') -> list[dict]
actor: str
expected_batch_id: str
expected_batch_revision: int
self: (unannotated)
Source docstring:
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.
set_viewer_item(self, item_id: str, **changes)
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.
request_view_close(self, continuation: Callable[[], Any], *, label: str='closing this 3-D view', kind: str='view_close', cancellation: Callable[[], Any] | None=None) -> bool
cancellation: Callable[[], Any] | None
continuation: Callable[[], Any]
kind: str
label: str
self: (unannotated)
Source docstring:
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.
request_package_change(self, packages: Iterable[str], continuation: Callable[[], Any], *, label: str, cancellation: Callable[[], Any] | None=None) -> bool
cancellation: Callable[[], Any] | None
continuation: Callable[[], Any]
label: str
packages: Iterable[str]
self: (unannotated)
Source docstring:
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.
viewer(self) -> Viewer
self: (unannotated)
lsdtools.extend.Viewer3DMainView.panels#
Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:672.
panels(self)
self: (unannotated)
Source docstring:
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.
attach_bus(self, bus) -> None
bus: (unannotated)
self: (unannotated)
Source docstring:
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.
set_theme(self, name: str) -> None
name: str
self: (unannotated)
Source docstring:
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.
apply_render_settings(self, settings_or_dict) -> None
self: (unannotated)
settings_or_dict: (unannotated)
Source docstring:
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.
render_settings_dict(self) -> dict
self: (unannotated)
Source docstring:
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.
toolbar_style_dict(self) -> dict
self: (unannotated)
lsdtools.extend.Viewer3DMainView.set_toolbar_style#
Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:744.
set_toolbar_style(self, **kwargs) -> None
kwargs: (unannotated)
self: (unannotated)
lsdtools.extend.Viewer3DMainView.get_hud_layout#
Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:747.
get_hud_layout(self)
self: (unannotated)
lsdtools.extend.Viewer3DMainView.apply_hud_layout#
Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:750.
apply_hud_layout(self, data) -> None
data: (unannotated)
self: (unannotated)
lsdtools.extend.Viewer3DMainView.get_legend_presentation#
Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:753.
get_legend_presentation(self)
self: (unannotated)
lsdtools.extend.Viewer3DMainView.apply_legend_presentation#
Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:756.
apply_legend_presentation(self, data) -> None
data: (unannotated)
self: (unannotated)
lsdtools.extend.Viewer3DMainView.reset_hud_layout#
Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:759.
reset_hud_layout(self) -> None
self: (unannotated)
lsdtools.extend.Viewer3DMainView.set_project_dir#
Kind: method. Source: views/viewer3d/src/lsd_viewer/main_view.py:762.
set_project_dir(self, path) -> None
path: (unannotated)
self: (unannotated)
Source docstring:
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.
watch_entity(self, entity_id, payloads=None) -> None
entity_id: (unannotated)
payloads: (unannotated)
self: (unannotated)
Source docstring:
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.
unwatch_entity(self, entity_id) -> None
entity_id: (unannotated)
self: (unannotated)
Source docstring:
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.
watched_entities(self) -> List[str]
self: (unannotated)
Source docstring:
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.
deliver_layers(self, payloads) -> None
payloads: (unannotated)
self: (unannotated)
Source docstring:
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.
remove_layers(self, ids) -> None
ids: (unannotated)
self: (unannotated)
Source docstring:
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.
refresh_edit_datasets(self, dataset_paths) -> List[str]
dataset_paths: (unannotated)
self: (unannotated)
Source docstring:
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.
frame_entity(self, entity_id) -> bool
entity_id: (unannotated)
self: (unannotated)
Source docstring:
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.
frame_layer(self, layer_id) -> bool
layer_id: (unannotated)
self: (unannotated)
Source docstring:
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.
dispose(self) -> None
self: (unannotated)
Source docstring:
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.
view_id: str
view_id = view_id
lsdtools.extend.Viewer3DMainView.extensions#
Kind: attribute. Source: views/viewer3d/src/lsd_viewer/main_view.py:128.
extensions: (unannotated)
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.
interaction: Optional[ViewportInteractionController]
interaction = None
lsdtools.extend.Viewer3DMainView.object_editor#
Kind: attribute. Source: views/viewer3d/src/lsd_viewer/main_view.py:162.
object_editor: (unannotated)
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.
object_explorer: (unannotated)
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.
runtime_scene: (unannotated)
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.
runtime_transport: (unannotated)
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.
id: OwnedContributionId
lsdtools.extend.ViewerCommandSpec.action#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2472.
action: str
lsdtools.extend.ViewerCommandSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2473.
title: str
lsdtools.extend.ViewerCommandSpec.target#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2474.
target: Capability | None
target = None
lsdtools.extend.ViewerCommandSpec.requires#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2475.
requires: tuple[Capability, ...]
requires = ()
lsdtools.extend.ViewerCommandSpec.handler#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2476.
handler: RuntimeHandler | None
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:
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.
id: str
lsdtools.extend.ViewerDataEditorClickToolSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:924.
title: str
lsdtools.extend.ViewerDataEditorClickToolSpec.icon#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:925.
icon: str
lsdtools.extend.ViewerDataEditorClickToolSpec.primary_gesture#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:926.
primary_gesture: ViewerDataEditorPrimaryGesture
lsdtools.extend.ViewerDataEditorClickToolSpec.purpose#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:927.
purpose: ViewerDataEditorToolPurpose
lsdtools.extend.ViewerDataEditorClickToolSpec.description#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:928.
description: str
description = ''
lsdtools.extend.ViewerDataEditorClickToolSpec.as_dict#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:956.
as_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.ViewerDataEditorControlConditionSpec#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:998.
Source docstring:
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.
field_id: str
lsdtools.extend.ViewerDataEditorControlConditionSpec.values#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1009.
values: tuple[LayoutScalar, ...]
lsdtools.extend.ViewerDataEditorControlConditionSpec.as_dict#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1037.
as_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.ViewerDataEditorControlKind#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:235.
Source docstring:
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.
CLICK_TOOL = 'click_tool'
lsdtools.extend.ViewerDataEditorControlKind.FIELD#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:239.
FIELD = 'field'
lsdtools.extend.ViewerDataEditorControlKind.ACTION#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:240.
ACTION = 'action'
lsdtools.extend.ViewerDataEditorControlRef#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1045.
Source docstring:
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.
kind: ViewerDataEditorControlKind
lsdtools.extend.ViewerDataEditorControlRef.id#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1049.
id: str
lsdtools.extend.ViewerDataEditorControlRef.condition#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1050.
condition: ViewerDataEditorControlConditionSpec | None
condition = None
lsdtools.extend.ViewerDataEditorControlRef.as_dict#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1064.
as_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.ViewerDataEditorControlRowSpec#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1075.
Source docstring:
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.
home: ViewerDataEditorControlsHome
lsdtools.extend.ViewerDataEditorControlRowSpec.controls#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1079.
controls: tuple[ViewerDataEditorControlRef, ...]
lsdtools.extend.ViewerDataEditorControlRowSpec.as_dict#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1094.
as_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.ViewerDataEditorControlsHome#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:229.
Source docstring:
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.
INLINE = 'inline'
lsdtools.extend.ViewerDataEditorFieldKind#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:219.
Source docstring:
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.
NUMBER = 'number'
lsdtools.extend.ViewerDataEditorFieldKind.INTEGER#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:223.
INTEGER = 'integer'
lsdtools.extend.ViewerDataEditorFieldKind.BOOLEAN#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:224.
BOOLEAN = 'boolean'
lsdtools.extend.ViewerDataEditorFieldKind.TEXT#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:225.
TEXT = 'text'
lsdtools.extend.ViewerDataEditorFieldKind.CHOICE#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:226.
CHOICE = 'choice'
lsdtools.extend.ViewerDataEditorFieldPatch#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:837.
Source docstring:
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.
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.
touched_field_ids: tuple[str, ...]
touched_field_ids = ()
lsdtools.extend.ViewerDataEditorFieldPatch.mixed_field_ids#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:848.
mixed_field_ids: tuple[str, ...]
mixed_field_ids = ()
lsdtools.extend.ViewerDataEditorFieldPatch.read_only_field_ids#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:849.
read_only_field_ids: tuple[str, ...]
read_only_field_ids = ()
lsdtools.extend.ViewerDataEditorFieldPatch.changed_field_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:850.
changed_field_id: str | None
changed_field_id = None
lsdtools.extend.ViewerDataEditorFieldPatch.touched_values#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:898.
touched_values(self) -> dict[str, LayoutScalar]
self: (unannotated)
lsdtools.extend.ViewerDataEditorFieldPatch.as_dict#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:902.
as_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.ViewerDataEditorFieldSpec#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1311.
Source docstring:
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.
id: str
lsdtools.extend.ViewerDataEditorFieldSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1321.
title: str
lsdtools.extend.ViewerDataEditorFieldSpec.kind#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1322.
kind: ViewerDataEditorFieldKind
lsdtools.extend.ViewerDataEditorFieldSpec.default#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1323.
default: LayoutScalar
lsdtools.extend.ViewerDataEditorFieldSpec.description#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1324.
description: str
description = ''
lsdtools.extend.ViewerDataEditorFieldSpec.unit#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1325.
unit: str
unit = ''
lsdtools.extend.ViewerDataEditorFieldSpec.minimum#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1326.
minimum: float | int | None
minimum = None
lsdtools.extend.ViewerDataEditorFieldSpec.maximum#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1327.
maximum: float | int | None
maximum = None
lsdtools.extend.ViewerDataEditorFieldSpec.step#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1328.
step: float | int | None
step = None
lsdtools.extend.ViewerDataEditorFieldSpec.choices#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1329.
choices: tuple[LayoutScalar, ...]
choices = ()
lsdtools.extend.ViewerDataEditorFieldSpec.validate#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1390.
validate(self, value: LayoutScalar) -> LayoutScalar
self: (unannotated)
value: LayoutScalar
Source docstring:
Return *value* after exact kind/range validation.
lsdtools.extend.ViewerDataEditorFieldSpec.as_dict#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1429.
as_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.ViewerDataEditorInputRequest#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1445.
Source docstring:
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.
id: str
lsdtools.extend.ViewerDataEditorInputRequest.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1456.
title: str
lsdtools.extend.ViewerDataEditorInputRequest.fields#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1457.
fields: tuple[ViewerDataEditorFieldSpec, ...]
lsdtools.extend.ViewerDataEditorInputRequest.description#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1458.
description: str
description = ''
lsdtools.extend.ViewerDataEditorInputRequest.submit_title#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1459.
submit_title: str
submit_title = 'Apply'
lsdtools.extend.ViewerDataEditorInputRequest.cancel_title#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1460.
cancel_title: str
cancel_title = 'Cancel'
lsdtools.extend.ViewerDataEditorInputRequest.values#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1461.
values: Mapping[str, LayoutScalar] | tuple[tuple[str, LayoutScalar], ...]
values = ()
lsdtools.extend.ViewerDataEditorInputRequest.validate_values#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1510.
validate_values(self, values: Mapping[str, LayoutScalar]) -> dict[str, LayoutScalar]
self: (unannotated)
values: Mapping[str, LayoutScalar]
lsdtools.extend.ViewerDataEditorInputRequest.as_dict#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1525.
as_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.ViewerDataEditorModeActionSpec#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:968.
Source docstring:
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.
id: str
lsdtools.extend.ViewerDataEditorModeActionSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:977.
title: str
lsdtools.extend.ViewerDataEditorModeActionSpec.icon#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:978.
icon: str
lsdtools.extend.ViewerDataEditorModeActionSpec.role#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:979.
role: ViewerDatasetActionRole
lsdtools.extend.ViewerDataEditorModeActionSpec.as_dict#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:988.
as_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.ViewerDataEditorModeSpec#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1102.
Source docstring:
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.
id: OwnedContributionId
lsdtools.extend.ViewerDataEditorModeSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1114.
title: str
lsdtools.extend.ViewerDataEditorModeSpec.icon#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1115.
icon: str
lsdtools.extend.ViewerDataEditorModeSpec.click_tools#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1116.
click_tools: tuple[ViewerDataEditorClickToolSpec, ...]
lsdtools.extend.ViewerDataEditorModeSpec.default_click_tool_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1117.
default_click_tool_id: str
lsdtools.extend.ViewerDataEditorModeSpec.control_rows#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1118.
control_rows: tuple[ViewerDataEditorControlRowSpec, ...]
lsdtools.extend.ViewerDataEditorModeSpec.description#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1119.
description: str
description = ''
lsdtools.extend.ViewerDataEditorModeSpec.fields#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1120.
fields: tuple[ViewerDataEditorFieldSpec, ...]
fields = ()
lsdtools.extend.ViewerDataEditorModeSpec.actions#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1121.
actions: tuple[ViewerDataEditorModeActionSpec, ...]
actions = ()
lsdtools.extend.ViewerDataEditorModeSpec.field_commit_action_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1122.
field_commit_action_id: str | None
field_commit_action_id = None
lsdtools.extend.ViewerDataEditorModeSpec.as_dict#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1289.
as_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.ViewerDataEditorPrimaryGesture#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:257.
Source docstring:
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.
CLICK = 'click'
lsdtools.extend.ViewerDataEditorPrimaryGesture.GIZMO#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:269.
GIZMO = 'gizmo'
lsdtools.extend.ViewerDataEditorPrimaryGesture.SELECT_POINT#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:270.
SELECT_POINT = 'select_point'
lsdtools.extend.ViewerDataEditorPrimaryGesture.SELECT_BOX#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:271.
SELECT_BOX = 'select_box'
lsdtools.extend.ViewerDataEditorScope#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:187.
Source docstring:
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.
FEATURE = 'feature'
lsdtools.extend.ViewerDataEditorScope.LAYER#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:197.
LAYER = 'layer'
lsdtools.extend.ViewerDataEditorSelectionGesture#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:777.
Source docstring:
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.
kind: ViewerDataEditorSelectionKind
lsdtools.extend.ViewerDataEditorSelectionGesture.operation#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:781.
operation: ViewerDataEditorSelectionOperation
lsdtools.extend.ViewerDataEditorSelectionGesture.residents#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:782.
residents: tuple[ViewerObjectRef, ...]
lsdtools.extend.ViewerDataEditorSelectionGesture.start#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:783.
start: tuple[float, float]
lsdtools.extend.ViewerDataEditorSelectionGesture.end#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:784.
end: tuple[float, float]
lsdtools.extend.ViewerDataEditorSelectionGesture.modifiers#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:785.
modifiers: tuple[str, ...]
modifiers = ()
lsdtools.extend.ViewerDataEditorSelectionGesture.as_dict#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:823.
as_dict(self) -> dict[str, Any]
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.
POINT = 'point'
lsdtools.extend.ViewerDataEditorSelectionKind.BOX#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:276.
BOX = 'box'
lsdtools.extend.ViewerDataEditorSelectionOperation#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:279.
Source docstring:
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.
REPLACE = 'replace'
lsdtools.extend.ViewerDataEditorSelectionOperation.TOGGLE#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:283.
TOGGLE = 'toggle'
lsdtools.extend.ViewerDataEditorSpec#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1705.
Source docstring:
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.
id: OwnedContributionId
lsdtools.extend.ViewerDataEditorSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1721.
title: str
lsdtools.extend.ViewerDataEditorSpec.feature_kind#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1722.
feature_kind: str
lsdtools.extend.ViewerDataEditorSpec.object_type#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1723.
object_type: OwnedContributionId
lsdtools.extend.ViewerDataEditorSpec.scope#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1724.
scope: ViewerDataEditorScope
scope = ViewerDataEditorScope.FEATURE
lsdtools.extend.ViewerDataEditorSpec.modes#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1725.
modes: tuple[ViewerDataEditorModeSpec, ...]
modes = ()
lsdtools.extend.ViewerDataEditorSpec.config_fields#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1726.
config_fields: tuple[ViewerDataEditorFieldSpec, ...]
config_fields = ()
lsdtools.extend.ViewerDataEditorSpec.working_layer#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1727.
working_layer: ViewerDataEditorWorkingLayerSpec | None
working_layer = None
lsdtools.extend.ViewerDataEditorSpec.requires#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1728.
requires: tuple[Capability, ...]
requires = ()
lsdtools.extend.ViewerDataEditorSpec.factory#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1729.
factory: RuntimeFactory | None
factory = field(default=None, compare=False, repr=False)
lsdtools.extend.ViewerDataEditorTool#
Kind: class. Source: views/viewer3d/src/lsd_viewer/states/tool.py:196.
ViewerDataEditorTool(self) -> None
Source docstring:
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.
__init__(self) -> None
self: (unannotated)
lsdtools.extend.ViewerDataEditorTool.active_mode_id#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:254.
active_mode_id(self) -> str | None
self: (unannotated)
lsdtools.extend.ViewerDataEditorTool.active_click_tool_id#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:258.
active_click_tool_id(self) -> str | None
self: (unannotated)
lsdtools.extend.ViewerDataEditorTool.editor_config#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:267.
editor_config(self) -> Mapping[str, Any]
self: (unannotated)
lsdtools.extend.ViewerDataEditorTool.mode_values#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:270.
mode_values(self, mode_id: str | None=None) -> Mapping[str, Any]
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.
validate_primary_interaction_contract(self, primary_gestures_by_mode: Mapping[str, Mapping[str, ViewerDataEditorPrimaryGesture | str]]) -> None
primary_gestures_by_mode: Mapping[str, Mapping[str, ViewerDataEditorPrimaryGesture | str]]
self: (unannotated)
Source docstring:
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.
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
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:
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.
can_select_mode(self, ctx: 'PointerToolContext', mode_id: str) -> Tuple[bool, str]
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.
can_select_click_tool(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str) -> Tuple[bool, str]
click_tool_id: str
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)
Source docstring:
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.
click_tool_availability(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str) -> Tuple[bool, str]
click_tool_id: str
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)
Source docstring:
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.
on_editor_open(self, ctx: 'PointerToolContext') -> None
ctx: 'PointerToolContext'
self: (unannotated)
Source docstring:
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.
on_editor_close(self, ctx: 'PointerToolContext') -> None
ctx: 'PointerToolContext'
self: (unannotated)
Source docstring:
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.
on_mode_activate(self, ctx: 'PointerToolContext', mode_id: str) -> None
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)
Source docstring:
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.
on_mode_deactivate(self, ctx: 'PointerToolContext', mode_id: str) -> None
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)
Source docstring:
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.
on_mode_click_tool_activate(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str) -> None
click_tool_id: str
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)
Source docstring:
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.
on_mode_click_tool_deactivate(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str) -> None
click_tool_id: str
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)
Source docstring:
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.
on_editor_config_changed(self, ctx: 'PointerToolContext', config: Mapping[str, Any], changed_field_id: str) -> None
changed_field_id: str
config: Mapping[str, Any]
ctx: 'PointerToolContext'
self: (unannotated)
Source docstring:
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.
on_mode_field_changed(self, ctx: 'PointerToolContext', mode_id: str, patch: ViewerDataEditorFieldPatch) -> None
ctx: 'PointerToolContext'
mode_id: str
patch: ViewerDataEditorFieldPatch
self: (unannotated)
Source docstring:
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.
on_mode_action(self, ctx: 'PointerToolContext', mode_id: str, action_id: str, patch: ViewerDataEditorFieldPatch) -> Any
action_id: str
ctx: 'PointerToolContext'
mode_id: str
patch: ViewerDataEditorFieldPatch
self: (unannotated)
Source docstring:
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.
on_mode_input(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str, request_id: str, values: Mapping[str, Any]) -> Any
click_tool_id: str
ctx: 'PointerToolContext'
mode_id: str
request_id: str
self: (unannotated)
values: Mapping[str, Any]
Source docstring:
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.
on_mode_input_cancelled(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str, request_id: str) -> None
click_tool_id: str
ctx: 'PointerToolContext'
mode_id: str
request_id: str
self: (unannotated)
Source docstring:
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.
on_mode_primary_click(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str, x: float, y: float) -> bool
click_tool_id: str
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)
x: float
y: float
Source docstring:
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.
on_mode_secondary_click(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str, x: float, y: float) -> bool
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.
on_mode_hover(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str, x: float, y: float) -> None
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.
on_mode_hover_leave(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str, reason: str) -> None
click_tool_id: str
ctx: 'PointerToolContext'
mode_id: str
reason: str
self: (unannotated)
Source docstring:
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.
on_mode_key(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str, keyval: int) -> bool
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.
mode_prompt(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str) -> PointerToolPrompt
click_tool_id: str
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)
Source docstring:
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.
mode_controls_visible(self, ctx: 'PointerToolContext', mode_id: str) -> bool
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)
Source docstring:
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.
mode_controls_title(self, ctx: 'PointerToolContext', mode_id: str) -> str
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)
Source docstring:
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.
request_mode_input(self, ctx: 'PointerToolContext', request: ViewerDataEditorInputRequest) -> Mapping[str, Any]
ctx: 'PointerToolContext'
request: ViewerDataEditorInputRequest
self: (unannotated)
Source docstring:
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.
pending_input_request(self) -> dict[str, Any] | None
self: (unannotated)
lsdtools.extend.ViewerDataEditorTool.submit_input_request#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:880.
submit_input_request(self, ctx: 'PointerToolContext', request_token: str, values: Mapping[str, Any]) -> Any
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.
cancel_input_request(self, ctx: 'PointerToolContext', request_token: str) -> None
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.
set_mode_values(self, mode_id: str, values: Mapping[str, Any]) -> Mapping[str, Any]
mode_id: str
self: (unannotated)
values: Mapping[str, Any]
Source docstring:
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.
selected_residents(self) -> tuple[ViewerObjectRef, ...]
self: (unannotated)
Source docstring:
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.
uses_resident_selection(self) -> bool
self: (unannotated)
Source docstring:
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.
describe_selection(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.ViewerDataEditorTool.mode_field_patch#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:1006.
mode_field_patch(self, mode_id: str | None=None, *, changed_field_id: str | None=None) -> ViewerDataEditorFieldPatch
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.
reconcile_effective_visibility(self, ctx: 'PointerToolContext') -> bool
ctx: 'PointerToolContext'
self: (unannotated)
Source docstring:
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.
reconcile_working_selection(self, ctx: 'PointerToolContext', residents: tuple[ViewerObjectRef, ...]) -> None
ctx: 'PointerToolContext'
residents: tuple[ViewerObjectRef, ...]
self: (unannotated)
Source docstring:
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.
fail_closed_working_selection(self, ctx: 'PointerToolContext') -> None
ctx: 'PointerToolContext'
self: (unannotated)
Source docstring:
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.
rehydrate_selection(self, ctx: 'PointerToolContext') -> None
ctx: 'PointerToolContext'
self: (unannotated)
Source docstring:
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.
update_mode_values(self, ctx: 'PointerToolContext', mode_id: str, values: Mapping[str, Any], *, changed_field_id: str) -> None
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.
finish_mode_edit(self, ctx: 'PointerToolContext', mode_id: str | None=None) -> Any
ctx: 'PointerToolContext'
mode_id: str | None
self: (unannotated)
Source docstring:
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.
discard_mode_edit(self, ctx: 'PointerToolContext', mode_id: str | None=None) -> bool
ctx: 'PointerToolContext'
mode_id: str | None
self: (unannotated)
Source docstring:
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.
invoke_mode_action(self, ctx: 'PointerToolContext', mode_id: str, action_id: str) -> Any
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.
select_click_tool(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str) -> None
click_tool_id: str
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)
Source docstring:
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.
describe_editor_mode(self, ctx: 'PointerToolContext', mode_id: str) -> Mapping[str, Any]
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)
lsdtools.extend.ViewerDataEditorTool.gizmo_model#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:1361.
gizmo_model(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str) -> Any
click_tool_id: str
ctx: 'PointerToolContext'
mode_id: str
self: (unannotated)
Source docstring:
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.
preview_gizmo_operation(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str, operation: str, params: Mapping[str, Any]) -> Any
click_tool_id: str
ctx: 'PointerToolContext'
mode_id: str
operation: str
params: Mapping[str, Any]
self: (unannotated)
Source docstring:
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.
handle_operation(self, ctx: 'PointerToolContext', mode_id: str, click_tool_id: str, operation: str, params: Mapping[str, Any]) -> Any
click_tool_id: str
ctx: 'PointerToolContext'
mode_id: str
operation: str
params: Mapping[str, Any]
self: (unannotated)
Source docstring:
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.
refresh_gizmo(self) -> None
self: (unannotated)
Source docstring:
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.
declarative_gizmo_description(self, mode_id: str) -> Mapping[str, Any] | None
mode_id: str
self: (unannotated)
lsdtools.extend.ViewerDataEditorTool.on_activate#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:1520.
on_activate(self, ctx: 'PointerToolContext') -> None
ctx: 'PointerToolContext'
self: (unannotated)
lsdtools.extend.ViewerDataEditorTool.on_deactivate#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:1574.
on_deactivate(self, ctx: 'PointerToolContext') -> None
ctx: 'PointerToolContext'
self: (unannotated)
lsdtools.extend.ViewerDataEditorTool.on_params#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:1687.
on_params(self, ctx: 'PointerToolContext', **params: object) -> None
ctx: 'PointerToolContext'
params: object
self: (unannotated)
lsdtools.extend.ViewerDataEditorTool.host_hover_resident#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:2027.
host_hover_resident(self, ctx: 'PointerToolContext', resident: Any) -> ViewerObjectRef | None
ctx: 'PointerToolContext'
resident: Any
self: (unannotated)
Source docstring:
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.
on_primary_drag_begin(self, ctx: 'PointerToolContext', x: float, y: float, modifiers: frozenset[str]) -> bool
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.
on_primary_drag_update(self, ctx: 'PointerToolContext', x: float, y: float, modifiers: frozenset[str]) -> None
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.
on_primary_drag_end(self, ctx: 'PointerToolContext', x: float, y: float, dragged: bool, modifiers: frozenset[str]) -> bool
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.
on_primary_drag_cancel(self, ctx: 'PointerToolContext', reason: str, x: float, y: float, modifiers: frozenset[str]) -> None
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.
on_primary_click(self, ctx: 'PointerToolContext', x: float, y: float) -> bool
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.
on_secondary_click(self, ctx: 'PointerToolContext', x: float, y: float) -> bool
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.
on_hover(self, ctx: 'PointerToolContext', x: float, y: float) -> None
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.
on_hover_leave(self, ctx: 'PointerToolContext', reason: str) -> None
ctx: 'PointerToolContext'
reason: str
self: (unannotated)
lsdtools.extend.ViewerDataEditorTool.on_key#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:2240.
on_key(self, ctx: 'PointerToolContext', keyval: int) -> bool
ctx: 'PointerToolContext'
keyval: int
self: (unannotated)
lsdtools.extend.ViewerDataEditorTool.prompt#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:2263.
prompt(self, ctx: 'PointerToolContext') -> PointerToolPrompt
ctx: 'PointerToolContext'
self: (unannotated)
lsdtools.extend.ViewerDataEditorTool.describe_context#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:2277.
describe_context(self, ctx: 'PointerToolContext') -> Mapping[str, Any]
ctx: 'PointerToolContext'
self: (unannotated)
lsdtools.extend.ViewerDataEditorTool.on_edit_batch_changed#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:2291.
on_edit_batch_changed(self, ctx: 'PointerToolContext', event: str) -> None
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.
notify_edit_batch_changed(self, ctx: 'PointerToolContext', event: str) -> None
ctx: 'PointerToolContext'
event: str
self: (unannotated)
lsdtools.extend.ViewerDataEditorToolPurpose#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:200.
Source docstring:
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.
CREATE_OBJECT = 'create_object'
lsdtools.extend.ViewerDataEditorToolPurpose.EDIT_SELECTION#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:215.
EDIT_SELECTION = 'edit_selection'
lsdtools.extend.ViewerDataEditorToolPurpose.SELECT_TARGETS#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:216.
SELECT_TARGETS = 'select_targets'
lsdtools.extend.ViewerDataEditorWorkingGeometry#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1541.
Source docstring:
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.
id: str
lsdtools.extend.ViewerDataEditorWorkingGeometry.kind#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1557.
kind: ViewerDataEditorWorkingGeometryKind
lsdtools.extend.ViewerDataEditorWorkingGeometry.table#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1558.
table: Any
table = field(compare=False, repr=False)
lsdtools.extend.ViewerDataEditorWorkingGeometry.as_dict#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1568.
as_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.ViewerDataEditorWorkingGeometryKind#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:286.
Source docstring:
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.
LINES = 'lines'
lsdtools.extend.ViewerDataEditorWorkingGeometryKind.POINTS#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:312.
POINTS = 'points'
lsdtools.extend.ViewerDataEditorWorkingGeometryKind.OBJECTS#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:313.
OBJECTS = 'objects'
lsdtools.extend.ViewerDataEditorWorkingLayerContext#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1628.
Source docstring:
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.
table: Any
table = field(compare=False, repr=False)
lsdtools.extend.ViewerDataEditorWorkingLayerContext.editor_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1638.
editor_id: str
lsdtools.extend.ViewerDataEditorWorkingLayerContext.target_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1639.
target_id: str
lsdtools.extend.ViewerDataEditorWorkingLayerContext.layer_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1640.
layer_id: str
lsdtools.extend.ViewerDataEditorWorkingLayerContext.feature_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1641.
feature_id: Any
lsdtools.extend.ViewerDataEditorWorkingLayerContext.feature_kind#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1642.
feature_kind: str
lsdtools.extend.ViewerDataEditorWorkingLayerContext.resident_generation#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1643.
resident_generation: int
lsdtools.extend.ViewerDataEditorWorkingLayerContext.batch_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1644.
batch_id: str
lsdtools.extend.ViewerDataEditorWorkingLayerContext.batch_revision#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1645.
batch_revision: int
lsdtools.extend.ViewerDataEditorWorkingLayerContext.related_tables#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1648.
related_tables: Mapping[str, Any]
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:
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.
revision: int
lsdtools.extend.ViewerDataEditorWorkingLayerModel.geometries#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1589.
geometries: tuple[ViewerDataEditorWorkingGeometry, ...]
lsdtools.extend.ViewerDataEditorWorkingLayerModel.feature_reference#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1590.
feature_reference: ViewerFeatureReferenceSpec | None
lsdtools.extend.ViewerDataEditorWorkingLayerModel.as_dict#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1616.
as_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.ViewerDataEditorWorkingLayerSpec#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:1687.
Source docstring:
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.
project: Callable[[ViewerDataEditorWorkingLayerContext], ViewerDataEditorWorkingLayerModel]
project = field(compare=False, repr=False)
lsdtools.extend.ViewerDatasetActionRole#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:243.
Source docstring:
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.
ADD = 'add'
lsdtools.extend.ViewerDatasetActionRole.REMOVE#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:253.
REMOVE = 'remove'
lsdtools.extend.ViewerDatasetActionRole.UPDATE#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:254.
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.
severity: DiagnosticSeverity
lsdtools.extend.ViewerDiagnostic.code#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2658.
code: str
lsdtools.extend.ViewerDiagnostic.message#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2659.
message: str
lsdtools.extend.ViewerDiagnostic.subjects#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2660.
subjects: tuple[str, ...]
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.
id: OwnedContributionId
lsdtools.extend.ViewerEventSpec.topic#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2494.
topic: str
lsdtools.extend.ViewerEventSpec.payload#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2495.
payload: str
lsdtools.extend.ViewerEventSpec.version#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2496.
version: int
version = 1
lsdtools.extend.ViewerEventSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2497.
title: str
title = ''
lsdtools.extend.ViewerExtensionSpec#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2508.
Source docstring:
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.
id: OwnedContributionId
lsdtools.extend.ViewerExtensionSpec.semantics#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2512.
semantics: ExtensionSemantics
lsdtools.extend.ViewerExtensionSpec.viewer_kinds#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2513.
viewer_kinds: tuple[str, ...]
lsdtools.extend.ViewerExtensionSpec.provider#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2514.
provider: ViewerProviderSpec | None
provider = None
lsdtools.extend.ViewerExtensionSpec.augments#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2515.
augments: tuple[Capability, ...]
augments = ()
lsdtools.extend.ViewerExtensionSpec.requires#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2516.
requires: tuple[Capability, ...]
requires = ()
lsdtools.extend.ViewerExtensionSpec.pointer_tools#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2517.
pointer_tools: tuple[ViewerPointerToolSpec, ...]
pointer_tools = ()
lsdtools.extend.ViewerExtensionSpec.visualization_tools#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2518.
visualization_tools: tuple[ViewerVisualizationToolSpec, ...]
visualization_tools = ()
lsdtools.extend.ViewerExtensionSpec.data_editors#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2519.
data_editors: tuple[ViewerDataEditorSpec, ...]
data_editors = ()
lsdtools.extend.ViewerExtensionSpec.surfaces#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2520.
surfaces: tuple[ViewerSurfaceSpec, ...]
surfaces = ()
lsdtools.extend.ViewerExtensionSpec.gizmos#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2521.
gizmos: tuple[ViewerGizmoSpec, ...]
gizmos = ()
lsdtools.extend.ViewerExtensionSpec.commands#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2522.
commands: tuple[ViewerCommandSpec, ...]
commands = ()
lsdtools.extend.ViewerExtensionSpec.events#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2523.
events: tuple[ViewerEventSpec, ...]
events = ()
lsdtools.extend.ViewerFeatureReferenceSpec#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:317.
Source docstring:
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.
version: int
lsdtools.extend.ViewerFeatureReferenceSpec.namespace#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:326.
namespace: str
lsdtools.extend.ViewerFeatureReferenceSpec.feature_id_column#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:327.
feature_id_column: str
lsdtools.extend.ViewerFeatureReferenceSpec.reference_columns#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:328.
reference_columns: tuple[str, ...]
lsdtools.extend.ViewerFeatureReferenceSpec.as_dict#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:379.
as_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.ViewerGizmoDepthMode#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:412.
Source docstring:
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.
TESTED = 'tested'
lsdtools.extend.ViewerGizmoDepthMode.XRAY#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:416.
XRAY = 'xray'
lsdtools.extend.ViewerGizmoDepthMode.OCCLUDED_FADE#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:417.
OCCLUDED_FADE = 'occluded_fade'
lsdtools.extend.ViewerGizmoLayer#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:402.
Source docstring:
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.
PASSIVE_GUIDE = 'passive_guide'
lsdtools.extend.ViewerGizmoLayer.SELECTION#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:406.
SELECTION = 'selection'
lsdtools.extend.ViewerGizmoLayer.MANIPULATOR#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:407.
MANIPULATOR = 'manipulator'
lsdtools.extend.ViewerGizmoLayer.MODAL#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:408.
MODAL = 'modal'
lsdtools.extend.ViewerGizmoLayer.HUD#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:409.
HUD = 'hud'
lsdtools.extend.ViewerGizmoRole#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:395.
Source docstring:
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.
PASSIVE = 'passive'
lsdtools.extend.ViewerGizmoRole.MANIPULATOR#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:399.
MANIPULATOR = 'manipulator'
lsdtools.extend.ViewerGizmoSpec#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2347.
Source docstring:
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.
id: OwnedContributionId
lsdtools.extend.ViewerGizmoSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2356.
title: str
lsdtools.extend.ViewerGizmoSpec.role#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2357.
role: ViewerGizmoRole
lsdtools.extend.ViewerGizmoSpec.owning_tool#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2358.
owning_tool: OwnedContributionId | None
owning_tool = None
lsdtools.extend.ViewerGizmoSpec.requires#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2359.
requires: tuple[Capability, ...]
requires = ()
lsdtools.extend.ViewerGizmoSpec.default_visible#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2360.
default_visible: bool
default_visible = True
lsdtools.extend.ViewerGizmoSpec.layer#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2361.
layer: ViewerGizmoLayer
layer = ViewerGizmoLayer.PASSIVE_GUIDE
lsdtools.extend.ViewerGizmoSpec.depth_mode#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2365.
depth_mode: ViewerGizmoDepthMode
depth_mode = ViewerGizmoDepthMode.XRAY
lsdtools.extend.ViewerGizmoSpec.factory#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2366.
factory: RuntimeFactory | None
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:
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.
surface_id: OwnedContributionId
lsdtools.extend.ViewerLayoutEntry.region#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2625.
region: str | None
region = None
lsdtools.extend.ViewerLayoutEntry.position#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2626.
position: int | None
position = None
lsdtools.extend.ViewerLayoutEntry.visible#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2627.
visible: bool | None
visible = None
lsdtools.extend.ViewerLayoutEntry.collapsed#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2628.
collapsed: bool | None
collapsed = None
lsdtools.extend.ViewerLayoutEntry.state#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2629.
state: tuple[tuple[str, LayoutScalar], ...]
state = ()
lsdtools.extend.ViewerObjectRef#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:602.
Source docstring:
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.
layer_id: str
lsdtools.extend.ViewerObjectRef.generation#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:611.
generation: int
lsdtools.extend.ViewerObjectRef.feature_id#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:612.
feature_id: Any
lsdtools.extend.ViewerObjectRef.feature_kind#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:613.
feature_kind: str
feature_kind = ''
lsdtools.extend.ViewerObjectRef.feature_namespace#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:614.
feature_namespace: str
feature_namespace = ''
lsdtools.extend.ViewerObjectRef.reference#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:615.
reference: Mapping[str, Any] | tuple[tuple[str, Any], ...]
reference = ()
lsdtools.extend.ViewerObjectRef.MAX_TEXT_BYTES#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:621.
MAX_TEXT_BYTES: ClassVar[int]
MAX_TEXT_BYTES = 256
lsdtools.extend.ViewerObjectRef.MAX_FEATURE_ID_BYTES#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:622.
MAX_FEATURE_ID_BYTES: ClassVar[int]
MAX_FEATURE_ID_BYTES = 2048
lsdtools.extend.ViewerObjectRef.MAX_REFERENCE_BYTES#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:623.
MAX_REFERENCE_BYTES: ClassVar[int]
MAX_REFERENCE_BYTES = 4096
lsdtools.extend.ViewerObjectRef.MAX_DOCUMENT_BYTES#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:624.
MAX_DOCUMENT_BYTES: ClassVar[int]
MAX_DOCUMENT_BYTES = 8192
lsdtools.extend.ViewerObjectRef.MAX_REFERENCE_FIELDS#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:625.
MAX_REFERENCE_FIELDS: ClassVar[int]
MAX_REFERENCE_FIELDS = 32
lsdtools.extend.ViewerObjectRef.MAX_REFERENCE_KEY_BYTES#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:626.
MAX_REFERENCE_KEY_BYTES: ClassVar[int]
MAX_REFERENCE_KEY_BYTES = 128
lsdtools.extend.ViewerObjectRef.MAX_GENERATION#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:627.
MAX_GENERATION: ClassVar[int]
MAX_GENERATION = (1 << 63) - 1
lsdtools.extend.ViewerObjectRef.identity_key#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:726.
identity_key(self) -> str
self: (unannotated)
Source docstring:
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.
resident_key(self) -> str
self: (unannotated)
Source docstring:
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.
as_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.ViewerPointerTool#
Kind: class. Source: views/viewer3d/src/lsd_viewer/states/tool.py:88.
ViewerPointerTool(self) -> None
Source docstring:
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.
tool_id: str
tool_id = ''
lsdtools.extend.ViewerPointerTool.title#
Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/tool.py:97.
title: str
title = ''
lsdtools.extend.ViewerPointerTool.icon#
Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/tool.py:98.
icon: str
icon = 'lsd-tool-symbolic'
lsdtools.extend.ViewerPointerTool.__init__#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:100.
__init__(self) -> None
self: (unannotated)
lsdtools.extend.ViewerPointerTool.display_title#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:104.
display_title(self) -> str
self: (unannotated)
lsdtools.extend.ViewerPointerTool.can_activate#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:107.
can_activate(self, ctx: 'PointerToolContext') -> Tuple[bool, str]
ctx: 'PointerToolContext'
self: (unannotated)
lsdtools.extend.ViewerPointerTool.on_activate#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:110.
on_activate(self, ctx: 'PointerToolContext') -> None
ctx: 'PointerToolContext'
self: (unannotated)
Source docstring:
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.
on_deactivate(self, ctx: 'PointerToolContext') -> None
ctx: 'PointerToolContext'
self: (unannotated)
Source docstring:
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.
on_params(self, ctx: 'PointerToolContext', **params: object) -> None
ctx: 'PointerToolContext'
params: object
self: (unannotated)
lsdtools.extend.ViewerPointerTool.on_primary_click#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:122.
on_primary_click(self, ctx: 'PointerToolContext', x: float, y: float) -> bool
ctx: 'PointerToolContext'
self: (unannotated)
x: float
y: float
Source docstring:
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.
on_secondary_click(self, ctx: 'PointerToolContext', x: float, y: float) -> bool
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.
on_hover(self, ctx: 'PointerToolContext', x: float, y: float) -> None
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.
on_hover_leave(self, ctx: 'PointerToolContext', reason: str) -> None
ctx: 'PointerToolContext'
reason: str
self: (unannotated)
Source docstring:
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.
on_primary_drag_begin(self, ctx: 'PointerToolContext', x: float, y: float, modifiers: frozenset[str]) -> bool
ctx: 'PointerToolContext'
modifiers: frozenset[str]
self: (unannotated)
x: float
y: float
Source docstring:
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.
on_primary_drag_update(self, ctx: 'PointerToolContext', x: float, y: float, modifiers: frozenset[str]) -> None
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.
on_primary_drag_end(self, ctx: 'PointerToolContext', x: float, y: float, dragged: bool, modifiers: frozenset[str]) -> bool
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.
on_primary_drag_cancel(self, ctx: 'PointerToolContext', reason: str, x: float, y: float, modifiers: frozenset[str]) -> None
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.
on_key(self, ctx: 'PointerToolContext', keyval: int) -> bool
ctx: 'PointerToolContext'
keyval: int
self: (unannotated)
lsdtools.extend.ViewerPointerTool.prompt#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:182.
prompt(self, ctx: 'PointerToolContext') -> PointerToolPrompt
ctx: 'PointerToolContext'
self: (unannotated)
lsdtools.extend.ViewerPointerTool.build_context_controls#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/tool.py:188.
build_context_controls(self, ctx: 'PointerToolContext') -> Any
ctx: 'PointerToolContext'
self: (unannotated)
Source docstring:
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.
describe_context(self, ctx: 'PointerToolContext') -> Mapping[str, Any]
ctx: 'PointerToolContext'
self: (unannotated)
lsdtools.extend.ViewerPointerTool.ctx#
Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/tool.py:101.
ctx: Optional['PointerToolContext']
ctx = None
lsdtools.extend.ViewerPointerToolSpec#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:538.
Source docstring:
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.
id: OwnedContributionId
lsdtools.extend.ViewerPointerToolSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:554.
title: str
lsdtools.extend.ViewerPointerToolSpec.icon#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:555.
icon: str
lsdtools.extend.ViewerPointerToolSpec.requires#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:556.
requires: tuple[Capability, ...]
requires = ()
lsdtools.extend.ViewerPointerToolSpec.visible_in_toolbar#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:557.
visible_in_toolbar: bool
visible_in_toolbar = True
lsdtools.extend.ViewerPointerToolSpec.factory#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:558.
factory: RuntimeFactory | None
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.
capability: Capability
lsdtools.extend.ViewerProviderSpec.default#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:521.
default: bool
default = False
lsdtools.extend.ViewerProviderSpec.replaces#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:522.
replaces: tuple[OwnedContributionId, ...]
replaces = ()
lsdtools.extend.ViewerProviderSpec.requires#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:523.
requires: tuple[Capability, ...]
requires = ()
lsdtools.extend.ViewerProviderSpec.factory#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:524.
factory: RuntimeFactory | None
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:
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.
key: str
lsdtools.extend.ViewerSurfaceAnchor.surface#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:500.
surface(cls, contribution_id: OwnedContributionId) -> 'ViewerSurfaceAnchor'
cls: (unannotated)
contribution_id: OwnedContributionId
lsdtools.extend.ViewerSurfaceAnchor.capability#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:504.
capability(cls, capability: Capability, point: str='primary') -> 'ViewerSurfaceAnchor'
capability: Capability
cls: (unannotated)
point: str
lsdtools.extend.ViewerSurfaceAnchor.named#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:511.
named(cls, name: str) -> 'ViewerSurfaceAnchor'
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.
TOOLBAR = 'toolbar'
lsdtools.extend.ViewerSurfaceKind.PANEL#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:390.
PANEL = 'panel'
lsdtools.extend.ViewerSurfaceKind.OVERLAY#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:391.
OVERLAY = 'overlay'
lsdtools.extend.ViewerSurfaceKind.DECORATION#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:392.
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.
id: OwnedContributionId
lsdtools.extend.ViewerSurfaceSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2402.
title: str
lsdtools.extend.ViewerSurfaceSpec.kind#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2403.
kind: ViewerSurfaceKind
lsdtools.extend.ViewerSurfaceSpec.region#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2404.
region: str
lsdtools.extend.ViewerSurfaceSpec.slot#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2405.
slot: str
slot = 'default'
lsdtools.extend.ViewerSurfaceSpec.role#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2406.
role: str
role = 'secondary'
lsdtools.extend.ViewerSurfaceSpec.default_visible#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2407.
default_visible: bool
default_visible = True
lsdtools.extend.ViewerSurfaceSpec.anchors#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2408.
anchors: tuple[ViewerSurfaceAnchor, ...]
anchors = ()
lsdtools.extend.ViewerSurfaceSpec.before#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2409.
before: tuple[ViewerSurfaceAnchor, ...]
before = ()
lsdtools.extend.ViewerSurfaceSpec.after#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2410.
after: tuple[ViewerSurfaceAnchor, ...]
after = ()
lsdtools.extend.ViewerSurfaceSpec.requires#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2411.
requires: tuple[Capability, ...]
requires = ()
lsdtools.extend.ViewerSurfaceSpec.command#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2412.
command: str | None
command = None
lsdtools.extend.ViewerSurfaceSpec.build#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2413.
build: RuntimeFactory | None
build = field(default=None, compare=False, repr=False)
lsdtools.extend.ViewerSurfaceSpec.resizable#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2414.
resizable: bool
resizable = False
lsdtools.extend.ViewerSurfaceSpec.min_size#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2415.
min_size: tuple[int, int]
min_size = (96, 48)
lsdtools.extend.ViewerSurfaceSpec.icon#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2416.
icon: str | None
icon = None
lsdtools.extend.ViewerSurfaceSpec.own_anchor#
Kind: method. Source: core/lsd/src/lsd/packages/viewer_extensions.py:2465.
own_anchor(self) -> ViewerSurfaceAnchor
self: (unannotated)
lsdtools.extend.ViewerVisualizationTool#
Kind: class. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:114.
ViewerVisualizationTool(self) -> None
Source docstring:
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.
tool_id = ''
lsdtools.extend.ViewerVisualizationTool.title#
Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:118.
title = ''
lsdtools.extend.ViewerVisualizationTool.icon#
Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:119.
icon = 'lsd-view-symbolic'
lsdtools.extend.ViewerVisualizationTool.__init__#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:121.
__init__(self) -> None
self: (unannotated)
lsdtools.extend.ViewerVisualizationTool.on_mount#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:124.
on_mount(self, ctx: 'VisualizationToolContext') -> None
ctx: 'VisualizationToolContext'
self: (unannotated)
Source docstring:
Acquire viewer-lifetime resources through *ctx*.
lsdtools.extend.ViewerVisualizationTool.on_unmount#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:127.
on_unmount(self, ctx: 'VisualizationToolContext') -> None
ctx: 'VisualizationToolContext'
self: (unannotated)
Source docstring:
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.
can_set_active(self, ctx: 'VisualizationToolContext', active: bool) -> tuple[bool, str]
active: bool
ctx: 'VisualizationToolContext'
self: (unannotated)
lsdtools.extend.ViewerVisualizationTool.is_active#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:135.
is_active(self, ctx: 'VisualizationToolContext') -> bool
ctx: 'VisualizationToolContext'
self: (unannotated)
lsdtools.extend.ViewerVisualizationTool.set_active#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:138.
set_active(self, ctx: 'VisualizationToolContext', active: bool) -> bool
active: bool
ctx: 'VisualizationToolContext'
self: (unannotated)
Source docstring:
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.
on_refresh(self, ctx: 'VisualizationToolContext') -> None
ctx: 'VisualizationToolContext'
self: (unannotated)
Source docstring:
Reconcile package-owned affordances after provider/pointer changes.
lsdtools.extend.ViewerVisualizationTool.controls#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:151.
controls(self, ctx: 'VisualizationToolContext') -> tuple[VisualizationToolControl, ...]
ctx: 'VisualizationToolContext'
self: (unannotated)
Source docstring:
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.
describe_context(self, ctx: 'VisualizationToolContext') -> Mapping[str, Any]
ctx: 'VisualizationToolContext'
self: (unannotated)
lsdtools.extend.ViewerVisualizationTool.ctx#
Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:122.
ctx: Optional[VisualizationToolContext]
ctx = None
lsdtools.extend.ViewerVisualizationToolSpec#
Kind: class. Source: core/lsd/src/lsd/packages/viewer_extensions.py:573.
Source docstring:
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.
id: OwnedContributionId
lsdtools.extend.ViewerVisualizationToolSpec.title#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:584.
title: str
lsdtools.extend.ViewerVisualizationToolSpec.icon#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:585.
icon: str
lsdtools.extend.ViewerVisualizationToolSpec.requires#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:586.
requires: tuple[Capability, ...]
requires = ()
lsdtools.extend.ViewerVisualizationToolSpec.factory#
Kind: attribute. Source: core/lsd/src/lsd/packages/viewer_extensions.py:587.
factory: RuntimeFactory | None
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:
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.
POINTER = 'pointer'
lsdtools.extend.VisualizationControlKind.COMMAND#
Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:34.
COMMAND = 'command'
lsdtools.extend.VisualizationToolControl#
Kind: class. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:38.
Source docstring:
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.
id: str
lsdtools.extend.VisualizationToolControl.title#
Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:48.
title: str
lsdtools.extend.VisualizationToolControl.icon#
Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:49.
icon: str
lsdtools.extend.VisualizationToolControl.kind#
Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:50.
kind: VisualizationControlKind
lsdtools.extend.VisualizationToolControl.target#
Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:51.
target: str
lsdtools.extend.VisualizationToolControl.active#
Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:52.
active: bool
active = False
lsdtools.extend.VisualizationToolControl.enabled#
Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:53.
enabled: bool
enabled = True
lsdtools.extend.VisualizationToolControl.reason#
Kind: attribute. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:54.
reason: str
reason = ''
lsdtools.extend.VisualizationToolControl.as_dict#
Kind: method. Source: views/viewer3d/src/lsd_viewer/states/visualization.py:72.
as_dict(self) -> dict[str, Any]
self: (unannotated)
lsdtools.extend.Workspace#
Kind: class. Source: core/lsd/src/lsd/runtime/workspace.py:79.
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:
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.
__init__(self, *, id: Optional[str]=None, name: str='project', events: Optional[EventBus]=None, roots: Optional[List[Entity]]=None, project_semantics: Optional[ProjectSemanticsCatalog]=None) -> None
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.
id(self) -> str
self: (unannotated)
Source docstring:
Stable project identity owned exclusively by this Workspace.
lsdtools.extend.Workspace.id#
Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:139.
id(self, _value: str) -> None
_value: str
self: (unannotated)
lsdtools.extend.Workspace.name#
Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:143.
name(self) -> str
self: (unannotated)
Source docstring:
Live project display name shared by every Workspace facade.
lsdtools.extend.Workspace.name#
Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:148.
name(self, value: str) -> None
self: (unannotated)
value: str
lsdtools.extend.Workspace.roots#
Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:162.
roots(self) -> List[Entity]
self: (unannotated)
lsdtools.extend.Workspace.events#
Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:166.
events(self) -> EventBus
self: (unannotated)
lsdtools.extend.Workspace.project_semantics#
Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:170.
project_semantics(self) -> ProjectSemanticsCatalog
self: (unannotated)
Source docstring:
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.
project_semantics_revision(self) -> int
self: (unannotated)
lsdtools.extend.Workspace.project_styles#
Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:179.
project_styles(self) -> ProjectStyleLibrary
self: (unannotated)
Source docstring:
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.
replace_project_styles(self, library: ProjectStyleLibrary) -> None
library: ProjectStyleLibrary
self: (unannotated)
Source docstring:
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.
project_shaders(self) -> ProjectShaderLibrary
self: (unannotated)
Source docstring:
Editable bounded shaders owned by this project.
lsdtools.extend.Workspace.replace_project_shaders#
Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:217.
replace_project_shaders(self, library: ProjectShaderLibrary, *, expected_revision: int | None=None) -> None
expected_revision: int | None
library: ProjectShaderLibrary
self: (unannotated)
Source docstring:
Commit one optimistic project-shader library replacement.
lsdtools.extend.Workspace.variable_concept#
Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:253.
variable_concept(self, variable_id: str) -> Optional[VariableConcept]
self: (unannotated)
variable_id: str
lsdtools.extend.Workspace.field_definition#
Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:257.
field_definition(self, field_id: str) -> Optional[FieldDefinition]
field_id: str
self: (unannotated)
lsdtools.extend.Workspace.style_definition#
Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:261.
style_definition(self, style_id: str) -> Optional[StyleDefinition]
self: (unannotated)
style_id: str
lsdtools.extend.Workspace.style_assignment#
Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:265.
style_assignment(self, assignment_id: str) -> Optional[StyleAssignment]
assignment_id: str
self: (unannotated)
lsdtools.extend.Workspace.symbology_use#
Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:269.
symbology_use(self, use_id: str) -> Optional[SymbologyUse]
self: (unannotated)
use_id: str
lsdtools.extend.Workspace.replace_project_semantics#
Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:273.
replace_project_semantics(self, catalog: ProjectSemanticsCatalog, *, expected_revision: int) -> ProjectSemanticsChanged
catalog: ProjectSemanticsCatalog
expected_revision: int
self: (unannotated)
Source docstring:
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.
engine(self) -> Any
self: (unannotated)
Source docstring:
The currently bound execution engine, if any.
lsdtools.extend.Workspace.iter_entities#
Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:331.
iter_entities(self) -> Iterator[Entity]
self: (unannotated)
Source docstring:
Depth-first pre-order over roots and every descendant.
lsdtools.extend.Workspace.resolve#
Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:337.
resolve(self, reference: str) -> Optional[Entity]
reference: str
self: (unannotated)
Source docstring:
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.
add(self, entity: Entity, parent: Optional[EntityReference]=None) -> 'Workspace'
entity: Entity
parent: Optional[EntityReference]
self: (unannotated)
Source docstring:
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.
remove(self, entity: EntityReference) -> None
entity: EntityReference
self: (unannotated)
lsdtools.extend.Workspace.move#
Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:459.
move(self, entity: EntityReference, parent: Optional[EntityReference]) -> None
entity: EntityReference
parent: Optional[EntityReference]
self: (unannotated)
lsdtools.extend.Workspace.rename#
Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:494.
rename(self, entity: EntityReference, name: str) -> Entity
entity: EntityReference
name: str
self: (unannotated)
Source docstring:
Rename one member through the Workspace-owned domain operation.
lsdtools.extend.Workspace.replace#
Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:502.
replace(self, entity: EntityReference, replacement: Entity) -> Entity
entity: EntityReference
replacement: Entity
self: (unannotated)
Source docstring:
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.
reorder(self, entity: EntityReference, index: int) -> None
entity: EntityReference
index: int
self: (unannotated)
Source docstring:
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.
move_up(self, entity: EntityReference) -> bool
entity: EntityReference
self: (unannotated)
lsdtools.extend.Workspace.move_down#
Kind: method. Source: core/lsd/src/lsd/runtime/workspace.py:610.
move_down(self, entity: EntityReference) -> bool
entity: EntityReference
self: (unannotated)
lsdtools.extend.apply_column_map#
Kind: function. Source: core/lsd/src/lsd/core/columnmap.py:134.
apply_column_map(table: pa.Table, resolved: Mapping[str, str], *, keep_unmapped: bool=False) -> pa.Table
keep_unmapped: bool
resolved: Mapping[str, str]
table: pa.Table
Source docstring:
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.
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.
autoselect_largecsv_source(source_json: str, *, accepted_kinds, threshold_bytes: Optional[int]=None) -> str
accepted_kinds: (unannotated)
source_json: str
threshold_bytes: Optional[int]
Source docstring:
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.
available_chart_kinds() -> List[str]
Source docstring:
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.
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.
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.
available_feature_kinds() -> List[str]
Source docstring:
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.
available_steps() -> dict[str, type]
Source docstring:
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.
categories(items: Sequence[Any], *, fallback: JSONValue=None) -> ValueMapping
fallback: JSONValue
items: Sequence[Any]
Source docstring:
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.
classify_project_style_imports(catalog: ProjectSemanticsCatalog, styles: Iterable[StyleDefinition]) -> tuple[ProjectStyleImportCandidate, ...]
catalog: ProjectSemanticsCatalog
styles: Iterable[StyleDefinition]
Source docstring:
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.
columnmap_param(targets: Sequence[str]=(), **kwargs) -> ParameterDescriptor
kwargs: (unannotated)
targets: Sequence[str]
Source docstring:
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.
combine_tables(tables: List[Any], combine: str='concat') -> Any
combine: str
tables: List[Any]
Source docstring:
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.
continuous(stops: Sequence[Any], *, interpolation: str='linear', clamp: bool=True, fallback: JSONValue=None) -> ValueMapping
clamp: bool
fallback: JSONValue
interpolation: str
stops: Sequence[Any]
Source docstring:
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.
control_for(info: ParameterInfo) -> FormControl
info: ParameterInfo
Source docstring:
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.
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]
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:
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.
default_symbology(kind: str, *, field_name: str='', field_kind: str='', profile: Any=None, family: Optional[str]=None, role: Optional[str]=None, title: str='') -> Symbology
family: Optional[str]
field_kind: str
field_name: str
kind: str
profile: Any
role: Optional[str]
title: str
Source docstring:
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.
deliver(fn: Callable=None, *, inputs: list=None, outputs: list=None) -> type
fn: Callable
inputs: list
outputs: list
Source docstring:
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.
dependents_map(names: Sequence[str], deps: Dict[str, Set[str]]) -> Dict[str, List[str]]
deps: Dict[str, Set[str]]
names: Sequence[str]
Source docstring:
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.
describe_markdown(data: Optional[Dict[str, Any]]=None) -> str
data: Optional[Dict[str, Any]]
Source docstring:
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.
describe_text(data: Optional[Dict[str, Any]]=None) -> str
data: Optional[Dict[str, Any]]
Source docstring:
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.
entity_type_spec(type_id: str) -> Optional[EntityTypeSpec]
type_id: str
Source docstring:
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.
entity_type_specs() -> List[EntityTypeSpec]
Source docstring:
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.
format_source(kind: str='file', *, frequency: str='off', **config_fields: Any) -> str
config_fields: Any
frequency: str
kind: str
Source docstring:
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.
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.
get_diagram_layout(name: str) -> LayoutEngine
name: str
Source docstring:
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.
get_diagram_preset(name: str) -> DiagramPreset
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.
import_project_styles(catalog: ProjectSemanticsCatalog, styles: Iterable[StyleDefinition]) -> ProjectStyleImportResult
catalog: ProjectSemanticsCatalog
styles: Iterable[StyleDefinition]
Source docstring:
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.
indegrees(names: Sequence[str], deps: Dict[str, Set[str]]) -> Dict[str, int]
deps: Dict[str, Set[str]]
names: Sequence[str]
Source docstring:
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.
intersect_border(cx: float, cy: float, w: float, h: float, tx: float, ty: float)
cx: float
cy: float
h: float
tx: float
ty: float
w: float
Source docstring:
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.
intervals(classes: Sequence[Mapping[str, JSONValue]], *, fallback: JSONValue=None) -> ValueMapping
classes: Sequence[Mapping[str, JSONValue]]
fallback: JSONValue
Source docstring:
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.
largecsv_threshold_bytes() -> int
Source docstring:
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.
line_drawables(table: Any, *, name_prefix: str) -> List[Any]
name_prefix: str
table: Any
Source docstring:
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.
load(fn: Callable=None, *, inputs: list=None, outputs: list=None) -> type
fn: Callable
inputs: list
outputs: list
Source docstring:
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.
main_view_type(kind: str) -> Optional[MainViewType]
kind: str
Source docstring:
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.
nice_ticks(lo: float, hi: float, n: int=5) -> List[float]
hi: float
lo: float
n: int
Source docstring:
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.
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
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:
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.
parse_column_map(spec: str) -> Dict[str, str]
spec: str
Source docstring:
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.
parse_source(spec: str, *, base_dir: Optional[str]=None) -> ResolvedSource
base_dir: Optional[str]
spec: str
Source docstring:
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.
plot_mappers(spec: ChartSpec, width: int, height: int)
height: int
spec: ChartSpec
width: int
Source docstring:
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.
read_table(path: str, fmt: Optional[str]=None) -> pa.Table
fmt: Optional[str]
path: str
Source docstring:
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.
register_cell_renderer(name: str, *, setup: Callable[[Any, Any], None], bind: Callable[[Any, Any, str], None]) -> None
bind: Callable[[Any, Any, str], None]
name: str
setup: Callable[[Any, Any], None]
Source docstring:
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.
register_chart_kind(name: str, *, build_spec: Callable[[dict, Any], Any], draw: Callable[[Any, Any, Tuple[float, float, float, float], int, int], None]) -> None
build_spec: Callable[[dict, Any], Any]
draw: Callable[[Any, Any, Tuple[float, float, float, float], int, int], None]
name: str
Source docstring:
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.
register_default_style(key: str | Tuple[str, Optional[str]], factory: _Factory) -> None
factory: _Factory
key: str | Tuple[str, Optional[str]]
Source docstring:
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.
register_diagram_layout(engine: LayoutEngine) -> LayoutEngine
engine: LayoutEngine
Source docstring:
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.
register_diagram_preset(name: str, theme_factory: Callable[[], DiagramTheme], builder: DiagramBuilder) -> DiagramPreset
builder: DiagramBuilder
name: str
theme_factory: Callable[[], DiagramTheme]
Source docstring:
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.
register_feature_adapter(adapter: FeatureAdapter, *, owner: Optional[str]=None) -> None
adapter: FeatureAdapter
owner: Optional[str]
Source docstring:
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.
register_layer_kind(name: str, *, load: Callable[[dict, str], List[Any]], thread_safe: bool=False) -> None
load: Callable[[dict, str], List[Any]]
name: str
thread_safe: bool
Source docstring:
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.
register_param_control(widget: str, *, build: Callable[['ParameterInfo'], 'FormControl']) -> None
build: Callable[['ParameterInfo'], 'FormControl']
widget: str
Source docstring:
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.
register_source_kind(handler: SourceKind) -> SourceKind
handler: SourceKind
Source docstring:
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.
register_style_asset(spec: StyleAssetSpec) -> StyleAssetSpec
spec: StyleAssetSpec
Source docstring:
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.
register_table_reader(fmt: str, reader: TableReader, *, extensions: tuple=(), probe: Optional[TableProbe]=None) -> None
extensions: tuple
fmt: str
probe: Optional[TableProbe]
reader: TableReader
Source docstring:
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.
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]]
aliases: Optional[Mapping[str, Sequence[str]]]
columns: Sequence[str]
keep_unmapped: bool
mapping: Mapping[str, str]
required: Iterable[str]
Source docstring:
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.
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
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:
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.
resolve_object_property_plan(object_types: Iterable[ObjectTypeSpec], sections: Iterable[ObjectPropertySectionSpec], *, feature_namespace: str, resident_reference_fields: Iterable[str] | None=None) -> ResolvedObjectPropertyPlan
feature_namespace: str
object_types: Iterable[ObjectTypeSpec]
resident_reference_fields: Iterable[str] | None
sections: Iterable[ObjectPropertySectionSpec]
Source docstring:
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.
resolve_status_extensions(extensions: Iterable[StatusExtensionSpec], *, bindings: ProjectStatusBindings | Mapping[str, Any] | None=None) -> ResolvedStatusPlan
bindings: ProjectStatusBindings | Mapping[str, Any] | None
extensions: Iterable[StatusExtensionSpec]
Source docstring:
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.
resolve_symbology_value(value: JSONValue, input_value: Any) -> JSONValue
input_value: Any
value: JSONValue
Source docstring:
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.
resolve_timeline_editor_bindings(bindings, *, timeline_extensions, object_types, property_sections)
bindings: (unannotated)
object_types: (unannotated)
property_sections: (unannotated)
timeline_extensions: (unannotated)
Source docstring:
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.
resolve_tree_extensions(extensions: Iterable[TreeExtensionSpec], *, target_kind: str, scope: TreeScope | str=TreeScope.WORKSPACE) -> ResolvedTreePlan
extensions: Iterable[TreeExtensionSpec]
scope: TreeScope | str
target_kind: str
Source docstring:
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.
resolve_viewer_extensions(extensions: Iterable[ViewerExtensionSpec], *, viewer_kind: str, bindings: ProjectViewerBindings | None=None, layout: Iterable[ViewerLayoutEntry]=()) -> ResolvedViewerPlan
bindings: ProjectViewerBindings | None
extensions: Iterable[ViewerExtensionSpec]
layout: Iterable[ViewerLayoutEntry]
viewer_kind: str
Source docstring:
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.
route_straight_edges(nodes: List[dict], edges: List[dict]) -> None
edges: List[dict]
nodes: List[dict]
Source docstring:
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.
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
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:
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:
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.
shape(fn: Callable=None, *, inputs: list=None, outputs: list=None) -> type
fn: Callable
inputs: list
outputs: list
Source docstring:
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.
sidebar_views_for() -> List[SidebarViewContribution]
Source docstring:
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.
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.
source_kind(name: str) -> Optional[SourceKind]
name: str
Implementation alias: lsd.core.source.source_kind.
lsdtools.extend.source_kinds#
Kind: function. Source: core/lsd/src/lsd/core/source.py:109.
source_kinds() -> List[SourceKind]
Source docstring:
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.
source_param(*, kinds: tuple=('file',), **kwargs: Any) -> ParameterDescriptor
kinds: tuple
kwargs: Any
Source docstring:
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.
style_asset(identifier: str) -> Optional[StyleAssetSpec]
identifier: str
Source docstring:
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.
style_assets(kind: Optional[str]=None) -> Tuple[StyleAssetSpec, ...]
kind: Optional[str]
Source docstring:
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.
templates() -> tuple[EntityTemplate, ...]
Source docstring:
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.
templates_for_ext(path: str) -> List[EntityTemplate]
path: str
Source docstring:
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.
topological_order(names: Sequence[str], deps: Dict[str, Set[str]]) -> List[str]
deps: Dict[str, Set[str]]
names: Sequence[str]
Source docstring:
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.