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

1"""Export adapter protocol for flow definition serialization.""" 

2 

3from typing import Protocol 

4 

5from flowr.domain.flow_definition import Flow 

6 

7 

8class FlowExporter(Protocol): 

9 """Protocol defining the contract for flow export adapters.""" 

10 

11 def format_name(self) -> str: # pragma: no cover 

12 """Return the canonical format name (e.g. 'json', 'mermaid').""" 

13 ... 

14 

15 def description(self) -> str: # pragma: no cover 

16 """Return a short human-readable description of the format.""" 

17 ... 

18 

19 def supports_directory(self) -> bool: # pragma: no cover 

20 """Return True if the adapter supports directory-mode export.""" 

21 ... 

22 

23 def accepted_options(self) -> list[str]: # pragma: no cover 

24 """Return the option keys this adapter consumes.""" 

25 ... 

26 

27 def add_arguments(self, parser: object) -> None: # pragma: no cover 

28 """Register adapter-specific CLI flags on the argparse parser.""" 

29 ... 

30 

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 ... 

39 

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 ...