List template¶
One element list template¶
If you set in Contract list of one Template you can validate all types in dinamic lengths list.
>>> from pycont import Template, Contract
>>> import trafaret as t
>>> contract = Contract([Template(t.Int())])
>>> print(contract([42]))
[42]
>>> print(contract([1, 2, 3, 4, 5]))
[1, 2, 3, 4, 5]
>>> print(contract([1, 2, 3, 'error']))
Traceback (most recent call last):
ValueError: Invalid value: value can't be converted to int
One element list template with default¶
If set default value you can change all invalid element to this
>>> from pycont import Template, Contract
>>> import trafaret as t
>>> template = Template(t.Int(), default=0)
>>> contract = Contract([template])
>>> print(contract([1, 'a', 2, 'b', 3]))
[1, 0, 2, 0, 3]
Static lengths list¶
If Contract list contains 2 or more element, the data is checked for length. If one of the elements is invalid or the length does not match, throw a ValueError exceptionю
>>> from pycont import Template, Contract
>>> import trafaret as t
>>> contract = Contract([
... Template(t.Int()),
... Template(t.String()),
... Template(t.Float()),
... ])
>>> print(contract([42, 'test', 12.5]))
[42, 'test', 12.5]
>>> print(contract(['error', 'test', 12.5]))
Traceback (most recent call last):
ValueError: Invalid value: value can't be converted to int
>>> print(contract([1', 'test', 12.5, 'error']))
Traceback (most recent call last):
ValueError: Invalid value: Invalid value length