from .utils import Spec, expand

OPTIONS_SCHEME = expand(
    parameters=Spec(types=dict, required=False, item_scheme=(str, str)),
    states=Spec(types=dict, required=False, item_scheme=(str, str)),
)

BLOCK_SCHEME = expand(
    name=str,
    id=str,
    **OPTIONS_SCHEME
)

FLOW_GRAPH_SCHEME = expand(
    options=Spec(types=dict, required=False, item_scheme=OPTIONS_SCHEME),
    blocks=Spec(types=dict, required=False, item_scheme=BLOCK_SCHEME),
    connections=list,

    metadata=Spec(types=dict, required=True, item_scheme=expand(
        file_format=Spec(types=int, required=True, item_scheme=None),
    ))

)