Lists and Tuples
list
- allows
list
, tuple
, set
, frozenset
, deque
, or generators and casts to a list;
when a generic parameter is provided, the appropriate validation is applied to all items of the list
typing.List
- handled the same as
list
above
tuple
- allows
list
, tuple
, set
, frozenset
, deque
, or generators and casts to a tuple;
when generic parameters are provided, the appropriate validation is applied to the respective items of the tuple
typing.Tuple
- handled the same as
tuple
above
deque
- allows
list
, tuple
, set
, frozenset
, deque
, or generators and casts to a deque
;
when generic parameters are provided, the appropriate validation is applied to the respective items of the deque
typing.Deque
- handled the same as
deque
above
from typing import Deque, List, Optional, Tuple
from pydantic import BaseModel
class Model(BaseModel):
simple_list: Optional[list] = None
list_of_ints: Optional[List[int]] = None
simple_tuple: Optional[tuple] = None
tuple_of_different_types: Optional[Tuple[int, float, bool]] = None
deque: Optional[Deque[int]] = None
print(Model(simple_list=['1', '2', '3']).simple_list)
#> ['1', '2', '3']
print(Model(list_of_ints=['1', '2', '3']).list_of_ints)
#> [1, 2, 3]
print(Model(simple_tuple=[1, 2, 3, 4]).simple_tuple)
#> (1, 2, 3, 4)
print(Model(tuple_of_different_types=[3, 2, 1]).tuple_of_different_types)
#> (3, 2.0, True)
print(Model(deque=[1, 2, 3]).deque)
#> deque([1, 2, 3])
NamedTuple
subclasses of typing.NamedTuple
- Similar to
tuple
, but creates instances of the given namedtuple
class.
types returned from collections.namedtuple
- Similar to
subclass of typing.NamedTuple
, but since field types are not specified, all fields are treated as having
type Any
from typing import NamedTuple
from pydantic import BaseModel, ValidationError
class Point(NamedTuple):
x: int
y: int
class Model(BaseModel):
p: Point
try:
Model(p=('1.3', '2'))
except ValidationError as e:
print(e)
"""
1 validation error for Model
p.0
Input should be a valid integer, unable to parse string as an integer [type=int_parsing, input_value='1.3', input_type=str]
"""