pyfcstm.entry.plantuml
State Machine DSL to PlantUML CLI Integration.
This module integrates a PlantUML generator into a Click-based command-line interface. It provides a subcommand that reads state machine DSL code from a file, parses it into an internal model, and emits PlantUML text either to a file or to standard output.
The module is intended to be used as part of a larger CLI application that manages multiple subcommands. It does not expose any public API directly; instead, it contributes functionality through the helper function that registers the subcommand.
Note
The CLI entry point relies on pyfcstm.dsl.parse.parse_with_grammar_entry()
and pyfcstm.model.model.parse_dsl_node_to_state_machine() to build the
model and assumes the input file contains valid state machine DSL content.
Example:
>>> import click
>>> from pyfcstm.entry.plantuml import _add_plantuml_subcommand
>>> cli = click.Group()
>>> _add_plantuml_subcommand(cli)
<...Group...>
PLANTUML_OPTION_TYPES
- pyfcstm.entry.plantuml.PLANTUML_OPTION_TYPES: Dict[str, type | str] = {'abstract_action_marker': <class 'str'>, 'collapse_empty_states': <class 'bool'>, 'collapsed_state_marker': <class 'str'>, 'detail_level': <class 'str'>, 'event_legend_position': <class 'str'>, 'event_name_format': 'tuple[str, ...]', 'event_visualization_mode': <class 'str'>, 'max_action_lines': <class 'int'>, 'max_depth': <class 'int'>, 'show_abstract_actions': <class 'bool'>, 'show_aspect_actions': <class 'bool'>, 'show_concrete_actions': <class 'bool'>, 'show_during_actions': <class 'bool'>, 'show_enter_actions': <class 'bool'>, 'show_events': <class 'bool'>, 'show_exit_actions': <class 'bool'>, 'show_lifecycle_actions': <class 'bool'>, 'show_pseudo_state_style': <class 'bool'>, 'show_transition_effects': <class 'bool'>, 'show_transition_guards': <class 'bool'>, 'show_variable_definitions': <class 'bool'>, 'state_name_format': 'tuple[str, ...]', 'transition_effect_mode': <class 'str'>, 'use_skinparam': <class 'bool'>, 'use_stereotypes': <class 'bool'>, 'variable_display_mode': <class 'str'>, 'variable_legend_position': <class 'str'>}
dict() -> new empty dictionary dict(mapping) -> new dictionary initialized from a mapping object’s
(key, value) pairs
- dict(iterable) -> new dictionary initialized as if via:
d = {} for k, v in iterable:
d[k] = v
- dict(**kwargs) -> new dictionary initialized with the name=value pairs
in the keyword argument list. For example: dict(one=1, two=2)
build_plantuml_output
- pyfcstm.entry.plantuml.build_plantuml_output(input_code_file: str, detail_level: str = 'normal', config_options: Tuple[str, ...] = ()) str[source]
Build PlantUML text from a state machine DSL file.
This helper centralizes the common CLI workflow for reading DSL code, parsing the state machine model, applying PlantUML options, and rendering the final PlantUML text representation.
- Parameters:
input_code_file (str) – Path to the input DSL file.
detail_level (str, optional) – PlantUML detail level preset, defaults to
'normal'.config_options (Tuple[str, ...], optional) – Additional PlantUML configuration options in
key=valueformat.
- Returns:
Rendered PlantUML text.
- Return type:
str
- Raises:
pyfcstm.entry.base.ClickErrorException – If the input file cannot be read or a config option is invalid.
UnicodeDecodeError – If the input file cannot be decoded.
pyfcstm.dsl.error.GrammarParseError – If DSL parsing fails.
SyntaxError – If the parsed DSL contains invalid state machine constructs.
Example:
>>> plantuml_text = build_plantuml_output('traffic_light.fcstm', detail_level='minimal') >>> plantuml_text.startswith('@startuml') True