Spaces:
Running
Running
| from enum import Enum | |
| from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator | |
| VALID_TYPES = ["date", "number", "text", "json", "integer", "int", "float", "str", "string", "boolean"] | |
| class FormatterType(str, Enum): | |
| date = "date" | |
| text = "text" | |
| number = "number" | |
| json = "json" | |
| boolean = "boolean" | |
| class Column(BaseModel): | |
| model_config = ConfigDict(populate_by_name=True) | |
| name: str | |
| display_name: str = Field(default="") | |
| sortable: bool = Field(default=True) | |
| filterable: bool = Field(default=True) | |
| formatter: FormatterType | str | None = Field(default=None, alias="type") | |
| description: str | None = None | |
| default: str | None = None | |
| def set_display_name(self): | |
| if not self.display_name: | |
| self.display_name = self.name | |
| return self | |
| def validate_formatter(cls, value): | |
| if value in {"integer", "int", "float"}: | |
| value = FormatterType.number | |
| if value in {"str", "string"}: | |
| value = FormatterType.text | |
| if value == "dict": | |
| value = FormatterType.json | |
| if isinstance(value, str): | |
| return FormatterType(value) | |
| if isinstance(value, FormatterType): | |
| return value | |
| msg = f"Invalid formatter type: {value}. Valid types are: {FormatterType}" | |
| raise ValueError(msg) | |
| class TableSchema(BaseModel): | |
| columns: list[Column] | |