|
@@ -0,0 +1,32 @@
|
|
|
+from datetime import datetime
|
|
|
+
|
|
|
+from pydantic import BaseModel, PositiveInt
|
|
|
+
|
|
|
+
|
|
|
+class User(BaseModel):
|
|
|
+ id: int
|
|
|
+ name: str = "John Doe"
|
|
|
+ signup_ts: datetime | None
|
|
|
+ tastes: dict[str, PositiveInt]
|
|
|
+
|
|
|
+
|
|
|
+external_data = {
|
|
|
+ "id": 123,
|
|
|
+ "signup_ts": "2019-06-01 12:22",
|
|
|
+ "tastes": {
|
|
|
+ "wine": 9,
|
|
|
+ b"cheese": 7,
|
|
|
+ "cabbage": "1",
|
|
|
+ },
|
|
|
+}
|
|
|
+
|
|
|
+user = User(**external_data)
|
|
|
+expected_user_dump = {
|
|
|
+ "id": 123,
|
|
|
+ "name": "John Doe",
|
|
|
+ "signup_ts": datetime(2019, 6, 1, 12, 22),
|
|
|
+ "tastes": {"wine": 9, "cheese": 7, "cabbage": 1},
|
|
|
+}
|
|
|
+
|
|
|
+assert user.id == 123
|
|
|
+assert user.model_dump() == expected_user_dump
|