truthound-dashboard 1.2.1__py3-none-any.whl → 1.3.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.
Files changed (53) hide show
  1. truthound_dashboard/api/deps.py +28 -0
  2. truthound_dashboard/api/drift.py +1 -0
  3. truthound_dashboard/api/mask.py +164 -0
  4. truthound_dashboard/api/profile.py +11 -3
  5. truthound_dashboard/api/router.py +22 -0
  6. truthound_dashboard/api/scan.py +168 -0
  7. truthound_dashboard/api/schemas.py +13 -4
  8. truthound_dashboard/api/validations.py +33 -1
  9. truthound_dashboard/api/validators.py +85 -0
  10. truthound_dashboard/core/__init__.py +8 -0
  11. truthound_dashboard/core/phase5/activity.py +1 -1
  12. truthound_dashboard/core/services.py +457 -7
  13. truthound_dashboard/core/truthound_adapter.py +441 -26
  14. truthound_dashboard/db/__init__.py +6 -0
  15. truthound_dashboard/db/models.py +250 -1
  16. truthound_dashboard/schemas/__init__.py +52 -1
  17. truthound_dashboard/schemas/collaboration.py +1 -1
  18. truthound_dashboard/schemas/drift.py +118 -3
  19. truthound_dashboard/schemas/mask.py +209 -0
  20. truthound_dashboard/schemas/profile.py +45 -2
  21. truthound_dashboard/schemas/scan.py +312 -0
  22. truthound_dashboard/schemas/schema.py +30 -2
  23. truthound_dashboard/schemas/validation.py +60 -3
  24. truthound_dashboard/schemas/validators/__init__.py +59 -0
  25. truthound_dashboard/schemas/validators/aggregate_validators.py +238 -0
  26. truthound_dashboard/schemas/validators/anomaly_validators.py +723 -0
  27. truthound_dashboard/schemas/validators/base.py +263 -0
  28. truthound_dashboard/schemas/validators/completeness_validators.py +269 -0
  29. truthound_dashboard/schemas/validators/cross_table_validators.py +375 -0
  30. truthound_dashboard/schemas/validators/datetime_validators.py +253 -0
  31. truthound_dashboard/schemas/validators/distribution_validators.py +422 -0
  32. truthound_dashboard/schemas/validators/drift_validators.py +615 -0
  33. truthound_dashboard/schemas/validators/geospatial_validators.py +486 -0
  34. truthound_dashboard/schemas/validators/multi_column_validators.py +706 -0
  35. truthound_dashboard/schemas/validators/privacy_validators.py +531 -0
  36. truthound_dashboard/schemas/validators/query_validators.py +510 -0
  37. truthound_dashboard/schemas/validators/registry.py +318 -0
  38. truthound_dashboard/schemas/validators/schema_validators.py +408 -0
  39. truthound_dashboard/schemas/validators/string_validators.py +396 -0
  40. truthound_dashboard/schemas/validators/table_validators.py +412 -0
  41. truthound_dashboard/schemas/validators/uniqueness_validators.py +355 -0
  42. truthound_dashboard/schemas/validators.py +59 -0
  43. truthound_dashboard/static/assets/{index-BqXVFyqj.js → index-BCA8H1hO.js} +95 -95
  44. truthound_dashboard/static/assets/index-BNsSQ2fN.css +1 -0
  45. truthound_dashboard/static/assets/unmerged_dictionaries-CsJWCRx9.js +1 -0
  46. truthound_dashboard/static/index.html +2 -2
  47. {truthound_dashboard-1.2.1.dist-info → truthound_dashboard-1.3.0.dist-info}/METADATA +46 -11
  48. {truthound_dashboard-1.2.1.dist-info → truthound_dashboard-1.3.0.dist-info}/RECORD +51 -27
  49. truthound_dashboard/static/assets/index-o8qHVDte.css +0 -1
  50. truthound_dashboard/static/assets/unmerged_dictionaries-n_T3wZTf.js +0 -1
  51. {truthound_dashboard-1.2.1.dist-info → truthound_dashboard-1.3.0.dist-info}/WHEEL +0 -0
  52. {truthound_dashboard-1.2.1.dist-info → truthound_dashboard-1.3.0.dist-info}/entry_points.txt +0 -0
  53. {truthound_dashboard-1.2.1.dist-info → truthound_dashboard-1.3.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,422 @@
1
+ """Distribution validators.
2
+
3
+ Validators for value ranges, statistical distributions, and outlier detection.
4
+ """
5
+
6
+ from .base import (
7
+ ParameterDefinition,
8
+ ParameterType,
9
+ ValidatorCategory,
10
+ ValidatorDefinition,
11
+ )
12
+
13
+ DISTRIBUTION_VALIDATORS: list[ValidatorDefinition] = [
14
+ ValidatorDefinition(
15
+ name="Between",
16
+ display_name="Value Between",
17
+ category=ValidatorCategory.DISTRIBUTION,
18
+ description="Validates that values fall within a specified range (inclusive).",
19
+ parameters=[
20
+ ParameterDefinition(
21
+ name="column",
22
+ label="Column",
23
+ type=ParameterType.COLUMN,
24
+ required=True,
25
+ ),
26
+ ParameterDefinition(
27
+ name="min_value",
28
+ label="Minimum Value",
29
+ type=ParameterType.FLOAT,
30
+ required=True,
31
+ ),
32
+ ParameterDefinition(
33
+ name="max_value",
34
+ label="Maximum Value",
35
+ type=ParameterType.FLOAT,
36
+ required=True,
37
+ ),
38
+ ParameterDefinition(
39
+ name="mostly",
40
+ label="Mostly (Threshold)",
41
+ type=ParameterType.FLOAT,
42
+ description="Acceptable pass ratio (0.0-1.0)",
43
+ min_value=0,
44
+ max_value=1,
45
+ ),
46
+ ],
47
+ tags=["distribution", "range", "bounds"],
48
+ severity_default="medium",
49
+ ),
50
+ ValidatorDefinition(
51
+ name="Range",
52
+ display_name="Range",
53
+ category=ValidatorCategory.DISTRIBUTION,
54
+ description="Validates value ranges with optional inclusivity control.",
55
+ parameters=[
56
+ ParameterDefinition(
57
+ name="column",
58
+ label="Column",
59
+ type=ParameterType.COLUMN,
60
+ required=True,
61
+ ),
62
+ ParameterDefinition(
63
+ name="min_value",
64
+ label="Minimum Value",
65
+ type=ParameterType.FLOAT,
66
+ ),
67
+ ParameterDefinition(
68
+ name="max_value",
69
+ label="Maximum Value",
70
+ type=ParameterType.FLOAT,
71
+ ),
72
+ ParameterDefinition(
73
+ name="inclusive_min",
74
+ label="Include Minimum",
75
+ type=ParameterType.BOOLEAN,
76
+ default=True,
77
+ ),
78
+ ParameterDefinition(
79
+ name="inclusive_max",
80
+ label="Include Maximum",
81
+ type=ParameterType.BOOLEAN,
82
+ default=True,
83
+ ),
84
+ ],
85
+ tags=["distribution", "range", "bounds"],
86
+ severity_default="medium",
87
+ ),
88
+ ValidatorDefinition(
89
+ name="Positive",
90
+ display_name="Positive Values",
91
+ category=ValidatorCategory.DISTRIBUTION,
92
+ description="Ensures all values are strictly positive (> 0).",
93
+ parameters=[
94
+ ParameterDefinition(
95
+ name="column",
96
+ label="Column",
97
+ type=ParameterType.COLUMN,
98
+ required=True,
99
+ ),
100
+ ],
101
+ tags=["distribution", "positive", "numeric"],
102
+ severity_default="high",
103
+ ),
104
+ ValidatorDefinition(
105
+ name="NonNegative",
106
+ display_name="Non-Negative Values",
107
+ category=ValidatorCategory.DISTRIBUTION,
108
+ description="Ensures all values are non-negative (>= 0).",
109
+ parameters=[
110
+ ParameterDefinition(
111
+ name="column",
112
+ label="Column",
113
+ type=ParameterType.COLUMN,
114
+ required=True,
115
+ ),
116
+ ],
117
+ tags=["distribution", "non-negative", "numeric"],
118
+ severity_default="high",
119
+ ),
120
+ ValidatorDefinition(
121
+ name="InSet",
122
+ display_name="In Set",
123
+ category=ValidatorCategory.DISTRIBUTION,
124
+ description="Validates that values belong to a predefined set.",
125
+ parameters=[
126
+ ParameterDefinition(
127
+ name="column",
128
+ label="Column",
129
+ type=ParameterType.COLUMN,
130
+ required=True,
131
+ ),
132
+ ParameterDefinition(
133
+ name="value_set",
134
+ label="Allowed Values",
135
+ type=ParameterType.STRING_LIST,
136
+ description="Set of allowed values",
137
+ required=True,
138
+ ),
139
+ ParameterDefinition(
140
+ name="mostly",
141
+ label="Mostly (Threshold)",
142
+ type=ParameterType.FLOAT,
143
+ min_value=0,
144
+ max_value=1,
145
+ ),
146
+ ],
147
+ tags=["distribution", "set", "enum"],
148
+ severity_default="medium",
149
+ ),
150
+ ValidatorDefinition(
151
+ name="NotInSet",
152
+ display_name="Not In Set",
153
+ category=ValidatorCategory.DISTRIBUTION,
154
+ description="Ensures values do not belong to a forbidden set.",
155
+ parameters=[
156
+ ParameterDefinition(
157
+ name="column",
158
+ label="Column",
159
+ type=ParameterType.COLUMN,
160
+ required=True,
161
+ ),
162
+ ParameterDefinition(
163
+ name="forbidden_set",
164
+ label="Forbidden Values",
165
+ type=ParameterType.STRING_LIST,
166
+ description="Set of forbidden values",
167
+ required=True,
168
+ ),
169
+ ],
170
+ tags=["distribution", "set", "forbidden"],
171
+ severity_default="high",
172
+ ),
173
+ ValidatorDefinition(
174
+ name="Increasing",
175
+ display_name="Increasing",
176
+ category=ValidatorCategory.DISTRIBUTION,
177
+ description="Validates that values are monotonically increasing.",
178
+ parameters=[
179
+ ParameterDefinition(
180
+ name="column",
181
+ label="Column",
182
+ type=ParameterType.COLUMN,
183
+ required=True,
184
+ ),
185
+ ParameterDefinition(
186
+ name="strict",
187
+ label="Strictly Increasing",
188
+ type=ParameterType.BOOLEAN,
189
+ description="If true, values must be strictly increasing (no equal values)",
190
+ default=False,
191
+ ),
192
+ ],
193
+ tags=["distribution", "monotonic", "increasing"],
194
+ severity_default="medium",
195
+ ),
196
+ ValidatorDefinition(
197
+ name="Decreasing",
198
+ display_name="Decreasing",
199
+ category=ValidatorCategory.DISTRIBUTION,
200
+ description="Validates that values are monotonically decreasing.",
201
+ parameters=[
202
+ ParameterDefinition(
203
+ name="column",
204
+ label="Column",
205
+ type=ParameterType.COLUMN,
206
+ required=True,
207
+ ),
208
+ ParameterDefinition(
209
+ name="strict",
210
+ label="Strictly Decreasing",
211
+ type=ParameterType.BOOLEAN,
212
+ default=False,
213
+ ),
214
+ ],
215
+ tags=["distribution", "monotonic", "decreasing"],
216
+ severity_default="medium",
217
+ ),
218
+ ValidatorDefinition(
219
+ name="Outlier",
220
+ display_name="Outlier (IQR)",
221
+ category=ValidatorCategory.DISTRIBUTION,
222
+ description="Detects statistical outliers using the IQR method.",
223
+ parameters=[
224
+ ParameterDefinition(
225
+ name="column",
226
+ label="Column",
227
+ type=ParameterType.COLUMN,
228
+ required=True,
229
+ ),
230
+ ParameterDefinition(
231
+ name="iqr_multiplier",
232
+ label="IQR Multiplier",
233
+ type=ParameterType.FLOAT,
234
+ description="Multiplier for IQR (1.5 = standard, 3.0 = extreme)",
235
+ default=1.5,
236
+ min_value=0,
237
+ ),
238
+ ],
239
+ tags=["distribution", "outlier", "iqr", "anomaly"],
240
+ severity_default="medium",
241
+ ),
242
+ ValidatorDefinition(
243
+ name="ZScoreOutlier",
244
+ display_name="Outlier (Z-Score)",
245
+ category=ValidatorCategory.DISTRIBUTION,
246
+ description="Detects outliers using Z-score methodology.",
247
+ parameters=[
248
+ ParameterDefinition(
249
+ name="column",
250
+ label="Column",
251
+ type=ParameterType.COLUMN,
252
+ required=True,
253
+ ),
254
+ ParameterDefinition(
255
+ name="threshold",
256
+ label="Z-Score Threshold",
257
+ type=ParameterType.FLOAT,
258
+ description="Z-score threshold (default: 3.0)",
259
+ default=3.0,
260
+ min_value=0,
261
+ ),
262
+ ],
263
+ tags=["distribution", "outlier", "zscore", "anomaly"],
264
+ severity_default="medium",
265
+ ),
266
+ ValidatorDefinition(
267
+ name="Quantile",
268
+ display_name="Quantile",
269
+ category=ValidatorCategory.DISTRIBUTION,
270
+ description="Validates that values fall within specified quantile bounds.",
271
+ parameters=[
272
+ ParameterDefinition(
273
+ name="column",
274
+ label="Column",
275
+ type=ParameterType.COLUMN,
276
+ required=True,
277
+ ),
278
+ ParameterDefinition(
279
+ name="quantile",
280
+ label="Quantile",
281
+ type=ParameterType.FLOAT,
282
+ description="Quantile value (0.0-1.0, e.g., 0.95 for 95th percentile)",
283
+ required=True,
284
+ min_value=0,
285
+ max_value=1,
286
+ ),
287
+ ParameterDefinition(
288
+ name="max_value",
289
+ label="Maximum Value at Quantile",
290
+ type=ParameterType.FLOAT,
291
+ description="Maximum allowed value at the specified quantile",
292
+ required=True,
293
+ ),
294
+ ],
295
+ tags=["distribution", "quantile", "percentile"],
296
+ severity_default="medium",
297
+ ),
298
+ ValidatorDefinition(
299
+ name="Distribution",
300
+ display_name="Distribution",
301
+ category=ValidatorCategory.DISTRIBUTION,
302
+ description="Validates that data follows an expected distribution pattern.",
303
+ parameters=[
304
+ ParameterDefinition(
305
+ name="column",
306
+ label="Column",
307
+ type=ParameterType.COLUMN,
308
+ required=True,
309
+ ),
310
+ ParameterDefinition(
311
+ name="distribution",
312
+ label="Expected Distribution",
313
+ type=ParameterType.SELECT,
314
+ description="Expected distribution type",
315
+ required=True,
316
+ options=[
317
+ {"value": "normal", "label": "Normal (Gaussian)"},
318
+ {"value": "uniform", "label": "Uniform"},
319
+ {"value": "exponential", "label": "Exponential"},
320
+ {"value": "poisson", "label": "Poisson"},
321
+ {"value": "binomial", "label": "Binomial"},
322
+ ],
323
+ ),
324
+ ],
325
+ tags=["distribution", "statistical", "pattern"],
326
+ severity_default="low",
327
+ ),
328
+ ValidatorDefinition(
329
+ name="KLDivergence",
330
+ display_name="KL Divergence",
331
+ category=ValidatorCategory.DISTRIBUTION,
332
+ description="Validates distribution similarity using Kullback-Leibler divergence.",
333
+ parameters=[
334
+ ParameterDefinition(
335
+ name="column",
336
+ label="Column",
337
+ type=ParameterType.COLUMN,
338
+ required=True,
339
+ ),
340
+ ParameterDefinition(
341
+ name="reference_distribution",
342
+ label="Reference Distribution",
343
+ type=ParameterType.SCHEMA,
344
+ description="Reference probability distribution as JSON",
345
+ required=True,
346
+ placeholder='{"A": 0.5, "B": 0.3, "C": 0.2}',
347
+ ),
348
+ ParameterDefinition(
349
+ name="threshold",
350
+ label="Threshold",
351
+ type=ParameterType.FLOAT,
352
+ description="Maximum allowed KL divergence",
353
+ required=True,
354
+ default=0.1,
355
+ min_value=0,
356
+ ),
357
+ ],
358
+ tags=["distribution", "kl", "divergence", "statistical"],
359
+ severity_default="medium",
360
+ ),
361
+ ValidatorDefinition(
362
+ name="ChiSquare",
363
+ display_name="Chi-Square Test",
364
+ category=ValidatorCategory.DISTRIBUTION,
365
+ description="Performs chi-square goodness-of-fit testing.",
366
+ parameters=[
367
+ ParameterDefinition(
368
+ name="column",
369
+ label="Column",
370
+ type=ParameterType.COLUMN,
371
+ required=True,
372
+ ),
373
+ ParameterDefinition(
374
+ name="expected_frequencies",
375
+ label="Expected Frequencies",
376
+ type=ParameterType.SCHEMA,
377
+ description="Expected frequency distribution as JSON",
378
+ required=True,
379
+ ),
380
+ ParameterDefinition(
381
+ name="alpha",
382
+ label="Significance Level",
383
+ type=ParameterType.FLOAT,
384
+ description="Significance level (default: 0.05)",
385
+ default=0.05,
386
+ min_value=0,
387
+ max_value=1,
388
+ ),
389
+ ],
390
+ tags=["distribution", "chi-square", "statistical", "test"],
391
+ severity_default="medium",
392
+ ),
393
+ ValidatorDefinition(
394
+ name="MostCommonValue",
395
+ display_name="Most Common Value",
396
+ category=ValidatorCategory.DISTRIBUTION,
397
+ description="Validates the most common value and its frequency.",
398
+ parameters=[
399
+ ParameterDefinition(
400
+ name="column",
401
+ label="Column",
402
+ type=ParameterType.COLUMN,
403
+ required=True,
404
+ ),
405
+ ParameterDefinition(
406
+ name="expected_value",
407
+ label="Expected Most Common Value",
408
+ type=ParameterType.STRING,
409
+ ),
410
+ ParameterDefinition(
411
+ name="min_frequency",
412
+ label="Minimum Frequency",
413
+ type=ParameterType.FLOAT,
414
+ description="Minimum frequency ratio (0.0-1.0)",
415
+ min_value=0,
416
+ max_value=1,
417
+ ),
418
+ ],
419
+ tags=["distribution", "frequency", "mode"],
420
+ severity_default="low",
421
+ ),
422
+ ]