types.DataFrameSource

DataFrameSource(df, table_name)

A DataSource implementation that wraps a DataFrame using DuckDB.

Methods

Name Description
cleanup Close the DuckDB connection.
execute_query Execute query using DuckDB.
get_data Return the unfiltered data as a DataFrame.
get_db_type Get the database type.
get_schema Generate schema information from DataFrame.
test_query Test query by fetching only one row.

cleanup

types.DataFrameSource.cleanup()

Close the DuckDB connection.

Returns

Name Type Description
None

execute_query

types.DataFrameSource.execute_query(query)

Execute query using DuckDB.

Uses polars if available, otherwise falls back to pandas.

Parameters

Name Type Description Default
query str SQL query to execute required

Returns

Name Type Description
nw.DataFrame Query results as narwhals DataFrame

Raises

Name Type Description
UnsafeQueryError If the query starts with a disallowed SQL operation

get_data

types.DataFrameSource.get_data()

Return the unfiltered data as a DataFrame.

Returns

Name Type Description
nw.DataFrame The complete dataset as a narwhals DataFrame

get_db_type

types.DataFrameSource.get_db_type()

Get the database type.

Returns

Name Type Description
str The string “DuckDB”

get_schema

types.DataFrameSource.get_schema(categorical_threshold)

Generate schema information from DataFrame.

Parameters

Name Type Description Default
categorical_threshold int Maximum number of unique values for a text column to be considered categorical required

Returns

Name Type Description
str String describing the schema

test_query

types.DataFrameSource.test_query(query, *, require_all_columns=False)

Test query by fetching only one row.

Parameters

Name Type Description Default
query str SQL query to test required
require_all_columns bool If True, validates that result includes all original table columns False

Returns

Name Type Description
nw.DataFrame Query results with at most one row

Raises

Name Type Description
UnsafeQueryError If the query starts with a disallowed SQL operation
MissingColumnsError If require_all_columns is True and result is missing required columns