In the ui.picker spec:
ui.picker(
*children: PickerItem | SectionElement | Table | PartitionedTable,
key_column: ColumnName | None = None,
label_column: ColumnName | None = None,
description_column: ColumnName | None = None,
icon_column: ColumnName | None = None,
title_column: ColumnName | None = None,
...
Similarly, in ui.list_view spec:
ui.list_view(
*children: ListViewItem | Table,
key_column: ColumnName | None = None,
label_column: ColumnName | None = None,
description_column: ColumnName | None = None,
icon_column: ColumnName | None = None,
All of those *_column arguments are only valid when the children passed in is a Table (or PartitionedTable) type.
What if we define a item_table_source that can be used in either, e.g.:
class ItemDataSource(TypedDict):
table: Table | PartitionedTable
key_column: ColumnName | None
label_column: ColumnName | None
description_column: ColumnName | None
icon_column: ColumnName | None
title_column: ColumnName | None
actions: ListActionGroupElement | ListActionMenuElement | None
item_table_source(
table: | Table | PartitionedTable,
key_column: ColumnName | None = None,
label_column: ColumnName | None = None,
description_column: ColumnName | None = None,
icon_column: ColumnName | None = None,
title_column: ColumnName | None = None,
) -> ItemDataSource
ui.picker(
*children: PickerItem | SectionElement | ItemDataSource,
)
ui.list_view(
*children: PickerItem | SectionElement | ItemDataSource,
)
That way the args are only available when using a table as a data source.
In the
ui.pickerspec:Similarly, in
ui.list_viewspec:All of those
*_columnarguments are only valid when the children passed in is aTable(orPartitionedTable) type.What if we define a
item_table_sourcethat can be used in either, e.g.:That way the args are only available when using a table as a data source.