1
1
"""
2
2
Package for SQL functions wrappers
3
3
"""
4
+ from __future__ import annotations
5
+
6
+ from typing import Optional
7
+
8
+ from pypika import Field
4
9
from pypika .enums import SqlTypes
5
10
from pypika .terms import (
6
11
AggregateFunction ,
10
15
)
11
16
from pypika .utils import builder
12
17
18
+
13
19
__author__ = "Timothy Heys"
14
20
15
21
@@ -34,64 +40,64 @@ def distinct(self):
34
40
35
41
36
42
class Count (DistinctOptionFunction ):
37
- def __init__ (self , param , alias = None ):
43
+ def __init__ (self , param : str | Field , alias : Optional [ str ] = None ) -> None :
38
44
is_star = isinstance (param , str ) and "*" == param
39
45
super (Count , self ).__init__ ("COUNT" , Star () if is_star else param , alias = alias )
40
46
41
47
42
48
# Arithmetic Functions
43
49
class Sum (DistinctOptionFunction ):
44
- def __init__ (self , term , alias = None ):
50
+ def __init__ (self , term : str | Field , alias : Optional [ str ] = None ):
45
51
super (Sum , self ).__init__ ("SUM" , term , alias = alias )
46
52
47
53
48
54
class Avg (AggregateFunction ):
49
- def __init__ (self , term , alias = None ):
55
+ def __init__ (self , term : str | Field , alias : Optional [ str ] = None ):
50
56
super (Avg , self ).__init__ ("AVG" , term , alias = alias )
51
57
52
58
53
59
class Min (AggregateFunction ):
54
- def __init__ (self , term , alias = None ):
60
+ def __init__ (self , term : str | Field , alias : Optional [ str ] = None ):
55
61
super (Min , self ).__init__ ("MIN" , term , alias = alias )
56
62
57
63
58
64
class Max (AggregateFunction ):
59
- def __init__ (self , term , alias = None ):
65
+ def __init__ (self , term : str | Field , alias : Optional [ str ] = None ):
60
66
super (Max , self ).__init__ ("MAX" , term , alias = alias )
61
67
62
68
63
69
class Std (AggregateFunction ):
64
- def __init__ (self , term , alias = None ):
70
+ def __init__ (self , term : str | Field , alias : Optional [ str ] = None ):
65
71
super (Std , self ).__init__ ("STD" , term , alias = alias )
66
72
67
73
68
74
class StdDev (AggregateFunction ):
69
- def __init__ (self , term , alias = None ):
75
+ def __init__ (self , term : str | Field , alias : Optional [ str ] = None ):
70
76
super (StdDev , self ).__init__ ("STDDEV" , term , alias = alias )
71
77
72
78
73
79
class Abs (AggregateFunction ):
74
- def __init__ (self , term , alias = None ):
80
+ def __init__ (self , term : str | Field , alias : Optional [ str ] = None ):
75
81
super (Abs , self ).__init__ ("ABS" , term , alias = alias )
76
82
77
83
78
84
class First (AggregateFunction ):
79
- def __init__ (self , term , alias = None ):
85
+ def __init__ (self , term : str | Field , alias : Optional [ str ] = None ):
80
86
super (First , self ).__init__ ("FIRST" , term , alias = alias )
81
87
82
88
83
89
class Last (AggregateFunction ):
84
- def __init__ (self , term , alias = None ):
90
+ def __init__ (self , term : str | Field , alias : Optional [ str ] = None ):
85
91
super (Last , self ).__init__ ("LAST" , term , alias = alias )
86
92
87
93
88
94
class Sqrt (Function ):
89
- def __init__ (self , term , alias = None ):
95
+ def __init__ (self , term : str | Field , alias : Optional [ str ] = None ):
90
96
super (Sqrt , self ).__init__ ("SQRT" , term , alias = alias )
91
97
92
98
93
99
class Floor (Function ):
94
- def __init__ (self , term , alias = None ):
100
+ def __init__ (self , term : str | Field , alias : Optional [ str ] = None ):
95
101
super (Floor , self ).__init__ ("FLOOR" , term , alias = alias )
96
102
97
103
@@ -131,17 +137,17 @@ def __init__(self, term, as_type, alias=None):
131
137
132
138
133
139
class Signed (Cast ):
134
- def __init__ (self , term , alias = None ):
140
+ def __init__ (self , term : str | Field , alias : Optional [ str ] = None ):
135
141
super (Signed , self ).__init__ (term , SqlTypes .SIGNED , alias = alias )
136
142
137
143
138
144
class Unsigned (Cast ):
139
- def __init__ (self , term , alias = None ):
145
+ def __init__ (self , term : str | Field , alias : Optional [ str ] = None ):
140
146
super (Unsigned , self ).__init__ (term , SqlTypes .UNSIGNED , alias = alias )
141
147
142
148
143
149
class Date (Function ):
144
- def __init__ (self , term , alias = None ):
150
+ def __init__ (self , term : str | Field , alias : Optional [ str ] = None ):
145
151
super (Date , self ).__init__ ("DATE" , term , alias = alias )
146
152
147
153
@@ -156,7 +162,7 @@ def __init__(self, start_time, end_time, alias=None):
156
162
157
163
158
164
class DateAdd (Function ):
159
- def __init__ (self , date_part , interval , term , alias = None ):
165
+ def __init__ (self , date_part , interval , term : str , alias : Optional [ str ] = None ):
160
166
date_part = getattr (date_part , "value" , date_part )
161
167
super (DateAdd , self ).__init__ ("DATE_ADD" , LiteralValue (date_part ), interval , term , alias = alias )
162
168
@@ -167,19 +173,19 @@ def __init__(self, value, format_mask, alias=None):
167
173
168
174
169
175
class Timestamp (Function ):
170
- def __init__ (self , term , alias = None ):
176
+ def __init__ (self , term : str | Field , alias : Optional [ str ] = None ):
171
177
super (Timestamp , self ).__init__ ("TIMESTAMP" , term , alias = alias )
172
178
173
179
174
180
class TimestampAdd (Function ):
175
- def __init__ (self , date_part , interval , term , alias = None ):
181
+ def __init__ (self , date_part , interval , term : str , alias : Optional [ str ] = None ):
176
182
date_part = getattr (date_part , 'value' , date_part )
177
183
super (TimestampAdd , self ).__init__ ("TIMESTAMPADD" , LiteralValue (date_part ), interval , term , alias = alias )
178
184
179
185
180
186
# String Functions
181
187
class Ascii (Function ):
182
- def __init__ (self , term , alias = None ):
188
+ def __init__ (self , term : str | Field , alias : Optional [ str ] = None ):
183
189
super (Ascii , self ).__init__ ("ASCII" , term , alias = alias )
184
190
185
191
@@ -189,7 +195,7 @@ def __init__(self, term, condition, **kwargs):
189
195
190
196
191
197
class Bin (Function ):
192
- def __init__ (self , term , alias = None ):
198
+ def __init__ (self , term : str | Field , alias : Optional [ str ] = None ):
193
199
super (Bin , self ).__init__ ("BIN" , term , alias = alias )
194
200
195
201
@@ -205,17 +211,17 @@ def __init__(self, term, start, stop, subterm, alias=None):
205
211
206
212
207
213
class Length (Function ):
208
- def __init__ (self , term , alias = None ):
214
+ def __init__ (self , term : str | Field , alias : Optional [ str ] = None ):
209
215
super (Length , self ).__init__ ("LENGTH" , term , alias = alias )
210
216
211
217
212
218
class Upper (Function ):
213
- def __init__ (self , term , alias = None ):
219
+ def __init__ (self , term : str | Field , alias : Optional [ str ] = None ):
214
220
super (Upper , self ).__init__ ("UPPER" , term , alias = alias )
215
221
216
222
217
223
class Lower (Function ):
218
- def __init__ (self , term , alias = None ):
224
+ def __init__ (self , term : str | Field , alias : Optional [ str ] = None ):
219
225
super (Lower , self ).__init__ ("LOWER" , term , alias = alias )
220
226
221
227
@@ -225,12 +231,12 @@ def __init__(self, term, start, stop, alias=None):
225
231
226
232
227
233
class Reverse (Function ):
228
- def __init__ (self , term , alias = None ):
234
+ def __init__ (self , term : str | Field , alias : Optional [ str ] = None ):
229
235
super (Reverse , self ).__init__ ("REVERSE" , term , alias = alias )
230
236
231
237
232
238
class Trim (Function ):
233
- def __init__ (self , term , alias = None ):
239
+ def __init__ (self , term : str | Field , alias : Optional [ str ] = None ):
234
240
super (Trim , self ).__init__ ("TRIM" , term , alias = alias )
235
241
236
242
@@ -297,7 +303,7 @@ def get_special_params_sql(self, **kwargs):
297
303
298
304
# Null Functions
299
305
class IsNull (Function ):
300
- def __init__ (self , term , alias = None ):
306
+ def __init__ (self , term : str | Field , alias : Optional [ str ] = None ):
301
307
super (IsNull , self ).__init__ ("ISNULL" , term , alias = alias )
302
308
303
309
@@ -312,5 +318,5 @@ def __init__(self, condition, term, **kwargs):
312
318
313
319
314
320
class NVL (Function ):
315
- def __init__ (self , condition , term , alias = None ):
321
+ def __init__ (self , condition , term : str , alias : Optional [ str ] = None ):
316
322
super (NVL , self ).__init__ ("NVL" , condition , term , alias = alias )
0 commit comments