patito.Model.valid_sql_types

property Model.valid_sql_types: dict[str, List[Literal['BIGINT', 'INT8', 'LONG', 'BLOB', 'BYTEA', 'BINARY', 'VARBINARY', 'BOOLEAN', 'BOOL', 'LOGICAL', 'DATE', 'DOUBLE', 'FLOAT8', 'NUMERIC', 'DECIMAL', 'HUGEINT', 'INTEGER', 'INT4', 'INT', 'SIGNED', 'INTERVAL', 'REAL', 'FLOAT4', 'FLOAT', 'SMALLINT', 'INT2', 'SHORT', 'TIME', 'TIMESTAMP', 'DATETIME', 'TIMESTAMP WITH TIMEZONE', 'TIMESTAMPTZ', 'TINYINT', 'INT1', 'UBIGINT', 'UINTEGER', 'USMALLINT', 'UTINYINT', 'UUID', 'VARCHAR', 'CHAR', 'BPCHAR', 'TEXT', 'STRING']]]

Return a list of DuckDB SQL types which Patito considers valid for each field.

The first item of each list is the default dtype chosen by Patito.

Returns:

A dictionary mapping each column string name to a list of DuckDB SQL types represented as strings.

Raises:

NotImplementedError – If one or more model fields are annotated with types not compatible with DuckDB.

Example

>>> import patito as pt
>>> from pprint import pprint
>>> class MyModel(pt.Model):
...     bool_column: bool
...     str_column: str
...     int_column: int
...     float_column: float
...
>>> pprint(MyModel.valid_sql_types)
{'bool_column': ['BOOLEAN', 'BOOL', 'LOGICAL'],
 'float_column': ['DOUBLE',
                                    'FLOAT8',
                                    'NUMERIC',
                                    'DECIMAL',
                                    'REAL',
                                    'FLOAT4',
                                    'FLOAT'],
  'int_column': ['INTEGER',
                                 'INT4',
                                 'INT',
                                 'SIGNED',
                                 'BIGINT',
                                 'INT8',
                                 'LONG',
                                 'HUGEINT',
                                 'SMALLINT',
                                 'INT2',
                                 'SHORT',
                                 'TINYINT',
                                 'INT1',
                                 'UBIGINT',
                                 'UINTEGER',
                                 'USMALLINT',
                                 'UTINYINT'],
  'str_column': ['VARCHAR', 'CHAR', 'BPCHAR', 'TEXT', 'STRING']}