sqlspec 0.16.1__py3-none-any.whl → 0.17.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of sqlspec might be problematic. Click here for more details.
- sqlspec/__init__.py +11 -1
- sqlspec/_sql.py +18 -412
- sqlspec/adapters/aiosqlite/__init__.py +11 -1
- sqlspec/adapters/aiosqlite/config.py +137 -165
- sqlspec/adapters/aiosqlite/driver.py +21 -10
- sqlspec/adapters/aiosqlite/pool.py +492 -0
- sqlspec/adapters/duckdb/__init__.py +2 -0
- sqlspec/adapters/duckdb/config.py +11 -235
- sqlspec/adapters/duckdb/pool.py +243 -0
- sqlspec/adapters/sqlite/__init__.py +2 -0
- sqlspec/adapters/sqlite/config.py +4 -115
- sqlspec/adapters/sqlite/pool.py +140 -0
- sqlspec/base.py +147 -26
- sqlspec/builder/__init__.py +6 -0
- sqlspec/builder/_insert.py +177 -12
- sqlspec/builder/_parsing_utils.py +53 -2
- sqlspec/builder/mixins/_join_operations.py +148 -7
- sqlspec/builder/mixins/_merge_operations.py +102 -16
- sqlspec/builder/mixins/_select_operations.py +311 -6
- sqlspec/builder/mixins/_update_operations.py +49 -34
- sqlspec/builder/mixins/_where_clause.py +85 -13
- sqlspec/core/compiler.py +7 -5
- sqlspec/driver/_common.py +9 -1
- sqlspec/loader.py +27 -54
- sqlspec/storage/registry.py +2 -2
- sqlspec/typing.py +53 -99
- {sqlspec-0.16.1.dist-info → sqlspec-0.17.0.dist-info}/METADATA +1 -1
- {sqlspec-0.16.1.dist-info → sqlspec-0.17.0.dist-info}/RECORD +32 -29
- {sqlspec-0.16.1.dist-info → sqlspec-0.17.0.dist-info}/WHEEL +0 -0
- {sqlspec-0.16.1.dist-info → sqlspec-0.17.0.dist-info}/entry_points.txt +0 -0
- {sqlspec-0.16.1.dist-info → sqlspec-0.17.0.dist-info}/licenses/LICENSE +0 -0
- {sqlspec-0.16.1.dist-info → sqlspec-0.17.0.dist-info}/licenses/NOTICE +0 -0
sqlspec/loader.py
CHANGED
|
@@ -14,9 +14,13 @@ from pathlib import Path
|
|
|
14
14
|
from typing import Any, Optional, Union
|
|
15
15
|
|
|
16
16
|
from sqlspec.core.cache import CacheKey, get_cache_config, get_default_cache
|
|
17
|
-
from sqlspec.core.
|
|
18
|
-
from sqlspec.
|
|
19
|
-
|
|
17
|
+
from sqlspec.core.statement import SQL
|
|
18
|
+
from sqlspec.exceptions import (
|
|
19
|
+
MissingDependencyError,
|
|
20
|
+
SQLFileNotFoundError,
|
|
21
|
+
SQLFileParseError,
|
|
22
|
+
StorageOperationFailedError,
|
|
23
|
+
)
|
|
20
24
|
from sqlspec.storage import storage_registry
|
|
21
25
|
from sqlspec.storage.registry import StorageRegistry
|
|
22
26
|
from sqlspec.utils.correlation import CorrelationContext
|
|
@@ -29,7 +33,7 @@ logger = get_logger("loader")
|
|
|
29
33
|
# Matches: -- name: query_name (supports hyphens and special suffixes)
|
|
30
34
|
# We capture the name plus any trailing special characters
|
|
31
35
|
QUERY_NAME_PATTERN = re.compile(r"^\s*--\s*name\s*:\s*([\w-]+[^\w\s]*)\s*$", re.MULTILINE | re.IGNORECASE)
|
|
32
|
-
TRIM_SPECIAL_CHARS = re.compile(r"[^\w
|
|
36
|
+
TRIM_SPECIAL_CHARS = re.compile(r"[^\w.-]")
|
|
33
37
|
|
|
34
38
|
# Matches: -- dialect: dialect_name (optional dialect specification)
|
|
35
39
|
DIALECT_PATTERN = re.compile(r"^\s*--\s*dialect\s*:\s*(?P<dialect>[a-zA-Z0-9_]+)\s*$", re.IGNORECASE | re.MULTILINE)
|
|
@@ -304,6 +308,12 @@ class SQLFileLoader:
|
|
|
304
308
|
return backend.read_text(path_str, encoding=self.encoding)
|
|
305
309
|
except KeyError as e:
|
|
306
310
|
raise SQLFileNotFoundError(path_str) from e
|
|
311
|
+
except MissingDependencyError:
|
|
312
|
+
# Fall back to standard file reading when no storage backend is available
|
|
313
|
+
try:
|
|
314
|
+
return path.read_text(encoding=self.encoding) # type: ignore[union-attr]
|
|
315
|
+
except FileNotFoundError as e:
|
|
316
|
+
raise SQLFileNotFoundError(path_str) from e
|
|
307
317
|
except StorageOperationFailedError as e:
|
|
308
318
|
if "not found" in str(e).lower() or "no such file" in str(e).lower():
|
|
309
319
|
raise SQLFileNotFoundError(path_str) from e
|
|
@@ -570,8 +580,11 @@ class SQLFileLoader:
|
|
|
570
580
|
Raises:
|
|
571
581
|
ValueError: If query name already exists.
|
|
572
582
|
"""
|
|
573
|
-
|
|
574
|
-
|
|
583
|
+
# Normalize the name for consistency with file-loaded queries
|
|
584
|
+
normalized_name = _normalize_query_name(name)
|
|
585
|
+
|
|
586
|
+
if normalized_name in self._queries:
|
|
587
|
+
existing_source = self._query_to_file.get(normalized_name, "<directly added>")
|
|
575
588
|
msg = f"Query name '{name}' already exists (source: {existing_source})"
|
|
576
589
|
raise ValueError(msg)
|
|
577
590
|
|
|
@@ -588,21 +601,16 @@ class SQLFileLoader:
|
|
|
588
601
|
else:
|
|
589
602
|
dialect = normalized_dialect
|
|
590
603
|
|
|
591
|
-
statement = NamedStatement(name=
|
|
592
|
-
self._queries[
|
|
593
|
-
self._query_to_file[
|
|
604
|
+
statement = NamedStatement(name=normalized_name, sql=sql.strip(), dialect=dialect, start_line=0)
|
|
605
|
+
self._queries[normalized_name] = statement
|
|
606
|
+
self._query_to_file[normalized_name] = "<directly added>"
|
|
594
607
|
|
|
595
|
-
def get_sql(
|
|
596
|
-
|
|
597
|
-
) -> "SQL":
|
|
598
|
-
"""Get a SQL object by statement name with dialect support.
|
|
608
|
+
def get_sql(self, name: str) -> "SQL":
|
|
609
|
+
"""Get a SQL object by statement name.
|
|
599
610
|
|
|
600
611
|
Args:
|
|
601
612
|
name: Name of the statement (from -- name: in SQL file).
|
|
602
613
|
Hyphens in names are converted to underscores.
|
|
603
|
-
parameters: Parameters for the SQL statement.
|
|
604
|
-
dialect: Optional dialect override.
|
|
605
|
-
**kwargs: Additional parameters to pass to the SQL object.
|
|
606
614
|
|
|
607
615
|
Returns:
|
|
608
616
|
SQL object ready for execution.
|
|
@@ -629,46 +637,11 @@ class SQLFileLoader:
|
|
|
629
637
|
raise SQLFileNotFoundError(name, path=f"Statement '{name}' not found. Available statements: {available}")
|
|
630
638
|
|
|
631
639
|
parsed_statement = self._queries[safe_name]
|
|
632
|
-
|
|
633
|
-
effective_dialect = dialect or parsed_statement.dialect
|
|
634
|
-
|
|
635
|
-
if dialect is not None:
|
|
636
|
-
normalized_dialect = _normalize_dialect(dialect)
|
|
637
|
-
if normalized_dialect not in SUPPORTED_DIALECTS:
|
|
638
|
-
suggestions = _get_dialect_suggestions(normalized_dialect)
|
|
639
|
-
warning_msg = f"Unknown dialect '{dialect}'"
|
|
640
|
-
if suggestions:
|
|
641
|
-
warning_msg += f". Did you mean: {', '.join(suggestions)}?"
|
|
642
|
-
warning_msg += f". Supported dialects: {', '.join(sorted(SUPPORTED_DIALECTS))}. Using dialect as-is."
|
|
643
|
-
logger.warning(warning_msg)
|
|
644
|
-
effective_dialect = dialect.lower()
|
|
645
|
-
else:
|
|
646
|
-
effective_dialect = normalized_dialect
|
|
647
|
-
|
|
648
|
-
sql_kwargs = dict(kwargs)
|
|
649
|
-
if parameters is not None:
|
|
650
|
-
sql_kwargs["parameters"] = parameters
|
|
651
|
-
|
|
652
640
|
sqlglot_dialect = None
|
|
653
|
-
if
|
|
654
|
-
sqlglot_dialect = _normalize_dialect_for_sqlglot(
|
|
655
|
-
|
|
656
|
-
if not effective_dialect and "statement_config" not in sql_kwargs:
|
|
657
|
-
validator = ParameterValidator()
|
|
658
|
-
param_info = validator.extract_parameters(parsed_statement.sql)
|
|
659
|
-
if param_info:
|
|
660
|
-
styles = {p.style for p in param_info}
|
|
661
|
-
if styles:
|
|
662
|
-
detected_style = next(iter(styles))
|
|
663
|
-
sql_kwargs["statement_config"] = StatementConfig(
|
|
664
|
-
parameter_config=ParameterStyleConfig(
|
|
665
|
-
default_parameter_style=detected_style,
|
|
666
|
-
supported_parameter_styles=styles,
|
|
667
|
-
preserve_parameter_format=True,
|
|
668
|
-
)
|
|
669
|
-
)
|
|
641
|
+
if parsed_statement.dialect:
|
|
642
|
+
sqlglot_dialect = _normalize_dialect_for_sqlglot(parsed_statement.dialect)
|
|
670
643
|
|
|
671
|
-
return SQL(parsed_statement.sql, dialect=sqlglot_dialect
|
|
644
|
+
return SQL(parsed_statement.sql, dialect=sqlglot_dialect)
|
|
672
645
|
|
|
673
646
|
def get_file(self, path: Union[str, Path]) -> "Optional[SQLFile]":
|
|
674
647
|
"""Get a loaded SQLFile object by path.
|
sqlspec/storage/registry.py
CHANGED
|
@@ -151,8 +151,8 @@ class StorageRegistry:
|
|
|
151
151
|
return self._create_backend("fsspec", uri, **kwargs)
|
|
152
152
|
except (ValueError, ImportError, NotImplementedError):
|
|
153
153
|
pass
|
|
154
|
-
msg =
|
|
155
|
-
raise MissingDependencyError(msg)
|
|
154
|
+
msg = "obstore"
|
|
155
|
+
raise MissingDependencyError(msg, "fsspec")
|
|
156
156
|
|
|
157
157
|
def _determine_backend_class(self, uri: str) -> type[ObjectStoreProtocol]:
|
|
158
158
|
"""Determine the backend class for a URI based on availability."""
|
sqlspec/typing.py
CHANGED
|
@@ -18,88 +18,50 @@ from sqlspec._typing import (
|
|
|
18
18
|
PROMETHEUS_INSTALLED,
|
|
19
19
|
PYARROW_INSTALLED,
|
|
20
20
|
PYDANTIC_INSTALLED,
|
|
21
|
+
UNSET,
|
|
22
|
+
AiosqlAsyncProtocol,
|
|
23
|
+
AiosqlParamType,
|
|
24
|
+
AiosqlProtocol,
|
|
25
|
+
AiosqlSQLOperationType,
|
|
26
|
+
AiosqlSyncProtocol,
|
|
27
|
+
ArrowRecordBatch,
|
|
28
|
+
ArrowTable,
|
|
29
|
+
AttrsInstance,
|
|
30
|
+
AttrsInstanceStub,
|
|
31
|
+
BaseModel,
|
|
32
|
+
BaseModelStub,
|
|
33
|
+
Counter,
|
|
21
34
|
DataclassProtocol,
|
|
35
|
+
DTOData,
|
|
22
36
|
Empty,
|
|
23
37
|
EmptyEnum,
|
|
24
38
|
EmptyType,
|
|
39
|
+
FailFast,
|
|
40
|
+
Gauge,
|
|
41
|
+
Histogram,
|
|
42
|
+
Span,
|
|
43
|
+
Status,
|
|
44
|
+
StatusCode,
|
|
45
|
+
Struct,
|
|
46
|
+
StructStub,
|
|
47
|
+
Tracer,
|
|
48
|
+
TypeAdapter,
|
|
49
|
+
UnsetType,
|
|
50
|
+
aiosql,
|
|
51
|
+
attrs_asdict,
|
|
52
|
+
attrs_define,
|
|
53
|
+
attrs_field,
|
|
54
|
+
attrs_fields,
|
|
55
|
+
attrs_has,
|
|
56
|
+
cattrs_structure,
|
|
57
|
+
cattrs_unstructure,
|
|
58
|
+
convert,
|
|
59
|
+
trace,
|
|
25
60
|
)
|
|
26
61
|
|
|
27
62
|
if TYPE_CHECKING:
|
|
28
63
|
from collections.abc import Sequence
|
|
29
64
|
|
|
30
|
-
from sqlspec._typing import (
|
|
31
|
-
UNSET,
|
|
32
|
-
AiosqlAsyncProtocol,
|
|
33
|
-
AiosqlParamType,
|
|
34
|
-
AiosqlProtocol,
|
|
35
|
-
AiosqlSQLOperationType,
|
|
36
|
-
AiosqlSyncProtocol,
|
|
37
|
-
ArrowRecordBatch,
|
|
38
|
-
ArrowTable,
|
|
39
|
-
AttrsInstance,
|
|
40
|
-
AttrsInstanceStub,
|
|
41
|
-
BaseModel,
|
|
42
|
-
BaseModelStub,
|
|
43
|
-
Counter,
|
|
44
|
-
DTOData,
|
|
45
|
-
FailFast,
|
|
46
|
-
Gauge,
|
|
47
|
-
Histogram,
|
|
48
|
-
Span,
|
|
49
|
-
Status,
|
|
50
|
-
StatusCode,
|
|
51
|
-
Struct,
|
|
52
|
-
StructStub,
|
|
53
|
-
Tracer,
|
|
54
|
-
TypeAdapter,
|
|
55
|
-
UnsetType,
|
|
56
|
-
aiosql,
|
|
57
|
-
attrs_asdict,
|
|
58
|
-
attrs_define,
|
|
59
|
-
attrs_field,
|
|
60
|
-
attrs_fields,
|
|
61
|
-
attrs_has,
|
|
62
|
-
cattrs_structure,
|
|
63
|
-
cattrs_unstructure,
|
|
64
|
-
convert,
|
|
65
|
-
trace,
|
|
66
|
-
)
|
|
67
|
-
else:
|
|
68
|
-
from sqlspec._typing import (
|
|
69
|
-
UNSET,
|
|
70
|
-
AiosqlAsyncProtocol,
|
|
71
|
-
AiosqlParamType,
|
|
72
|
-
AiosqlProtocol,
|
|
73
|
-
AiosqlSQLOperationType,
|
|
74
|
-
AiosqlSyncProtocol,
|
|
75
|
-
ArrowRecordBatch,
|
|
76
|
-
ArrowTable,
|
|
77
|
-
AttrsInstance,
|
|
78
|
-
BaseModel,
|
|
79
|
-
Counter,
|
|
80
|
-
DTOData,
|
|
81
|
-
FailFast,
|
|
82
|
-
Gauge,
|
|
83
|
-
Histogram,
|
|
84
|
-
Span,
|
|
85
|
-
Status,
|
|
86
|
-
StatusCode,
|
|
87
|
-
Struct,
|
|
88
|
-
Tracer,
|
|
89
|
-
TypeAdapter,
|
|
90
|
-
UnsetType,
|
|
91
|
-
aiosql,
|
|
92
|
-
attrs_asdict,
|
|
93
|
-
attrs_define,
|
|
94
|
-
attrs_field,
|
|
95
|
-
attrs_fields,
|
|
96
|
-
attrs_has,
|
|
97
|
-
cattrs_structure,
|
|
98
|
-
cattrs_unstructure,
|
|
99
|
-
convert,
|
|
100
|
-
trace,
|
|
101
|
-
)
|
|
102
|
-
|
|
103
65
|
|
|
104
66
|
class DictLike(Protocol):
|
|
105
67
|
"""A protocol for objects that behave like a dictionary for reading."""
|
|
@@ -112,36 +74,28 @@ class DictLike(Protocol):
|
|
|
112
74
|
PYDANTIC_USE_FAILFAST = False
|
|
113
75
|
|
|
114
76
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
"""Type variable for connection types.
|
|
77
|
+
T = TypeVar("T")
|
|
78
|
+
ConnectionT = TypeVar("ConnectionT")
|
|
79
|
+
"""Type variable for connection types.
|
|
119
80
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
81
|
+
:class:`~sqlspec.typing.ConnectionT`
|
|
82
|
+
"""
|
|
83
|
+
PoolT = TypeVar("PoolT")
|
|
84
|
+
"""Type variable for pool types.
|
|
124
85
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
86
|
+
:class:`~sqlspec.typing.PoolT`
|
|
87
|
+
"""
|
|
88
|
+
PoolT_co = TypeVar("PoolT_co", covariant=True)
|
|
89
|
+
"""Type variable for covariant pool types.
|
|
129
90
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
91
|
+
:class:`~sqlspec.typing.PoolT_co`
|
|
92
|
+
"""
|
|
93
|
+
ModelT = TypeVar("ModelT", bound="Union[DictLike, StructStub, BaseModelStub, DataclassProtocol, AttrsInstanceStub]")
|
|
94
|
+
"""Type variable for model types.
|
|
134
95
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
else:
|
|
139
|
-
T = Any
|
|
140
|
-
ConnectionT = Any
|
|
141
|
-
PoolT = Any
|
|
142
|
-
PoolT_co = Any
|
|
143
|
-
ModelT = Any
|
|
144
|
-
RowT = dict[str, Any]
|
|
96
|
+
:class:`DictLike` | :class:`msgspec.Struct` | :class:`pydantic.BaseModel` | :class:`DataclassProtocol` | :class:`AttrsInstance`
|
|
97
|
+
"""
|
|
98
|
+
RowT = TypeVar("RowT", bound="dict[str, Any]")
|
|
145
99
|
|
|
146
100
|
|
|
147
101
|
DictRow: TypeAlias = "dict[str, Any]"
|
|
@@ -1,26 +1,27 @@
|
|
|
1
|
-
sqlspec/__init__.py,sha256=
|
|
1
|
+
sqlspec/__init__.py,sha256=wy9ZqukBvr2WZkUmrljRHPGFjpUKWkEXxFWlTLuciJc,2123
|
|
2
2
|
sqlspec/__main__.py,sha256=lXBKZMOXA1uY735Rnsb-GS7aXy0nt22tYmd2X9FcxrY,253
|
|
3
3
|
sqlspec/__metadata__.py,sha256=IUw6MCTy1oeUJ1jAVYbuJLkOWbiAWorZ5W-E-SAD9N4,395
|
|
4
4
|
sqlspec/_serialization.py,sha256=6U5-smk2h2yl0i6am2prtOLJTdu4NJQdcLlSfSUMaUQ,2590
|
|
5
|
-
sqlspec/_sql.py,sha256=
|
|
5
|
+
sqlspec/_sql.py,sha256=UrJCc_iriWw9Dm1eeGswWoFvkeRtfueuTG_f01O7CAk,46623
|
|
6
6
|
sqlspec/_typing.py,sha256=jv-7QHGLrJLfnP86bR-Xcmj3PDoddNZEKDz_vYRBiAU,22684
|
|
7
|
-
sqlspec/base.py,sha256=
|
|
7
|
+
sqlspec/base.py,sha256=OhFSpDaweCjZEabpTtl95pg91WzMko76d7sFOjyZSoo,25730
|
|
8
8
|
sqlspec/cli.py,sha256=3ZxPwl4neNWyrAkM9J9ccC_gaFigDJbhuZfx15JVE7E,9903
|
|
9
9
|
sqlspec/config.py,sha256=s7csxGK0SlTvB9jOvHlKKm4Y272RInQrUd6hGXwy31Q,14974
|
|
10
10
|
sqlspec/exceptions.py,sha256=mCqNJ0JSPA-TUPpAfdctwwqJWbiNsWap5ATNNRdczwU,6159
|
|
11
|
-
sqlspec/loader.py,sha256=
|
|
11
|
+
sqlspec/loader.py,sha256=KSL5OsjPsuZZJrgohdhdmimwDqVPj_BvHqHIpP2Fq_0,25818
|
|
12
12
|
sqlspec/protocols.py,sha256=iwwy7zdIBV7TcoxIYpKuTvN5fGiULQac2f4a-saxyKU,12937
|
|
13
13
|
sqlspec/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
|
-
sqlspec/typing.py,sha256=
|
|
14
|
+
sqlspec/typing.py,sha256=yj8D8O-pkfUVZDfVHEgQaB95-5alwgQbp_sqNJOVhvQ,6301
|
|
15
15
|
sqlspec/adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
16
|
sqlspec/adapters/adbc/__init__.py,sha256=CqBaEahvHbQ5NxmBJuuCtZ8v5wuaPgbqSSe9WUhglWY,336
|
|
17
17
|
sqlspec/adapters/adbc/_types.py,sha256=htTZ20qVo6Iod_ooUTLGd0xAL8AUYA4qeOexTaLQG3Q,351
|
|
18
18
|
sqlspec/adapters/adbc/config.py,sha256=UdS_4q5tsXKPEilD2dLtk9H1BI02CTSvhIWEDChrPEs,13871
|
|
19
19
|
sqlspec/adapters/adbc/driver.py,sha256=nYS6e6DXxZ8lHzUFvXvC8qtcGSBTvK8IF_NlBbw56pg,20217
|
|
20
|
-
sqlspec/adapters/aiosqlite/__init__.py,sha256=
|
|
20
|
+
sqlspec/adapters/aiosqlite/__init__.py,sha256=rgooFeHm7IsnC9fOnRQwMvbJdgkTvhnNTYphayVz9q8,869
|
|
21
21
|
sqlspec/adapters/aiosqlite/_types.py,sha256=M8VqaW6iCigfExhdJM2yPAN09Ue2yBoBL59-QXGBObo,355
|
|
22
|
-
sqlspec/adapters/aiosqlite/config.py,sha256=
|
|
23
|
-
sqlspec/adapters/aiosqlite/driver.py,sha256=
|
|
22
|
+
sqlspec/adapters/aiosqlite/config.py,sha256=tSw4zN9fdq0T7cWFmxtw1FGVDsGWWnblxUNhZb3wVRM,8504
|
|
23
|
+
sqlspec/adapters/aiosqlite/driver.py,sha256=qy1O3QBCuuM-M-O0j4DRHtPShU5Ngbm24UpgfFrbnQE,10286
|
|
24
|
+
sqlspec/adapters/aiosqlite/pool.py,sha256=3DzbAD2bKw45fFiChnV-RzgHnTQJEoSX3SOP3A4SmE8,16905
|
|
24
25
|
sqlspec/adapters/asyncmy/__init__.py,sha256=wBgak4MA3ySaGQHUxrnv3HdSVQKKRWf1_DmENL0LkWs,531
|
|
25
26
|
sqlspec/adapters/asyncmy/_types.py,sha256=WbwREzJkLYmqd4c7A7cu04WaD5g7-n35ZETHZvbP1Z8,250
|
|
26
27
|
sqlspec/adapters/asyncmy/config.py,sha256=8fGiiFjIaT_y6OcVj_7dTK9sSuLqucMRsGcRPoYigy8,6557
|
|
@@ -33,10 +34,11 @@ sqlspec/adapters/bigquery/__init__.py,sha256=1nzkWubO4ZObuK27QoeGfS05ed5v02NU4Ga
|
|
|
33
34
|
sqlspec/adapters/bigquery/_types.py,sha256=gECmbiSmZmnR-xJpmznhnva4SbhhdcYQ09jBdqMAmOs,255
|
|
34
35
|
sqlspec/adapters/bigquery/config.py,sha256=KYVvhcd4MyU2ak0t1mX3bd3EXlVMEciO7YPaDtZsPc8,11975
|
|
35
36
|
sqlspec/adapters/bigquery/driver.py,sha256=3y8gwrYTt6ktPKE0ihGk5Dj7yvL52Gc8uT1b1ynaCuA,24016
|
|
36
|
-
sqlspec/adapters/duckdb/__init__.py,sha256=
|
|
37
|
+
sqlspec/adapters/duckdb/__init__.py,sha256=c5GCYxhTFhvB8fUTt_d-dipaQfM8X5kv4GsU47SwJ6E,693
|
|
37
38
|
sqlspec/adapters/duckdb/_types.py,sha256=4p5nuD1yNs0fmQ5sGxKFx2ru6jUCPrpsYgqfh-uZHM8,270
|
|
38
|
-
sqlspec/adapters/duckdb/config.py,sha256=
|
|
39
|
+
sqlspec/adapters/duckdb/config.py,sha256=ISQb8-I3MK08CGXKnsQy1f1qNmm8_m7kBwbi0AS-v4g,10496
|
|
39
40
|
sqlspec/adapters/duckdb/driver.py,sha256=HDRPYh1k0JnnnaPpyv8oONn7UAYDCQyTK4fsgFDv6uk,15003
|
|
41
|
+
sqlspec/adapters/duckdb/pool.py,sha256=F_f_liV4nPLPJFYzHF3bWB13RHS5XYbrD8XUPE5fS08,8686
|
|
40
42
|
sqlspec/adapters/oracledb/__init__.py,sha256=AUsZ8m9tDgNwxv9m4LtkIs9Ib6hOtBrGNm-Ee4HWNq0,843
|
|
41
43
|
sqlspec/adapters/oracledb/_types.py,sha256=yPJTQE37HYVgvxI3USonWvFJ2VcfaNnXqfgKNVphmcQ,400
|
|
42
44
|
sqlspec/adapters/oracledb/config.py,sha256=yZITXSWuHKwrjVcuaTLyR9RtVb3WtzmWlBQTjvyUtPo,11383
|
|
@@ -49,35 +51,36 @@ sqlspec/adapters/psycopg/__init__.py,sha256=swmTz8xlj6LvB-i78tBSE_T-sez2e6lFJW2c
|
|
|
49
51
|
sqlspec/adapters/psycopg/_types.py,sha256=UJBKDWgARoSR6UxSy8zcIP7HSHTpXU5moJTsjDj0M4M,563
|
|
50
52
|
sqlspec/adapters/psycopg/config.py,sha256=tyxP1WbLQlwvdWdykG_iluIaQg0O6GLUwMLtfaRQ3sE,16268
|
|
51
53
|
sqlspec/adapters/psycopg/driver.py,sha256=qMRaoUI1RF0JLGEEIWzZJTyPd5jEaRFq6ZY0dkukrCQ,33434
|
|
52
|
-
sqlspec/adapters/sqlite/__init__.py,sha256=
|
|
54
|
+
sqlspec/adapters/sqlite/__init__.py,sha256=hGZX0D6vHJMSah60_hgWHoLmcqKGm1lYcz2r02wc0p0,574
|
|
53
55
|
sqlspec/adapters/sqlite/_types.py,sha256=4Nqolhk8s4mwLw13BwUjuyhAbM9BsKwJCvcmjMWkhaY,246
|
|
54
|
-
sqlspec/adapters/sqlite/config.py,sha256
|
|
56
|
+
sqlspec/adapters/sqlite/config.py,sha256=-t7NkBRJHQQ7jeq5zD5KL8yb0RlJwP1vUkw7xc1F37k,5058
|
|
55
57
|
sqlspec/adapters/sqlite/driver.py,sha256=uAhasoCNOV30gTvl1EUpofRcm8YiEW5RnVy07XyypzI,12103
|
|
56
|
-
sqlspec/
|
|
58
|
+
sqlspec/adapters/sqlite/pool.py,sha256=FxlnBksmiPDLyMB0C7j3wjfc45PU_RrukTwNAzN3DDQ,4977
|
|
59
|
+
sqlspec/builder/__init__.py,sha256=AY_D6TlSpYFJ7sU39S9xubq-eXZTpuNDlisoeK0LojU,1675
|
|
57
60
|
sqlspec/builder/_base.py,sha256=yz-6e-x66vrNne6z5zq4Ae0C3p0mHEEIe1Y8er-A0pg,17812
|
|
58
61
|
sqlspec/builder/_column.py,sha256=46baZj403BKfGjZcMc9LtQfMLeMQ7ROPyFL64V7dDM0,13124
|
|
59
62
|
sqlspec/builder/_ddl.py,sha256=A_fV4d92o2ZOhX150YMSsQDm3veQTQrwlxgLdFMBBfg,48184
|
|
60
63
|
sqlspec/builder/_ddl_utils.py,sha256=1mFSNe9w5rZXA1Ud4CTuca7eibi0XayHrIPcnEgRB7s,4034
|
|
61
64
|
sqlspec/builder/_delete.py,sha256=xWA5nQB3UB8kpEGXN2k5ynt4cGZ7blkNoURpI0bKoeg,2264
|
|
62
|
-
sqlspec/builder/_insert.py,sha256=
|
|
65
|
+
sqlspec/builder/_insert.py,sha256=rARWh5olbur6oPP_3FoAuJp8irj5cRLW0mKdWEx2cqU,16896
|
|
63
66
|
sqlspec/builder/_merge.py,sha256=95PLQSKA3zjk0wTZG3m817fTZpsS95PrS2qF34iLAP8,2004
|
|
64
|
-
sqlspec/builder/_parsing_utils.py,sha256=
|
|
67
|
+
sqlspec/builder/_parsing_utils.py,sha256=RH8OFBFAetalEgHW5JLcEyyCdW_awVdy07MjboOkqL4,8383
|
|
65
68
|
sqlspec/builder/_select.py,sha256=m5sfyuAssjlNimLLNBAeFooVIfM2FgKN1boPfdsOkaA,5785
|
|
66
69
|
sqlspec/builder/_update.py,sha256=UFHM_uWVY5RnZQ6winiyjKNtBryKRAXJlXtCVQdifyw,6015
|
|
67
70
|
sqlspec/builder/mixins/__init__.py,sha256=YXhAzKmQbQtne5j26SKWY8PUxwosl0RhlhLoahAdkj0,1885
|
|
68
71
|
sqlspec/builder/mixins/_cte_and_set_ops.py,sha256=p5O9m_jvpaWxv1XP9Ys2DRI-qOTq30rr2EwYjAbIT8o,9088
|
|
69
72
|
sqlspec/builder/mixins/_delete_operations.py,sha256=l0liajnoAfRgtWtyStuAIfxreEFRkNO4DtBwyGqAfic,1198
|
|
70
73
|
sqlspec/builder/mixins/_insert_operations.py,sha256=3ZuVNAPgJG0fzOPaprwUPa0Un3NP7erHwtCg8AGZWD8,9500
|
|
71
|
-
sqlspec/builder/mixins/_join_operations.py,sha256=
|
|
72
|
-
sqlspec/builder/mixins/_merge_operations.py,sha256=
|
|
74
|
+
sqlspec/builder/mixins/_join_operations.py,sha256=8o_aApK5cmJbNCNfWa4bs5fR2zgQUjon5p-oyiW41Qw,11440
|
|
75
|
+
sqlspec/builder/mixins/_merge_operations.py,sha256=e9QDv1s84-2F2ZAZrr7UJtKXhy3X0NDN7AZ--8mOTKw,24193
|
|
73
76
|
sqlspec/builder/mixins/_order_limit_operations.py,sha256=ABPuFSqHRv7XaS9-3HNZO3Jn0QovhJrkYT158xxduns,4835
|
|
74
77
|
sqlspec/builder/mixins/_pivot_operations.py,sha256=j5vdzXuEqB1Jn3Ie_QjVwSH2_OEi65oZ64bQJHd3jXo,6108
|
|
75
|
-
sqlspec/builder/mixins/_select_operations.py,sha256=
|
|
76
|
-
sqlspec/builder/mixins/_update_operations.py,sha256=
|
|
77
|
-
sqlspec/builder/mixins/_where_clause.py,sha256=
|
|
78
|
+
sqlspec/builder/mixins/_select_operations.py,sha256=m7iejdCw04mfxohNiHWeQSKQyI94vrhJ_JcYRhUPYw8,35314
|
|
79
|
+
sqlspec/builder/mixins/_update_operations.py,sha256=lk9VRM0KGmYhofbWChemJxSZF6I0LhrRgqMXVmXZMeU,8650
|
|
80
|
+
sqlspec/builder/mixins/_where_clause.py,sha256=1iz7Y2x_ooG2bOCu2zX0v5_bkGFpAckVQKvnyrR1JNQ,36373
|
|
78
81
|
sqlspec/core/__init__.py,sha256=rU_xGsXhqIOnBbyB2InhJknYePm5NQ2DSWdBigror4g,1775
|
|
79
82
|
sqlspec/core/cache.py,sha256=cLL9bd5wn1oeMzn5E5Ym0sAemA8U4QP6B55x4L9-26I,27044
|
|
80
|
-
sqlspec/core/compiler.py,sha256=
|
|
83
|
+
sqlspec/core/compiler.py,sha256=XEAeKZhoVxfyvoDFozCGNe2CuwLpXFPltOQ87IBO5Cg,14712
|
|
81
84
|
sqlspec/core/filters.py,sha256=X0wRd0vNOFgeOK98ReeTyKt408GCnnmE9p45Bvur3kw,31351
|
|
82
85
|
sqlspec/core/hashing.py,sha256=4KyAFWtFDMYreoBGGPQppEuMWO6_NrRYlw9Lm-qeJqo,10429
|
|
83
86
|
sqlspec/core/parameters.py,sha256=yLnGt_tqqpb28xrgnq3oQ-1mcf45Pjf6uE3c0ag5JJ4,54265
|
|
@@ -86,7 +89,7 @@ sqlspec/core/splitter.py,sha256=cb2P1B0q5vvALHi3SEJ7VdbRHH2GWsftrmJi9PYMbeE,2808
|
|
|
86
89
|
sqlspec/core/statement.py,sha256=HsbSu0qnfJzpL_s1kwfxtWnyuCfAq8WjYRc3YQqxkDw,25700
|
|
87
90
|
sqlspec/driver/__init__.py,sha256=QVpDRQGd1GreIP199en6qDbq-cZJcEF5go68DINagUk,569
|
|
88
91
|
sqlspec/driver/_async.py,sha256=29XYWjeIuIwElO3QFUtEqQZq1ss2Ulueh0UD-aX2x-E,19636
|
|
89
|
-
sqlspec/driver/_common.py,sha256=
|
|
92
|
+
sqlspec/driver/_common.py,sha256=Y2aOyIkHYGhQ8NadDmJ3gqtHAVS0Ivv99a0eliTZEDk,26728
|
|
90
93
|
sqlspec/driver/_sync.py,sha256=pCKNHj46HcZYn9292FWyoWkNc6gj4ArUT8ttik4YyRQ,19408
|
|
91
94
|
sqlspec/driver/mixins/__init__.py,sha256=gN4pQyJXxNy0xi91dcMJGA7DQ7TbjGjQI24SSpZc6Go,248
|
|
92
95
|
sqlspec/driver/mixins/_result_tools.py,sha256=8z-W4py3BOtn3WB7ElpsVAEjGRozgHsfymTE_oXqcnw,7576
|
|
@@ -110,7 +113,7 @@ sqlspec/migrations/tracker.py,sha256=-gfHgvcYo1uBdr9FKrIxaU_0v734K5gpdLMuoaX29nQ
|
|
|
110
113
|
sqlspec/migrations/utils.py,sha256=gWnCOdr8pwfkgG-FSUJgRz4q9TlCgOXY_B7n59NrgVA,3746
|
|
111
114
|
sqlspec/storage/__init__.py,sha256=bLrUfW_E41HH-Pi5kqFTPVYZiSsxlG7OZO1xP23nDSI,691
|
|
112
115
|
sqlspec/storage/capabilities.py,sha256=vyousxls9jISsykgoybpNHlGWN6Hq_pKcsZ5DmKGWvU,3045
|
|
113
|
-
sqlspec/storage/registry.py,sha256=
|
|
116
|
+
sqlspec/storage/registry.py,sha256=Bt7M7pyxaPP0_bK-VqOWzQL0V0dlNAE1Od4CSgjQbKQ,9467
|
|
114
117
|
sqlspec/storage/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
115
118
|
sqlspec/storage/backends/base.py,sha256=KS2JRZILoH_R_xsfKtYkqQ5a1r5OOBDSE5KbibTmhGY,5730
|
|
116
119
|
sqlspec/storage/backends/fsspec.py,sha256=YVr8X_q5F4Xrr9SyfUDve1dZ9E6KppuM8w6tvLwPKpc,16050
|
|
@@ -126,9 +129,9 @@ sqlspec/utils/singleton.py,sha256=SKnszJi1NPeERgX7IjVIGYAYx4XqR1E_rph3bU6olAU,10
|
|
|
126
129
|
sqlspec/utils/sync_tools.py,sha256=WRuk1ZEhb_0CRrumAdnmi-i-dV6qVd3cgJyZw8RY9QQ,7390
|
|
127
130
|
sqlspec/utils/text.py,sha256=n5K0gvXvyCc8jNteNKsBOymwf_JnQ65f3lu0YaYq4Ys,2898
|
|
128
131
|
sqlspec/utils/type_guards.py,sha256=9C4SRebO4JiQrMzcJZFUA0KjSU48G26RmX6lbijyjBg,30476
|
|
129
|
-
sqlspec-0.
|
|
130
|
-
sqlspec-0.
|
|
131
|
-
sqlspec-0.
|
|
132
|
-
sqlspec-0.
|
|
133
|
-
sqlspec-0.
|
|
134
|
-
sqlspec-0.
|
|
132
|
+
sqlspec-0.17.0.dist-info/METADATA,sha256=3VTksHJXA8Azr2boYZpQtPO27y_QXZq_jYk-zuftYzE,16822
|
|
133
|
+
sqlspec-0.17.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
134
|
+
sqlspec-0.17.0.dist-info/entry_points.txt,sha256=G-ZqY1Nuuw3Iys7nXw23f6ILenk_Lt47VdK2mhJCWHg,53
|
|
135
|
+
sqlspec-0.17.0.dist-info/licenses/LICENSE,sha256=MdujfZ6l5HuLz4mElxlu049itenOR3gnhN1_Nd3nVcM,1078
|
|
136
|
+
sqlspec-0.17.0.dist-info/licenses/NOTICE,sha256=Lyir8ozXWov7CyYS4huVaOCNrtgL17P-bNV-5daLntQ,1634
|
|
137
|
+
sqlspec-0.17.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|