sqlspec 0.11.0__py3-none-any.whl → 0.11.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.

@@ -5,14 +5,14 @@ from sqlite3 import Cursor
5
5
  from typing import TYPE_CHECKING, Any, Optional, Union, overload
6
6
 
7
7
  from sqlspec.base import SyncDriverAdapterProtocol
8
+ from sqlspec.filters import StatementFilter
8
9
  from sqlspec.mixins import ResultConverter, SQLTranslatorMixin
9
10
  from sqlspec.statement import SQLStatement
10
11
  from sqlspec.typing import is_dict
11
12
 
12
13
  if TYPE_CHECKING:
13
- from collections.abc import Generator, Sequence
14
+ from collections.abc import Generator, Mapping, Sequence
14
15
 
15
- from sqlspec.filters import StatementFilter
16
16
  from sqlspec.typing import ModelDTOT, StatementParameterType, T
17
17
 
18
18
  __all__ = ("SqliteConnection", "SqliteDriver")
@@ -51,7 +51,6 @@ class SqliteDriver(
51
51
  self,
52
52
  sql: str,
53
53
  parameters: "Optional[StatementParameterType]" = None,
54
- /,
55
54
  *filters: "StatementFilter",
56
55
  **kwargs: Any,
57
56
  ) -> "tuple[str, Optional[Union[tuple[Any, ...], list[Any], dict[str, Any]]]]":
@@ -71,9 +70,19 @@ class SqliteDriver(
71
70
  A tuple of (processed SQL, processed parameters).
72
71
  """
73
72
  # Create a SQLStatement with SQLite dialect
74
- statement = SQLStatement(sql, parameters, kwargs=kwargs, dialect=self.dialect)
75
-
76
- for filter_obj in filters:
73
+ data_params_for_statement: Optional[Union[Mapping[str, Any], Sequence[Any]]] = None
74
+ combined_filters_list: list[StatementFilter] = list(filters)
75
+
76
+ if parameters is not None:
77
+ if isinstance(parameters, StatementFilter):
78
+ combined_filters_list.insert(0, parameters)
79
+ else:
80
+ data_params_for_statement = parameters
81
+ if data_params_for_statement is not None and not isinstance(data_params_for_statement, (list, tuple, dict)):
82
+ data_params_for_statement = (data_params_for_statement,)
83
+ statement = SQLStatement(sql, data_params_for_statement, kwargs=kwargs, dialect=self.dialect)
84
+
85
+ for filter_obj in combined_filters_list:
77
86
  statement = statement.apply_filter(filter_obj)
78
87
 
79
88
  processed_sql, processed_params, _ = statement.process()
@@ -95,7 +104,6 @@ class SqliteDriver(
95
104
  self,
96
105
  sql: str,
97
106
  parameters: "Optional[StatementParameterType]" = None,
98
- /,
99
107
  *filters: "StatementFilter",
100
108
  connection: "Optional[SqliteConnection]" = None,
101
109
  schema_type: None = None,
@@ -106,7 +114,6 @@ class SqliteDriver(
106
114
  self,
107
115
  sql: str,
108
116
  parameters: "Optional[StatementParameterType]" = None,
109
- /,
110
117
  *filters: "StatementFilter",
111
118
  connection: "Optional[SqliteConnection]" = None,
112
119
  schema_type: "type[ModelDTOT]",
@@ -116,7 +123,6 @@ class SqliteDriver(
116
123
  self,
117
124
  sql: str,
118
125
  parameters: "Optional[StatementParameterType]" = None,
119
- /,
120
126
  *filters: "StatementFilter",
121
127
  connection: "Optional[SqliteConnection]" = None,
122
128
  schema_type: "Optional[type[ModelDTOT]]" = None,
@@ -146,7 +152,6 @@ class SqliteDriver(
146
152
  self,
147
153
  sql: str,
148
154
  parameters: "Optional[StatementParameterType]" = None,
149
- /,
150
155
  *filters: "StatementFilter",
151
156
  connection: "Optional[SqliteConnection]" = None,
152
157
  schema_type: None = None,
@@ -157,7 +162,6 @@ class SqliteDriver(
157
162
  self,
158
163
  sql: str,
159
164
  parameters: "Optional[StatementParameterType]" = None,
160
- /,
161
165
  *filters: "StatementFilter",
162
166
  connection: "Optional[SqliteConnection]" = None,
163
167
  schema_type: "type[ModelDTOT]",
@@ -167,7 +171,6 @@ class SqliteDriver(
167
171
  self,
168
172
  sql: str,
169
173
  parameters: "Optional[StatementParameterType]" = None,
170
- /,
171
174
  *filters: "StatementFilter",
172
175
  connection: "Optional[SqliteConnection]" = None,
173
176
  schema_type: "Optional[type[ModelDTOT]]" = None,
@@ -186,10 +189,7 @@ class SqliteDriver(
186
189
  cursor.execute(sql, parameters or [])
187
190
  result = cursor.fetchone()
188
191
  result = self.check_not_found(result)
189
-
190
- # Get column names
191
192
  column_names = [column[0] for column in cursor.description]
192
-
193
193
  return self.to_schema(dict(zip(column_names, result)), schema_type=schema_type)
194
194
 
195
195
  @overload
@@ -197,7 +197,6 @@ class SqliteDriver(
197
197
  self,
198
198
  sql: str,
199
199
  parameters: "Optional[StatementParameterType]" = None,
200
- /,
201
200
  *filters: "StatementFilter",
202
201
  connection: "Optional[SqliteConnection]" = None,
203
202
  schema_type: None = None,
@@ -208,7 +207,6 @@ class SqliteDriver(
208
207
  self,
209
208
  sql: str,
210
209
  parameters: "Optional[StatementParameterType]" = None,
211
- /,
212
210
  *filters: "StatementFilter",
213
211
  connection: "Optional[SqliteConnection]" = None,
214
212
  schema_type: "type[ModelDTOT]",
@@ -218,7 +216,6 @@ class SqliteDriver(
218
216
  self,
219
217
  sql: str,
220
218
  parameters: "Optional[StatementParameterType]" = None,
221
- /,
222
219
  *filters: "StatementFilter",
223
220
  connection: "Optional[SqliteConnection]" = None,
224
221
  schema_type: "Optional[type[ModelDTOT]]" = None,
@@ -238,9 +235,7 @@ class SqliteDriver(
238
235
  if result is None:
239
236
  return None
240
237
 
241
- # Get column names
242
238
  column_names = [column[0] for column in cursor.description]
243
-
244
239
  return self.to_schema(dict(zip(column_names, result)), schema_type=schema_type)
245
240
 
246
241
  @overload
@@ -248,7 +243,6 @@ class SqliteDriver(
248
243
  self,
249
244
  sql: str,
250
245
  parameters: "Optional[StatementParameterType]" = None,
251
- /,
252
246
  *filters: "StatementFilter",
253
247
  connection: "Optional[SqliteConnection]" = None,
254
248
  schema_type: None = None,
@@ -259,7 +253,6 @@ class SqliteDriver(
259
253
  self,
260
254
  sql: str,
261
255
  parameters: "Optional[StatementParameterType]" = None,
262
- /,
263
256
  *filters: "StatementFilter",
264
257
  connection: "Optional[SqliteConnection]" = None,
265
258
  schema_type: "type[T]",
@@ -269,7 +262,6 @@ class SqliteDriver(
269
262
  self,
270
263
  sql: str,
271
264
  parameters: "Optional[StatementParameterType]" = None,
272
- /,
273
265
  *filters: "StatementFilter",
274
266
  connection: "Optional[SqliteConnection]" = None,
275
267
  schema_type: "Optional[type[T]]" = None,
@@ -287,8 +279,6 @@ class SqliteDriver(
287
279
  cursor.execute(sql, parameters or [])
288
280
  result = cursor.fetchone()
289
281
  result = self.check_not_found(result)
290
-
291
- # Return first value from the row
292
282
  result_value = result[0]
293
283
  if schema_type is None:
294
284
  return result_value
@@ -299,7 +289,6 @@ class SqliteDriver(
299
289
  self,
300
290
  sql: str,
301
291
  parameters: "Optional[StatementParameterType]" = None,
302
- /,
303
292
  *filters: "StatementFilter",
304
293
  connection: "Optional[SqliteConnection]" = None,
305
294
  schema_type: None = None,
@@ -310,7 +299,6 @@ class SqliteDriver(
310
299
  self,
311
300
  sql: str,
312
301
  parameters: "Optional[StatementParameterType]" = None,
313
- /,
314
302
  *filters: "StatementFilter",
315
303
  connection: "Optional[SqliteConnection]" = None,
316
304
  schema_type: "type[T]",
@@ -320,7 +308,6 @@ class SqliteDriver(
320
308
  self,
321
309
  sql: str,
322
310
  parameters: "Optional[StatementParameterType]" = None,
323
- /,
324
311
  *filters: "StatementFilter",
325
312
  connection: "Optional[SqliteConnection]" = None,
326
313
  schema_type: "Optional[type[T]]" = None,
@@ -339,8 +326,6 @@ class SqliteDriver(
339
326
  result = cursor.fetchone()
340
327
  if result is None:
341
328
  return None
342
-
343
- # Return first value from the row
344
329
  result_value = result[0]
345
330
  if schema_type is None:
346
331
  return result_value
@@ -350,7 +335,6 @@ class SqliteDriver(
350
335
  self,
351
336
  sql: str,
352
337
  parameters: "Optional[StatementParameterType]" = None,
353
- /,
354
338
  *filters: "StatementFilter",
355
339
  connection: "Optional[SqliteConnection]" = None,
356
340
  **kwargs: Any,
@@ -372,7 +356,6 @@ class SqliteDriver(
372
356
  self,
373
357
  sql: str,
374
358
  parameters: "Optional[StatementParameterType]" = None,
375
- /,
376
359
  *filters: "StatementFilter",
377
360
  connection: "Optional[SqliteConnection]" = None,
378
361
  schema_type: None = None,
@@ -383,7 +366,6 @@ class SqliteDriver(
383
366
  self,
384
367
  sql: str,
385
368
  parameters: "Optional[StatementParameterType]" = None,
386
- /,
387
369
  *filters: "StatementFilter",
388
370
  connection: "Optional[SqliteConnection]" = None,
389
371
  schema_type: "type[ModelDTOT]",
@@ -393,7 +375,6 @@ class SqliteDriver(
393
375
  self,
394
376
  sql: str,
395
377
  parameters: "Optional[StatementParameterType]" = None,
396
- /,
397
378
  *filters: "StatementFilter",
398
379
  connection: "Optional[SqliteConnection]" = None,
399
380
  schema_type: "Optional[type[ModelDTOT]]" = None,
@@ -418,7 +399,6 @@ class SqliteDriver(
418
399
  self,
419
400
  sql: str,
420
401
  parameters: "Optional[StatementParameterType]" = None,
421
- /,
422
402
  connection: "Optional[SqliteConnection]" = None,
423
403
  **kwargs: Any,
424
404
  ) -> str:
sqlspec/base.py CHANGED
@@ -538,7 +538,6 @@ class CommonDriverAttributes(Generic[ConnectionT]):
538
538
  self,
539
539
  sql: str,
540
540
  parameters: "Optional[StatementParameterType]" = None,
541
- /,
542
541
  *filters: "StatementFilter",
543
542
  **kwargs: Any,
544
543
  ) -> "tuple[str, Optional[Union[tuple[Any, ...], list[Any], dict[str, Any]]]]":
@@ -577,7 +576,6 @@ class SyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Generi
577
576
  self,
578
577
  sql: str,
579
578
  parameters: "Optional[StatementParameterType]" = None,
580
- /,
581
579
  *filters: "StatementFilter",
582
580
  connection: "Optional[ConnectionT]" = None,
583
581
  schema_type: None = None,
@@ -590,7 +588,6 @@ class SyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Generi
590
588
  self,
591
589
  sql: str,
592
590
  parameters: "Optional[StatementParameterType]" = None,
593
- /,
594
591
  *filters: "StatementFilter",
595
592
  connection: "Optional[ConnectionT]" = None,
596
593
  schema_type: "type[ModelDTOT]",
@@ -602,7 +599,6 @@ class SyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Generi
602
599
  self,
603
600
  sql: str,
604
601
  parameters: "Optional[StatementParameterType]" = None,
605
- /,
606
602
  *filters: "StatementFilter",
607
603
  connection: "Optional[ConnectionT]" = None,
608
604
  schema_type: Optional[type[ModelDTOT]] = None,
@@ -615,7 +611,6 @@ class SyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Generi
615
611
  self,
616
612
  sql: str,
617
613
  parameters: "Optional[StatementParameterType]" = None,
618
- /,
619
614
  *filters: "StatementFilter",
620
615
  connection: "Optional[ConnectionT]" = None,
621
616
  schema_type: None = None,
@@ -628,7 +623,6 @@ class SyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Generi
628
623
  self,
629
624
  sql: str,
630
625
  parameters: "Optional[StatementParameterType]" = None,
631
- /,
632
626
  *filters: "StatementFilter",
633
627
  connection: "Optional[ConnectionT]" = None,
634
628
  schema_type: "type[ModelDTOT]",
@@ -640,7 +634,6 @@ class SyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Generi
640
634
  self,
641
635
  sql: str,
642
636
  parameters: Optional[StatementParameterType] = None,
643
- /,
644
637
  *filters: "StatementFilter",
645
638
  connection: Optional[ConnectionT] = None,
646
639
  schema_type: Optional[type[ModelDTOT]] = None,
@@ -653,7 +646,6 @@ class SyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Generi
653
646
  self,
654
647
  sql: str,
655
648
  parameters: "Optional[StatementParameterType]" = None,
656
- /,
657
649
  *filters: "StatementFilter",
658
650
  connection: "Optional[ConnectionT]" = None,
659
651
  schema_type: None = None,
@@ -666,7 +658,6 @@ class SyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Generi
666
658
  self,
667
659
  sql: str,
668
660
  parameters: "Optional[StatementParameterType]" = None,
669
- /,
670
661
  *filters: "StatementFilter",
671
662
  connection: "Optional[ConnectionT]" = None,
672
663
  schema_type: "type[ModelDTOT]",
@@ -678,7 +669,6 @@ class SyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Generi
678
669
  self,
679
670
  sql: str,
680
671
  parameters: Optional[StatementParameterType] = None,
681
- /,
682
672
  *filters: "StatementFilter",
683
673
  connection: Optional[ConnectionT] = None,
684
674
  schema_type: Optional[type[ModelDTOT]] = None,
@@ -691,7 +681,6 @@ class SyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Generi
691
681
  self,
692
682
  sql: str,
693
683
  parameters: "Optional[StatementParameterType]" = None,
694
- /,
695
684
  *filters: "StatementFilter",
696
685
  connection: "Optional[ConnectionT]" = None,
697
686
  schema_type: None = None,
@@ -704,7 +693,6 @@ class SyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Generi
704
693
  self,
705
694
  sql: str,
706
695
  parameters: "Optional[StatementParameterType]" = None,
707
- /,
708
696
  *filters: "StatementFilter",
709
697
  connection: "Optional[ConnectionT]" = None,
710
698
  schema_type: "type[T]",
@@ -716,7 +704,6 @@ class SyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Generi
716
704
  self,
717
705
  sql: str,
718
706
  parameters: Optional[StatementParameterType] = None,
719
- /,
720
707
  *filters: "StatementFilter",
721
708
  connection: Optional[ConnectionT] = None,
722
709
  schema_type: Optional[type[T]] = None,
@@ -729,7 +716,6 @@ class SyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Generi
729
716
  self,
730
717
  sql: str,
731
718
  parameters: "Optional[StatementParameterType]" = None,
732
- /,
733
719
  *filters: "StatementFilter",
734
720
  connection: "Optional[ConnectionT]" = None,
735
721
  schema_type: None = None,
@@ -742,7 +728,6 @@ class SyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Generi
742
728
  self,
743
729
  sql: str,
744
730
  parameters: "Optional[StatementParameterType]" = None,
745
- /,
746
731
  *filters: "StatementFilter",
747
732
  connection: "Optional[ConnectionT]" = None,
748
733
  schema_type: "type[T]",
@@ -754,7 +739,6 @@ class SyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Generi
754
739
  self,
755
740
  sql: str,
756
741
  parameters: Optional[StatementParameterType] = None,
757
- /,
758
742
  *filters: "StatementFilter",
759
743
  connection: Optional[ConnectionT] = None,
760
744
  schema_type: Optional[type[T]] = None,
@@ -766,7 +750,6 @@ class SyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Generi
766
750
  self,
767
751
  sql: str,
768
752
  parameters: Optional[StatementParameterType] = None,
769
- /,
770
753
  *filters: "StatementFilter",
771
754
  connection: Optional[ConnectionT] = None,
772
755
  **kwargs: Any,
@@ -778,7 +761,6 @@ class SyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Generi
778
761
  self,
779
762
  sql: str,
780
763
  parameters: "Optional[StatementParameterType]" = None,
781
- /,
782
764
  *filters: "StatementFilter",
783
765
  connection: "Optional[ConnectionT]" = None,
784
766
  schema_type: None = None,
@@ -791,7 +773,6 @@ class SyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Generi
791
773
  self,
792
774
  sql: str,
793
775
  parameters: "Optional[StatementParameterType]" = None,
794
- /,
795
776
  *filters: "StatementFilter",
796
777
  connection: "Optional[ConnectionT]" = None,
797
778
  schema_type: "type[ModelDTOT]",
@@ -803,7 +784,6 @@ class SyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Generi
803
784
  self,
804
785
  sql: str,
805
786
  parameters: Optional[StatementParameterType] = None,
806
- /,
807
787
  *filters: "StatementFilter",
808
788
  connection: Optional[ConnectionT] = None,
809
789
  schema_type: Optional[type[ModelDTOT]] = None,
@@ -815,7 +795,6 @@ class SyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Generi
815
795
  self,
816
796
  sql: str,
817
797
  parameters: Optional[StatementParameterType] = None,
818
- /,
819
798
  connection: Optional[ConnectionT] = None,
820
799
  **kwargs: Any,
821
800
  ) -> str: ...
@@ -833,7 +812,6 @@ class AsyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Gener
833
812
  self,
834
813
  sql: str,
835
814
  parameters: "Optional[StatementParameterType]" = None,
836
- /,
837
815
  *filters: "StatementFilter",
838
816
  connection: "Optional[ConnectionT]" = None,
839
817
  schema_type: None = None,
@@ -846,7 +824,6 @@ class AsyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Gener
846
824
  self,
847
825
  sql: str,
848
826
  parameters: "Optional[StatementParameterType]" = None,
849
- /,
850
827
  *filters: "StatementFilter",
851
828
  connection: "Optional[ConnectionT]" = None,
852
829
  schema_type: "type[ModelDTOT]",
@@ -858,7 +835,6 @@ class AsyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Gener
858
835
  self,
859
836
  sql: str,
860
837
  parameters: "Optional[StatementParameterType]" = None,
861
- /,
862
838
  *filters: "StatementFilter",
863
839
  connection: "Optional[ConnectionT]" = None,
864
840
  schema_type: "Optional[type[ModelDTOT]]" = None,
@@ -871,7 +847,6 @@ class AsyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Gener
871
847
  self,
872
848
  sql: str,
873
849
  parameters: "Optional[StatementParameterType]" = None,
874
- /,
875
850
  *filters: "StatementFilter",
876
851
  connection: "Optional[ConnectionT]" = None,
877
852
  schema_type: None = None,
@@ -884,7 +859,6 @@ class AsyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Gener
884
859
  self,
885
860
  sql: str,
886
861
  parameters: "Optional[StatementParameterType]" = None,
887
- /,
888
862
  *filters: "StatementFilter",
889
863
  connection: "Optional[ConnectionT]" = None,
890
864
  schema_type: "type[ModelDTOT]",
@@ -896,7 +870,6 @@ class AsyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Gener
896
870
  self,
897
871
  sql: str,
898
872
  parameters: "Optional[StatementParameterType]" = None,
899
- /,
900
873
  *filters: "StatementFilter",
901
874
  connection: "Optional[ConnectionT]" = None,
902
875
  schema_type: "Optional[type[ModelDTOT]]" = None,
@@ -909,7 +882,6 @@ class AsyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Gener
909
882
  self,
910
883
  sql: str,
911
884
  parameters: "Optional[StatementParameterType]" = None,
912
- /,
913
885
  *filters: "StatementFilter",
914
886
  connection: "Optional[ConnectionT]" = None,
915
887
  schema_type: None = None,
@@ -922,7 +894,6 @@ class AsyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Gener
922
894
  self,
923
895
  sql: str,
924
896
  parameters: "Optional[StatementParameterType]" = None,
925
- /,
926
897
  *filters: "StatementFilter",
927
898
  connection: "Optional[ConnectionT]" = None,
928
899
  schema_type: "type[ModelDTOT]",
@@ -934,7 +905,6 @@ class AsyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Gener
934
905
  self,
935
906
  sql: str,
936
907
  parameters: "Optional[StatementParameterType]" = None,
937
- /,
938
908
  *filters: "StatementFilter",
939
909
  connection: "Optional[ConnectionT]" = None,
940
910
  schema_type: "Optional[type[ModelDTOT]]" = None,
@@ -947,7 +917,6 @@ class AsyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Gener
947
917
  self,
948
918
  sql: str,
949
919
  parameters: "Optional[StatementParameterType]" = None,
950
- /,
951
920
  *filters: "StatementFilter",
952
921
  connection: "Optional[ConnectionT]" = None,
953
922
  schema_type: None = None,
@@ -960,7 +929,6 @@ class AsyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Gener
960
929
  self,
961
930
  sql: str,
962
931
  parameters: "Optional[StatementParameterType]" = None,
963
- /,
964
932
  *filters: "StatementFilter",
965
933
  connection: "Optional[ConnectionT]" = None,
966
934
  schema_type: "type[T]",
@@ -972,7 +940,6 @@ class AsyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Gener
972
940
  self,
973
941
  sql: str,
974
942
  parameters: "Optional[StatementParameterType]" = None,
975
- /,
976
943
  *filters: "StatementFilter",
977
944
  connection: "Optional[ConnectionT]" = None,
978
945
  schema_type: "Optional[type[T]]" = None,
@@ -985,7 +952,6 @@ class AsyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Gener
985
952
  self,
986
953
  sql: str,
987
954
  parameters: "Optional[StatementParameterType]" = None,
988
- /,
989
955
  *filters: "StatementFilter",
990
956
  connection: "Optional[ConnectionT]" = None,
991
957
  schema_type: None = None,
@@ -998,7 +964,6 @@ class AsyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Gener
998
964
  self,
999
965
  sql: str,
1000
966
  parameters: "Optional[StatementParameterType]" = None,
1001
- /,
1002
967
  *filters: "StatementFilter",
1003
968
  connection: "Optional[ConnectionT]" = None,
1004
969
  schema_type: "type[T]",
@@ -1010,7 +975,6 @@ class AsyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Gener
1010
975
  self,
1011
976
  sql: str,
1012
977
  parameters: "Optional[StatementParameterType]" = None,
1013
- /,
1014
978
  *filters: "StatementFilter",
1015
979
  connection: "Optional[ConnectionT]" = None,
1016
980
  schema_type: "Optional[type[T]]" = None,
@@ -1022,7 +986,6 @@ class AsyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Gener
1022
986
  self,
1023
987
  sql: str,
1024
988
  parameters: "Optional[StatementParameterType]" = None,
1025
- /,
1026
989
  *filters: "StatementFilter",
1027
990
  connection: "Optional[ConnectionT]" = None,
1028
991
  **kwargs: Any,
@@ -1034,7 +997,6 @@ class AsyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Gener
1034
997
  self,
1035
998
  sql: str,
1036
999
  parameters: "Optional[StatementParameterType]" = None,
1037
- /,
1038
1000
  *filters: "StatementFilter",
1039
1001
  connection: "Optional[ConnectionT]" = None,
1040
1002
  schema_type: None = None,
@@ -1047,7 +1009,6 @@ class AsyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Gener
1047
1009
  self,
1048
1010
  sql: str,
1049
1011
  parameters: "Optional[StatementParameterType]" = None,
1050
- /,
1051
1012
  *filters: "StatementFilter",
1052
1013
  connection: "Optional[ConnectionT]" = None,
1053
1014
  schema_type: "type[ModelDTOT]",
@@ -1059,7 +1020,6 @@ class AsyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Gener
1059
1020
  self,
1060
1021
  sql: str,
1061
1022
  parameters: "Optional[StatementParameterType]" = None,
1062
- /,
1063
1023
  *filters: "StatementFilter",
1064
1024
  connection: "Optional[ConnectionT]" = None,
1065
1025
  schema_type: "Optional[type[ModelDTOT]]" = None,
@@ -1071,7 +1031,6 @@ class AsyncDriverAdapterProtocol(CommonDriverAttributes[ConnectionT], ABC, Gener
1071
1031
  self,
1072
1032
  sql: str,
1073
1033
  parameters: "Optional[StatementParameterType]" = None,
1074
- /,
1075
1034
  connection: "Optional[ConnectionT]" = None,
1076
1035
  **kwargs: Any,
1077
1036
  ) -> str: ...
sqlspec/filters.py CHANGED
@@ -4,7 +4,7 @@ from abc import ABC, abstractmethod
4
4
  from collections import abc
5
5
  from dataclasses import dataclass
6
6
  from datetime import datetime
7
- from typing import Any, Generic, Literal, Optional, Protocol, Union, cast
7
+ from typing import Any, Generic, Literal, Optional, Protocol, Union, cast, runtime_checkable
8
8
 
9
9
  from sqlglot import exp
10
10
  from typing_extensions import TypeAlias, TypeVar
@@ -30,6 +30,7 @@ __all__ = (
30
30
  T = TypeVar("T")
31
31
 
32
32
 
33
+ @runtime_checkable
33
34
  class StatementFilter(Protocol):
34
35
  """Protocol for filters that can be appended to a statement."""
35
36
 
sqlspec/mixins.py CHANGED
@@ -34,6 +34,7 @@ from sqlspec.typing import (
34
34
  )
35
35
 
36
36
  if TYPE_CHECKING:
37
+ from sqlspec.filters import StatementFilter
37
38
  from sqlspec.typing import ArrowTable
38
39
 
39
40
  __all__ = (
@@ -51,12 +52,11 @@ class SyncArrowBulkOperationsMixin(Generic[ConnectionT]):
51
52
  __supports_arrow__: "ClassVar[bool]" = True
52
53
 
53
54
  @abstractmethod
54
- def select_arrow( # pyright: ignore[reportUnknownParameterType]
55
+ def select_arrow(
55
56
  self,
56
57
  sql: str,
57
58
  parameters: "Optional[StatementParameterType]" = None,
58
- /,
59
- *,
59
+ *filters: "StatementFilter",
60
60
  connection: "Optional[ConnectionT]" = None,
61
61
  **kwargs: Any,
62
62
  ) -> "ArrowTable": # pyright: ignore[reportUnknownReturnType]
@@ -65,6 +65,7 @@ class SyncArrowBulkOperationsMixin(Generic[ConnectionT]):
65
65
  Args:
66
66
  sql: The SQL query string.
67
67
  parameters: Parameters for the query.
68
+ filters: Optional filters to apply to the query.
68
69
  connection: Optional connection override.
69
70
  **kwargs: Additional keyword arguments to merge with parameters if parameters is a dict.
70
71
 
@@ -80,12 +81,11 @@ class AsyncArrowBulkOperationsMixin(Generic[ConnectionT]):
80
81
  __supports_arrow__: "ClassVar[bool]" = True
81
82
 
82
83
  @abstractmethod
83
- async def select_arrow( # pyright: ignore[reportUnknownParameterType]
84
+ async def select_arrow(
84
85
  self,
85
86
  sql: str,
86
87
  parameters: "Optional[StatementParameterType]" = None,
87
- /,
88
- *,
88
+ *filters: "StatementFilter",
89
89
  connection: "Optional[ConnectionT]" = None,
90
90
  **kwargs: Any,
91
91
  ) -> "ArrowTable": # pyright: ignore[reportUnknownReturnType]
@@ -94,6 +94,7 @@ class AsyncArrowBulkOperationsMixin(Generic[ConnectionT]):
94
94
  Args:
95
95
  sql: The SQL query string.
96
96
  parameters: Parameters for the query.
97
+ filters: Optional filters to apply to the query.
97
98
  connection: Optional connection override.
98
99
  **kwargs: Additional keyword arguments to merge with parameters if parameters is a dict.
99
100
 
@@ -111,8 +112,7 @@ class SyncParquetExportMixin(Generic[ConnectionT]):
111
112
  self,
112
113
  sql: str,
113
114
  parameters: "Optional[StatementParameterType]" = None,
114
- /,
115
- *,
115
+ *filters: "StatementFilter",
116
116
  connection: "Optional[ConnectionT]" = None,
117
117
  **kwargs: Any,
118
118
  ) -> None:
@@ -128,8 +128,7 @@ class AsyncParquetExportMixin(Generic[ConnectionT]):
128
128
  self,
129
129
  sql: str,
130
130
  parameters: "Optional[StatementParameterType]" = None,
131
- /,
132
- *,
131
+ *filters: "StatementFilter",
133
132
  connection: "Optional[ConnectionT]" = None,
134
133
  **kwargs: Any,
135
134
  ) -> None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlspec
3
- Version: 0.11.0
3
+ Version: 0.11.1
4
4
  Summary: SQL Experiments in Python
5
5
  Project-URL: Discord, https://discord.gg/litestar
6
6
  Project-URL: Issue, https://github.com/litestar-org/sqlspec/issues/
@@ -46,6 +46,9 @@ Requires-Dist: orjson; extra == 'orjson'
46
46
  Provides-Extra: performance
47
47
  Requires-Dist: msgspec; extra == 'performance'
48
48
  Requires-Dist: sqlglot[rs]; extra == 'performance'
49
+ Provides-Extra: polars
50
+ Requires-Dist: polars; extra == 'polars'
51
+ Requires-Dist: pyarrow; extra == 'polars'
49
52
  Provides-Extra: psqlpy
50
53
  Requires-Dist: psqlpy; extra == 'psqlpy'
51
54
  Provides-Extra: psycopg