Spaces:
Runtime error
Runtime error
Rajan Sharma
commited on
Create schemas.py
Browse files- schemas.py +39 -0
schemas.py
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from pydantic import BaseModel, Field, ConfigDict
|
| 2 |
+
from typing import List, Optional, Literal, Dict
|
| 3 |
+
|
| 4 |
+
FormatType = Literal["table", "list", "comparison", "map", "narrative", "chart"]
|
| 5 |
+
SortDir = Literal["asc", "desc"]
|
| 6 |
+
JoinHow = Literal["left", "inner", "right", "outer"]
|
| 7 |
+
ChartType = Literal["bar", "line", "area", "point", "tick", "rule"]
|
| 8 |
+
|
| 9 |
+
class JoinSpec(BaseModel):
|
| 10 |
+
right_key: str
|
| 11 |
+
left_on: str
|
| 12 |
+
right_on: str
|
| 13 |
+
how: JoinHow = "left"
|
| 14 |
+
|
| 15 |
+
class TaskSpec(BaseModel):
|
| 16 |
+
title: str
|
| 17 |
+
data_key: Optional[str] = None
|
| 18 |
+
format: FormatType = "table"
|
| 19 |
+
filter: Optional[str] = None
|
| 20 |
+
derive: Optional[List[str]] = None
|
| 21 |
+
group_by: Optional[List[str]] = None
|
| 22 |
+
agg: Optional[List[str]] = None
|
| 23 |
+
pivot: Optional[Dict[str, str]] = None
|
| 24 |
+
join: Optional[List[JoinSpec]] = None
|
| 25 |
+
sort_by: Optional[str] = None
|
| 26 |
+
sort_dir: SortDir = "desc"
|
| 27 |
+
top: Optional[int] = None
|
| 28 |
+
fields: Optional[List[str]] = None
|
| 29 |
+
chart: Optional[ChartType] = None
|
| 30 |
+
x: Optional[str] = None
|
| 31 |
+
y: Optional[str] = None
|
| 32 |
+
color: Optional[str] = None
|
| 33 |
+
column: Optional[str] = None
|
| 34 |
+
|
| 35 |
+
class ScenarioPlan(BaseModel):
|
| 36 |
+
model_config = ConfigDict(extra="forbid")
|
| 37 |
+
tasks: List[TaskSpec] = Field(default_factory=list)
|
| 38 |
+
narrative_required: bool = True
|
| 39 |
+
notes: Optional[str] = None
|