single_ursim_control/single_ursim_control/program_schema.py

24 lines
646 B
Python

from marshmallow import Schema, fields
from marshmallow.validate import Length, Equal
from marshmallow import RAISE
SUPPORTED_PROGRAM_STRUCTURE_VERSION = 1
class CommandSchema(Schema):
name = fields.Str(required=True)
args = fields.Dict(required=True)
class Meta:
unknown = RAISE
class ProgramSchema(Schema):
version = fields.Int(required=True, validate=Equal(SUPPORTED_PROGRAM_STRUCTURE_VERSION))
name = fields.Str()
load_plugins = fields.List(fields.Str(), required=True)
program = fields.Nested(CommandSchema, many=True, required=True, validate=Length(min=1))
class Meta:
unknown = RAISE