@@ -100,12 +100,166 @@ class PictureMiscData(BaseModel):
100100 content : Dict [str , Any ]
101101
102102
103+ class ChartLine (BaseModel ):
104+ """Represents a line in a line chart.
105+
106+ Attributes:
107+ label (str): The label for the line.
108+ values (List[Tuple[float, float]]): A list of (x, y) coordinate pairs
109+ representing the line's data points.
110+ """
111+
112+ label : str
113+ values : List [Tuple [float , float ]]
114+
115+
116+ class ChartBar (BaseModel ):
117+ """Represents a bar in a bar chart.
118+
119+ Attributes:
120+ label (str): The label for the bar.
121+ values (float): The value associated with the bar.
122+ """
123+
124+ label : str
125+ values : float
126+
127+
128+ class ChartStackedBar (BaseModel ):
129+ """Represents a stacked bar in a stacked bar chart.
130+
131+ Attributes:
132+ label (List[str]): The labels for the stacked bars. Multiple values are stored
133+ in cases where the chart is "double stacked," meaning bars are stacked both
134+ horizontally and vertically.
135+ values (List[Tuple[str, int]]): A list of values representing different segments
136+ of the stacked bar along with their label.
137+ """
138+
139+ label : List [str ]
140+ values : List [Tuple [str , int ]]
141+
142+
143+ class ChartSlice (BaseModel ):
144+ """Represents a slice in a pie chart.
145+
146+ Attributes:
147+ label (str): The label for the slice.
148+ value (float): The value represented by the slice.
149+ """
150+
151+ label : str
152+ value : float
153+
154+
155+ class ChartPoint (BaseModel ):
156+ """Represents a point in a scatter chart.
157+
158+ Attributes:
159+ value (Tuple[float, float]): A (x, y) coordinate pair representing a point in a
160+ chart.
161+ """
162+
163+ value : Tuple [float , float ]
164+
165+
166+ class PictureChartData (BaseModel ):
167+ """Base class for picture chart data.
168+
169+ Attributes:
170+ title (str): The title of the chart.
171+ """
172+
173+ title : str
174+
175+
176+ class PictureLineChartData (PictureChartData ):
177+ """Represents data of a line chart.
178+
179+ Attributes:
180+ kind (Literal["line_chart_data"]): The type of the chart.
181+ x_axis_label (str): The label for the x-axis.
182+ y_axis_label (str): The label for the y-axis.
183+ lines (List[ChartLine]): A list of lines in the chart.
184+ """
185+
186+ kind : Literal ["line_chart_data" ] = "line_chart_data"
187+ x_axis_label : str
188+ y_axis_label : str
189+ lines : List [ChartLine ]
190+
191+
192+ class PictureBarChartData (PictureChartData ):
193+ """Represents data of a bar chart.
194+
195+ Attributes:
196+ kind (Literal["bar_chart_data"]): The type of the chart.
197+ x_axis_label (str): The label for the x-axis.
198+ y_axis_label (str): The label for the y-axis.
199+ bars (List[ChartBar]): A list of bars in the chart.
200+ """
201+
202+ kind : Literal ["bar_chart_data" ] = "bar_chart_data"
203+ x_axis_label : str
204+ y_axis_label : str
205+ bars : List [ChartBar ]
206+
207+
208+ class PictureStackedBarChartData (PictureChartData ):
209+ """Represents data of a stacked bar chart.
210+
211+ Attributes:
212+ kind (Literal["stacked_bar_chart_data"]): The type of the chart.
213+ x_axis_label (str): The label for the x-axis.
214+ y_axis_label (str): The label for the y-axis.
215+ stacked_bars (List[ChartStackedBar]): A list of stacked bars in the chart.
216+ """
217+
218+ kind : Literal ["stacked_bar_chart_data" ] = "stacked_bar_chart_data"
219+ x_axis_label : str
220+ y_axis_label : str
221+ stacked_bars : List [ChartStackedBar ]
222+
223+
224+ class PicturePieChartData (PictureChartData ):
225+ """Represents data of a pie chart.
226+
227+ Attributes:
228+ kind (Literal["pie_chart_data"]): The type of the chart.
229+ slices (List[ChartSlice]): A list of slices in the pie chart.
230+ """
231+
232+ kind : Literal ["pie_chart_data" ] = "pie_chart_data"
233+ slices : List [ChartSlice ]
234+
235+
236+ class PictureScatterChartData (PictureChartData ):
237+ """Represents data of a scatter chart.
238+
239+ Attributes:
240+ kind (Literal["scatter_chart_data"]): The type of the chart.
241+ x_axis_label (str): The label for the x-axis.
242+ y_axis_label (str): The label for the y-axis.
243+ points (List[ChartPoint]): A list of points in the scatter chart.
244+ """
245+
246+ kind : Literal ["scatter_chart_data" ] = "scatter_chart_data"
247+ x_axis_label : str
248+ y_axis_label : str
249+ points : List [ChartPoint ]
250+
251+
103252PictureDataType = Annotated [
104253 Union [
105254 PictureClassificationData ,
106255 PictureDescriptionData ,
107256 PictureMoleculeData ,
108257 PictureMiscData ,
258+ PictureLineChartData ,
259+ PictureBarChartData ,
260+ PictureStackedBarChartData ,
261+ PicturePieChartData ,
262+ PictureScatterChartData ,
109263 ],
110264 Field (discriminator = "kind" ),
111265]
0 commit comments