@@ -95,14 +95,14 @@ class Alert:
95
95
def __init__ (
96
96
self ,
97
97
alert_type : AlertType ,
98
- values : Optional [Dict ] = {} ,
98
+ values : Optional [Dict ] = None ,
99
99
column_name : Optional [str ] = None ,
100
- fields : Optional [Set ] = set () ,
100
+ fields : Optional [Set ] = None ,
101
101
is_empty : bool = False ,
102
102
):
103
- self .fields = fields
103
+ self .fields = fields or set ()
104
104
self .alert_type = alert_type
105
- self .values = values
105
+ self .values = values or {}
106
106
self .column_name = column_name
107
107
self ._is_empty = is_empty
108
108
@@ -143,14 +143,14 @@ def __repr__(self):
143
143
class ConstantLengthAlert (Alert ):
144
144
def __init__ (
145
145
self ,
146
- values : Optional [Dict ] = {} ,
146
+ values : Optional [Dict ] = None ,
147
147
column_name : Optional [str ] = None ,
148
148
is_empty : bool = False ,
149
149
):
150
150
super ().__init__ (
151
- AlertType .CONSTANT_LENGTH ,
152
- values ,
153
- column_name ,
151
+ alert_type = AlertType .CONSTANT_LENGTH ,
152
+ values = values ,
153
+ column_name = column_name ,
154
154
fields = {"composition_min_length" , "composition_max_length" },
155
155
is_empty = is_empty ,
156
156
)
@@ -162,14 +162,14 @@ def _get_description(self) -> str:
162
162
class ConstantAlert (Alert ):
163
163
def __init__ (
164
164
self ,
165
- values : Optional [Dict ] = {} ,
165
+ values : Optional [Dict ] = None ,
166
166
column_name : Optional [str ] = None ,
167
167
is_empty : bool = False ,
168
168
):
169
169
super ().__init__ (
170
- AlertType .CONSTANT ,
171
- values ,
172
- column_name ,
170
+ alert_type = AlertType .CONSTANT ,
171
+ values = values ,
172
+ column_name = column_name ,
173
173
fields = {"n_distinct" },
174
174
is_empty = is_empty ,
175
175
)
@@ -181,14 +181,14 @@ def _get_description(self) -> str:
181
181
class DuplicatesAlert (Alert ):
182
182
def __init__ (
183
183
self ,
184
- values : Optional [Dict ] = {} ,
184
+ values : Optional [Dict ] = None ,
185
185
column_name : Optional [str ] = None ,
186
186
is_empty : bool = False ,
187
187
):
188
188
super ().__init__ (
189
- AlertType .DUPLICATES ,
190
- values ,
191
- column_name ,
189
+ alert_type = AlertType .DUPLICATES ,
190
+ values = values ,
191
+ column_name = column_name ,
192
192
fields = {"n_duplicates" },
193
193
is_empty = is_empty ,
194
194
)
@@ -203,12 +203,16 @@ def _get_description(self) -> str:
203
203
class EmptyAlert (Alert ):
204
204
def __init__ (
205
205
self ,
206
- values : Optional [Dict ] = {} ,
206
+ values : Optional [Dict ] = None ,
207
207
column_name : Optional [str ] = None ,
208
208
is_empty : bool = False ,
209
209
):
210
210
super ().__init__ (
211
- AlertType .EMPTY , values , column_name , fields = {"n" }, is_empty = is_empty
211
+ alert_type = AlertType .EMPTY ,
212
+ values = values ,
213
+ column_name = column_name ,
214
+ fields = {"n" },
215
+ is_empty = is_empty ,
212
216
)
213
217
214
218
def _get_description (self ) -> str :
@@ -218,14 +222,14 @@ def _get_description(self) -> str:
218
222
class HighCardinalityAlert (Alert ):
219
223
def __init__ (
220
224
self ,
221
- values : Optional [Dict ] = {} ,
225
+ values : Optional [Dict ] = None ,
222
226
column_name : Optional [str ] = None ,
223
227
is_empty : bool = False ,
224
228
):
225
229
super ().__init__ (
226
- AlertType .HIGH_CARDINALITY ,
227
- values ,
228
- column_name ,
230
+ alert_type = AlertType .HIGH_CARDINALITY ,
231
+ values = values ,
232
+ column_name = column_name ,
229
233
fields = {"n_distinct" },
230
234
is_empty = is_empty ,
231
235
)
@@ -240,12 +244,15 @@ def _get_description(self) -> str:
240
244
class HighCorrelationAlert (Alert ):
241
245
def __init__ (
242
246
self ,
243
- values : Optional [Dict ] = {} ,
247
+ values : Optional [Dict ] = None ,
244
248
column_name : Optional [str ] = None ,
245
249
is_empty : bool = False ,
246
250
):
247
251
super ().__init__ (
248
- AlertType .HIGH_CORRELATION , values , column_name , set (), is_empty
252
+ alert_type = AlertType .HIGH_CORRELATION ,
253
+ values = values ,
254
+ column_name = column_name ,
255
+ is_empty = is_empty ,
249
256
)
250
257
251
258
def _get_description (self ) -> str :
@@ -263,14 +270,14 @@ def _get_description(self) -> str:
263
270
class ImbalanceAlert (Alert ):
264
271
def __init__ (
265
272
self ,
266
- values : Optional [Dict ] = {} ,
273
+ values : Optional [Dict ] = None ,
267
274
column_name : Optional [str ] = None ,
268
275
is_empty : bool = False ,
269
276
):
270
277
super ().__init__ (
271
- AlertType .IMBALANCE ,
272
- values ,
273
- column_name ,
278
+ alert_type = AlertType .IMBALANCE ,
279
+ values = values ,
280
+ column_name = column_name ,
274
281
fields = {"imbalance" },
275
282
is_empty = is_empty ,
276
283
)
@@ -286,14 +293,14 @@ def _get_description(self) -> str:
286
293
class InfiniteAlert (Alert ):
287
294
def __init__ (
288
295
self ,
289
- values : Optional [Dict ] = {} ,
296
+ values : Optional [Dict ] = None ,
290
297
column_name : Optional [str ] = None ,
291
298
is_empty : bool = False ,
292
299
):
293
300
super ().__init__ (
294
- AlertType .INFINITE ,
295
- values ,
296
- column_name ,
301
+ alert_type = AlertType .INFINITE ,
302
+ values = values ,
303
+ column_name = column_name ,
297
304
fields = {"p_infinite" , "n_infinite" },
298
305
is_empty = is_empty ,
299
306
)
@@ -308,14 +315,14 @@ def _get_description(self) -> str:
308
315
class MissingAlert (Alert ):
309
316
def __init__ (
310
317
self ,
311
- values : Optional [Dict ] = {} ,
318
+ values : Optional [Dict ] = None ,
312
319
column_name : Optional [str ] = None ,
313
320
is_empty : bool = False ,
314
321
):
315
322
super ().__init__ (
316
- AlertType .MISSING ,
317
- values ,
318
- column_name ,
323
+ alert_type = AlertType .MISSING ,
324
+ values = values ,
325
+ column_name = column_name ,
319
326
fields = {"p_missing" , "n_missing" },
320
327
is_empty = is_empty ,
321
328
)
@@ -330,11 +337,16 @@ def _get_description(self) -> str:
330
337
class NonStationaryAlert (Alert ):
331
338
def __init__ (
332
339
self ,
333
- values : Optional [Dict ] = {} ,
340
+ values : Optional [Dict ] = None ,
334
341
column_name : Optional [str ] = None ,
335
342
is_empty : bool = False ,
336
343
):
337
- super ().__init__ (AlertType .NON_STATIONARY , values , column_name , set (), is_empty )
344
+ super ().__init__ (
345
+ alert_type = AlertType .NON_STATIONARY ,
346
+ values = values ,
347
+ column_name = column_name ,
348
+ is_empty = is_empty ,
349
+ )
338
350
339
351
def _get_description (self ) -> str :
340
352
return f"[{ self .column_name } ] is non stationary"
@@ -343,11 +355,16 @@ def _get_description(self) -> str:
343
355
class SeasonalAlert (Alert ):
344
356
def __init__ (
345
357
self ,
346
- values : Optional [Dict ] = {} ,
358
+ values : Optional [Dict ] = None ,
347
359
column_name : Optional [str ] = None ,
348
360
is_empty : bool = False ,
349
361
):
350
- super ().__init__ (AlertType .SEASONAL , values , column_name , set (), is_empty )
362
+ super ().__init__ (
363
+ alert_type = AlertType .SEASONAL ,
364
+ values = values ,
365
+ column_name = column_name ,
366
+ is_empty = is_empty ,
367
+ )
351
368
352
369
def _get_description (self ) -> str :
353
370
return f"[{ self .column_name } ] is seasonal"
@@ -356,14 +373,14 @@ def _get_description(self) -> str:
356
373
class SkewedAlert (Alert ):
357
374
def __init__ (
358
375
self ,
359
- values : Optional [Dict ] = {} ,
376
+ values : Optional [Dict ] = None ,
360
377
column_name : Optional [str ] = None ,
361
378
is_empty : bool = False ,
362
379
):
363
380
super ().__init__ (
364
- AlertType .SKEWED ,
365
- values ,
366
- column_name ,
381
+ alert_type = AlertType .SKEWED ,
382
+ values = values ,
383
+ column_name = column_name ,
367
384
fields = {"skewness" },
368
385
is_empty = is_empty ,
369
386
)
@@ -379,11 +396,16 @@ def _get_description(self) -> str:
379
396
class TypeDateAlert (Alert ):
380
397
def __init__ (
381
398
self ,
382
- values : Optional [Dict ] = {} ,
399
+ values : Optional [Dict ] = None ,
383
400
column_name : Optional [str ] = None ,
384
401
is_empty : bool = False ,
385
402
):
386
- super ().__init__ (AlertType .TYPE_DATE , values , column_name , set (), is_empty )
403
+ super ().__init__ (
404
+ alert_type = AlertType .TYPE_DATE ,
405
+ values = values ,
406
+ column_name = column_name ,
407
+ is_empty = is_empty ,
408
+ )
387
409
388
410
def _get_description (self ) -> str :
389
411
return f"[{ self .column_name } ] only contains datetime values, but is categorical. Consider applying `pd.to_datetime()`"
@@ -392,11 +414,16 @@ def _get_description(self) -> str:
392
414
class UniformAlert (Alert ):
393
415
def __init__ (
394
416
self ,
395
- values : Optional [Dict ] = {} ,
417
+ values : Optional [Dict ] = None ,
396
418
column_name : Optional [str ] = None ,
397
419
is_empty : bool = False ,
398
420
):
399
- super ().__init__ (AlertType .UNIFORM , values , column_name , set (), is_empty )
421
+ super ().__init__ (
422
+ alert_type = AlertType .UNIFORM ,
423
+ values = values ,
424
+ column_name = column_name ,
425
+ is_empty = is_empty ,
426
+ )
400
427
401
428
def _get_description (self ) -> str :
402
429
return f"[{ self .column_name } ] is uniformly distributed"
@@ -405,14 +432,14 @@ def _get_description(self) -> str:
405
432
class UniqueAlert (Alert ):
406
433
def __init__ (
407
434
self ,
408
- values : Optional [Dict ] = {} ,
435
+ values : Optional [Dict ] = None ,
409
436
column_name : Optional [str ] = None ,
410
437
is_empty : bool = False ,
411
438
):
412
439
super ().__init__ (
413
- AlertType .UNIQUE ,
414
- values ,
415
- column_name ,
440
+ alert_type = AlertType .UNIQUE ,
441
+ values = values ,
442
+ column_name = column_name ,
416
443
fields = {"n_distinct" , "p_distinct" , "n_unique" , "p_unique" },
417
444
is_empty = is_empty ,
418
445
)
@@ -424,11 +451,16 @@ def _get_description(self) -> str:
424
451
class UnsupportedAlert (Alert ):
425
452
def __init__ (
426
453
self ,
427
- values : Optional [Dict ] = {} ,
454
+ values : Optional [Dict ] = None ,
428
455
column_name : Optional [str ] = None ,
429
456
is_empty : bool = False ,
430
457
):
431
- super ().__init__ (AlertType .UNSUPPORTED , values , column_name , set (), is_empty )
458
+ super ().__init__ (
459
+ alert_type = AlertType .UNSUPPORTED ,
460
+ values = values ,
461
+ column_name = column_name ,
462
+ is_empty = is_empty ,
463
+ )
432
464
433
465
def _get_description (self ) -> str :
434
466
return f"[{ self .column_name } ] is an unsupported type, check if it needs cleaning or further analysis"
@@ -437,14 +469,14 @@ def _get_description(self) -> str:
437
469
class ZerosAlert (Alert ):
438
470
def __init__ (
439
471
self ,
440
- values : Optional [Dict ] = {} ,
472
+ values : Optional [Dict ] = None ,
441
473
column_name : Optional [str ] = None ,
442
474
is_empty : bool = False ,
443
475
):
444
476
super ().__init__ (
445
- AlertType .ZEROS ,
446
- values ,
447
- column_name ,
477
+ alert_type = AlertType .ZEROS ,
478
+ values = values ,
479
+ column_name = column_name ,
448
480
fields = {"n_zeros" , "p_zeros" },
449
481
is_empty = is_empty ,
450
482
)
@@ -459,11 +491,16 @@ def _get_description(self) -> str:
459
491
class RejectedAlert (Alert ):
460
492
def __init__ (
461
493
self ,
462
- values : Optional [Dict ] = {} ,
494
+ values : Optional [Dict ] = None ,
463
495
column_name : Optional [str ] = None ,
464
496
is_empty : bool = False ,
465
497
):
466
- super ().__init__ (AlertType .REJECTED , values , column_name , set (), is_empty )
498
+ super ().__init__ (
499
+ alert_type = AlertType .REJECTED ,
500
+ values = values ,
501
+ column_name = column_name ,
502
+ is_empty = is_empty ,
503
+ )
467
504
468
505
def _get_description (self ) -> str :
469
506
return f"[{ self .column_name } ] was rejected"
0 commit comments