summaryrefslogtreecommitdiff
path: root/grc/core/schema_checker/block.py
blob: 801c68b9062e7485aca468a0c9aa64ed8f19227f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
from .utils import Spec, expand

PARAM_SCHEME = expand(
    base_key=str,   # todo: rename/remove

    id=str,
    label=str,
    category=str,

    dtype=str,
    default=object,

    options=list,
    option_labels=list,
    option_attributes=Spec(types=dict, required=False,
                           item_scheme=(str, list)),

    hide=str,
)
PORT_SCHEME = expand(
    label=str,
    domain=str,

    id=str,
    dtype=str,
    vlen=(int, str),

    multiplicity=(int, str),
    optional=(bool, int, str),
    hide=(bool, str),
)
TEMPLATES_SCHEME = expand(
    imports=str,
    var_make=str,
    var_value=str,
    make=str,
    callbacks=list,
)
CPP_TEMPLATES_SCHEME = expand(
    includes=list,
    declarations=str,
    make=str,
    var_make=str,
    callbacks=list,
    link=list,
    packages=list,
    translations=dict,
)
BLOCK_SCHEME = expand(
    id=Spec(types=str, required=True, item_scheme=None),
    label=str,
    category=str,
    flags=(list, str),

    parameters=Spec(types=list, required=False, item_scheme=PARAM_SCHEME),
    inputs=Spec(types=list, required=False, item_scheme=PORT_SCHEME),
    outputs=Spec(types=list, required=False, item_scheme=PORT_SCHEME),

    asserts=(list, str),
    value=str,

    templates=Spec(types=dict, required=False, item_scheme=TEMPLATES_SCHEME),
    cpp_templates=Spec(types=dict, required=False,
                       item_scheme=CPP_TEMPLATES_SCHEME),

    documentation=str,
    grc_source=str,

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

    block_wrapper_path=str,  # todo: rename/remove
)