sqlspec 0.9.0__py3-none-any.whl → 0.9.1__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.

@@ -1,9 +1,9 @@
1
1
  import contextlib
2
2
  import logging
3
3
  import re
4
- from collections.abc import Generator
4
+ from collections.abc import Generator, Sequence
5
5
  from contextlib import contextmanager
6
- from typing import TYPE_CHECKING, Any, ClassVar, Optional, Union, cast
6
+ from typing import TYPE_CHECKING, Any, ClassVar, Optional, Union, cast, overload
7
7
 
8
8
  from adbc_driver_manager.dbapi import Connection, Cursor
9
9
 
@@ -160,6 +160,28 @@ class AdbcDriver(SyncArrowBulkOperationsMixin["Connection"], SyncDriverAdapterPr
160
160
  stmt = SQLStatement(sql=sql, parameters=parameters, dialect=self.dialect, kwargs=kwargs or None)
161
161
  return stmt.process()
162
162
 
163
+ @overload
164
+ def select(
165
+ self,
166
+ sql: str,
167
+ parameters: "Optional[StatementParameterType]" = None,
168
+ /,
169
+ *,
170
+ connection: "Optional[Connection]" = None,
171
+ schema_type: None = None,
172
+ **kwargs: Any,
173
+ ) -> "Sequence[dict[str, Any]]": ...
174
+ @overload
175
+ def select(
176
+ self,
177
+ sql: str,
178
+ parameters: "Optional[StatementParameterType]" = None,
179
+ /,
180
+ *,
181
+ connection: "Optional[Connection]" = None,
182
+ schema_type: "type[ModelDTOT]",
183
+ **kwargs: Any,
184
+ ) -> "Sequence[ModelDTOT]": ...
163
185
  def select(
164
186
  self,
165
187
  sql: str,
@@ -169,7 +191,7 @@ class AdbcDriver(SyncArrowBulkOperationsMixin["Connection"], SyncDriverAdapterPr
169
191
  connection: Optional["Connection"] = None,
170
192
  schema_type: "Optional[type[ModelDTOT]]" = None,
171
193
  **kwargs: Any,
172
- ) -> "list[Union[ModelDTOT, dict[str, Any]]]":
194
+ ) -> "Sequence[Union[ModelDTOT, dict[str, Any]]]":
173
195
  """Fetch data from the database.
174
196
 
175
197
  Returns:
@@ -189,6 +211,28 @@ class AdbcDriver(SyncArrowBulkOperationsMixin["Connection"], SyncDriverAdapterPr
189
211
  return [cast("ModelDTOT", schema_type(**dict(zip(column_names, row)))) for row in results] # pyright: ignore[reportUnknownArgumentType,reportUnknownVariableType]
190
212
  return [dict(zip(column_names, row)) for row in results] # pyright: ignore[reportUnknownArgumentType,reportUnknownVariableType]
191
213
 
214
+ @overload
215
+ def select_one(
216
+ self,
217
+ sql: str,
218
+ parameters: "Optional[StatementParameterType]" = None,
219
+ /,
220
+ *,
221
+ connection: "Optional[Connection]" = None,
222
+ schema_type: None = None,
223
+ **kwargs: Any,
224
+ ) -> "dict[str, Any]": ...
225
+ @overload
226
+ def select_one(
227
+ self,
228
+ sql: str,
229
+ parameters: "Optional[StatementParameterType]" = None,
230
+ /,
231
+ *,
232
+ connection: "Optional[Connection]" = None,
233
+ schema_type: "type[ModelDTOT]",
234
+ **kwargs: Any,
235
+ ) -> "ModelDTOT": ...
192
236
  def select_one(
193
237
  self,
194
238
  sql: str,
@@ -215,6 +259,28 @@ class AdbcDriver(SyncArrowBulkOperationsMixin["Connection"], SyncDriverAdapterPr
215
259
  return dict(zip(column_names, result)) # pyright: ignore[reportUnknownArgumentType, reportUnknownVariableType]
216
260
  return schema_type(**dict(zip(column_names, result))) # type: ignore[return-value]
217
261
 
262
+ @overload
263
+ def select_one_or_none(
264
+ self,
265
+ sql: str,
266
+ parameters: "Optional[StatementParameterType]" = None,
267
+ /,
268
+ *,
269
+ connection: "Optional[Connection]" = None,
270
+ schema_type: None = None,
271
+ **kwargs: Any,
272
+ ) -> "Optional[dict[str, Any]]": ...
273
+ @overload
274
+ def select_one_or_none(
275
+ self,
276
+ sql: str,
277
+ parameters: "Optional[StatementParameterType]" = None,
278
+ /,
279
+ *,
280
+ connection: "Optional[Connection]" = None,
281
+ schema_type: "type[ModelDTOT]",
282
+ **kwargs: Any,
283
+ ) -> "Optional[ModelDTOT]": ...
218
284
  def select_one_or_none(
219
285
  self,
220
286
  sql: str,
@@ -242,6 +308,28 @@ class AdbcDriver(SyncArrowBulkOperationsMixin["Connection"], SyncDriverAdapterPr
242
308
  return dict(zip(column_names, result)) # pyright: ignore[reportUnknownArgumentType, reportUnknownVariableType]
243
309
  return schema_type(**dict(zip(column_names, result))) # type: ignore[return-value]
244
310
 
311
+ @overload
312
+ def select_value(
313
+ self,
314
+ sql: str,
315
+ parameters: "Optional[StatementParameterType]" = None,
316
+ /,
317
+ *,
318
+ connection: "Optional[Connection]" = None,
319
+ schema_type: None = None,
320
+ **kwargs: Any,
321
+ ) -> "Any": ...
322
+ @overload
323
+ def select_value(
324
+ self,
325
+ sql: str,
326
+ parameters: "Optional[StatementParameterType]" = None,
327
+ /,
328
+ *,
329
+ connection: "Optional[Connection]" = None,
330
+ schema_type: "type[T]",
331
+ **kwargs: Any,
332
+ ) -> "T": ...
245
333
  def select_value(
246
334
  self,
247
335
  sql: str,
@@ -267,6 +355,28 @@ class AdbcDriver(SyncArrowBulkOperationsMixin["Connection"], SyncDriverAdapterPr
267
355
  return result[0] # pyright: ignore[reportUnknownVariableType]
268
356
  return schema_type(result[0]) # type: ignore[call-arg]
269
357
 
358
+ @overload
359
+ def select_value_or_none(
360
+ self,
361
+ sql: str,
362
+ parameters: "Optional[StatementParameterType]" = None,
363
+ /,
364
+ *,
365
+ connection: "Optional[Connection]" = None,
366
+ schema_type: None = None,
367
+ **kwargs: Any,
368
+ ) -> "Optional[Any]": ...
369
+ @overload
370
+ def select_value_or_none(
371
+ self,
372
+ sql: str,
373
+ parameters: "Optional[StatementParameterType]" = None,
374
+ /,
375
+ *,
376
+ connection: "Optional[Connection]" = None,
377
+ schema_type: "type[T]",
378
+ **kwargs: Any,
379
+ ) -> "Optional[T]": ...
270
380
  def select_value_or_none(
271
381
  self,
272
382
  sql: str,
@@ -314,6 +424,28 @@ class AdbcDriver(SyncArrowBulkOperationsMixin["Connection"], SyncDriverAdapterPr
314
424
  cursor.execute(sql, parameters) # pyright: ignore[reportUnknownMemberType]
315
425
  return cursor.rowcount if hasattr(cursor, "rowcount") else -1
316
426
 
427
+ @overload
428
+ def insert_update_delete_returning(
429
+ self,
430
+ sql: str,
431
+ parameters: "Optional[StatementParameterType]" = None,
432
+ /,
433
+ *,
434
+ connection: "Optional[Connection]" = None,
435
+ schema_type: None = None,
436
+ **kwargs: Any,
437
+ ) -> "dict[str, Any]": ...
438
+ @overload
439
+ def insert_update_delete_returning(
440
+ self,
441
+ sql: str,
442
+ parameters: "Optional[StatementParameterType]" = None,
443
+ /,
444
+ *,
445
+ connection: "Optional[Connection]" = None,
446
+ schema_type: "type[ModelDTOT]",
447
+ **kwargs: Any,
448
+ ) -> "ModelDTOT": ...
317
449
  def insert_update_delete_returning(
318
450
  self,
319
451
  sql: str,
@@ -1,10 +1,10 @@
1
1
  from contextlib import asynccontextmanager
2
- from typing import TYPE_CHECKING, Any, Optional, Union, cast
2
+ from typing import TYPE_CHECKING, Any, Optional, Union, cast, overload
3
3
 
4
4
  from sqlspec.base import AsyncDriverAdapterProtocol, T
5
5
 
6
6
  if TYPE_CHECKING:
7
- from collections.abc import AsyncGenerator
7
+ from collections.abc import AsyncGenerator, Sequence
8
8
 
9
9
  from aiosqlite import Connection, Cursor
10
10
 
@@ -34,6 +34,29 @@ class AiosqliteDriver(AsyncDriverAdapterProtocol["Connection"]):
34
34
  finally:
35
35
  await cursor.close()
36
36
 
37
+ # --- Public API Methods --- #
38
+ @overload
39
+ async def select(
40
+ self,
41
+ sql: str,
42
+ parameters: "Optional[StatementParameterType]" = None,
43
+ /,
44
+ *,
45
+ connection: "Optional[Connection]" = None,
46
+ schema_type: None = None,
47
+ **kwargs: Any,
48
+ ) -> "Sequence[dict[str, Any]]": ...
49
+ @overload
50
+ async def select(
51
+ self,
52
+ sql: str,
53
+ parameters: "Optional[StatementParameterType]" = None,
54
+ /,
55
+ *,
56
+ connection: "Optional[Connection]" = None,
57
+ schema_type: "type[ModelDTOT]",
58
+ **kwargs: Any,
59
+ ) -> "Sequence[ModelDTOT]": ...
37
60
  async def select(
38
61
  self,
39
62
  sql: str,
@@ -43,7 +66,7 @@ class AiosqliteDriver(AsyncDriverAdapterProtocol["Connection"]):
43
66
  connection: Optional["Connection"] = None,
44
67
  schema_type: "Optional[type[ModelDTOT]]" = None,
45
68
  **kwargs: Any,
46
- ) -> "list[Union[ModelDTOT, dict[str, Any]]]":
69
+ ) -> "Sequence[Union[ModelDTOT, dict[str, Any]]]":
47
70
  """Fetch data from the database.
48
71
 
49
72
  Returns:
@@ -61,6 +84,28 @@ class AiosqliteDriver(AsyncDriverAdapterProtocol["Connection"]):
61
84
  return [dict(zip(column_names, row)) for row in results] # pyright: ignore[reportUnknownArgumentType]
62
85
  return [cast("ModelDTOT", schema_type(**dict(zip(column_names, row)))) for row in results] # pyright: ignore[reportUnknownArgumentType]
63
86
 
87
+ @overload
88
+ async def select_one(
89
+ self,
90
+ sql: str,
91
+ parameters: "Optional[StatementParameterType]" = None,
92
+ /,
93
+ *,
94
+ connection: "Optional[Connection]" = None,
95
+ schema_type: None = None,
96
+ **kwargs: Any,
97
+ ) -> "dict[str, Any]": ...
98
+ @overload
99
+ async def select_one(
100
+ self,
101
+ sql: str,
102
+ parameters: "Optional[StatementParameterType]" = None,
103
+ /,
104
+ *,
105
+ connection: "Optional[Connection]" = None,
106
+ schema_type: "type[ModelDTOT]",
107
+ **kwargs: Any,
108
+ ) -> "ModelDTOT": ...
64
109
  async def select_one(
65
110
  self,
66
111
  sql: str,
@@ -87,6 +132,28 @@ class AiosqliteDriver(AsyncDriverAdapterProtocol["Connection"]):
87
132
  return dict(zip(column_names, result)) # pyright: ignore[reportUnknownArgumentType, reportUnknownVariableType]
88
133
  return cast("ModelDTOT", schema_type(**dict(zip(column_names, result)))) # pyright: ignore[reportUnknownArgumentType]
89
134
 
135
+ @overload
136
+ async def select_one_or_none(
137
+ self,
138
+ sql: str,
139
+ parameters: "Optional[StatementParameterType]" = None,
140
+ /,
141
+ *,
142
+ connection: "Optional[Connection]" = None,
143
+ schema_type: None = None,
144
+ **kwargs: Any,
145
+ ) -> "Optional[dict[str, Any]]": ...
146
+ @overload
147
+ async def select_one_or_none(
148
+ self,
149
+ sql: str,
150
+ parameters: "Optional[StatementParameterType]" = None,
151
+ /,
152
+ *,
153
+ connection: "Optional[Connection]" = None,
154
+ schema_type: "type[ModelDTOT]",
155
+ **kwargs: Any,
156
+ ) -> "Optional[ModelDTOT]": ...
90
157
  async def select_one_or_none(
91
158
  self,
92
159
  sql: str,
@@ -114,6 +181,28 @@ class AiosqliteDriver(AsyncDriverAdapterProtocol["Connection"]):
114
181
  return dict(zip(column_names, result)) # pyright: ignore[reportUnknownArgumentType, reportUnknownVariableType]
115
182
  return cast("ModelDTOT", schema_type(**dict(zip(column_names, result)))) # pyright: ignore[reportUnknownArgumentType]
116
183
 
184
+ @overload
185
+ async def select_value(
186
+ self,
187
+ sql: str,
188
+ parameters: "Optional[StatementParameterType]" = None,
189
+ /,
190
+ *,
191
+ connection: "Optional[Connection]" = None,
192
+ schema_type: None = None,
193
+ **kwargs: Any,
194
+ ) -> "Any": ...
195
+ @overload
196
+ async def select_value(
197
+ self,
198
+ sql: str,
199
+ parameters: "Optional[StatementParameterType]" = None,
200
+ /,
201
+ *,
202
+ connection: "Optional[Connection]" = None,
203
+ schema_type: "type[T]",
204
+ **kwargs: Any,
205
+ ) -> "T": ...
117
206
  async def select_value(
118
207
  self,
119
208
  sql: str,
@@ -139,6 +228,28 @@ class AiosqliteDriver(AsyncDriverAdapterProtocol["Connection"]):
139
228
  return result[0]
140
229
  return schema_type(result[0]) # type: ignore[call-arg]
141
230
 
231
+ @overload
232
+ async def select_value_or_none(
233
+ self,
234
+ sql: str,
235
+ parameters: "Optional[StatementParameterType]" = None,
236
+ /,
237
+ *,
238
+ connection: "Optional[Connection]" = None,
239
+ schema_type: None = None,
240
+ **kwargs: Any,
241
+ ) -> "Optional[Any]": ...
242
+ @overload
243
+ async def select_value_or_none(
244
+ self,
245
+ sql: str,
246
+ parameters: "Optional[StatementParameterType]" = None,
247
+ /,
248
+ *,
249
+ connection: "Optional[Connection]" = None,
250
+ schema_type: "type[T]",
251
+ **kwargs: Any,
252
+ ) -> "Optional[T]": ...
142
253
  async def select_value_or_none(
143
254
  self,
144
255
  sql: str,
@@ -186,6 +297,28 @@ class AiosqliteDriver(AsyncDriverAdapterProtocol["Connection"]):
186
297
  await cursor.execute(sql, parameters) # pyright: ignore[reportUnknownMemberType]
187
298
  return cursor.rowcount if hasattr(cursor, "rowcount") else -1 # pyright: ignore[reportUnknownVariableType, reportGeneralTypeIssues]
188
299
 
300
+ @overload
301
+ async def insert_update_delete_returning(
302
+ self,
303
+ sql: str,
304
+ parameters: "Optional[StatementParameterType]" = None,
305
+ /,
306
+ *,
307
+ connection: "Optional[Connection]" = None,
308
+ schema_type: None = None,
309
+ **kwargs: Any,
310
+ ) -> "dict[str, Any]": ...
311
+ @overload
312
+ async def insert_update_delete_returning(
313
+ self,
314
+ sql: str,
315
+ parameters: "Optional[StatementParameterType]" = None,
316
+ /,
317
+ *,
318
+ connection: "Optional[Connection]" = None,
319
+ schema_type: "type[ModelDTOT]",
320
+ **kwargs: Any,
321
+ ) -> "ModelDTOT": ...
189
322
  async def insert_update_delete_returning(
190
323
  self,
191
324
  sql: str,
@@ -1,7 +1,7 @@
1
1
  # type: ignore
2
- from collections.abc import AsyncGenerator
2
+ from collections.abc import AsyncGenerator, Sequence
3
3
  from contextlib import asynccontextmanager
4
- from typing import TYPE_CHECKING, Any, Optional, Union, cast
4
+ from typing import TYPE_CHECKING, Any, Optional, Union, cast, overload
5
5
 
6
6
  from sqlspec.base import AsyncDriverAdapterProtocol, T
7
7
 
@@ -36,6 +36,29 @@ class AsyncmyDriver(AsyncDriverAdapterProtocol["Connection"]):
36
36
  finally:
37
37
  await cursor.close()
38
38
 
39
+ # --- Public API Methods --- #
40
+ @overload
41
+ async def select(
42
+ self,
43
+ sql: str,
44
+ parameters: "Optional[StatementParameterType]" = None,
45
+ /,
46
+ *,
47
+ connection: "Optional[Connection]" = None,
48
+ schema_type: None = None,
49
+ **kwargs: Any,
50
+ ) -> "Sequence[dict[str, Any]]": ...
51
+ @overload
52
+ async def select(
53
+ self,
54
+ sql: str,
55
+ parameters: "Optional[StatementParameterType]" = None,
56
+ /,
57
+ *,
58
+ connection: "Optional[Connection]" = None,
59
+ schema_type: "type[ModelDTOT]",
60
+ **kwargs: Any,
61
+ ) -> "Sequence[ModelDTOT]": ...
39
62
  async def select(
40
63
  self,
41
64
  sql: str,
@@ -45,7 +68,7 @@ class AsyncmyDriver(AsyncDriverAdapterProtocol["Connection"]):
45
68
  connection: Optional["Connection"] = None,
46
69
  schema_type: "Optional[type[ModelDTOT]]" = None,
47
70
  **kwargs: Any,
48
- ) -> "list[Union[ModelDTOT, dict[str, Any]]]":
71
+ ) -> "Sequence[Union[ModelDTOT, dict[str, Any]]]":
49
72
  """Fetch data from the database.
50
73
 
51
74
  Returns:
@@ -63,6 +86,28 @@ class AsyncmyDriver(AsyncDriverAdapterProtocol["Connection"]):
63
86
  return [dict(zip(column_names, row)) for row in results]
64
87
  return [schema_type(**dict(zip(column_names, row))) for row in results]
65
88
 
89
+ @overload
90
+ async def select_one(
91
+ self,
92
+ sql: str,
93
+ parameters: "Optional[StatementParameterType]" = None,
94
+ /,
95
+ *,
96
+ connection: "Optional[Connection]" = None,
97
+ schema_type: None = None,
98
+ **kwargs: Any,
99
+ ) -> "dict[str, Any]": ...
100
+ @overload
101
+ async def select_one(
102
+ self,
103
+ sql: str,
104
+ parameters: "Optional[StatementParameterType]" = None,
105
+ /,
106
+ *,
107
+ connection: "Optional[Connection]" = None,
108
+ schema_type: "type[ModelDTOT]",
109
+ **kwargs: Any,
110
+ ) -> "ModelDTOT": ...
66
111
  async def select_one(
67
112
  self,
68
113
  sql: str,
@@ -89,6 +134,28 @@ class AsyncmyDriver(AsyncDriverAdapterProtocol["Connection"]):
89
134
  return dict(zip(column_names, result))
90
135
  return cast("ModelDTOT", schema_type(**dict(zip(column_names, result))))
91
136
 
137
+ @overload
138
+ async def select_one_or_none(
139
+ self,
140
+ sql: str,
141
+ parameters: "Optional[StatementParameterType]" = None,
142
+ /,
143
+ *,
144
+ connection: "Optional[Connection]" = None,
145
+ schema_type: None = None,
146
+ **kwargs: Any,
147
+ ) -> "Optional[dict[str, Any]]": ...
148
+ @overload
149
+ async def select_one_or_none(
150
+ self,
151
+ sql: str,
152
+ parameters: "Optional[StatementParameterType]" = None,
153
+ /,
154
+ *,
155
+ connection: "Optional[Connection]" = None,
156
+ schema_type: "type[ModelDTOT]",
157
+ **kwargs: Any,
158
+ ) -> "Optional[ModelDTOT]": ...
92
159
  async def select_one_or_none(
93
160
  self,
94
161
  sql: str,
@@ -116,6 +183,28 @@ class AsyncmyDriver(AsyncDriverAdapterProtocol["Connection"]):
116
183
  return dict(zip(column_names, result))
117
184
  return cast("ModelDTOT", schema_type(**dict(zip(column_names, result))))
118
185
 
186
+ @overload
187
+ async def select_value(
188
+ self,
189
+ sql: str,
190
+ parameters: "Optional[StatementParameterType]" = None,
191
+ /,
192
+ *,
193
+ connection: "Optional[Connection]" = None,
194
+ schema_type: None = None,
195
+ **kwargs: Any,
196
+ ) -> "Any": ...
197
+ @overload
198
+ async def select_value(
199
+ self,
200
+ sql: str,
201
+ parameters: "Optional[StatementParameterType]" = None,
202
+ /,
203
+ *,
204
+ connection: "Optional[Connection]" = None,
205
+ schema_type: "type[T]",
206
+ **kwargs: Any,
207
+ ) -> "T": ...
119
208
  async def select_value(
120
209
  self,
121
210
  sql: str,
@@ -144,6 +233,28 @@ class AsyncmyDriver(AsyncDriverAdapterProtocol["Connection"]):
144
233
  return schema_type(value) # type: ignore[call-arg]
145
234
  return value
146
235
 
236
+ @overload
237
+ async def select_value_or_none(
238
+ self,
239
+ sql: str,
240
+ parameters: "Optional[StatementParameterType]" = None,
241
+ /,
242
+ *,
243
+ connection: "Optional[Connection]" = None,
244
+ schema_type: None = None,
245
+ **kwargs: Any,
246
+ ) -> "Optional[Any]": ...
247
+ @overload
248
+ async def select_value_or_none(
249
+ self,
250
+ sql: str,
251
+ parameters: "Optional[StatementParameterType]" = None,
252
+ /,
253
+ *,
254
+ connection: "Optional[Connection]" = None,
255
+ schema_type: "type[T]",
256
+ **kwargs: Any,
257
+ ) -> "Optional[T]": ...
147
258
  async def select_value_or_none(
148
259
  self,
149
260
  sql: str,
@@ -195,6 +306,28 @@ class AsyncmyDriver(AsyncDriverAdapterProtocol["Connection"]):
195
306
  await cursor.execute(sql, parameters)
196
307
  return cursor.rowcount
197
308
 
309
+ @overload
310
+ async def insert_update_delete_returning(
311
+ self,
312
+ sql: str,
313
+ parameters: "Optional[StatementParameterType]" = None,
314
+ /,
315
+ *,
316
+ connection: "Optional[Connection]" = None,
317
+ schema_type: None = None,
318
+ **kwargs: Any,
319
+ ) -> "dict[str, Any]": ...
320
+ @overload
321
+ async def insert_update_delete_returning(
322
+ self,
323
+ sql: str,
324
+ parameters: "Optional[StatementParameterType]" = None,
325
+ /,
326
+ *,
327
+ connection: "Optional[Connection]" = None,
328
+ schema_type: "type[ModelDTOT]",
329
+ **kwargs: Any,
330
+ ) -> "ModelDTOT": ...
198
331
  async def insert_update_delete_returning(
199
332
  self,
200
333
  sql: str,