Adapters¶
Tornado adapter¶
-
class
parameter.adapter.
TornadoAdapter
(handler)[source]¶ Tornado adapter.
Usage:
from tornado import web from parameter import Model, Argument, types from parameter.adapter import TornadoAdapter class UserEntity(Model): username = Argument(types.String, max_len=100) password = Argument(types.String, max_len=64) name = Argument(types.Unicode, max_len=50) arg = Argument(types.Integer, default=18) class DemoHandler(web.RequestHandler): def get(self): entity = UserEntity(TornadoAdapter(self)) self.write({ "name": entity.name, "age": entity.age, })
JSON adapter¶
-
class
parameter.adapter.
JSONAdapter
(data)[source]¶ JSON adapter to get arguments from a JSON object.
Usage:
from parameter import Model, Argument, types from parameter.adapter import JSONAdapter data = {"a": 1, "b": 2} class DataEntity(Model): a = Argument(types.Integer) b = Argument(types.Integer) adapter = JSONAdapter(data) entity = DataEntity(adapter) print(entity.a) # 1 print(entity.b) # 2
Nested:
from parameter import Model, Argument, types from parameter.adapter import JSONAdapter data = {"a": 1, "b": 2, "person": {"age": 18, "name": "Gray"}} class PersonEntity(Model): are = Argument(types.Integer) name = Argument(types.Unicode) class DataEntity(Model): a = Argument(types.Integer) b = Argument(types.Integer) person = Argument(types.Nested(PersonEntity)) adapter = JSONAdapter(data) entity = DataEntity(adapter) print(entity.a) # 1 print(entity.b) # 2 print(entity.person.age) # 18 print(entity.person.name) # Gray
Add custom adapter¶
-
class
parameter.model.
BaseAdapter
[source]¶ To implement your own adapter, you need inherit from
BaseAdapter
.There two methods must be overwirtten:
get_argument
: Returns a single valueget_arguments
: Returns a sequence of values.
Example:
from parameter.model import BaseAdapter class DemoAdapter(BaseAdapter): "demo adapter" def __init__(self, arguments): self.arguments = arguments def get_argument(self, name, default): return self.arguments.get(name, default) def get_arguments(self, name): return self.arguments.getlist(name)
If you want your adapter to support nested, you need to override the
spawn
method, this method use the given value to return an new instance of the current adapter.from parameter.model import BaseAdapter class DemoAdapter(BaseAdapter): # see above def spawn(self, arguments): return DemoAdapter(arguments)
-
get_argument
(name, default, *args, **kwargs)[source]¶ Returns the argument’s value via
name
.Parameters: - name – The name of the argument.
- default – The default value.
Raises: Raises:
-
get_arguments
(name, *args, **kwargs)[source]¶ Returns the argument’s values via
name
.Parameters: name – The name of the argument. Raises: ArgumentMissError
Raises: ArgumentInvalidError