duckguard 3.0.0__tar.gz → 3.1.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.
Files changed (130) hide show
  1. {duckguard-3.0.0 → duckguard-3.1.0}/.gitignore +1 -0
  2. duckguard-3.1.0/PKG-INFO +1133 -0
  3. duckguard-3.1.0/README.md +1027 -0
  4. duckguard-3.1.0/examples/generate_notebook.py +1395 -0
  5. duckguard-3.1.0/examples/getting_started.ipynb +1860 -0
  6. duckguard-3.1.0/examples/profiler_example.py +94 -0
  7. duckguard-3.1.0/examples/sample_data/duckguard.yaml +22 -0
  8. duckguard-3.1.0/examples/sample_data/orders.csv +31 -0
  9. {duckguard-3.0.0 → duckguard-3.1.0}/pyproject.toml +1 -1
  10. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/__init__.py +1 -1
  11. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/anomaly/methods.py +47 -0
  12. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/anomaly/ml_methods.py +146 -21
  13. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/cli/main.py +324 -89
  14. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/core/result.py +40 -14
  15. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/notifications/email.py +9 -0
  16. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/notifications/notifiers.py +39 -1
  17. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/profiler/auto_profile.py +217 -64
  18. {duckguard-3.0.0 → duckguard-3.1.0}/tests/test_cli.py +24 -0
  19. {duckguard-3.0.0 → duckguard-3.1.0}/tests/test_connectors.py +2 -2
  20. {duckguard-3.0.0 → duckguard-3.1.0}/tests/test_dataset.py +16 -14
  21. {duckguard-3.0.0 → duckguard-3.1.0}/tests/test_engine.py +4 -4
  22. duckguard-3.1.0/tests/test_profiler.py +244 -0
  23. {duckguard-3.0.0 → duckguard-3.1.0}/tests/test_row_level_errors.py +1 -2
  24. duckguard-3.0.0/PKG-INFO +0 -1072
  25. duckguard-3.0.0/README.md +0 -966
  26. duckguard-3.0.0/examples/getting_started.ipynb +0 -3123
  27. duckguard-3.0.0/examples/profiler_example.py +0 -49
  28. duckguard-3.0.0/examples/sample_data/duckguard.yaml +0 -22
  29. duckguard-3.0.0/examples/sample_data/orders.csv +0 -26
  30. duckguard-3.0.0/tests/test_profiler.py +0 -88
  31. {duckguard-3.0.0 → duckguard-3.1.0}/LICENSE +0 -0
  32. {duckguard-3.0.0 → duckguard-3.1.0}/examples/basic_usage.py +0 -0
  33. {duckguard-3.0.0 → duckguard-3.1.0}/examples/colab_quickstart.ipynb +0 -0
  34. {duckguard-3.0.0 → duckguard-3.1.0}/examples/kaggle_notebook.ipynb +0 -0
  35. {duckguard-3.0.0 → duckguard-3.1.0}/examples/pytest_example.py +0 -0
  36. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/anomaly/__init__.py +0 -0
  37. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/anomaly/baselines.py +0 -0
  38. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/anomaly/detector.py +0 -0
  39. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/checks/__init__.py +0 -0
  40. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/checks/conditional.py +0 -0
  41. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/checks/distributional.py +0 -0
  42. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/checks/multicolumn.py +0 -0
  43. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/checks/query_based.py +0 -0
  44. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/cli/__init__.py +0 -0
  45. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/connectors/__init__.py +0 -0
  46. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/connectors/base.py +0 -0
  47. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/connectors/bigquery.py +0 -0
  48. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/connectors/databricks.py +0 -0
  49. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/connectors/factory.py +0 -0
  50. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/connectors/files.py +0 -0
  51. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/connectors/kafka.py +0 -0
  52. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/connectors/mongodb.py +0 -0
  53. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/connectors/mysql.py +0 -0
  54. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/connectors/oracle.py +0 -0
  55. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/connectors/postgres.py +0 -0
  56. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/connectors/redshift.py +0 -0
  57. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/connectors/snowflake.py +0 -0
  58. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/connectors/sqlite.py +0 -0
  59. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/connectors/sqlserver.py +0 -0
  60. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/contracts/__init__.py +0 -0
  61. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/contracts/diff.py +0 -0
  62. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/contracts/generator.py +0 -0
  63. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/contracts/loader.py +0 -0
  64. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/contracts/schema.py +0 -0
  65. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/contracts/validator.py +0 -0
  66. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/core/__init__.py +0 -0
  67. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/core/column.py +0 -0
  68. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/core/dataset.py +0 -0
  69. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/core/engine.py +0 -0
  70. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/core/scoring.py +0 -0
  71. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/errors.py +0 -0
  72. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/freshness/__init__.py +0 -0
  73. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/freshness/monitor.py +0 -0
  74. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/history/__init__.py +0 -0
  75. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/history/schema.py +0 -0
  76. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/history/storage.py +0 -0
  77. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/history/trends.py +0 -0
  78. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/integrations/__init__.py +0 -0
  79. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/integrations/airflow.py +0 -0
  80. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/integrations/dbt.py +0 -0
  81. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/notifications/__init__.py +0 -0
  82. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/notifications/formatter.py +0 -0
  83. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/profiler/__init__.py +0 -0
  84. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/profiler/distribution_analyzer.py +0 -0
  85. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/profiler/outlier_detector.py +0 -0
  86. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/profiler/pattern_matcher.py +0 -0
  87. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/profiler/quality_scorer.py +0 -0
  88. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/pytest_plugin/__init__.py +0 -0
  89. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/pytest_plugin/plugin.py +0 -0
  90. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/reporting/__init__.py +0 -0
  91. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/reporting/console.py +0 -0
  92. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/reporting/json_report.py +0 -0
  93. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/reports/__init__.py +0 -0
  94. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/reports/html_reporter.py +0 -0
  95. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/reports/pdf_reporter.py +0 -0
  96. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/rules/__init__.py +0 -0
  97. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/rules/executor.py +0 -0
  98. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/rules/generator.py +0 -0
  99. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/rules/loader.py +0 -0
  100. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/rules/schema.py +0 -0
  101. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/schema_history/__init__.py +0 -0
  102. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/schema_history/analyzer.py +0 -0
  103. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/schema_history/tracker.py +0 -0
  104. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/semantic/__init__.py +0 -0
  105. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/semantic/analyzer.py +0 -0
  106. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/semantic/detector.py +0 -0
  107. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/semantic/validators.py +0 -0
  108. {duckguard-3.0.0 → duckguard-3.1.0}/src/duckguard/validators/__init__.py +0 -0
  109. {duckguard-3.0.0 → duckguard-3.1.0}/tests/conftest.py +0 -0
  110. {duckguard-3.0.0 → duckguard-3.1.0}/tests/test_airflow_integration.py +0 -0
  111. {duckguard-3.0.0 → duckguard-3.1.0}/tests/test_conditional_checks.py +0 -0
  112. {duckguard-3.0.0 → duckguard-3.1.0}/tests/test_crossref.py +0 -0
  113. {duckguard-3.0.0 → duckguard-3.1.0}/tests/test_dbt_integration.py +0 -0
  114. {duckguard-3.0.0 → duckguard-3.1.0}/tests/test_distribution_drift.py +0 -0
  115. {duckguard-3.0.0 → duckguard-3.1.0}/tests/test_distributional_checks.py +0 -0
  116. {duckguard-3.0.0 → duckguard-3.1.0}/tests/test_email_notifications.py +0 -0
  117. {duckguard-3.0.0 → duckguard-3.1.0}/tests/test_errors.py +0 -0
  118. {duckguard-3.0.0 → duckguard-3.1.0}/tests/test_freshness.py +0 -0
  119. {duckguard-3.0.0 → duckguard-3.1.0}/tests/test_group_by.py +0 -0
  120. {duckguard-3.0.0 → duckguard-3.1.0}/tests/test_history.py +0 -0
  121. {duckguard-3.0.0 → duckguard-3.1.0}/tests/test_integration_duckguard_3_0.py +0 -0
  122. {duckguard-3.0.0 → duckguard-3.1.0}/tests/test_ml_anomaly.py +0 -0
  123. {duckguard-3.0.0 → duckguard-3.1.0}/tests/test_multicolumn_checks.py +0 -0
  124. {duckguard-3.0.0 → duckguard-3.1.0}/tests/test_notifications.py +0 -0
  125. {duckguard-3.0.0 → duckguard-3.1.0}/tests/test_performance_benchmarks.py +0 -0
  126. {duckguard-3.0.0 → duckguard-3.1.0}/tests/test_query_checks.py +0 -0
  127. {duckguard-3.0.0 → duckguard-3.1.0}/tests/test_reconciliation.py +0 -0
  128. {duckguard-3.0.0 → duckguard-3.1.0}/tests/test_reports.py +0 -0
  129. {duckguard-3.0.0 → duckguard-3.1.0}/tests/test_schema_history.py +0 -0
  130. {duckguard-3.0.0 → duckguard-3.1.0}/tests/test_validators.py +0 -0
@@ -63,6 +63,7 @@ venv.bak/
63
63
  .idea/
64
64
  .vscode/
65
65
  .claude/
66
+ CLAUDE.local.md
66
67
  *.swp
67
68
  *.swo
68
69
  *~