Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
50aa534
try a mock API
NickCrews Mar 27, 2026
495606f
overhaul and improve the API
NickCrews Mar 28, 2026
8af421d
tweak API example more
NickCrews Mar 28, 2026
12d1cda
try separate steps of creation, resolving, and compilation
NickCrews Mar 28, 2026
4677b11
fix parse_strings_and_params bug
NickCrews Mar 28, 2026
1925a9d
use dataclass, not dict
NickCrews Mar 28, 2026
ff54212
remove conversion from ParamInterpretation
NickCrews Mar 28, 2026
f57f408
fixup
NickCrews Mar 28, 2026
dddcc55
adjust implementation
NickCrews Mar 28, 2026
ed1ba09
ovehaul api more
NickCrews Mar 28, 2026
971d28d
fixup
NickCrews Mar 28, 2026
69e509b
add comment explaining param incrementing, remove IntoTemplate
NickCrews Mar 28, 2026
0c0fd4e
adjust implementation and tests
NickCrews Mar 29, 2026
373f0aa
move template.py into actual package
NickCrews Mar 29, 2026
843987e
Improve CompiledSql ergonomics and docstrings
NickCrews Mar 29, 2026
ce621a6
fixup how parts are expanded
NickCrews Mar 29, 2026
9269020
fixup: template(*mylist), not template(mylist)
NickCrews Mar 29, 2026
d9a2537
fix a few tests
NickCrews Mar 29, 2026
4a10dfa
fixup
NickCrews Mar 29, 2026
6b62b93
fixup typecheck error
NickCrews Mar 29, 2026
11e5e3d
improve test style
NickCrews Mar 29, 2026
758768f
move protocol tests to be together
NickCrews Mar 29, 2026
3164e66
improve test style
NickCrews Mar 29, 2026
c731ea7
fixup test
NickCrews Mar 29, 2026
637ab4b
improve style of tests and get passing
NickCrews Mar 29, 2026
8531fc4
reduce verbosity of param construction in tests
NickCrews Mar 29, 2026
41c639f
rename test to make room for test file that does actually execute code
NickCrews Mar 29, 2026
0ff6515
add e2e tests
NickCrews Mar 29, 2026
3b8746f
implement at the cpp level
NickCrews Mar 29, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 24 additions & 10 deletions _duckdb-stubs/__init__.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ if typing.TYPE_CHECKING:
import pandas
import pyarrow.lib
from collections.abc import Callable, Iterable, Sequence, Mapping
from duckdb import sqltypes, func
from duckdb import sqltypes, func, template
from builtins import list as lst # needed to avoid mypy error on DuckDBPyRelation.list method shadowing

# the field_ids argument to to_parquet and write_parquet has a recursive structure
Expand Down Expand Up @@ -241,8 +241,12 @@ class DuckDBPyConnection:
def dtype(self, type_str: str) -> sqltypes.DuckDBPyType: ...
def duplicate(self) -> DuckDBPyConnection: ...
def enum_type(self, name: str, type: sqltypes.DuckDBPyType, values: lst[typing.Any]) -> sqltypes.DuckDBPyType: ...
def execute(self, query: Statement | str, parameters: object = None) -> DuckDBPyConnection: ...
def executemany(self, query: Statement | str, parameters: object = None) -> DuckDBPyConnection: ...
def execute(
self, query: Statement | str | template.SqlTemplate | template.CompiledSql, parameters: object = None
) -> DuckDBPyConnection: ...
def executemany(
self, query: Statement | str | template.SqlTemplate | template.CompiledSql, parameters: object = None
) -> DuckDBPyConnection: ...
def extract_statements(self, query: str) -> lst[Statement]: ...
def fetch_arrow_table(self, rows_per_batch: typing.SupportsInt = 1000000) -> pyarrow.lib.Table:
"""Deprecated: use to_arrow_table() instead."""
Expand Down Expand Up @@ -331,7 +335,9 @@ class DuckDBPyConnection:
union_by_name: bool = False,
compression: str | None = None,
) -> DuckDBPyRelation: ...
def from_query(self, query: str, *, alias: str = "", params: object = None) -> DuckDBPyRelation: ...
def from_query(
self, query: str | template.SqlTemplate | template.CompiledSql, *, alias: str = "", params: object = None
) -> DuckDBPyRelation: ...
def get_table_names(self, query: str, *, qualified: bool = False) -> set[str]: ...
def install_extension(
self,
Expand Down Expand Up @@ -360,7 +366,9 @@ class DuckDBPyConnection:
def pl(
self, rows_per_batch: typing.SupportsInt = 1000000, *, lazy: bool = False
) -> polars.DataFrame | polars.LazyFrame: ...
def query(self, query: str, *, alias: str = "", params: object = None) -> DuckDBPyRelation: ...
def query(
self, query: str | template.SqlTemplate | template.CompiledSql, *, alias: str = "", params: object = None
) -> DuckDBPyRelation: ...
def query_progress(self) -> float: ...
def read_csv(
self,
Expand Down Expand Up @@ -462,7 +470,13 @@ class DuckDBPyConnection:
def row_type(
self, fields: dict[str, sqltypes.DuckDBPyType] | lst[sqltypes.DuckDBPyType]
) -> sqltypes.DuckDBPyType: ...
def sql(self, query: Statement | str, *, alias: str = "", params: object = None) -> DuckDBPyRelation: ...
def sql(
self,
query: Statement | str | template.SqlTemplate | template.CompiledSql,
*,
alias: str = "",
params: object = None,
) -> DuckDBPyRelation: ...
def sqltype(self, type_str: str) -> sqltypes.DuckDBPyType: ...
def string_type(self, collation: str = "") -> sqltypes.DuckDBPyType: ...
def struct_type(
Expand Down Expand Up @@ -1160,7 +1174,7 @@ def enum_type(
connection: DuckDBPyConnection | None = None,
) -> sqltypes.DuckDBPyType: ...
def execute(
query: Statement | str,
query: Statement | str | template.SqlTemplate | template.CompiledSql,
parameters: object = None,
*,
connection: DuckDBPyConnection | None = None,
Expand Down Expand Up @@ -1282,7 +1296,7 @@ def from_parquet(
connection: DuckDBPyConnection | None = None,
) -> DuckDBPyRelation: ...
def from_query(
query: Statement | str,
query: Statement | str | template.SqlTemplate | template.CompiledSql,
*,
alias: str = "",
params: object = None,
Expand Down Expand Up @@ -1350,7 +1364,7 @@ def project(
df: pandas.DataFrame, *args: _ExpressionLike, groups: str = "", connection: DuckDBPyConnection | None = None
) -> DuckDBPyRelation: ...
def query(
query: Statement | str,
query: Statement | str | template.SqlTemplate | template.CompiledSql,
*,
alias: str = "",
params: object = None,
Expand Down Expand Up @@ -1474,7 +1488,7 @@ def row_type(
def rowcount(*, connection: DuckDBPyConnection | None = None) -> int: ...
def set_default_connection(connection: DuckDBPyConnection) -> None: ...
def sql(
query: Statement | str,
query: Statement | str | template.SqlTemplate | template.CompiledSql,
*,
alias: str = "",
params: object = None,
Expand Down
Loading
Loading