> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbitra.atomo.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# table_schema

# `orbitra.lake.models.table_schema`

## Functions

### `validate_column_type`

```python theme={null}
validate_column_type(value: str) -> str
```

Validate and normalize a column type string.

Accepts the Iceberg primitive types as well as parameterized decimals in
the form `decimal(P, S)` where `1 <= P <= 38` and `0 <= S <= P`.
Decimals are normalized to `decimal(P, S)` (with a space after the comma)
to match pyiceberg's string representation so schema round-trips are stable.

**Raises:**

* `ValueError`: If the type is not a supported primitive or a valid decimal.

## Classes

### `ColumnSchema`

Schema for a column in a table.

**Attributes:**

* `name`: The name of the column.
* `type`: The data type of the column, represented as a string.
  Allowed types are "string", "int", "long", "float", "double",
  "boolean", "timestamp", "date", or a parameterized decimal in the
  form "decimal(P, S)" (e.g. "decimal(38, 18)").
* `kind`: The kind of column,
* "partition" for columns that are used for partitioning the table,
* "regular" (default) for regular columns.
* `exclude_from_hash`: If True, this column will be excluded from the row hash calculation.

**Methods:**

#### `ensure_name_has_no_special_characters`

```python theme={null}
ensure_name_has_no_special_characters(cls, value: str) -> str
```

Ensure the column name does not contain special characters.

Only alphanumeric characters and underscores are allowed.

#### `ensure_type_is_supported`

```python theme={null}
ensure_type_is_supported(cls, value: str) -> str
```

Ensure the column type is a supported primitive or a valid decimal.

### `TableSchema`

Schema for a table in a database.

**Attributes:**

* `name`: The name of the table.
* `columns`: A list of ColumnSchema objects representing the columns in the table.

**Methods:**

#### `ensure_name_has_no_special_characters`

```python theme={null}
ensure_name_has_no_special_characters(cls, value: str) -> str
```

Ensure the table name does not contain special characters.

Only alphanumeric characters and underscores are allowed.
