def add_row(
self,
cell_values: list[Any],
cell_sub_values: list[Any] | None = None,
bold: bool = False,
page_break: bool = False,
span_all_columns: bool = False,
table_break: bool = False,
border_top: bool = False,
border_bottom: bool = False,
):
if span_all_columns or table_break:
if len(cell_values) > 1:
message = 'Cannot span all columns or have a table break with more than one cell value'
raise ValueError(message)
elif len(cell_values) != len(self.columns) or (
cell_sub_values is not None and len(cell_sub_values) != len(self.columns)):
message = f'Number of cell values ({len(cell_values)}) and sub values ({len(cell_sub_values) if cell_sub_values else "None"}) must match number of columns: {len(self.columns)}'
raise ValueError(message)
self.rows.append(
ReportRow(
cells=[
ReportCell(
value=cell_values[i],
sub_value=cell_sub_values[i] if cell_sub_values else None,
type=self.columns[i].type,
sub_type=self.columns[i].sub_type
)
for i in range(len(cell_values))
],
bold=bold,
page_break=page_break,
span_all_columns=span_all_columns,
table_break=table_break,
border_top=border_top,
border_bottom=border_bottom,
)
)