sqlspec 0.14.1__py3-none-any.whl → 0.15.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.

Files changed (158) hide show
  1. sqlspec/__init__.py +50 -25
  2. sqlspec/__main__.py +1 -1
  3. sqlspec/__metadata__.py +1 -3
  4. sqlspec/_serialization.py +1 -2
  5. sqlspec/_sql.py +256 -120
  6. sqlspec/_typing.py +278 -142
  7. sqlspec/adapters/adbc/__init__.py +4 -3
  8. sqlspec/adapters/adbc/_types.py +12 -0
  9. sqlspec/adapters/adbc/config.py +115 -260
  10. sqlspec/adapters/adbc/driver.py +462 -367
  11. sqlspec/adapters/aiosqlite/__init__.py +18 -3
  12. sqlspec/adapters/aiosqlite/_types.py +13 -0
  13. sqlspec/adapters/aiosqlite/config.py +199 -129
  14. sqlspec/adapters/aiosqlite/driver.py +230 -269
  15. sqlspec/adapters/asyncmy/__init__.py +18 -3
  16. sqlspec/adapters/asyncmy/_types.py +12 -0
  17. sqlspec/adapters/asyncmy/config.py +80 -168
  18. sqlspec/adapters/asyncmy/driver.py +260 -225
  19. sqlspec/adapters/asyncpg/__init__.py +19 -4
  20. sqlspec/adapters/asyncpg/_types.py +17 -0
  21. sqlspec/adapters/asyncpg/config.py +82 -181
  22. sqlspec/adapters/asyncpg/driver.py +285 -383
  23. sqlspec/adapters/bigquery/__init__.py +17 -3
  24. sqlspec/adapters/bigquery/_types.py +12 -0
  25. sqlspec/adapters/bigquery/config.py +191 -258
  26. sqlspec/adapters/bigquery/driver.py +474 -646
  27. sqlspec/adapters/duckdb/__init__.py +14 -3
  28. sqlspec/adapters/duckdb/_types.py +12 -0
  29. sqlspec/adapters/duckdb/config.py +415 -351
  30. sqlspec/adapters/duckdb/driver.py +343 -413
  31. sqlspec/adapters/oracledb/__init__.py +19 -5
  32. sqlspec/adapters/oracledb/_types.py +14 -0
  33. sqlspec/adapters/oracledb/config.py +123 -379
  34. sqlspec/adapters/oracledb/driver.py +507 -560
  35. sqlspec/adapters/psqlpy/__init__.py +13 -3
  36. sqlspec/adapters/psqlpy/_types.py +11 -0
  37. sqlspec/adapters/psqlpy/config.py +93 -254
  38. sqlspec/adapters/psqlpy/driver.py +505 -234
  39. sqlspec/adapters/psycopg/__init__.py +19 -5
  40. sqlspec/adapters/psycopg/_types.py +17 -0
  41. sqlspec/adapters/psycopg/config.py +143 -403
  42. sqlspec/adapters/psycopg/driver.py +706 -872
  43. sqlspec/adapters/sqlite/__init__.py +14 -3
  44. sqlspec/adapters/sqlite/_types.py +11 -0
  45. sqlspec/adapters/sqlite/config.py +202 -118
  46. sqlspec/adapters/sqlite/driver.py +264 -303
  47. sqlspec/base.py +105 -9
  48. sqlspec/{statement/builder → builder}/__init__.py +12 -14
  49. sqlspec/{statement/builder → builder}/_base.py +120 -55
  50. sqlspec/{statement/builder → builder}/_column.py +17 -6
  51. sqlspec/{statement/builder → builder}/_ddl.py +46 -79
  52. sqlspec/{statement/builder → builder}/_ddl_utils.py +5 -10
  53. sqlspec/{statement/builder → builder}/_delete.py +6 -25
  54. sqlspec/{statement/builder → builder}/_insert.py +6 -64
  55. sqlspec/builder/_merge.py +56 -0
  56. sqlspec/{statement/builder → builder}/_parsing_utils.py +3 -10
  57. sqlspec/{statement/builder → builder}/_select.py +11 -56
  58. sqlspec/{statement/builder → builder}/_update.py +12 -18
  59. sqlspec/{statement/builder → builder}/mixins/__init__.py +10 -14
  60. sqlspec/{statement/builder → builder}/mixins/_cte_and_set_ops.py +48 -59
  61. sqlspec/{statement/builder → builder}/mixins/_insert_operations.py +22 -16
  62. sqlspec/{statement/builder → builder}/mixins/_join_operations.py +1 -3
  63. sqlspec/{statement/builder → builder}/mixins/_merge_operations.py +3 -5
  64. sqlspec/{statement/builder → builder}/mixins/_order_limit_operations.py +3 -3
  65. sqlspec/{statement/builder → builder}/mixins/_pivot_operations.py +4 -8
  66. sqlspec/{statement/builder → builder}/mixins/_select_operations.py +21 -36
  67. sqlspec/{statement/builder → builder}/mixins/_update_operations.py +3 -14
  68. sqlspec/{statement/builder → builder}/mixins/_where_clause.py +52 -79
  69. sqlspec/cli.py +4 -5
  70. sqlspec/config.py +180 -133
  71. sqlspec/core/__init__.py +63 -0
  72. sqlspec/core/cache.py +873 -0
  73. sqlspec/core/compiler.py +396 -0
  74. sqlspec/core/filters.py +828 -0
  75. sqlspec/core/hashing.py +310 -0
  76. sqlspec/core/parameters.py +1209 -0
  77. sqlspec/core/result.py +664 -0
  78. sqlspec/{statement → core}/splitter.py +321 -191
  79. sqlspec/core/statement.py +651 -0
  80. sqlspec/driver/__init__.py +7 -10
  81. sqlspec/driver/_async.py +387 -176
  82. sqlspec/driver/_common.py +527 -289
  83. sqlspec/driver/_sync.py +390 -172
  84. sqlspec/driver/mixins/__init__.py +2 -19
  85. sqlspec/driver/mixins/_result_tools.py +168 -0
  86. sqlspec/driver/mixins/_sql_translator.py +6 -3
  87. sqlspec/exceptions.py +5 -252
  88. sqlspec/extensions/aiosql/adapter.py +93 -96
  89. sqlspec/extensions/litestar/config.py +0 -1
  90. sqlspec/extensions/litestar/handlers.py +15 -26
  91. sqlspec/extensions/litestar/plugin.py +16 -14
  92. sqlspec/extensions/litestar/providers.py +17 -52
  93. sqlspec/loader.py +424 -105
  94. sqlspec/migrations/__init__.py +12 -0
  95. sqlspec/migrations/base.py +92 -68
  96. sqlspec/migrations/commands.py +24 -106
  97. sqlspec/migrations/loaders.py +402 -0
  98. sqlspec/migrations/runner.py +49 -51
  99. sqlspec/migrations/tracker.py +31 -44
  100. sqlspec/migrations/utils.py +64 -24
  101. sqlspec/protocols.py +7 -183
  102. sqlspec/storage/__init__.py +1 -1
  103. sqlspec/storage/backends/base.py +37 -40
  104. sqlspec/storage/backends/fsspec.py +136 -112
  105. sqlspec/storage/backends/obstore.py +138 -160
  106. sqlspec/storage/capabilities.py +5 -4
  107. sqlspec/storage/registry.py +57 -106
  108. sqlspec/typing.py +136 -115
  109. sqlspec/utils/__init__.py +2 -3
  110. sqlspec/utils/correlation.py +0 -3
  111. sqlspec/utils/deprecation.py +6 -6
  112. sqlspec/utils/fixtures.py +6 -6
  113. sqlspec/utils/logging.py +0 -2
  114. sqlspec/utils/module_loader.py +7 -12
  115. sqlspec/utils/singleton.py +0 -1
  116. sqlspec/utils/sync_tools.py +16 -37
  117. sqlspec/utils/text.py +12 -51
  118. sqlspec/utils/type_guards.py +443 -232
  119. {sqlspec-0.14.1.dist-info → sqlspec-0.15.0.dist-info}/METADATA +7 -2
  120. sqlspec-0.15.0.dist-info/RECORD +134 -0
  121. sqlspec/adapters/adbc/transformers.py +0 -108
  122. sqlspec/driver/connection.py +0 -207
  123. sqlspec/driver/mixins/_cache.py +0 -114
  124. sqlspec/driver/mixins/_csv_writer.py +0 -91
  125. sqlspec/driver/mixins/_pipeline.py +0 -508
  126. sqlspec/driver/mixins/_query_tools.py +0 -796
  127. sqlspec/driver/mixins/_result_utils.py +0 -138
  128. sqlspec/driver/mixins/_storage.py +0 -912
  129. sqlspec/driver/mixins/_type_coercion.py +0 -128
  130. sqlspec/driver/parameters.py +0 -138
  131. sqlspec/statement/__init__.py +0 -21
  132. sqlspec/statement/builder/_merge.py +0 -95
  133. sqlspec/statement/cache.py +0 -50
  134. sqlspec/statement/filters.py +0 -625
  135. sqlspec/statement/parameters.py +0 -956
  136. sqlspec/statement/pipelines/__init__.py +0 -210
  137. sqlspec/statement/pipelines/analyzers/__init__.py +0 -9
  138. sqlspec/statement/pipelines/analyzers/_analyzer.py +0 -646
  139. sqlspec/statement/pipelines/context.py +0 -109
  140. sqlspec/statement/pipelines/transformers/__init__.py +0 -7
  141. sqlspec/statement/pipelines/transformers/_expression_simplifier.py +0 -88
  142. sqlspec/statement/pipelines/transformers/_literal_parameterizer.py +0 -1247
  143. sqlspec/statement/pipelines/transformers/_remove_comments_and_hints.py +0 -76
  144. sqlspec/statement/pipelines/validators/__init__.py +0 -23
  145. sqlspec/statement/pipelines/validators/_dml_safety.py +0 -290
  146. sqlspec/statement/pipelines/validators/_parameter_style.py +0 -370
  147. sqlspec/statement/pipelines/validators/_performance.py +0 -714
  148. sqlspec/statement/pipelines/validators/_security.py +0 -967
  149. sqlspec/statement/result.py +0 -435
  150. sqlspec/statement/sql.py +0 -1774
  151. sqlspec/utils/cached_property.py +0 -25
  152. sqlspec/utils/statement_hashing.py +0 -203
  153. sqlspec-0.14.1.dist-info/RECORD +0 -145
  154. /sqlspec/{statement/builder → builder}/mixins/_delete_operations.py +0 -0
  155. {sqlspec-0.14.1.dist-info → sqlspec-0.15.0.dist-info}/WHEEL +0 -0
  156. {sqlspec-0.14.1.dist-info → sqlspec-0.15.0.dist-info}/entry_points.txt +0 -0
  157. {sqlspec-0.14.1.dist-info → sqlspec-0.15.0.dist-info}/licenses/LICENSE +0 -0
  158. {sqlspec-0.14.1.dist-info → sqlspec-0.15.0.dist-info}/licenses/NOTICE +0 -0
@@ -1,25 +0,0 @@
1
- """A simple cached property decorator."""
2
-
3
- from typing import Any, Callable, Generic, TypeVar
4
-
5
- __all__ = ("CachedProperty",)
6
-
7
-
8
- T = TypeVar("T")
9
- Cls = TypeVar("Cls")
10
-
11
-
12
- class CachedProperty(Generic[T]):
13
- """A property that is only computed once per instance and then replaces
14
- itself with an ordinary attribute. Deleting the attribute resets the
15
- property.
16
- """
17
-
18
- def __init__(self, func: Callable[[Any], T]) -> None:
19
- self.func = func
20
-
21
- def __get__(self, obj: Any, cls: type[Any]) -> Any:
22
- if obj is None:
23
- return self
24
- value = obj.__dict__[self.func.__name__] = self.func(obj)
25
- return value
@@ -1,203 +0,0 @@
1
- """Statement hashing utilities for cache key generation.
2
-
3
- This module provides centralized hashing logic for SQL statements,
4
- including expressions, parameters, filters, and complete SQL objects.
5
- """
6
-
7
- from typing import TYPE_CHECKING, Any, Optional
8
-
9
- from sqlglot import exp
10
-
11
- if TYPE_CHECKING:
12
- from sqlspec.statement.filters import StatementFilter
13
- from sqlspec.statement.sql import SQL
14
-
15
- __all__ = ("hash_expression", "hash_parameters", "hash_sql_statement")
16
-
17
-
18
- def hash_expression(expr: Optional[exp.Expression], _seen: Optional[set[int]] = None) -> int:
19
- """Generate deterministic hash from AST structure.
20
-
21
- Args:
22
- expr: SQLGlot Expression to hash
23
- _seen: Set of seen object IDs to handle circular references
24
-
25
- Returns:
26
- Deterministic hash of the AST structure
27
- """
28
- if expr is None:
29
- return hash(None)
30
-
31
- if _seen is None:
32
- _seen = set()
33
-
34
- expr_id = id(expr)
35
- if expr_id in _seen:
36
- return hash(expr_id)
37
-
38
- _seen.add(expr_id)
39
-
40
- # Build hash from type and args
41
- components: list[Any] = [type(expr).__name__]
42
-
43
- for key, value in sorted(expr.args.items()):
44
- components.extend((key, _hash_value(value, _seen)))
45
-
46
- return hash(tuple(components))
47
-
48
-
49
- def _hash_value(value: Any, _seen: set[int]) -> int:
50
- """Hash different value types consistently.
51
-
52
- Args:
53
- value: Value to hash (can be Expression, list, dict, or primitive)
54
- _seen: Set of seen object IDs to handle circular references
55
-
56
- Returns:
57
- Deterministic hash of the value
58
- """
59
- if isinstance(value, exp.Expression):
60
- return hash_expression(value, _seen)
61
- if isinstance(value, list):
62
- return hash(tuple(_hash_value(v, _seen) for v in value))
63
- if isinstance(value, dict):
64
- items = sorted((k, _hash_value(v, _seen)) for k, v in value.items())
65
- return hash(tuple(items))
66
- if isinstance(value, tuple):
67
- return hash(tuple(_hash_value(v, _seen) for v in value))
68
- # Primitives: str, int, bool, None, etc.
69
- return hash(value)
70
-
71
-
72
- def hash_parameters(
73
- positional_params: Optional[list[Any]] = None,
74
- named_params: Optional[dict[str, Any]] = None,
75
- original_parameters: Optional[Any] = None,
76
- ) -> int:
77
- """Generate hash for SQL parameters.
78
-
79
- Args:
80
- positional_params: List of positional parameters
81
- named_params: Dictionary of named parameters
82
- original_parameters: Original parameters (for execute_many)
83
-
84
- Returns:
85
- Combined hash of all parameters
86
- """
87
- param_hash = 0
88
-
89
- # Hash positional parameters
90
- if positional_params:
91
- # Handle unhashable types like lists
92
- hashable_params = []
93
- for param in positional_params:
94
- if isinstance(param, (list, dict)):
95
- # Convert unhashable types to hashable representations
96
- hashable_params.append(repr(param))
97
- else:
98
- hashable_params.append(param)
99
- param_hash ^= hash(tuple(hashable_params))
100
-
101
- # Hash named parameters
102
- if named_params:
103
- # Handle unhashable types in named params
104
- hashable_items = []
105
- for key, value in sorted(named_params.items()):
106
- if isinstance(value, (list, dict)):
107
- hashable_items.append((key, repr(value)))
108
- else:
109
- hashable_items.append((key, value))
110
- param_hash ^= hash(tuple(hashable_items))
111
-
112
- # Hash original parameters (important for execute_many)
113
- if original_parameters is not None:
114
- if isinstance(original_parameters, list):
115
- # For execute_many, hash the count and first few items to avoid
116
- # performance issues with large parameter sets
117
- param_hash ^= hash(("original_count", len(original_parameters)))
118
- if original_parameters:
119
- # Hash first 3 items as representatives
120
- sample_size = min(3, len(original_parameters))
121
- sample_hash = hash(repr(original_parameters[:sample_size]))
122
- param_hash ^= hash(("original_sample", sample_hash))
123
- else:
124
- param_hash ^= hash(("original", repr(original_parameters)))
125
-
126
- return param_hash
127
-
128
-
129
- def hash_filters(filters: Optional[list["StatementFilter"]] = None) -> int:
130
- """Generate hash for statement filters.
131
-
132
- Args:
133
- filters: List of statement filters
134
-
135
- Returns:
136
- Hash of the filters
137
- """
138
- if not filters:
139
- return 0
140
-
141
- # Use class names and any hashable attributes
142
- filter_components = []
143
- for f in filters:
144
- # Use class name as primary identifier
145
- components: list[Any] = [f.__class__.__name__]
146
-
147
- # Add any hashable attributes if available
148
- if hasattr(f, "__dict__"):
149
- for key, value in sorted(f.__dict__.items()):
150
- try:
151
- # Try to hash the value
152
- hash(value)
153
- components.append((key, value))
154
- except TypeError: # noqa: PERF203
155
- # If not hashable, use repr
156
- components.append((key, repr(value)))
157
-
158
- filter_components.append(tuple(components))
159
-
160
- return hash(tuple(filter_components))
161
-
162
-
163
- def hash_sql_statement(statement: "SQL") -> str:
164
- """Generate a complete cache key for a SQL statement.
165
-
166
- This centralizes all the complex hashing logic that was previously
167
- scattered across different parts of the codebase.
168
-
169
- Args:
170
- statement: SQL statement object
171
-
172
- Returns:
173
- Cache key string
174
- """
175
- from sqlspec.utils.type_guards import is_expression
176
-
177
- # Hash the expression or raw SQL
178
- if is_expression(statement._statement):
179
- expr_hash = hash_expression(statement._statement)
180
- else:
181
- expr_hash = hash(statement._raw_sql)
182
-
183
- # Hash all parameters
184
- param_hash = hash_parameters(
185
- positional_params=statement._positional_params,
186
- named_params=statement._named_params,
187
- original_parameters=statement._original_parameters,
188
- )
189
-
190
- # Hash filters
191
- filter_hash = hash_filters(statement._filters)
192
-
193
- # Combine with other state
194
- state_components = [
195
- expr_hash,
196
- param_hash,
197
- filter_hash,
198
- hash(statement._dialect), # Use _dialect instead of _config.dialect
199
- hash(statement._is_many),
200
- hash(statement._is_script),
201
- ]
202
-
203
- return f"sql:{hash(tuple(state_components))}"
@@ -1,145 +0,0 @@
1
- sqlspec/__init__.py,sha256=SEPpbVPjSiF9kS4FpowO7S0jm8YNMD9FiX-5lrrCbY0,1676
2
- sqlspec/__main__.py,sha256=tdu1ldelPAReNMbglVkTg7SVTEMTtxW1Ik3kLKdUonw,252
3
- sqlspec/__metadata__.py,sha256=hNP3wXvtk8fQVPKGjRLpZ9mP-gaPJqzrmgm3UqpDIXQ,460
4
- sqlspec/_serialization.py,sha256=7zox4G9zIps-DCdIEwYs4gwALfEOy1g_sWS4r5kpzO8,2604
5
- sqlspec/_sql.py,sha256=zqMtVWBZzbnNErB8VyJkjDCPq0RNkhGUPA2ZCOtzmGo,35759
6
- sqlspec/_typing.py,sha256=Vn1CTCfedAHZV3pKZP-l_mPw9pTxesCzRKVRypzNY_k,17903
7
- sqlspec/base.py,sha256=a7adbCUzohf1MU-iP0TxazGsk9fsJhJmxuFKNWkgC6o,18355
8
- sqlspec/cli.py,sha256=V8dYi286yXsrZg-w8vsh9OWKngViYCQJejujLjoV5co,9980
9
- sqlspec/config.py,sha256=IfjXcHFXmGseUcMsf4eEHgeh7oOc2EEIg34R7BC62UI,13144
10
- sqlspec/exceptions.py,sha256=T2h-tCN05sRKSpXDjPtYXvNgwInNVzTpha1PIkSUROQ,14168
11
- sqlspec/loader.py,sha256=sR8hSbxbuo3QFC0YoIaT9Xf05QNqtG_WX912IG56kas,15353
12
- sqlspec/protocols.py,sha256=Uum9tliNG6MOcXBK6KRBmkWGikhEAzH2qIAgZITXd1U,18094
13
- sqlspec/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- sqlspec/typing.py,sha256=qkUcvruNzRUUfpv4AkbQezpy9SokhVHXlMbfFNwQlnU,8721
15
- sqlspec/adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
- sqlspec/adapters/adbc/__init__.py,sha256=v9bs7501PgEyzR1XIsEpE2Wdrj9DOYkZ4grysw72UXk,218
17
- sqlspec/adapters/adbc/config.py,sha256=LjcVqN3DUOxxz7u2j6o3DhIq4srS7TJrcUqQ86FFBGs,19898
18
- sqlspec/adapters/adbc/driver.py,sha256=xHjeDukF8P9y491037kF7pt3mleb4jBHh8yIeiDG36c,17940
19
- sqlspec/adapters/adbc/transformers.py,sha256=97L-5z278TSkjkK0fucDYb5i5G4WZheMkU8hlF53_Fk,4880
20
- sqlspec/adapters/aiosqlite/__init__.py,sha256=7wPmhXQeu4jRi-LZzPxAPTdgRmgmyqCn9U-4wnCWoLM,258
21
- sqlspec/adapters/aiosqlite/config.py,sha256=Rg2RduE5wLM7JkEITtQg6kJQ2n6YVgKsl0S-io-18n0,7246
22
- sqlspec/adapters/aiosqlite/driver.py,sha256=40c3YVO9UcnUDSlqwEpuI2CNMzsufR4WVGeUKBMcnMY,12176
23
- sqlspec/adapters/asyncmy/__init__.py,sha256=zYpebEt_PrNCifLcqXiCcWVm0Zl-LvWbFDromWwSTw8,270
24
- sqlspec/adapters/asyncmy/config.py,sha256=jYeF80DKdd5arS4kSPz4hcpLnzv1WgQa5s9DmEy02OU,10155
25
- sqlspec/adapters/asyncmy/driver.py,sha256=-rZcBj-gbJ6r3qZQzltqfOHyA70iSg9r4XtieuLliGg,10571
26
- sqlspec/adapters/asyncpg/__init__.py,sha256=svnbKlOin8jRL88AdAqflBEU-WEAzp0Thc2y50QsxIo,310
27
- sqlspec/adapters/asyncpg/config.py,sha256=8fKZ55YynepP7eC6A0Z3jpXcGVoSuLW9yGUH04O2a4A,11857
28
- sqlspec/adapters/asyncpg/driver.py,sha256=sfoxCkHzJvRuE5kNRUH--zCecf2kcqNnDz9OIYsLv54,18629
29
- sqlspec/adapters/bigquery/__init__.py,sha256=fWRH-BoCNX4rYwhU2DK64cXWpfkYpWIExddJAti0bxM,250
30
- sqlspec/adapters/bigquery/config.py,sha256=z6FFWUvk3AdXcPRmOYf1lg-UlBqCq8EEDcxDz8-lI0Y,15773
31
- sqlspec/adapters/bigquery/driver.py,sha256=zUZGGOuzQ4M4Ekt0H59UUQvX8AT4i-YUalkp2Ql6lKo,30956
32
- sqlspec/adapters/duckdb/__init__.py,sha256=I1f6szfpKKrq6WhyDoUXD3i3NN4yjsh94_fhP1URI5M,351
33
- sqlspec/adapters/duckdb/config.py,sha256=5k2fgJN1yTZuq4I0VRyIaiMno507sd6R_sl5G8sgpsI,18974
34
- sqlspec/adapters/duckdb/driver.py,sha256=499tJ9xLj_09MDmnhuGHPiknzT7OFhCmorxB1yHXvXs,19051
35
- sqlspec/adapters/oracledb/__init__.py,sha256=nn3whn0UyBThoXnE1-5_byVuc9PJjvB2P896p7LpNZI,474
36
- sqlspec/adapters/oracledb/config.py,sha256=IRIwiWOo0BWoilGxtkrGNZEzVc8o8JqBQXSWdQoKgK8,22017
37
- sqlspec/adapters/oracledb/driver.py,sha256=S7AyrOk1YbtGsdwrRJJi9-iI2hsBBE8rE67Tlw2kXMY,25790
38
- sqlspec/adapters/psqlpy/__init__.py,sha256=dp0-96V4SAbNEvOqlJ8PWEyJMYzZGElVoyneZqJ-fbQ,297
39
- sqlspec/adapters/psqlpy/config.py,sha256=7sM-RGEVpkJLHrX7DemlreL7spJdcrVZ0dDQSMDyt4k,15309
40
- sqlspec/adapters/psqlpy/driver.py,sha256=GifEdVZKgqKaN0pajWCpZVvW0bKNRXeMZUhcNu-tetQ,10839
41
- sqlspec/adapters/psycopg/__init__.py,sha256=ukkCUPrJPyAG78v4rOqcK4WZDs26PeB9Ra9qkFrGJ3E,484
42
- sqlspec/adapters/psycopg/config.py,sha256=PAKtLZHQjGI3oCzoUL5jd0pNrOEdFTtRPsr9-kRmiqo,26300
43
- sqlspec/adapters/psycopg/driver.py,sha256=lFoqYgG19lAA32_zjkx2yzYosBoINdnWG20KLDz2a3Q,42123
44
- sqlspec/adapters/sqlite/__init__.py,sha256=1lYrJ-DojUAOvXMoZRUJNEVyMmYhO41hMJnDWCEeXlw,234
45
- sqlspec/adapters/sqlite/config.py,sha256=ab9gYZvisBMO-lcB93ufmNn8lajs0-ZnFSrCtghWXPY,5757
46
- sqlspec/adapters/sqlite/driver.py,sha256=Joov0hv709BrkNFFEyBC8saa3MgAM8uW0Du-kQxXedk,13343
47
- sqlspec/driver/__init__.py,sha256=0udRS5IlJ17HzOCvzapG8c_88yAwTQri1XLD_3fZxZU,671
48
- sqlspec/driver/_async.py,sha256=UYNjJ70kcIeRWfMBfXqBeVhtqGP9QhmANT2bR2VkRH8,10594
49
- sqlspec/driver/_common.py,sha256=ohRsk4RmwHO0qLuDbjUpbXB9URC5CWrUOE-lSkFW5JI,15831
50
- sqlspec/driver/_sync.py,sha256=yivXeRRIFpWkS62Kbi-pRDYidhh3epdJTbjqhLxwFNo,10434
51
- sqlspec/driver/connection.py,sha256=zKP2p-VLxN07IPfOIBKMRELHN7ZMjmRVUKBgSW-6RQg,6610
52
- sqlspec/driver/parameters.py,sha256=hxS3K6oICM8mtvRI3429jHPlJJL524b26wU3XFiFlKA,3995
53
- sqlspec/driver/mixins/__init__.py,sha256=fvzM9gVjjnfUUTZ1TaDv-tEnxS1X-lxYiH7kZvBptzk,922
54
- sqlspec/driver/mixins/_cache.py,sha256=GmQZLId_RdJX9BpEnVgWYWVmii3yjqGdnA6p1yawo08,3990
55
- sqlspec/driver/mixins/_csv_writer.py,sha256=-uRe7QZRWtdZTFG3Fiej4Ia8EyQcjYr7oPT6wb0qTOc,2716
56
- sqlspec/driver/mixins/_pipeline.py,sha256=71OyeDxAQc7KNGFqObMYUU_4LBCMvsm0qCZDiHEDwOI,19548
57
- sqlspec/driver/mixins/_query_tools.py,sha256=c12s9gmOhAmgvIbK301SllOz89svgOXau5PwwnNu_TY,29186
58
- sqlspec/driver/mixins/_result_utils.py,sha256=JzMpBXLxn9POMUnqaShhU1qc8TlHwCEy8H5vqnpNnXE,5672
59
- sqlspec/driver/mixins/_sql_translator.py,sha256=wMv8FtGmulewCTFMdiQhlkiTz8hf7PKy_8VKP55aTuU,1499
60
- sqlspec/driver/mixins/_storage.py,sha256=YNpkp_ZLXCIwJjosaUJXEFHhi8QGtgP1lKKop_YSWPc,38120
61
- sqlspec/driver/mixins/_type_coercion.py,sha256=Al5IhsYzCnauOYW9o-STZ9DbIi9u8qYHJDeNDppN5q4,4558
62
- sqlspec/extensions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
- sqlspec/extensions/aiosql/__init__.py,sha256=-9cefc9pYPf9vCgALoB-y1DtmcgRjKe2azfl6RIarAA,414
64
- sqlspec/extensions/aiosql/adapter.py,sha256=jLOMftHnUR42khs63aYFS2TYa6udUPf4WrYbgHoUajg,16522
65
- sqlspec/extensions/litestar/__init__.py,sha256=tOmQ7RHSWOot7p30gk0efxxuP0OCq1opyyZqNmQY7FE,320
66
- sqlspec/extensions/litestar/_utils.py,sha256=o-FuUj1_WkDrLxQxiP6hXDak66XfyRP3QLyEVKrIRjI,1954
67
- sqlspec/extensions/litestar/cli.py,sha256=NYjPIWe0jESBgS0AG-3bdpcC5YM4RmZeeeTeFQK5Yqo,1362
68
- sqlspec/extensions/litestar/config.py,sha256=vLXM425tCV3IbJiNO1ZG90ctjBTb9oQCuLsqCaUYmo8,4685
69
- sqlspec/extensions/litestar/handlers.py,sha256=bVoWmHhCsHZkXZXYHE23yDaJlRoydfvU-boJjA3BSLE,10478
70
- sqlspec/extensions/litestar/plugin.py,sha256=SCkO6_dq6fiISXzNWqQTinbNayCMqzQ33EU9QhMWyAg,5539
71
- sqlspec/extensions/litestar/providers.py,sha256=wUGqPeNV58rPqL1iwDQg439C4y-Zg-eXEogjeFsv0iQ,21021
72
- sqlspec/migrations/__init__.py,sha256=-Shsli3g2C7e8adYVrOwBskTb7iESiAy4NChvcueZkY,776
73
- sqlspec/migrations/base.py,sha256=kvv_Vi4-ZV4_HY0Ug2cZdL3V7bkMSCKyzqus3kOyKyo,11894
74
- sqlspec/migrations/commands.py,sha256=1Q_rO21uruurAdAxtw81PkH28iUSmay1Zi87kSYwRRY,19672
75
- sqlspec/migrations/runner.py,sha256=CH9zh-BurgkgmSXU-dHdzl0Y1JqWfWJuYJ7SUtW89_0,6893
76
- sqlspec/migrations/tracker.py,sha256=CLsqb6dy34WMvkhvKVBkj8s07FhAnWsgQ77k16bz_s4,5412
77
- sqlspec/migrations/utils.py,sha256=NKyJbfHlcCMfzJzuQc9pItvoYPt4lG-mG8u4oBmLo6o,2614
78
- sqlspec/statement/__init__.py,sha256=NDvdrpr1EqAZXp4HmhTVaRnWVscahPSHpmSO8DHSoMY,536
79
- sqlspec/statement/cache.py,sha256=eS0vi5icd2TWOF1bFL2XKemF0NBW2dKMHNqSCCtwiF0,1387
80
- sqlspec/statement/filters.py,sha256=CmgGtQ7W5gJHnskpWXXJ7jdVmtoEGioHRTPntAEil2E,23478
81
- sqlspec/statement/parameters.py,sha256=SOXN7tT5KzOHFj4mlMMJMx_HanoBvzOd7ywBmMYPQAc,39236
82
- sqlspec/statement/result.py,sha256=-yARFxg7Wsm8nAeHMpnJ58OLd2VujFiZx29wfo7eFVs,14514
83
- sqlspec/statement/splitter.py,sha256=mCzJsNEtJFk4A0FdTELkG_qOggRFCQC_ZEJisVo9orY,24111
84
- sqlspec/statement/sql.py,sha256=j85wR8EsgPjNkG5BokFr5RyYd06DpkDX6gSc8u7S0oA,75745
85
- sqlspec/statement/builder/__init__.py,sha256=sDC8HQ-LnfqzF-XmTT0YErp8wTaJiIu5YP3pdhb2MgY,1618
86
- sqlspec/statement/builder/_base.py,sha256=DArCuNwDXslt73Jk5Io3WqUP1ZXA0e4cUXtzFjvQ5g4,14738
87
- sqlspec/statement/builder/_column.py,sha256=0yTC00IMRVVuOXYXdz2Uy7BmtLe48apIY1N6oSUbp0s,12918
88
- sqlspec/statement/builder/_ddl.py,sha256=6VfhavHfS4vONRPXvQl2TohizhJNGUTwWGnN9XWqT1o,51521
89
- sqlspec/statement/builder/_ddl_utils.py,sha256=6BEcVuSAt0mHPuT8QZQJapWorPxgMzaEX0PxKeYxMQg,4327
90
- sqlspec/statement/builder/_delete.py,sha256=fDuLaQIcYAJEZrQ0tdnuSmo2DcbHPiOej_YceOBKI1c,2882
91
- sqlspec/statement/builder/_insert.py,sha256=6LARJr81LAR418DNlzsy8qPErER14a-Dy0Cs9UZK20w,10130
92
- sqlspec/statement/builder/_merge.py,sha256=xjyKDqU7ABb0gA6vMoQXJGTPsUkk1j6Siohj9wHWGaE,2784
93
- sqlspec/statement/builder/_parsing_utils.py,sha256=dxvbSkYMAHbHJx3nMU_4S2baEJ6Vp1TIJpl7BehAlpY,5841
94
- sqlspec/statement/builder/_select.py,sha256=RSVTloFC7v0KYcc-zrToLiZTmO8D18hCZQ1UCs4e4NU,8527
95
- sqlspec/statement/builder/_update.py,sha256=d-epAsZn3HKU_QNWIP6X6dlXZTokSwLRMbN86pFyN_8,6247
96
- sqlspec/statement/builder/mixins/__init__.py,sha256=W5xXHE315-vAg76gbRBsQmYu72XY7wZ2vTbXM1xR_tk,2002
97
- sqlspec/statement/builder/mixins/_cte_and_set_ops.py,sha256=VH7a6rZ29C7z30z_z-joRu2XVP4jsNqtQzHpYyfQ2w0,8911
98
- sqlspec/statement/builder/mixins/_delete_operations.py,sha256=0f8ZZMFx5b53EUx1oF264owLb6aWP45naeB6g-BZQys,1068
99
- sqlspec/statement/builder/mixins/_insert_operations.py,sha256=93kVOOCZBxMAN0uILNejFYIDrBg04NsPIvz-cTTGKzA,5415
100
- sqlspec/statement/builder/mixins/_join_operations.py,sha256=lSGFtq_KJ985SCmUKmIx-4NwniIwQIVmLJYryF5mtc4,5658
101
- sqlspec/statement/builder/mixins/_merge_operations.py,sha256=RrjyueCzxOhqyJSrJQlL89LkJyKES2-kMsfKy-w89XQ,16846
102
- sqlspec/statement/builder/mixins/_order_limit_operations.py,sha256=7UOvQrRwTnOpBAXTGV509aqNj63J5UhuMIHYBjLh8vE,4538
103
- sqlspec/statement/builder/mixins/_pivot_operations.py,sha256=yyKxBHaw9ApO4mwALo3ulohT08Z3kh07Mtst4DMULk4,6181
104
- sqlspec/statement/builder/mixins/_select_operations.py,sha256=WM_wZPdKy8m-kAlfrMECFX1c2U5sZk-qRH_pTAMlUW4,25433
105
- sqlspec/statement/builder/mixins/_update_operations.py,sha256=h9yMqIfLJvZlv8uJBZktqT3pJyu62DxPKffSedS0NuI,7508
106
- sqlspec/statement/builder/mixins/_where_clause.py,sha256=yBRXq0pPMJKvpbaGI0FLZQNE2gw9ND_wofXTnsSXtZw,27018
107
- sqlspec/statement/pipelines/__init__.py,sha256=aN8GtpqtjTKALANNm8KH5Adq9ijP1_Kq_I9s0S7t0QI,7343
108
- sqlspec/statement/pipelines/context.py,sha256=ZL_1XvkPxadUtRijOh-pJ7jOkkikpNt8lymc20Jnmv8,3915
109
- sqlspec/statement/pipelines/analyzers/__init__.py,sha256=RY7W0AiWG-8qdrTmRSGlEofjrPPJCJUnNK-LRukKt5Q,330
110
- sqlspec/statement/pipelines/analyzers/_analyzer.py,sha256=0_FDty6H_4JvQwee_NrzmptX9-VdhyAePXUstuq4MU4,27474
111
- sqlspec/statement/pipelines/transformers/__init__.py,sha256=Kh4CE_izdwEsSF7Is6_6NXqtNmbLm5x5OWdnlUGp9ok,480
112
- sqlspec/statement/pipelines/transformers/_expression_simplifier.py,sha256=-imYcKeYcE66Uj04k-QywCcjvuZmvha_2H6rTy7wdSo,3376
113
- sqlspec/statement/pipelines/transformers/_literal_parameterizer.py,sha256=N6a2lMGBHXcoHuSySY_9JhObNkPWabUBpR_25ZCnv0w,57183
114
- sqlspec/statement/pipelines/transformers/_remove_comments_and_hints.py,sha256=-gM6VnlhNtQzSbQq44hQ5mhaPqNsjzeCaTgXTycgkOk,3008
115
- sqlspec/statement/pipelines/validators/__init__.py,sha256=cdlwdLhOT2OwTbueIsA7bfRG2b6y-j7dw9pMzl5AP0M,747
116
- sqlspec/statement/pipelines/validators/_dml_safety.py,sha256=s7Eee60u6w0K35vz4GVAwsB5Xy8zUqWhiIx_pRVfERo,10585
117
- sqlspec/statement/pipelines/validators/_parameter_style.py,sha256=Dj85rkH1GyO4dRDgix-4CR9i3sTN_dO4pfmnIe8ORmg,17810
118
- sqlspec/statement/pipelines/validators/_performance.py,sha256=HjXi24xh5jAHoP-tRZisu21E6ZnE1il4nQOMgRc80qo,26275
119
- sqlspec/statement/pipelines/validators/_security.py,sha256=3WuH9n4j-VKOgmQnZvFIoI4MieRBVShtOZvXl2SJsyk,42103
120
- sqlspec/storage/__init__.py,sha256=ZS8rmhN8e_h_df-Oab64Jh4EbddElBbmrtHkuO-KqOE,703
121
- sqlspec/storage/capabilities.py,sha256=fsnQ9jbjHBFvd3P9yWAzfjPpVYUGcsTtR6fm5iOCvXY,3054
122
- sqlspec/storage/registry.py,sha256=lv9pGt6vt0tDNAlao9qA7rSsFsCZtaOr48aG15IoMFA,10976
123
- sqlspec/storage/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
124
- sqlspec/storage/backends/base.py,sha256=34XYQuz1tQ-q_ZZwOz-Kimgvl088SR3VUYJoA-STslc,6350
125
- sqlspec/storage/backends/fsspec.py,sha256=wo40MwtEjNTc73ZNTCmNC2-Img0zldUCaFGh9H3BZuE,14715
126
- sqlspec/storage/backends/obstore.py,sha256=FnoVzTzzNn5NRXR8GgETqD3Rq9C5EWAmfWmY4JDFVJE,21214
127
- sqlspec/utils/__init__.py,sha256=3nF4cd2RQX5SoCILETafwj-Vn6FVu7PCXtZhp6CbpL0,262
128
- sqlspec/utils/cached_property.py,sha256=Sw_JZxfChSJu72gvYBJPF-89FyyIJAPf-1ETlDq-F2E,648
129
- sqlspec/utils/correlation.py,sha256=4jqpjMivxI1tQ13Ed-P0hLdFHUKUQ9GlvIM69_HOlS4,4370
130
- sqlspec/utils/deprecation.py,sha256=zrmb_eKRlLWVA6dWrjUbN3Vz6D3_-Z_15Ixk4H-sDRk,3850
131
- sqlspec/utils/fixtures.py,sha256=q_Pghpmw2VgJ9P0TfkyjSF5PvdaD5Y2Laha0Bj4IDrA,1838
132
- sqlspec/utils/logging.py,sha256=56a5tqx4jfTqm20WDyj5c7Dy-h_O0KambIKOMr1-Oms,3780
133
- sqlspec/utils/module_loader.py,sha256=9LcmEhy4T0jgkCaDVkxX47PSgJOMeJ8IV67yXEWBp-U,3074
134
- sqlspec/utils/serializers.py,sha256=TKsRryRcYMnb8Z8MGkYGClIxcYvC8CW7MsrPQTJqEcY,154
135
- sqlspec/utils/singleton.py,sha256=KZ7481tlDAxq6gcAlpULVqPLNc9P0XkHOEp7hfWIHcI,1096
136
- sqlspec/utils/statement_hashing.py,sha256=Y5OKJNucINCqXeRL9d2nGRzGuIlkK5RgK40QRZfedKU,6396
137
- sqlspec/utils/sync_tools.py,sha256=ckP1_uLh40C2pDvdc4FsR4NkmZVa1zEB8jhUxPLIuAI,8726
138
- sqlspec/utils/text.py,sha256=DpEnRuSDv3acp4VQQGEOQixlJnLGZsN5YBws4rkI6t0,4756
139
- sqlspec/utils/type_guards.py,sha256=0sDlkB4HVl0uVA4asDNQgbGTu9Q7YaUrGllhneOi0LY,26755
140
- sqlspec-0.14.1.dist-info/METADATA,sha256=-AljfX5325tdemtqBiV88XvctU2KTuBPlia6TFem-dI,16663
141
- sqlspec-0.14.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
142
- sqlspec-0.14.1.dist-info/entry_points.txt,sha256=G-ZqY1Nuuw3Iys7nXw23f6ILenk_Lt47VdK2mhJCWHg,53
143
- sqlspec-0.14.1.dist-info/licenses/LICENSE,sha256=MdujfZ6l5HuLz4mElxlu049itenOR3gnhN1_Nd3nVcM,1078
144
- sqlspec-0.14.1.dist-info/licenses/NOTICE,sha256=Lyir8ozXWov7CyYS4huVaOCNrtgL17P-bNV-5daLntQ,1634
145
- sqlspec-0.14.1.dist-info/RECORD,,