truthound-dashboard 1.3.0__py3-none-any.whl → 1.4.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.
- truthound_dashboard/api/alerts.py +258 -0
- truthound_dashboard/api/anomaly.py +1302 -0
- truthound_dashboard/api/cross_alerts.py +352 -0
- truthound_dashboard/api/deps.py +143 -0
- truthound_dashboard/api/drift_monitor.py +540 -0
- truthound_dashboard/api/lineage.py +1151 -0
- truthound_dashboard/api/maintenance.py +363 -0
- truthound_dashboard/api/middleware.py +373 -1
- truthound_dashboard/api/model_monitoring.py +805 -0
- truthound_dashboard/api/notifications_advanced.py +2452 -0
- truthound_dashboard/api/plugins.py +2096 -0
- truthound_dashboard/api/profile.py +211 -14
- truthound_dashboard/api/reports.py +853 -0
- truthound_dashboard/api/router.py +147 -0
- truthound_dashboard/api/rule_suggestions.py +310 -0
- truthound_dashboard/api/schema_evolution.py +231 -0
- truthound_dashboard/api/sources.py +47 -3
- truthound_dashboard/api/triggers.py +190 -0
- truthound_dashboard/api/validations.py +13 -0
- truthound_dashboard/api/validators.py +333 -4
- truthound_dashboard/api/versioning.py +309 -0
- truthound_dashboard/api/websocket.py +301 -0
- truthound_dashboard/core/__init__.py +27 -0
- truthound_dashboard/core/anomaly.py +1395 -0
- truthound_dashboard/core/anomaly_explainer.py +633 -0
- truthound_dashboard/core/cache.py +206 -0
- truthound_dashboard/core/cached_services.py +422 -0
- truthound_dashboard/core/charts.py +352 -0
- truthound_dashboard/core/connections.py +1069 -42
- truthound_dashboard/core/cross_alerts.py +837 -0
- truthound_dashboard/core/drift_monitor.py +1477 -0
- truthound_dashboard/core/drift_sampling.py +669 -0
- truthound_dashboard/core/i18n/__init__.py +42 -0
- truthound_dashboard/core/i18n/detector.py +173 -0
- truthound_dashboard/core/i18n/messages.py +564 -0
- truthound_dashboard/core/lineage.py +971 -0
- truthound_dashboard/core/maintenance.py +443 -5
- truthound_dashboard/core/model_monitoring.py +1043 -0
- truthound_dashboard/core/notifications/channels.py +1020 -1
- truthound_dashboard/core/notifications/deduplication/__init__.py +143 -0
- truthound_dashboard/core/notifications/deduplication/policies.py +274 -0
- truthound_dashboard/core/notifications/deduplication/service.py +400 -0
- truthound_dashboard/core/notifications/deduplication/stores.py +2365 -0
- truthound_dashboard/core/notifications/deduplication/strategies.py +422 -0
- truthound_dashboard/core/notifications/dispatcher.py +43 -0
- truthound_dashboard/core/notifications/escalation/__init__.py +149 -0
- truthound_dashboard/core/notifications/escalation/backends.py +1384 -0
- truthound_dashboard/core/notifications/escalation/engine.py +429 -0
- truthound_dashboard/core/notifications/escalation/models.py +336 -0
- truthound_dashboard/core/notifications/escalation/scheduler.py +1187 -0
- truthound_dashboard/core/notifications/escalation/state_machine.py +330 -0
- truthound_dashboard/core/notifications/escalation/stores.py +2896 -0
- truthound_dashboard/core/notifications/events.py +49 -0
- truthound_dashboard/core/notifications/metrics/__init__.py +115 -0
- truthound_dashboard/core/notifications/metrics/base.py +528 -0
- truthound_dashboard/core/notifications/metrics/collectors.py +583 -0
- truthound_dashboard/core/notifications/routing/__init__.py +169 -0
- truthound_dashboard/core/notifications/routing/combinators.py +184 -0
- truthound_dashboard/core/notifications/routing/config.py +375 -0
- truthound_dashboard/core/notifications/routing/config_parser.py +867 -0
- truthound_dashboard/core/notifications/routing/engine.py +382 -0
- truthound_dashboard/core/notifications/routing/expression_engine.py +1269 -0
- truthound_dashboard/core/notifications/routing/jinja2_engine.py +774 -0
- truthound_dashboard/core/notifications/routing/rules.py +625 -0
- truthound_dashboard/core/notifications/routing/validator.py +678 -0
- truthound_dashboard/core/notifications/service.py +2 -0
- truthound_dashboard/core/notifications/stats_aggregator.py +850 -0
- truthound_dashboard/core/notifications/throttling/__init__.py +83 -0
- truthound_dashboard/core/notifications/throttling/builder.py +311 -0
- truthound_dashboard/core/notifications/throttling/stores.py +1859 -0
- truthound_dashboard/core/notifications/throttling/throttlers.py +633 -0
- truthound_dashboard/core/openlineage.py +1028 -0
- truthound_dashboard/core/plugins/__init__.py +39 -0
- truthound_dashboard/core/plugins/docs/__init__.py +39 -0
- truthound_dashboard/core/plugins/docs/extractor.py +703 -0
- truthound_dashboard/core/plugins/docs/renderers.py +804 -0
- truthound_dashboard/core/plugins/hooks/__init__.py +63 -0
- truthound_dashboard/core/plugins/hooks/decorators.py +367 -0
- truthound_dashboard/core/plugins/hooks/manager.py +403 -0
- truthound_dashboard/core/plugins/hooks/protocols.py +265 -0
- truthound_dashboard/core/plugins/lifecycle/__init__.py +41 -0
- truthound_dashboard/core/plugins/lifecycle/hot_reload.py +584 -0
- truthound_dashboard/core/plugins/lifecycle/machine.py +419 -0
- truthound_dashboard/core/plugins/lifecycle/states.py +266 -0
- truthound_dashboard/core/plugins/loader.py +504 -0
- truthound_dashboard/core/plugins/registry.py +810 -0
- truthound_dashboard/core/plugins/reporter_executor.py +588 -0
- truthound_dashboard/core/plugins/sandbox/__init__.py +59 -0
- truthound_dashboard/core/plugins/sandbox/code_validator.py +243 -0
- truthound_dashboard/core/plugins/sandbox/engines.py +770 -0
- truthound_dashboard/core/plugins/sandbox/protocols.py +194 -0
- truthound_dashboard/core/plugins/sandbox.py +617 -0
- truthound_dashboard/core/plugins/security/__init__.py +68 -0
- truthound_dashboard/core/plugins/security/analyzer.py +535 -0
- truthound_dashboard/core/plugins/security/policies.py +311 -0
- truthound_dashboard/core/plugins/security/protocols.py +296 -0
- truthound_dashboard/core/plugins/security/signing.py +842 -0
- truthound_dashboard/core/plugins/security.py +446 -0
- truthound_dashboard/core/plugins/validator_executor.py +401 -0
- truthound_dashboard/core/plugins/versioning/__init__.py +51 -0
- truthound_dashboard/core/plugins/versioning/constraints.py +377 -0
- truthound_dashboard/core/plugins/versioning/dependencies.py +541 -0
- truthound_dashboard/core/plugins/versioning/semver.py +266 -0
- truthound_dashboard/core/profile_comparison.py +601 -0
- truthound_dashboard/core/report_history.py +570 -0
- truthound_dashboard/core/reporters/__init__.py +57 -0
- truthound_dashboard/core/reporters/base.py +296 -0
- truthound_dashboard/core/reporters/csv_reporter.py +155 -0
- truthound_dashboard/core/reporters/html_reporter.py +598 -0
- truthound_dashboard/core/reporters/i18n/__init__.py +65 -0
- truthound_dashboard/core/reporters/i18n/base.py +494 -0
- truthound_dashboard/core/reporters/i18n/catalogs.py +930 -0
- truthound_dashboard/core/reporters/json_reporter.py +160 -0
- truthound_dashboard/core/reporters/junit_reporter.py +233 -0
- truthound_dashboard/core/reporters/markdown_reporter.py +207 -0
- truthound_dashboard/core/reporters/pdf_reporter.py +209 -0
- truthound_dashboard/core/reporters/registry.py +272 -0
- truthound_dashboard/core/rule_generator.py +2088 -0
- truthound_dashboard/core/scheduler.py +822 -12
- truthound_dashboard/core/schema_evolution.py +858 -0
- truthound_dashboard/core/services.py +152 -9
- truthound_dashboard/core/statistics.py +718 -0
- truthound_dashboard/core/streaming_anomaly.py +883 -0
- truthound_dashboard/core/triggers/__init__.py +45 -0
- truthound_dashboard/core/triggers/base.py +226 -0
- truthound_dashboard/core/triggers/evaluators.py +609 -0
- truthound_dashboard/core/triggers/factory.py +363 -0
- truthound_dashboard/core/unified_alerts.py +870 -0
- truthound_dashboard/core/validation_limits.py +509 -0
- truthound_dashboard/core/versioning.py +709 -0
- truthound_dashboard/core/websocket/__init__.py +59 -0
- truthound_dashboard/core/websocket/manager.py +512 -0
- truthound_dashboard/core/websocket/messages.py +130 -0
- truthound_dashboard/db/__init__.py +30 -0
- truthound_dashboard/db/models.py +3375 -3
- truthound_dashboard/main.py +22 -0
- truthound_dashboard/schemas/__init__.py +396 -1
- truthound_dashboard/schemas/anomaly.py +1258 -0
- truthound_dashboard/schemas/base.py +4 -0
- truthound_dashboard/schemas/cross_alerts.py +334 -0
- truthound_dashboard/schemas/drift_monitor.py +890 -0
- truthound_dashboard/schemas/lineage.py +428 -0
- truthound_dashboard/schemas/maintenance.py +154 -0
- truthound_dashboard/schemas/model_monitoring.py +374 -0
- truthound_dashboard/schemas/notifications_advanced.py +1363 -0
- truthound_dashboard/schemas/openlineage.py +704 -0
- truthound_dashboard/schemas/plugins.py +1293 -0
- truthound_dashboard/schemas/profile.py +420 -34
- truthound_dashboard/schemas/profile_comparison.py +242 -0
- truthound_dashboard/schemas/reports.py +285 -0
- truthound_dashboard/schemas/rule_suggestion.py +434 -0
- truthound_dashboard/schemas/schema_evolution.py +164 -0
- truthound_dashboard/schemas/source.py +117 -2
- truthound_dashboard/schemas/triggers.py +511 -0
- truthound_dashboard/schemas/unified_alerts.py +223 -0
- truthound_dashboard/schemas/validation.py +25 -1
- truthound_dashboard/schemas/validators/__init__.py +11 -0
- truthound_dashboard/schemas/validators/base.py +151 -0
- truthound_dashboard/schemas/versioning.py +152 -0
- truthound_dashboard/static/index.html +2 -2
- {truthound_dashboard-1.3.0.dist-info → truthound_dashboard-1.4.0.dist-info}/METADATA +142 -18
- truthound_dashboard-1.4.0.dist-info/RECORD +239 -0
- truthound_dashboard/static/assets/index-BCA8H1hO.js +0 -574
- truthound_dashboard/static/assets/index-BNsSQ2fN.css +0 -1
- truthound_dashboard/static/assets/unmerged_dictionaries-CsJWCRx9.js +0 -1
- truthound_dashboard-1.3.0.dist-info/RECORD +0 -110
- {truthound_dashboard-1.3.0.dist-info → truthound_dashboard-1.4.0.dist-info}/WHEEL +0 -0
- {truthound_dashboard-1.3.0.dist-info → truthound_dashboard-1.4.0.dist-info}/entry_points.txt +0 -0
- {truthound_dashboard-1.3.0.dist-info → truthound_dashboard-1.4.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: truthound-dashboard
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.4.0
|
|
4
4
|
Summary: Open-source data quality dashboard - GX Cloud alternative
|
|
5
5
|
Author-email: Truthound Team <team@truthound.dev>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -23,6 +23,7 @@ Requires-Dist: apscheduler>=3.10.0
|
|
|
23
23
|
Requires-Dist: cryptography>=41.0.0
|
|
24
24
|
Requires-Dist: fastapi>=0.110.0
|
|
25
25
|
Requires-Dist: httpx>=0.26.0
|
|
26
|
+
Requires-Dist: jinja2>=3.1.0
|
|
26
27
|
Requires-Dist: polars>=0.20.0
|
|
27
28
|
Requires-Dist: pydantic-settings>=2.1.0
|
|
28
29
|
Requires-Dist: pydantic>=2.5.0
|
|
@@ -40,6 +41,8 @@ Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
|
|
|
40
41
|
Requires-Dist: pytest-cov>=4.1.0; extra == 'dev'
|
|
41
42
|
Requires-Dist: pytest>=7.4.0; extra == 'dev'
|
|
42
43
|
Requires-Dist: ruff>=0.1.0; extra == 'dev'
|
|
44
|
+
Provides-Extra: redis
|
|
45
|
+
Requires-Dist: redis>=5.0.0; extra == 'redis'
|
|
43
46
|
Provides-Extra: translate
|
|
44
47
|
Description-Content-Type: text/markdown
|
|
45
48
|
|
|
@@ -76,14 +79,18 @@ truthound-dashboard provides a graphical interface for managing data sources, ex
|
|
|
76
79
|
| Slack Notifications | Available | Available |
|
|
77
80
|
| Email Notifications | Available | Available |
|
|
78
81
|
| Webhook Notifications | Available | Available |
|
|
79
|
-
| Drift Detection | Available | Available (
|
|
82
|
+
| Drift Detection | Available | Available (5 methods) |
|
|
80
83
|
| Data Profiling | Available | Available |
|
|
81
84
|
| PII Scan | Available | Available (GDPR/CCPA/LGPD) |
|
|
82
85
|
| Data Masking | Available | Available (redact/hash/fake) |
|
|
83
|
-
|
|
|
84
|
-
| Data
|
|
86
|
+
| Anomaly Detection | Limited | Available (6 algorithms) |
|
|
87
|
+
| Data Lineage | Available | Available (3 viz options) |
|
|
88
|
+
| Model Monitoring | Available | Available |
|
|
89
|
+
| Reports & Export | Available | Available (6 formats) |
|
|
90
|
+
| Plugins Marketplace | Not Available | Available |
|
|
91
|
+
| Maintenance Tools | Limited | Available |
|
|
85
92
|
| Dark Mode | Available | Available |
|
|
86
|
-
| Multi-language (en
|
|
93
|
+
| Multi-language | Limited | 2 languages (en, ko) + AI translation CLI |
|
|
87
94
|
| License | Commercial | Apache 2.0 |
|
|
88
95
|
|
|
89
96
|
## Requirements
|
|
@@ -120,9 +127,10 @@ The dashboard interface is accessible at `http://localhost:8765`.
|
|
|
120
127
|
## Implemented Features
|
|
121
128
|
|
|
122
129
|
### Data Source Management
|
|
123
|
-
- Supported file formats: CSV, Parquet
|
|
124
|
-
- Supported databases: PostgreSQL, MySQL, Snowflake,
|
|
125
|
-
- Connection validation
|
|
130
|
+
- Supported file formats: CSV, Parquet, JSON
|
|
131
|
+
- Supported databases (13 connectors): PostgreSQL, MySQL, SQLite, BigQuery, Snowflake, Redshift, Databricks, Oracle, SQL Server, Spark
|
|
132
|
+
- Connection validation and management UI
|
|
133
|
+
- Dynamic configuration forms per source type
|
|
126
134
|
|
|
127
135
|
### Schema Management
|
|
128
136
|
- Automated schema generation using `th.learn`
|
|
@@ -135,10 +143,82 @@ The dashboard interface is accessible at `http://localhost:8765`.
|
|
|
135
143
|
- Persistent storage of validation results
|
|
136
144
|
- Issue classification by severity (Critical, High, Medium, Low)
|
|
137
145
|
- Advanced options: column filtering, min_severity, parallel execution, SQL pushdown
|
|
146
|
+
- ML-based caching layer for expensive operations
|
|
147
|
+
|
|
148
|
+
### Anomaly Detection
|
|
149
|
+
- 6 ML algorithms: IsolationForest, LocalOutlierFactor, DBSCAN, OneClassSVM, EllipticEnvelope, Ensemble
|
|
150
|
+
- Streaming anomaly detection support
|
|
151
|
+
- Explainability with feature contribution analysis
|
|
152
|
+
- Batch detection with progress tracking
|
|
153
|
+
- Algorithm comparison and agreement scoring
|
|
154
|
+
|
|
155
|
+
### Drift Monitoring
|
|
156
|
+
- 5 detection methods: Kolmogorov-Smirnov, Population Stability Index (PSI), Chi-Square, Jensen-Shannon, Auto
|
|
157
|
+
- 4 sampling strategies: Random, Stratified, Reservoir, Systematic
|
|
158
|
+
- Column-level distribution comparison
|
|
159
|
+
- Drift trend visualization and alerting
|
|
160
|
+
- Root cause analysis and remediation suggestions
|
|
161
|
+
|
|
162
|
+
### Data Lineage
|
|
163
|
+
- Interactive lineage graph visualization (D3.js/Mermaid/Cytoscape)
|
|
164
|
+
- Column-level lineage tracking
|
|
165
|
+
- Impact analysis (upstream/downstream)
|
|
166
|
+
- OpenLineage standard integration
|
|
167
|
+
- Webhook support for lineage events
|
|
168
|
+
- Performance optimization with lazy loading and virtualization
|
|
169
|
+
|
|
170
|
+
### Schema Evolution
|
|
171
|
+
- Automatic schema change detection
|
|
172
|
+
- Breaking vs non-breaking change classification
|
|
173
|
+
- Version timeline and comparison
|
|
174
|
+
- Change notification support
|
|
175
|
+
|
|
176
|
+
### Profile Comparison
|
|
177
|
+
- Profile-to-profile comparison
|
|
178
|
+
- Time-series trend analysis
|
|
179
|
+
- Quality metric visualization (null%, unique%)
|
|
180
|
+
- Historical profile snapshots
|
|
181
|
+
|
|
182
|
+
### Rule Suggestions
|
|
183
|
+
- Profile-based automatic rule generation
|
|
184
|
+
- Confidence scoring (high/medium/low)
|
|
185
|
+
- Bulk rule application
|
|
186
|
+
- Category-based filtering (completeness, uniqueness, distribution, string, datetime)
|
|
187
|
+
|
|
188
|
+
### Reports & Export
|
|
189
|
+
- 6 formats: HTML, PDF, CSV, JSON, Excel, Markdown
|
|
190
|
+
- Customizable themes for HTML/PDF reports
|
|
191
|
+
- Statistics dashboard (total reports, size, downloads, avg generation time)
|
|
192
|
+
- Search and filtering (by name, format, status)
|
|
193
|
+
- Report lifecycle management with automatic expiration
|
|
194
|
+
- Download tracking and batch cleanup
|
|
195
|
+
- Integration with validation schedules and notifications
|
|
196
|
+
|
|
197
|
+
### Plugins & Extensions
|
|
198
|
+
- Plugin marketplace for community extensions
|
|
199
|
+
- 4 plugin types: Validators, Reporters, Connectors, Transformers
|
|
200
|
+
- 4 security levels: Trusted, Verified, Unverified, Sandboxed
|
|
201
|
+
- Custom validator creation with UI (severity, category, parameters)
|
|
202
|
+
- Custom reporter creation with template support
|
|
203
|
+
- Plugin lifecycle management (install, enable, disable, uninstall)
|
|
204
|
+
- Filter by type and status
|
|
205
|
+
|
|
206
|
+
### Maintenance & System Health
|
|
207
|
+
- Auto maintenance scheduling with enable/disable toggle
|
|
208
|
+
- Retention policies with configurable ranges:
|
|
209
|
+
- Validation history: 1-365 days
|
|
210
|
+
- Profile snapshots: 1-100 per source
|
|
211
|
+
- Notification logs: 1-365 days
|
|
212
|
+
- Manual operations: cleanup, vacuum, cache clear
|
|
213
|
+
- Cache statistics monitoring (total, valid, expired entries, hit rate)
|
|
214
|
+
- Database optimization (VACUUM/ANALYZE)
|
|
215
|
+
- Real-time configuration updates
|
|
138
216
|
|
|
139
217
|
### Validation History
|
|
140
218
|
- Historical record of validation results
|
|
141
219
|
- Trend visualization
|
|
220
|
+
- Result versioning with 4 strategies (Incremental, Semantic, Timestamp, GitLike)
|
|
221
|
+
- Version comparison and rollback support
|
|
142
222
|
|
|
143
223
|
### Scheduling
|
|
144
224
|
- Cron-based scheduling using APScheduler
|
|
@@ -149,11 +229,47 @@ The dashboard interface is accessible at `http://localhost:8765`.
|
|
|
149
229
|
- Configurable notification rules based on validation outcomes
|
|
150
230
|
- Notification delivery logs
|
|
151
231
|
|
|
232
|
+
### Advanced Notifications
|
|
233
|
+
- 9 provider channels: Slack, Email, Webhook, Discord, Telegram, PagerDuty, OpsGenie, Microsoft Teams, GitHub
|
|
234
|
+
- Rule-based routing with 11+ rule types (severity, issue count, pass rate, time window, tag, data asset, metadata, status, error)
|
|
235
|
+
- Deduplication: 4 window strategies (Sliding, Tumbling, Session, Adaptive), 6 policies
|
|
236
|
+
- Throttling: 5 methods (TokenBucket, LeakyBucket, FixedWindow, SlidingWindow, Adaptive)
|
|
237
|
+
- Multi-level escalation with state machine
|
|
238
|
+
- Incident management and acknowledgment
|
|
239
|
+
|
|
240
|
+
### Unified Alerts
|
|
241
|
+
- Cross-feature alert aggregation (validation, drift, anomaly, schema changes)
|
|
242
|
+
- Severity-based filtering (Critical, High, Medium, Low)
|
|
243
|
+
- Alert correlation and grouping
|
|
244
|
+
- Action tracking (acknowledged, resolved)
|
|
245
|
+
|
|
246
|
+
### Cross-Table Validation
|
|
247
|
+
- Referential integrity checks
|
|
248
|
+
- Foreign key validation
|
|
249
|
+
- SQL-based cross-table queries
|
|
250
|
+
- Automated trigger configuration
|
|
251
|
+
|
|
252
|
+
### Model Monitoring
|
|
253
|
+
- ML model performance tracking
|
|
254
|
+
- Metric monitoring (accuracy, precision, recall, F1, AUC-ROC)
|
|
255
|
+
- Alert rules for model degradation
|
|
256
|
+
- Model registration and versioning
|
|
257
|
+
|
|
258
|
+
### Automated Triggers
|
|
259
|
+
- Data change detection triggers
|
|
260
|
+
- Composite triggers (AND/OR combinations)
|
|
261
|
+
- Cron-based scheduling
|
|
262
|
+
- Interval-based execution
|
|
263
|
+
- Preview and testing support
|
|
264
|
+
|
|
152
265
|
### Drift Detection
|
|
153
266
|
- Dataset comparison using `th.compare`
|
|
154
|
-
-
|
|
155
|
-
-
|
|
156
|
-
- Column-level
|
|
267
|
+
- 5 detection methods: Kolmogorov-Smirnov (KS), Population Stability Index (PSI), Chi-Square, Jensen-Shannon (JS), Auto
|
|
268
|
+
- 4 sampling strategies: Random, Stratified, Reservoir, Systematic
|
|
269
|
+
- Column-level distribution comparison with visualizations
|
|
270
|
+
- Drift trend monitoring and alerting
|
|
271
|
+
- Root cause analysis and remediation suggestions
|
|
272
|
+
- Large dataset support with chunked processing
|
|
157
273
|
|
|
158
274
|
### Data Profiling
|
|
159
275
|
- Statistical profiling using `th.profile`
|
|
@@ -191,21 +307,29 @@ The dashboard interface is accessible at `http://localhost:8765`.
|
|
|
191
307
|
- Activity feed for tracking changes
|
|
192
308
|
|
|
193
309
|
### User Interface
|
|
194
|
-
- Light and dark theme support
|
|
195
|
-
- Internationalization: English, Korean
|
|
196
|
-
- AI-powered translation
|
|
310
|
+
- Light and dark theme support with system preference detection
|
|
311
|
+
- Internationalization: 2 built-in languages (English, Korean)
|
|
312
|
+
- AI-powered translation CLI to expand to 15+ languages (OpenAI, Anthropic, Mistral, Ollama)
|
|
313
|
+
- Type-safe translations using Intlayer framework
|
|
314
|
+
- Comprehensive E2E test coverage (197+ tests) for all features
|
|
197
315
|
|
|
198
316
|
## Internationalization
|
|
199
317
|
|
|
200
|
-
truthound-dashboard implements internationalization using [Intlayer](https://intlayer.org), a modern i18n framework that provides type-safe translations with component-level content declaration.
|
|
318
|
+
truthound-dashboard implements internationalization using [Intlayer](https://intlayer.org), a modern i18n framework that provides type-safe translations with component-level content declaration.
|
|
319
|
+
|
|
320
|
+
### Built-in Languages
|
|
201
321
|
|
|
202
|
-
|
|
322
|
+
The dashboard ships with **2 fully translated languages**:
|
|
323
|
+
- **English (en)** - Complete UI translation
|
|
324
|
+
- **Korean (ko)** - Complete UI translation
|
|
203
325
|
|
|
204
|
-
|
|
326
|
+
These languages are immediately available without additional configuration or setup.
|
|
205
327
|
|
|
206
328
|
### Extending Language Support
|
|
207
329
|
|
|
208
|
-
|
|
330
|
+
The dashboard can be extended to support 15+ additional languages using the AI-powered `translate` command. This CLI tool translates all UI content files from the built-in English and Korean to your target language.
|
|
331
|
+
|
|
332
|
+
**Note:** Additional languages are not included in the default installation and must be generated using the translation CLI before deployment.
|
|
209
333
|
|
|
210
334
|
#### Supported AI Providers
|
|
211
335
|
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
truthound_dashboard/__init__.py,sha256=bzN84Y01SlEh5F8KkV-fGqPR82_tA0leAP6PyCXk8PY,504
|
|
2
|
+
truthound_dashboard/__main__.py,sha256=Zq98OmYZm4NJ7n2yG5Qr07fkSiwMEQQE20gG1fpW7wo,133
|
|
3
|
+
truthound_dashboard/cli.py,sha256=1x7AN2g9H5pZ4sG2PakCpSdBYnviknJv7LRIauAPzgU,19348
|
|
4
|
+
truthound_dashboard/config.py,sha256=fBSxoGitTe-9SeKkkQHtqNTcVxws5fvJ0YhF0EMuqG4,4089
|
|
5
|
+
truthound_dashboard/main.py,sha256=CuKB0Fueca4hfXLD8ONcDg6xnie71GToy0LjDiFZJrw,8847
|
|
6
|
+
truthound_dashboard/api/__init__.py,sha256=rnbuYRDgh0GcqkR-d9Trkc8L0O34K4tMH6flyeQ9U98,361
|
|
7
|
+
truthound_dashboard/api/alerts.py,sha256=uqrJJbQZZsjI7J3KYGANJDjhyAZP3v6nUhDR-UsU02o,7788
|
|
8
|
+
truthound_dashboard/api/anomaly.py,sha256=Isf3aoyoiLeZWjc-opPaMI0yG6WCehlfZita-jRsrjU,41482
|
|
9
|
+
truthound_dashboard/api/catalog.py,sha256=qQlsM4ubzjvI6rXwSY5214C-W93Ai-Xu1YjGVs1OoxE,10928
|
|
10
|
+
truthound_dashboard/api/collaboration.py,sha256=DxfpdUl_e8NfvDzv6-uwR32NN3Us7lLkzcif8RhvKyg,4720
|
|
11
|
+
truthound_dashboard/api/cross_alerts.py,sha256=e4HbJQbPKi6syaXqNGa4a9s0ATqtIUy36q59gq_aimk,9869
|
|
12
|
+
truthound_dashboard/api/deps.py,sha256=8rkHfe4zWEyv6CJCmXVn41t2zJNdS0KUvPeNoJEZ_80,8544
|
|
13
|
+
truthound_dashboard/api/drift.py,sha256=BYr_Iw2beKY0DNakoWTiLSEeXOnBUhmvBVvAsuewPWA,5725
|
|
14
|
+
truthound_dashboard/api/drift_monitor.py,sha256=BxaemeJFa4v1Q-fhmkKza9FcrX3gtuLYudZH6lVBABA,17235
|
|
15
|
+
truthound_dashboard/api/error_handlers.py,sha256=agovu0-CgMevgSvHh2aQnPjFpu1Wul_e67Vh9FAX_vM,8682
|
|
16
|
+
truthound_dashboard/api/glossary.py,sha256=Zdks7iHC9OLovgMJ28TELaET74OTQmUjP2TEwRLC8K4,10705
|
|
17
|
+
truthound_dashboard/api/health.py,sha256=84UPWmnS-9Fqs39SyRD2gu4QPE3ZJkaqkp5qCHkizsw,1927
|
|
18
|
+
truthound_dashboard/api/history.py,sha256=b6fy1pZfuwBqk3Yfeqnu8kaQcdNgWFMT7-0_29jLGOI,1792
|
|
19
|
+
truthound_dashboard/api/lineage.py,sha256=A8aq9zH7pDyucEstbwttyYrrbl--EWfNrUeOgqZVNtc,34982
|
|
20
|
+
truthound_dashboard/api/maintenance.py,sha256=amZEIGndy9bQRLaB_cPsFhfZFdaj5HzfpCnGxQU_UvM,10925
|
|
21
|
+
truthound_dashboard/api/mask.py,sha256=vIxTRI0LGYu49krwUS0iT4Y3maFJ6jo1QUerOdRr7LQ,4269
|
|
22
|
+
truthound_dashboard/api/middleware.py,sha256=JukJWCv1aCgDmkbiv8d9vlBZ1Ii_ETI_bjnCa-scnqE,32331
|
|
23
|
+
truthound_dashboard/api/model_monitoring.py,sha256=rIoFyg78Hnac0OXQ2fAN56WsNeFBfBKdZVaSNXPjHUs,26604
|
|
24
|
+
truthound_dashboard/api/notifications.py,sha256=U1_VvgzAI3x5aKRg3zces1UwpbN9g-Tt6WFaOJziNfc,16800
|
|
25
|
+
truthound_dashboard/api/notifications_advanced.py,sha256=sXsjrL2TJ1rAdFeo9jJb9bS9yU0KJPM1Kr-xr3uGFvc,86681
|
|
26
|
+
truthound_dashboard/api/plugins.py,sha256=VqzKtwHXac8D7hwwiR732fbs9r5kZVKE2E5Uy_xCBeI,64457
|
|
27
|
+
truthound_dashboard/api/profile.py,sha256=v422ArP9fSemE1TJZ0RaUeHUARHZp1dOYT_gqMuAbI8,8814
|
|
28
|
+
truthound_dashboard/api/reports.py,sha256=JgIyVPMHydIw4gO8rmAEPB6KKIqpdM84krs5udLNy-8,26526
|
|
29
|
+
truthound_dashboard/api/router.py,sha256=78K1oCCj2i7yO36u6yLaFv7CahrEKOuPbppPgeR1BUM,6395
|
|
30
|
+
truthound_dashboard/api/rule_suggestions.py,sha256=BzvMRSbuDdBAyXOZ59WJTzG3pfqEeK-emByM_LMCF78,9376
|
|
31
|
+
truthound_dashboard/api/rules.py,sha256=6xcE5g7w9e_mt4M_XS7egIa16zcynYmXctmyayAKICs,7453
|
|
32
|
+
truthound_dashboard/api/scan.py,sha256=ew2NYqq_lpl0mMA6CE9ajqViUSgjLiR1oGtRQsyvFTw,4827
|
|
33
|
+
truthound_dashboard/api/schedules.py,sha256=NMLU0szgZ2lGvVGuSJuEACZvc2qoeN65H-d2ANprj6E,8716
|
|
34
|
+
truthound_dashboard/api/schema_evolution.py,sha256=CR0l28KcU6jq9rlxRak-huDFmdNoTtJkxjsMZtnjzv4,6292
|
|
35
|
+
truthound_dashboard/api/schemas.py,sha256=vo9_X9nW2mn1NQKVu5-UZWV6T9STz5y4XIiJzSeyl1Y,4389
|
|
36
|
+
truthound_dashboard/api/sources.py,sha256=MNE2_ip-gdqbuwxKBe0AyQWGufimaS-pm2ljnr9u9xo,7171
|
|
37
|
+
truthound_dashboard/api/triggers.py,sha256=WA1mVOC7MyZEqR2ef6k-gRciwBFpMOK7L4BL0rT188o,5347
|
|
38
|
+
truthound_dashboard/api/validations.py,sha256=SKh4JmCwnIstrGWRyF0vk_atkoESd1t-oM5a5Wr-nU0,5375
|
|
39
|
+
truthound_dashboard/api/validators.py,sha256=gtiNGXhdIDpx0yUuZ0eED0INATNLio-_J4vv8J6A-PM,13246
|
|
40
|
+
truthound_dashboard/api/versioning.py,sha256=OpONUqKtbR13taFD0kQ4rZevcWLpe1-mdTL_27dUCiI,9951
|
|
41
|
+
truthound_dashboard/api/websocket.py,sha256=juc16AH9ZgG39IG8doYMBN5l_3ighlJ1L2RQIXNjMg0,8813
|
|
42
|
+
truthound_dashboard/core/__init__.py,sha256=Pw3Ldnu1Okaztp7G0yZq5sbJaouiG_DOhMA1dhEAUbs,7693
|
|
43
|
+
truthound_dashboard/core/anomaly.py,sha256=RRHN6D1xB-Gi8TluftLlZ_YwEtVFy2Vz5mONcBAjraA,46743
|
|
44
|
+
truthound_dashboard/core/anomaly_explainer.py,sha256=VDU7zGH4I59g1jZEgZ8opNMMmW5Cy_GLEHmE4NmJ9oU,22637
|
|
45
|
+
truthound_dashboard/core/base.py,sha256=Jp2NFNCacIt2DStGOSvyUYnx1wV-FqDkX9gLroCbo5I,5293
|
|
46
|
+
truthound_dashboard/core/cache.py,sha256=6LBvu-gdDoGylE2H7_-i-JvlXoQuKPwbXmcdGdAGfmk,21007
|
|
47
|
+
truthound_dashboard/core/cached_services.py,sha256=VwZ9qbg5ljyIbF3Ql7fpV6T3waWzYxATPmtC1dQQ7qk,11729
|
|
48
|
+
truthound_dashboard/core/charts.py,sha256=JzhVVMowR4znoXLqKglLBYiwEdUbKGDQ8HFV5PKbv-Q,10226
|
|
49
|
+
truthound_dashboard/core/connections.py,sha256=3Fg3IKy64pyzJPrljMl12UjAPVh7DiUci6Krnm0dvB4,47311
|
|
50
|
+
truthound_dashboard/core/cross_alerts.py,sha256=JB6aHIsfG4QczkdjIJ9CuITbH5J07-9lOfx789hsHW4,28666
|
|
51
|
+
truthound_dashboard/core/drift_monitor.py,sha256=dTXq9UqFxMcE2vTzVcwTufTtB4iU2AYUZVhLL1W3dao,54592
|
|
52
|
+
truthound_dashboard/core/drift_sampling.py,sha256=gLnFxmZjh7lwm_EATWcg0YE9iLq4MttyZcegufqUjxM,21835
|
|
53
|
+
truthound_dashboard/core/encryption.py,sha256=QMSbCPLtl9Vz2Cuxi8mZhEM_PlHzAxflGGEMRAXiByg,11130
|
|
54
|
+
truthound_dashboard/core/exceptions.py,sha256=VibhsFV9rtmT9VZ7gs63sZlsEGPTLP0CjxizglFUoHg,19336
|
|
55
|
+
truthound_dashboard/core/lineage.py,sha256=cpMI3N_Wm092Kgi3H2ADd1t86PlNMn3ZgdeIyUcx0_g,31085
|
|
56
|
+
truthound_dashboard/core/logging.py,sha256=Vom2C8ras6-3n7DYurKMyOqqv1L4ELq7iMTBOz_Rfyo,13392
|
|
57
|
+
truthound_dashboard/core/maintenance.py,sha256=bMXVJwu__KoEQJa_ti3nDxkwm0K3mYeQ1saDbq4EfyQ,33809
|
|
58
|
+
truthound_dashboard/core/model_monitoring.py,sha256=B5GCKsdSVzVOCIibp4aj8OYNe_TQaXcwkWR3mh73Ghw,33279
|
|
59
|
+
truthound_dashboard/core/openlineage.py,sha256=YFbG6NCQaLtJbydfuDZhrcFBJGafjcyB51fXHCh05yw,33136
|
|
60
|
+
truthound_dashboard/core/profile_comparison.py,sha256=H3ruQA0qcDBuELRyjn-U_E0Lb6p5K4sEMFKtajb_vtc,21919
|
|
61
|
+
truthound_dashboard/core/report_history.py,sha256=BBIQPEA68Gel8lFoh45UIA-lZUGSf3s0i17Fy_CFU3c,17534
|
|
62
|
+
truthound_dashboard/core/rule_generator.py,sha256=YAKU27k3U3D9j1dB1cshQNKZ6iFzgb2nsms8ugbBrvQ,80445
|
|
63
|
+
truthound_dashboard/core/sampling.py,sha256=K1GMFiHSDCvj1_xXVNG5Zl9rs0RfYry9Ew6u1FOHkJo,18445
|
|
64
|
+
truthound_dashboard/core/scheduler.py,sha256=4VZpvVnWBC9xoSd2_K-Y2GV_E-5wTzne64SVryKXVzI,40104
|
|
65
|
+
truthound_dashboard/core/schema_evolution.py,sha256=WhT4IrZTKcN3JWvKM3pDAWyyYaOcGxu50cd4fCrHn3w,27883
|
|
66
|
+
truthound_dashboard/core/services.py,sha256=QIVoV5VCGXKPj7j2UCrqTg82QgVs-IeOFnR1LrByAFA,62907
|
|
67
|
+
truthound_dashboard/core/statistics.py,sha256=wKTbyJJ-dDjRHrLFku6d1O-xYs7iGh_CksSiwiXFiIc,20918
|
|
68
|
+
truthound_dashboard/core/streaming_anomaly.py,sha256=u8G3Tb23DXVmDqjjXpRXq7w1G2g6hgb8hVOY_owPs6c,27349
|
|
69
|
+
truthound_dashboard/core/truthound_adapter.py,sha256=2eMuxxs1_VDLTCeajEiL6gCEXNXp3IxqZ7dJesa5aAM,36229
|
|
70
|
+
truthound_dashboard/core/unified_alerts.py,sha256=D0wH1KOeISvUbBLETA6mfyV3tHAkusXspUGWCKqM81w,30243
|
|
71
|
+
truthound_dashboard/core/validation_limits.py,sha256=ZtLp838kyV0vu3UnyBjS_jWM4_aLG5OpZorXhG-s-5o,17199
|
|
72
|
+
truthound_dashboard/core/versioning.py,sha256=igy-FfqeBCIc2V4SCZCWeONNOhLRTZZOwciNlkBroo4,22777
|
|
73
|
+
truthound_dashboard/core/i18n/__init__.py,sha256=tHatypmhKKc0Y4PQ2BWDnLLX4lWu_S1XdXkn0WX-3zw,1079
|
|
74
|
+
truthound_dashboard/core/i18n/detector.py,sha256=tcybGMRWuAaFwJhQ2IBoYtp3Knj8dnXttCfWywt_too,4856
|
|
75
|
+
truthound_dashboard/core/i18n/messages.py,sha256=dwEURuNvRwxpzbUc81aw57prEs3LXsyjRbN_OcE1gjk,24239
|
|
76
|
+
truthound_dashboard/core/notifications/__init__.py,sha256=zWE_fEKM-9KRxHtc68YCy9cKJLBQl1KxDrsfm6vazHM,1579
|
|
77
|
+
truthound_dashboard/core/notifications/base.py,sha256=9XoNRoECeFGq5bkJkorZefQ-pmwmgJxpZcWZg_PlaDc,12128
|
|
78
|
+
truthound_dashboard/core/notifications/channels.py,sha256=Yu3Tn8QxADxLy1DBvtrD-jwlcW-nrCb1tTX-P5MiFLw,53821
|
|
79
|
+
truthound_dashboard/core/notifications/dispatcher.py,sha256=U3j-3k9qsWh-ttgQaPEKXWRwWV4U5x9qWJbTr3sg4FI,15602
|
|
80
|
+
truthound_dashboard/core/notifications/events.py,sha256=7MiZX6V1k5F4_ub19lK3rd9G5NAWKFMUYuYxhEgTVt8,6501
|
|
81
|
+
truthound_dashboard/core/notifications/service.py,sha256=6QY7VOjeCgXkIIQZPmP4Yad7cw79Z9L8NSA4CnLTFkk,21229
|
|
82
|
+
truthound_dashboard/core/notifications/stats_aggregator.py,sha256=9DcxKgZ8xpXjyjQ1xi0JW4Q7PCRIc7vGxkm78vnJX7I,28310
|
|
83
|
+
truthound_dashboard/core/notifications/deduplication/__init__.py,sha256=9l7WzLANlHmInBjlpdD0K0A_TzlpCRpXEAPXN3H6w44,4194
|
|
84
|
+
truthound_dashboard/core/notifications/deduplication/policies.py,sha256=-dOS7sAnC_8XRWu0JgrQZuWyHL9hhVqEKNmXwtQ8RF0,8341
|
|
85
|
+
truthound_dashboard/core/notifications/deduplication/service.py,sha256=_3OQFsSal9QPPhfZvabwp3pr7QX6rA8s_ZQgBXQLUoE,12440
|
|
86
|
+
truthound_dashboard/core/notifications/deduplication/stores.py,sha256=CYRoNFjopTLy4sY1PJKZB1wwbtGC51XUflsYoor8c-4,78245
|
|
87
|
+
truthound_dashboard/core/notifications/deduplication/strategies.py,sha256=qjRFPtSYtMjnNUYL98YlR-g0sSePaVpjadwYKlg8nqA,13732
|
|
88
|
+
truthound_dashboard/core/notifications/escalation/__init__.py,sha256=AIarS19BFGa57JR26f1NXXICReWA1BOlrSS3vqDw83g,3922
|
|
89
|
+
truthound_dashboard/core/notifications/escalation/backends.py,sha256=oEW980bUN24V-nFzVaxucaw_jnD11g921IGBXRs7Hv0,46037
|
|
90
|
+
truthound_dashboard/core/notifications/escalation/engine.py,sha256=Tq2T2QBHjelRZTsk2f1NDsFMd9cRIuV6v5-5iB74U6I,13310
|
|
91
|
+
truthound_dashboard/core/notifications/escalation/models.py,sha256=vb1MYW0qOlZ2kr4n0R96pCRZP4fKIdYJcOSOjwUih-Y,11258
|
|
92
|
+
truthound_dashboard/core/notifications/escalation/scheduler.py,sha256=FCCC4BLxeml-fwmxYNG6R5r8vkX26pw3jfxco0hXjWU,40975
|
|
93
|
+
truthound_dashboard/core/notifications/escalation/state_machine.py,sha256=yD50FX7JVoV5cayJXYhQsy8wImyeeNQgUmjAE4bYolk,9475
|
|
94
|
+
truthound_dashboard/core/notifications/escalation/stores.py,sha256=FBOXhbMkQgFOwYls9QjJNundv8BQYQtuxTPOQe6HujM,99375
|
|
95
|
+
truthound_dashboard/core/notifications/metrics/__init__.py,sha256=pSXSeboGmhwLXTFL5WA9O9qg32zcf7B8yi_Y6I-X-4s,3382
|
|
96
|
+
truthound_dashboard/core/notifications/metrics/base.py,sha256=lENdy50D0C9VUvXlQHCvWItDJUOCMDi-N8TqqgRzRRE,15964
|
|
97
|
+
truthound_dashboard/core/notifications/metrics/collectors.py,sha256=fC2-hcFWr_u6-LxIWkTBnp2etrUMSaXcESdVv8Nu-oE,18209
|
|
98
|
+
truthound_dashboard/core/notifications/routing/__init__.py,sha256=9pMf_o_JkXQRKQhx0f95WI9FM53BNIJtmq6LEoUkmdo,4259
|
|
99
|
+
truthound_dashboard/core/notifications/routing/combinators.py,sha256=WaECXlj_cytnhzUq6ktGTEPG3Ebt2orAI2XoWFmLRAM,4970
|
|
100
|
+
truthound_dashboard/core/notifications/routing/config.py,sha256=sPvyP0utmtXeV44iPrrWsHmx9fo-6CGbQ4aj1paG8N0,11088
|
|
101
|
+
truthound_dashboard/core/notifications/routing/config_parser.py,sha256=FXTeGYVDDGW1qfed-LeBdCxfT7LFt7dlObQ0Vg_ogQU,27439
|
|
102
|
+
truthound_dashboard/core/notifications/routing/engine.py,sha256=1HMLJGx-k6s957V00uYMKx6l5Bi1mx1PshfKU83E13k,11652
|
|
103
|
+
truthound_dashboard/core/notifications/routing/expression_engine.py,sha256=MTCqVXKSgfRip_A8e-L-JU4CF1SnNxik67FFb-MOELQ,41219
|
|
104
|
+
truthound_dashboard/core/notifications/routing/jinja2_engine.py,sha256=ZYRvzJ9OyxpJVgXuA6VcIwX3TP4Cy5-EjQCaup7s_FQ,24260
|
|
105
|
+
truthound_dashboard/core/notifications/routing/rules.py,sha256=ThLykcfdJjz1v1bDz8nWXxO7tyWbYBslv7T3rXq-RsM,18228
|
|
106
|
+
truthound_dashboard/core/notifications/routing/validator.py,sha256=CPAKdUE2TR62xw4yQe45HANXYNCLR-uPwOd5EnAc2Is,23096
|
|
107
|
+
truthound_dashboard/core/notifications/throttling/__init__.py,sha256=ge_I1qCG8wLnBRzHhE66zEA7QaLp_8ascG4q9hYTQWQ,2001
|
|
108
|
+
truthound_dashboard/core/notifications/throttling/builder.py,sha256=qr_47Zv_Kn2kPW-BOwSVNMRB6z8jnnXd8CpSQox6Qb4,8357
|
|
109
|
+
truthound_dashboard/core/notifications/throttling/stores.py,sha256=iQiZ_pRdedti-6DXBhaWreNvo4GigEhxVCnzGIcI-20,61556
|
|
110
|
+
truthound_dashboard/core/notifications/throttling/throttlers.py,sha256=sbXmocdxBRTEGS3zreoRqtnAKN1awJnkKAmxsG1J4wM,19779
|
|
111
|
+
truthound_dashboard/core/phase5/__init__.py,sha256=-TNyj28lQC1YjoUtBBJj3ztksN65820Y-BWZRGIEOWA,447
|
|
112
|
+
truthound_dashboard/core/phase5/activity.py,sha256=cHheGj0-1zzWk_L0XdbJvTE8J24JVa3OnjP5Ulqieck,4281
|
|
113
|
+
truthound_dashboard/core/phase5/catalog.py,sha256=hLVaIHxe9BxNp2Tdf7Ru-IIH-xDqUOOitN17zQmLuis,24241
|
|
114
|
+
truthound_dashboard/core/phase5/collaboration.py,sha256=5c2UXVZDGGTkAZ3N3onagNof-hza31tE1ak8t5uM4o0,8331
|
|
115
|
+
truthound_dashboard/core/phase5/glossary.py,sha256=6v3hYXpCQTZ5xaFwBM0IrXMiOeW4giNldHIjdY88ROA,24751
|
|
116
|
+
truthound_dashboard/core/plugins/__init__.py,sha256=lVHwP95jKBrYks7uy3c7JaI1zr2tXfwx4VdWvA6si4Y,1007
|
|
117
|
+
truthound_dashboard/core/plugins/loader.py,sha256=-hM8jR8Dp015_0DBYGs5f65ZbQDNvVZH5AeMxDrZprU,15834
|
|
118
|
+
truthound_dashboard/core/plugins/registry.py,sha256=7DjHTbXItIla52_cj5_6NFQkoY2wwxbAX5y7IXVWkwk,25191
|
|
119
|
+
truthound_dashboard/core/plugins/reporter_executor.py,sha256=oybeBivTLcH8PX2sq775otDY3VadLbMPbtYGD8KTTiI,17187
|
|
120
|
+
truthound_dashboard/core/plugins/sandbox.py,sha256=gDYE5gAQzmdJ2ghfE8G4HPJtfNuUgBroKvg5-stHEqQ,17503
|
|
121
|
+
truthound_dashboard/core/plugins/security.py,sha256=58I0_UIe0UisZ2L28vH0N2PV4ljZKp6t--Y0gLrdAns,13378
|
|
122
|
+
truthound_dashboard/core/plugins/validator_executor.py,sha256=7E3LEve5PU35PQAGalvwd4e7FGITeK_vjSM8P3klQbY,12342
|
|
123
|
+
truthound_dashboard/core/plugins/docs/__init__.py,sha256=Zctl7Nz3YE1sEHflZHojldiJqIb7VVWp5LGcajJm-eg,739
|
|
124
|
+
truthound_dashboard/core/plugins/docs/extractor.py,sha256=Bt4x3tBIwapQDFkHeIqx-f_6efLfAvgvcOhly_oZQwY,24228
|
|
125
|
+
truthound_dashboard/core/plugins/docs/renderers.py,sha256=NYBHT12iIoug6C7uNoS2IWjyADa-QGFKedwoPRi8gGo,26618
|
|
126
|
+
truthound_dashboard/core/plugins/hooks/__init__.py,sha256=3_U92_JS00TdvLICWdzkotMPq22If8vtS7QhFXxrscA,1402
|
|
127
|
+
truthound_dashboard/core/plugins/hooks/decorators.py,sha256=8pW68xB9Qlq9DrkF1Sp8wlKFyerwPMWa4l0LhUbmAv0,11406
|
|
128
|
+
truthound_dashboard/core/plugins/hooks/manager.py,sha256=-jgTGGyqsQiSL6PVfQEJBaoSIiq8N5jaP_xKmlC4rmk,11945
|
|
129
|
+
truthound_dashboard/core/plugins/hooks/protocols.py,sha256=8SgUCLfQbniKzT8T6NNa0vVd2LXMePDCejeRhM_aIs0,7529
|
|
130
|
+
truthound_dashboard/core/plugins/lifecycle/__init__.py,sha256=cgg-rZj-ZOgUgLwWAtzJ5gF539WR_xd3lRbWNt2rq2w,758
|
|
131
|
+
truthound_dashboard/core/plugins/lifecycle/hot_reload.py,sha256=jY5gLBKt_OXF9KppuwNAcok1iVI_BYUkoBWUerpCQf4,18576
|
|
132
|
+
truthound_dashboard/core/plugins/lifecycle/machine.py,sha256=_m5kYdzFNat2Kkfzi66bvIv7kPim7s16KI59EOBtSxc,12959
|
|
133
|
+
truthound_dashboard/core/plugins/lifecycle/states.py,sha256=I1p8xV2GRyveEypwJGQ3pCjBWzCuGnX-DzBdzmyqx2w,6917
|
|
134
|
+
truthound_dashboard/core/plugins/sandbox/__init__.py,sha256=U6v3fnosgHZdmUci73gxP3erR78G1uVmlSd5Pu48Jl8,1272
|
|
135
|
+
truthound_dashboard/core/plugins/sandbox/code_validator.py,sha256=PRpScZbUmWkbbLi2pbQkkrvobQv3XTx2e2ZcuY_5Qn0,7664
|
|
136
|
+
truthound_dashboard/core/plugins/sandbox/engines.py,sha256=Gt14Fv1JFE9k1pOytGQEhMq49gFfYfzeaIBUsNOF0qM,24174
|
|
137
|
+
truthound_dashboard/core/plugins/sandbox/protocols.py,sha256=TVEnpzII81-lySsQaJmHRJ8IbY00YAbh-gemke1UBx8,7220
|
|
138
|
+
truthound_dashboard/core/plugins/security/__init__.py,sha256=bwqvZViNhZP7WD2htc0Zr0DG8s1EscwWuteIKF0vLVA,1440
|
|
139
|
+
truthound_dashboard/core/plugins/security/analyzer.py,sha256=pwj9SW_8-L-kEzJ3LLHOZrs6X0JCGVjUv7JV8mn7avk,18159
|
|
140
|
+
truthound_dashboard/core/plugins/security/policies.py,sha256=pjbkPJ2mvDSzi7cosY-RxzsycHTcxwDulC5eOr28sYE,11114
|
|
141
|
+
truthound_dashboard/core/plugins/security/protocols.py,sha256=vEtSnQLJtXdcrjLhznnf75mcE0OztHXpp9qHd1UqYRs,10362
|
|
142
|
+
truthound_dashboard/core/plugins/security/signing.py,sha256=6fBZ6XM348EUEclpJYZthRfIWoJ2Ho9clUkz0fFzNuE,25975
|
|
143
|
+
truthound_dashboard/core/plugins/versioning/__init__.py,sha256=Iw-1iVNrq9I3kfqzUI3RW2uqxyvPdJX2o9xJvpit6Vc,1063
|
|
144
|
+
truthound_dashboard/core/plugins/versioning/constraints.py,sha256=eGX_-KbJJ9CWc7u2UlWrBQ1VTvsW-KBBRSLBxBMJuPc,10839
|
|
145
|
+
truthound_dashboard/core/plugins/versioning/dependencies.py,sha256=gacGIe2xHNnps6JYhHWugUfvClhMBmpFkEVrwYV00Os,16839
|
|
146
|
+
truthound_dashboard/core/plugins/versioning/semver.py,sha256=8zBWYxXTpuTRsUiu6VrEkNiK3_01fQBX73JZn4LjIAg,8019
|
|
147
|
+
truthound_dashboard/core/reporters/__init__.py,sha256=sabF7o5vbo1iQLclWbchK9ajQGVNB61LOESU4CK6ZHw,1470
|
|
148
|
+
truthound_dashboard/core/reporters/base.py,sha256=9BYdWO6gUNX7bMmg9gNvuod_q-iRlRCwsaVA6vKjYqw,8652
|
|
149
|
+
truthound_dashboard/core/reporters/csv_reporter.py,sha256=vn6lVO3yzXveE3SYYyMN9jC4vRZKh679s6x3AOj0fIs,4921
|
|
150
|
+
truthound_dashboard/core/reporters/html_reporter.py,sha256=r7CScjtSQrvVJDZFbMwH7bFI1EZLF9xAAF1h5blmNbQ,18321
|
|
151
|
+
truthound_dashboard/core/reporters/json_reporter.py,sha256=oo_qXvili7M-EWu2rrdFXRf92fyO9Xj3cU2q6YuT8-w,4924
|
|
152
|
+
truthound_dashboard/core/reporters/junit_reporter.py,sha256=DmTL9Hj3W3G5pVTSyQ4sxM8OY-6yFcs9TnZ1g6GahCM,8945
|
|
153
|
+
truthound_dashboard/core/reporters/markdown_reporter.py,sha256=8Z39eX4BVts9lbpqqJmZ1NW1rkRhugpt2POD13UDHbk,6190
|
|
154
|
+
truthound_dashboard/core/reporters/pdf_reporter.py,sha256=aUwn2VTNUCmqBAPYpYffDMFw-JaROABbmEHevxybK3E,5785
|
|
155
|
+
truthound_dashboard/core/reporters/registry.py,sha256=tiFFZoufrxnWdX-PsQ42njUKvljoqes5Kk-G2jS8cOk,8134
|
|
156
|
+
truthound_dashboard/core/reporters/i18n/__init__.py,sha256=FxckZQMiQ6-lN3JzOndeJzp2yaswpewaerg8a9W47Go,1553
|
|
157
|
+
truthound_dashboard/core/reporters/i18n/base.py,sha256=89V_vM1xiKiZu1BRRGfi96bmuQFF_wQkiptlnqb3rMc,16308
|
|
158
|
+
truthound_dashboard/core/reporters/i18n/catalogs.py,sha256=ny7V60Oot1MKh9gkkZ_YpA1qaoPB42abDFDBIYutRcM,35321
|
|
159
|
+
truthound_dashboard/core/triggers/__init__.py,sha256=nxAO37X_S7CLw7CQFMwjEsaRmKbGvZvILvIggKMF5qI,1077
|
|
160
|
+
truthound_dashboard/core/triggers/base.py,sha256=r6BHa2cHWdkPVk0HRHFJyN8woOh-M8P9NIH5kwhw_d0,6486
|
|
161
|
+
truthound_dashboard/core/triggers/evaluators.py,sha256=xLzwXF2pM4OQWz8_8z00k-IfSAHiCABtQVjVckkd-7g,21722
|
|
162
|
+
truthound_dashboard/core/triggers/factory.py,sha256=JeUPEhZQQYXEaVlABwdMSR9R4GJlGOaNwM3NTQ_c640,11847
|
|
163
|
+
truthound_dashboard/core/websocket/__init__.py,sha256=tZx9jk3i__ZUb9K16tc--zf5OVvgA6Sh_Zhlh9PjX-s,1505
|
|
164
|
+
truthound_dashboard/core/websocket/manager.py,sha256=y_pLWwE93ee6N2gIqKaiGvyfnVw62nL8fTyROjYUFRg,14847
|
|
165
|
+
truthound_dashboard/core/websocket/messages.py,sha256=_AwY_rm1gSb1AmyMgBeVCYm5MRKnxkZbTfivevQGi4s,3929
|
|
166
|
+
truthound_dashboard/db/__init__.py,sha256=AzuuU-pWTnYqH_WUCS7coniWK81j1r7go9cGTPcvWl4,2957
|
|
167
|
+
truthound_dashboard/db/base.py,sha256=nj6DbYxAl5JoY0hC5rtM7pshOKpe-OH-AFsQqPGQzsM,2832
|
|
168
|
+
truthound_dashboard/db/database.py,sha256=yQ9FsQSi29HvvW0t6BrkyX5YcHijRJEjGTTGfcCCw10,5078
|
|
169
|
+
truthound_dashboard/db/models.py,sha256=Wv93Xk5Dxhq5nF4WDHWrMPp6xbpY_ZaOmHmsfQdeBbc,175626
|
|
170
|
+
truthound_dashboard/db/repository.py,sha256=48AJd65rwTSt1XqTN4vUeJ8nk416buE254JqipDCEEE,6890
|
|
171
|
+
truthound_dashboard/schemas/__init__.py,sha256=e3SXeKquiVFFYW8yc7-lOa70nXQg8qyMqwbFxOI4eb0,16500
|
|
172
|
+
truthound_dashboard/schemas/anomaly.py,sha256=6UEbL-O6f9qoZjvebzQ8s0UQ-T5_RE45AsdWXLIDm-4,45825
|
|
173
|
+
truthound_dashboard/schemas/base.py,sha256=Q54unYOGWv_k3fhT8hHzVA6nwLhfDAF-ws71-IZscqg,3061
|
|
174
|
+
truthound_dashboard/schemas/catalog.py,sha256=Gc0ky7kuWyo7naJqyyJe-S9JDF5Ge_c9oeVpUEarQqw,10556
|
|
175
|
+
truthound_dashboard/schemas/collaboration.py,sha256=xUsfK7PuNyCjD8vx4CqfktuYqkYY8oyJMe-JPJgo4uc,4873
|
|
176
|
+
truthound_dashboard/schemas/cross_alerts.py,sha256=1tatU5MKwp72F4uHTDelHb1lIcAEkh030-IWzn9clX8,10528
|
|
177
|
+
truthound_dashboard/schemas/drift.py,sha256=lvrTkYzxB9YxOYHNm40KThEM0cEjKw9UZk0i8REAqG0,8353
|
|
178
|
+
truthound_dashboard/schemas/drift_monitor.py,sha256=t6roREKJuxyZItRWUy1jEj19en1LPI_B79vMj4BwKkU,27901
|
|
179
|
+
truthound_dashboard/schemas/glossary.py,sha256=pY35k4zIf_4FYsdElD5fZJdJsPPQCn0Kk-EdwF8OCmI,10240
|
|
180
|
+
truthound_dashboard/schemas/history.py,sha256=OVzBmbw7uz0C4IWt43P8QxNl9_OO_-WZRdA7L44_9yo,2771
|
|
181
|
+
truthound_dashboard/schemas/lineage.py,sha256=ADrloeXqzWmgPH_x6L6wBaStjlhy2BY4AY2Vqp8CGQs,12633
|
|
182
|
+
truthound_dashboard/schemas/maintenance.py,sha256=FjD04Psq7QoNXPN23MKHJdqm7wgPlL3tnt-6QiVIKoY,4899
|
|
183
|
+
truthound_dashboard/schemas/mask.py,sha256=qOWMUEv2KNqACG4LcVN5n6Xq_hPqXmdM34JachB_SC0,6412
|
|
184
|
+
truthound_dashboard/schemas/model_monitoring.py,sha256=J0gbFnqzgUMPSPSCVgZJ1v_jx1Sc7pdU7e7AuQ5SYUg,14272
|
|
185
|
+
truthound_dashboard/schemas/notifications_advanced.py,sha256=yhQj-18_VsEhyLBfFGMsaGXkIl-pKfSuh2cUtxunkUo,45649
|
|
186
|
+
truthound_dashboard/schemas/openlineage.py,sha256=uLH5oIVKGfWiXRhTq8AggPlSgtB_gmPrJneUgXpXLqo,21675
|
|
187
|
+
truthound_dashboard/schemas/plugins.py,sha256=teCOO_N477MqpWvoHDLaUue9caRiKMudrCV_kiKzXjY,40318
|
|
188
|
+
truthound_dashboard/schemas/profile.py,sha256=q4r6p7CJ9bCC-fN3q4n6sKYbkZMffmGvFhijCAC75_k,18525
|
|
189
|
+
truthound_dashboard/schemas/profile_comparison.py,sha256=tDZhVs7fsUgSCDpec_V5v3Kn3LWOAxODvajzgtLtA2s,9173
|
|
190
|
+
truthound_dashboard/schemas/reports.py,sha256=2tuBJWAJ2jbLRvRE-4-vS4KSwKSrqVm1QUoPz1sO9nM,10916
|
|
191
|
+
truthound_dashboard/schemas/rule.py,sha256=eIx9CdQ-gC6i-BpVsX714y-l0-TWY6VOVr0nSTkn_bk,5207
|
|
192
|
+
truthound_dashboard/schemas/rule_suggestion.py,sha256=Ml_uX3MdQIagWCON9fpJ9BiRixgEO27Bqoct82jluEM,15149
|
|
193
|
+
truthound_dashboard/schemas/scan.py,sha256=v4kvUaoHSvrnPAOE-6KY_IABo5Kuk99jljujT36ggoM,9032
|
|
194
|
+
truthound_dashboard/schemas/schedule.py,sha256=JkXPPqkhkIldBp_JwMD73Vlvq2h4Gq1BighnUVQdjuc,2796
|
|
195
|
+
truthound_dashboard/schemas/schema.py,sha256=u6CI3wvK-h075zrjYVO-SsZ2Cdodjd1HdDSIPJ6abno,4980
|
|
196
|
+
truthound_dashboard/schemas/schema_evolution.py,sha256=al110n2SgM0xxpohWSdQMuEq6dRbIZRb0EvQV-nUJiE,5837
|
|
197
|
+
truthound_dashboard/schemas/source.py,sha256=3Wx17KlUzV5YBOIagt6ekYVeWAwbfC-gwkUr5asltl8,7809
|
|
198
|
+
truthound_dashboard/schemas/triggers.py,sha256=dIJghugFTccrKp1deCgoEP6UVQEEqIGeXXElBwK1Jls,16123
|
|
199
|
+
truthound_dashboard/schemas/unified_alerts.py,sha256=x9efcfy71hxPho6rpGwOmoJXgW3sdJ8ZrqA4YAwti78,7576
|
|
200
|
+
truthound_dashboard/schemas/validation.py,sha256=xyKZlF2ftIfaHwM1Gx8JFdaDdWf5dthw5_89rZeSkn4,9625
|
|
201
|
+
truthound_dashboard/schemas/validators.py,sha256=viqMl-6f8Bnp1488__PHeQUrK5yEFwUO6Z1EXtMoJ1k,1502
|
|
202
|
+
truthound_dashboard/schemas/versioning.py,sha256=gZob-ToosgYTHibf93FqNoIgum_gJMTYtdK-PbFwO_g,5617
|
|
203
|
+
truthound_dashboard/schemas/validators/__init__.py,sha256=rHePThM54k9t-y8lA5zp-2W1TWGNwhoZjdSITjnbFAE,1762
|
|
204
|
+
truthound_dashboard/schemas/validators/aggregate_validators.py,sha256=mJDiHHL8QlUOjtfVCgizTYVAXeoz3apyxndiWV7ArNM,8247
|
|
205
|
+
truthound_dashboard/schemas/validators/anomaly_validators.py,sha256=xYKi3BiH9FTAqHk7ETvPkbT21aAkqkrlC6kdD0S9Cvs,25557
|
|
206
|
+
truthound_dashboard/schemas/validators/base.py,sha256=EME6vAC3XsVmBrlUQjbB__5V6bP3XEc6D3lOOlprbkg,15531
|
|
207
|
+
truthound_dashboard/schemas/validators/completeness_validators.py,sha256=SfvYvErk88syGGMJqy3iSGVvSwqWhgIQZEU4VRzN3oQ,9650
|
|
208
|
+
truthound_dashboard/schemas/validators/cross_table_validators.py,sha256=TrBc6kPhvCjcqEMwFYz1MYBYYV5ULeCHoS8ogp3WIbI,14720
|
|
209
|
+
truthound_dashboard/schemas/validators/datetime_validators.py,sha256=KqUgXgxlUJOFC5Xz2QzuDzyZXn7jsZ-S2Fm978b8-n0,8278
|
|
210
|
+
truthound_dashboard/schemas/validators/distribution_validators.py,sha256=0foHX8aqFmtP9IoecSZa9uKF_so1Zaef3kC5rynhx0k,14442
|
|
211
|
+
truthound_dashboard/schemas/validators/drift_validators.py,sha256=IUp75AK-D7yq3KIL-zMCYNzCKXrBxqBe4KOLkZaR46Y,21602
|
|
212
|
+
truthound_dashboard/schemas/validators/geospatial_validators.py,sha256=EVyG0DjBi2ImJXY5C1va5YUieLhLsRmpAgn0Hp3brFU,16706
|
|
213
|
+
truthound_dashboard/schemas/validators/multi_column_validators.py,sha256=-fVAtahptvIqG686o1YR_lg7OSZHfCv5CGlwwgyPwJk,25586
|
|
214
|
+
truthound_dashboard/schemas/validators/privacy_validators.py,sha256=KGAeQum91ayP3WIPBCVhajspUctqWS8HyfotDsL26x8,20121
|
|
215
|
+
truthound_dashboard/schemas/validators/query_validators.py,sha256=bVoD7JneRSKyJENs4NDMQI8TgVmj_uomuvt4l2MlEK8,18018
|
|
216
|
+
truthound_dashboard/schemas/validators/registry.py,sha256=_3praUHNT1V_mZcufqro48dfEg9oR8MrEjy2Z0X6jKw,9304
|
|
217
|
+
truthound_dashboard/schemas/validators/schema_validators.py,sha256=o7f-6pvjX95D29gDkHpQh4PvvGd2p0wsvknqY_16gkc,15290
|
|
218
|
+
truthound_dashboard/schemas/validators/string_validators.py,sha256=28Jm-6ioe4N2QQzC7Nqu4VJje8ZCUWb-m4bX-3Ysvjk,13064
|
|
219
|
+
truthound_dashboard/schemas/validators/table_validators.py,sha256=hIt5LcGZ05QZMKPNI5J5SEWfUJfejeO7e1Q7DP3nX8k,13967
|
|
220
|
+
truthound_dashboard/schemas/validators/uniqueness_validators.py,sha256=Y23ts3FAAuhluXqz8bdFW8VMN5HZIOM7Nz9Hub0ehRw,12110
|
|
221
|
+
truthound_dashboard/static/favicon.ico,sha256=T9BJXnpyq6t6lpFHd6ivEimWF2uGFzwxDeTDyz2UVmQ,15406
|
|
222
|
+
truthound_dashboard/static/index.html,sha256=zF4jSC_mYBpqp2NSiPQ-58ljscoJcsjEUMJiZHfScII,568
|
|
223
|
+
truthound_dashboard/static/assets/logo--IpBiMPK.png,sha256=c7ne4oaZ1BpQR5yP2TVYoAE1s1vS7lRPxgWP1pzUMYE,213715
|
|
224
|
+
truthound_dashboard/translate/__init__.py,sha256=Mv_xtMk4SaBGUsMgJqhwARnkJkZdq4OhJi5HdpdsBnw,1458
|
|
225
|
+
truthound_dashboard/translate/config_updater.py,sha256=AtJ7ero4cHKwUYQRDbGaPAlLmcyBv0IeBewdiTo0X8c,12038
|
|
226
|
+
truthound_dashboard/translate/exceptions.py,sha256=kPxCN2n_wYl3m6jVg_DRO8pagr55YpPU2e3Dt0YVQhc,3244
|
|
227
|
+
truthound_dashboard/translate/translator.py,sha256=2S35k_cJC1TXy-1XpAIDJZPI5_hKimeX3mNZ3osazik,14228
|
|
228
|
+
truthound_dashboard/translate/providers/__init__.py,sha256=zhG3eycCO2LCl9AVtRqvtqkIrjsTUqaftsN6YhZCpVw,1187
|
|
229
|
+
truthound_dashboard/translate/providers/anthropic.py,sha256=rBF2ueKqVunGrCYSyIDZGTzra1mK7-FOh7vACqg7nis,4522
|
|
230
|
+
truthound_dashboard/translate/providers/base.py,sha256=gYMjv5x1ICpZ-jFzv28tsJc7uTvkm8EVgDlTznbvAVQ,6490
|
|
231
|
+
truthound_dashboard/translate/providers/mistral.py,sha256=j0oh_mGksdMuIfbuZKq0yon6G6oabbO7fTgQzsKEZ7k,4692
|
|
232
|
+
truthound_dashboard/translate/providers/ollama.py,sha256=XlAHE14VvdSPKFbrJIbB3KUHzrgQm0Zj08snL71otUQ,7286
|
|
233
|
+
truthound_dashboard/translate/providers/openai.py,sha256=AeaOfRjNgCIgBdcX1gcYqqf41fXeEIyN3AiLAOy3SZc,6760
|
|
234
|
+
truthound_dashboard/translate/providers/registry.py,sha256=iwfcWYJ2uKfwWjsalhV4jSoyZC7bSeujK6sTMuylMMY,6474
|
|
235
|
+
truthound_dashboard-1.4.0.dist-info/METADATA,sha256=fh_f_UPYvhBAQ6eRQ5r5xNf3X1CHGtPEftAbZZ_tUWY,18083
|
|
236
|
+
truthound_dashboard-1.4.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
237
|
+
truthound_dashboard-1.4.0.dist-info/entry_points.txt,sha256=Xq8qadJ-Sqk4_0Ss_rhCqCv7uxPZZdwO3WUnbK0r6Hw,135
|
|
238
|
+
truthound_dashboard-1.4.0.dist-info/licenses/LICENSE,sha256=qrBWTDMS8ZvwVJl3Yo2n8_AxOos3s8S9pcOzLW5Nivg,10763
|
|
239
|
+
truthound_dashboard-1.4.0.dist-info/RECORD,,
|