datasentry-core 0.2.0__tar.gz → 0.4.0__tar.gz
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.
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/PKG-INFO +2 -2
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/pyproject.toml +1 -1
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/__init__.py +1 -1
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/storage/schema.py +12 -2
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/.gitignore +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/README.md +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/connectors/__init__.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/connectors/base.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/connectors/csv.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/connectors/duckdb.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/connectors/errors.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/connectors/file_based.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/connectors/jsonl.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/connectors/parquet.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/connectors/registry.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/connectors/spec.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/connectors/xlsx.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/contracts/__init__.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/contracts/exporters.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/__init__.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/base.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/common.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/cross_field.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/cross_table.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/datetime.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/initial/__init__.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/initial/anomaly_ml.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/initial/categorical.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/initial/formula.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/initial/missing.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/initial/numeric.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/initial/textual.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/initial/uniqueness.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/missingness.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/runner.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/safe_eval.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/textual_variants.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/drift/__init__.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/drift/engine.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/engine/__init__.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/engine/base.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/engine/duckdb.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/engine/fusion.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/engine/profiler.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/engine/sql_guard.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/llm/provider.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/models/__init__.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/models/audit.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/models/contract.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/models/detector.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/models/drift.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/models/enums.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/models/evidence.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/models/feedback.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/models/fingerprint.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/models/issue.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/models/llm.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/models/profile.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/models/quality.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/models/repair.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/models/rules.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/models/scan.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/models/validation.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/plugins.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/privacy/redactor.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/repair/__init__.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/repair/engine.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/reporting/__init__.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/reporting/html.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/reporting/interactive.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/reporting/junit.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/reporting/markdown.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/reporting/sarif.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/rules/engine.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/scoring/__init__.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/scoring/engine.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/scoring/gate.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/scoring/quality.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/scoring/weights.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/storage/__init__.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/storage/paths.py +0 -0
- {datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/storage/store.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: datasentry-core
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.0
|
|
4
4
|
Summary: DataSentry AI core domain models and engine (detectors, fusion, scoring, repairs).
|
|
5
5
|
License: Apache-2.0
|
|
6
6
|
Keywords: data-observability,data-quality,duckdb
|
|
@@ -13,7 +13,7 @@ from __future__ import annotations
|
|
|
13
13
|
import sqlite3
|
|
14
14
|
|
|
15
15
|
#: 当前 schema 版本(PRAGMA user_version)
|
|
16
|
-
SCHEMA_VERSION =
|
|
16
|
+
SCHEMA_VERSION = 6
|
|
17
17
|
|
|
18
18
|
_SCHEMA_DDL = """
|
|
19
19
|
PRAGMA journal_mode = WAL;
|
|
@@ -309,6 +309,7 @@ CREATE TABLE IF NOT EXISTS scheduled_jobs (
|
|
|
309
309
|
enabled INTEGER NOT NULL DEFAULT 1,
|
|
310
310
|
retry_attempts INTEGER NOT NULL DEFAULT 0,
|
|
311
311
|
webhook_url TEXT,
|
|
312
|
+
gate_quality_min REAL,
|
|
312
313
|
status TEXT NOT NULL DEFAULT 'idle'
|
|
313
314
|
CHECK (status IN ('idle','queued','running','dead')),
|
|
314
315
|
next_run_at TEXT NOT NULL,
|
|
@@ -328,7 +329,9 @@ CREATE TABLE IF NOT EXISTS job_runs (
|
|
|
328
329
|
scan_run_id TEXT,
|
|
329
330
|
summary TEXT,
|
|
330
331
|
error TEXT,
|
|
331
|
-
webhook_at TEXT
|
|
332
|
+
webhook_at TEXT,
|
|
333
|
+
file_hash TEXT,
|
|
334
|
+
skipped INTEGER NOT NULL DEFAULT 0
|
|
332
335
|
);
|
|
333
336
|
|
|
334
337
|
CREATE INDEX IF NOT EXISTS idx_scan_runs_dataset ON scan_runs(dataset_id);
|
|
@@ -383,5 +386,12 @@ def migrate(conn: sqlite3.Connection) -> None:
|
|
|
383
386
|
# v2 → v3:PII 加密映射(Step 48):pii_mappings 表 + 审计列
|
|
384
387
|
if version < 3:
|
|
385
388
|
_ensure_column(conn, "llm_invocations", "pii_session_id", "pii_session_id TEXT")
|
|
389
|
+
# v4 → v5:调度质量门禁(Step 52):scheduled_jobs.gate_quality_min
|
|
390
|
+
if version < 5:
|
|
391
|
+
_ensure_column(conn, "scheduled_jobs", "gate_quality_min", "gate_quality_min REAL")
|
|
392
|
+
# v5 → v6:变更感知增量调度(Step 53):job_runs.file_hash + skipped
|
|
393
|
+
if version < 6:
|
|
394
|
+
_ensure_column(conn, "job_runs", "file_hash", "file_hash TEXT")
|
|
395
|
+
_ensure_column(conn, "job_runs", "skipped", "skipped INTEGER NOT NULL DEFAULT 0")
|
|
386
396
|
conn.execute(f"PRAGMA user_version = {SCHEMA_VERSION}")
|
|
387
397
|
conn.commit()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/connectors/file_based.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/cross_field.py
RENAMED
|
File without changes
|
{datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/cross_table.py
RENAMED
|
File without changes
|
|
File without changes
|
{datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/initial/__init__.py
RENAMED
|
File without changes
|
{datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/initial/anomaly_ml.py
RENAMED
|
File without changes
|
{datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/initial/categorical.py
RENAMED
|
File without changes
|
{datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/initial/formula.py
RENAMED
|
File without changes
|
{datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/initial/missing.py
RENAMED
|
File without changes
|
{datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/initial/numeric.py
RENAMED
|
File without changes
|
{datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/initial/textual.py
RENAMED
|
File without changes
|
{datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/initial/uniqueness.py
RENAMED
|
File without changes
|
{datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/missingness.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/detectors/textual_variants.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{datasentry_core-0.2.0 → datasentry_core-0.4.0}/src/datasentry_core/reporting/interactive.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|