- import json
 - from collections.abc import Iterable, Sequence
 - 
 - from .segment_group import SegmentGroup
 - from .segments import ArrayFileSegment, FileSegment, Segment
 - 
 - 
 - def to_selector(node_id: str, name: str, paths: Iterable[str] = ()) -> Sequence[str]:
 -     selectors = [node_id, name]
 -     if paths:
 -         selectors.extend(paths)
 -     return selectors
 - 
 - 
 - class SegmentJSONEncoder(json.JSONEncoder):
 -     def default(self, o):
 -         if isinstance(o, ArrayFileSegment):
 -             return [v.model_dump() for v in o.value]
 -         elif isinstance(o, FileSegment):
 -             return o.value.model_dump()
 -         elif isinstance(o, SegmentGroup):
 -             return [self.default(seg) for seg in o.value]
 -         elif isinstance(o, Segment):
 -             return o.value
 -         else:
 -             super().default(o)
 
 
  |