Coverage for flowr / domain / export.py: 100%
3 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-05-22 18:42 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-05-22 18:42 +0000
1"""Export adapter protocol for flow definition serialization."""
3from typing import Protocol
5from flowr.domain.flow_definition import Flow
8class FlowExporter(Protocol):
9 """Protocol defining the contract for flow export adapters."""
11 def format_name(self) -> str: # pragma: no cover
12 """Return the canonical format name (e.g. 'json', 'mermaid')."""
13 ...
15 def description(self) -> str: # pragma: no cover
16 """Return a short human-readable description of the format."""
17 ...
19 def supports_directory(self) -> bool: # pragma: no cover
20 """Return True if the adapter supports directory-mode export."""
21 ...
23 def accepted_options(self) -> list[str]: # pragma: no cover
24 """Return the option keys this adapter consumes."""
25 ...
27 def add_arguments(self, parser: object) -> None: # pragma: no cover
28 """Register adapter-specific CLI flags on the argparse parser."""
29 ...
31 def export(
32 self,
33 flow: Flow,
34 options: dict,
35 subflows: dict[str, Flow] | None = None,
36 ) -> str: # pragma: no cover
37 """Export a single flow definition to the target format."""
38 ...
40 def export_directory(
41 self, flows: list[tuple[str, Flow]], options: dict
42 ) -> str: # pragma: no cover
43 """Export a collection of flows to the target format."""
44 ...