/
perform.py
51 lines (35 loc) · 1.38 KB
/
perform.py
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
"""Represents a request to perform a menu action."""
from typing import Mapping
from marshmallow import fields
from ....messaging.agent_message import AgentMessage, AgentMessageSchema
from ..message_types import PERFORM, NEW_PERFORM, PROTOCOL_PACKAGE
HANDLER_CLASS = f"{PROTOCOL_PACKAGE}.handlers.perform_handler.PerformHandler"
class Perform(AgentMessage):
"""Class representing a request to perform a menu action."""
class Meta:
"""Perform metadata."""
handler_class = HANDLER_CLASS
message_type = PERFORM
new_message_type = NEW_PERFORM
schema_class = "PerformSchema"
def __init__(self, *, name: str = None, params: Mapping[str, str] = None, **kwargs):
"""
Initialize a Perform object.
Args:
name: The name of the menu option
params: Input parameter values
"""
super(Perform, self).__init__(**kwargs)
self.name = name
self.params = params
class PerformSchema(AgentMessageSchema):
"""Perform schema class."""
class Meta:
"""Perform schema metadata."""
model_class = Perform
name = fields.Str(required=True, description="Menu option name", example="Query",)
params = fields.Dict(
required=False,
keys=fields.Str(example="parameter"), # marshmallow/apispec v3.0 ignores
values=fields.Str(example="value"),
)