TAGS_WITH_MODEL = (
     "container", "list", "leaf", "typedef", "module", "submodule", "uses",
     "leaf-list", "import", "identity", "notification", "rpc", "belongs-to",
     "input", "output", "choice", "case", "deviate", "action",
)
TAGS_WITH_IMPLICIT_CASE = (
    "anydata", "anyxml", "choice", "container", "leaf",
    "list", "leaf-list",
)
TAGS_FORCE_MODULE = (
     "grouping", "identity", "typedef", "uses", "augment",
     "deviation", "type", "base", "refine",
)
TAGS_ARG_IS_IDENTIFIER = ("base", "type", )
TAGS_ARG_IS_YANG_PATH_NOT_ABSOLUTE_SCHEMA_ID = ("path", )
assert not ({
    "config", "default", "fraction-digits", "length", "mandatory",
    "max-elements", "min-elements", "must", "range", "status", "type",
    "unique", "units",
} & set(TAGS_WITH_MODEL)), "Substmt of deviate can not have model"
TAGS_SHOULD_BE_PROCESSED = (
    "action",
    "anydata",
    "anyxml",
    "argument",
    "augment",
    "base",
    "belongs-to",
    "bit",
    "case",
    "choice",
    "config",
    "contact",
    "container",
    "default",
    "description",
    "deviate",
    "deviation",
    "enum",
    # "error-app-tag",
    # error-message",
    # extension",
    "feature",
    "fraction-digits",
    "grouping",
    "identity",
    "if-feature",
    "import",
    "include",
    "input",
    "key",
    "leaf",
    "leaf-list",
    "length",
    "list",
    "mandatory",
    "max-elements",
    "min-elements",
    "modifier",
    "module",
    # "must",
    "namespace",
    "notification",
    "ordered-by",
    "organization",
    "output",
    "path",
    "pattern",
    "position",
    "prefix",
    "presence",
    "range",
    "reference",
    "refine",
    "require-instance",
    "revision",
    "revision-date",
    "rpc",
    "status",
    "submodule",
    "type",
    "typedef",
    "unique",
    "units",
    "uses",
    "value",
    # "when",
    "yang-version",
    "yin-element",
)
