dataenginex 0.4.2__tar.gz → 0.4.3__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 (294) hide show
  1. {dataenginex-0.4.2 → dataenginex-0.4.3}/.github/workflows/ci.yml +3 -3
  2. {dataenginex-0.4.2 → dataenginex-0.4.3}/.github/workflows/release.yml +2 -2
  3. {dataenginex-0.4.2 → dataenginex-0.4.3}/PKG-INFO +1 -1
  4. {dataenginex-0.4.2 → dataenginex-0.4.3}/README.md +0 -2
  5. dataenginex-0.4.3/docs/api-reference/ai.md +191 -0
  6. dataenginex-0.4.3/docs/api-reference/config.md +84 -0
  7. dataenginex-0.4.3/docs/api-reference/core.md +143 -0
  8. dataenginex-0.4.3/docs/api-reference/data.md +279 -0
  9. dataenginex-0.4.3/docs/api-reference/engine.md +96 -0
  10. dataenginex-0.4.3/docs/api-reference/index.md +19 -0
  11. dataenginex-0.4.3/docs/api-reference/lakehouse.md +78 -0
  12. dataenginex-0.4.3/docs/api-reference/middleware.md +73 -0
  13. dataenginex-0.4.3/docs/api-reference/ml.md +172 -0
  14. dataenginex-0.4.3/docs/api-reference/orchestration.md +59 -0
  15. dataenginex-0.4.3/docs/api-reference/plugins.md +53 -0
  16. dataenginex-0.4.3/docs/api-reference/secops.md +121 -0
  17. dataenginex-0.4.3/docs/api-reference/warehouse.md +67 -0
  18. {dataenginex-0.4.2 → dataenginex-0.4.3}/docs/release-notes.md +4 -0
  19. {dataenginex-0.4.2 → dataenginex-0.4.3}/examples/07_api_ingestion.py +1 -11
  20. {dataenginex-0.4.2 → dataenginex-0.4.3}/poe_tasks.toml +1 -1
  21. {dataenginex-0.4.2 → dataenginex-0.4.3}/pyproject.toml +1 -1
  22. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/__init__.py +1 -2
  23. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/config/schema.py +56 -0
  24. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/core/__init__.py +1 -6
  25. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/core/medallion_architecture.py +0 -122
  26. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/data/__init__.py +0 -21
  27. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/data/connectors/__init__.py +7 -18
  28. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/data/pipeline/dag.py +46 -0
  29. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_data.py +126 -230
  30. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_medallion.py +166 -251
  31. {dataenginex-0.4.2 → dataenginex-0.4.3}/uv.lock +104 -105
  32. dataenginex-0.4.2/docs/api-reference/core.md +0 -5
  33. dataenginex-0.4.2/docs/api-reference/data.md +0 -5
  34. dataenginex-0.4.2/docs/api-reference/index.md +0 -14
  35. dataenginex-0.4.2/docs/api-reference/lakehouse.md +0 -5
  36. dataenginex-0.4.2/docs/api-reference/middleware.md +0 -5
  37. dataenginex-0.4.2/docs/api-reference/ml.md +0 -45
  38. dataenginex-0.4.2/docs/api-reference/plugins.md +0 -5
  39. dataenginex-0.4.2/docs/api-reference/warehouse.md +0 -5
  40. dataenginex-0.4.2/src/dataenginex/data/connectors/legacy.py +0 -365
  41. {dataenginex-0.4.2 → dataenginex-0.4.3}/.claude/commands/new-feature.md +0 -0
  42. {dataenginex-0.4.2 → dataenginex-0.4.3}/.claude/commands/validate.md +0 -0
  43. {dataenginex-0.4.2 → dataenginex-0.4.3}/.claude/settings.json +0 -0
  44. {dataenginex-0.4.2 → dataenginex-0.4.3}/.env.template +0 -0
  45. {dataenginex-0.4.2 → dataenginex-0.4.3}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  46. {dataenginex-0.4.2 → dataenginex-0.4.3}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  47. {dataenginex-0.4.2 → dataenginex-0.4.3}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  48. {dataenginex-0.4.2 → dataenginex-0.4.3}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  49. {dataenginex-0.4.2 → dataenginex-0.4.3}/.github/dependabot.yml +0 -0
  50. {dataenginex-0.4.2 → dataenginex-0.4.3}/.github/labels.yml +0 -0
  51. {dataenginex-0.4.2 → dataenginex-0.4.3}/.github/release-pr-template.md +0 -0
  52. {dataenginex-0.4.2 → dataenginex-0.4.3}/.github/workflows/auto-pr.yml +0 -0
  53. {dataenginex-0.4.2 → dataenginex-0.4.3}/.github/workflows/docs-sync.yml +0 -0
  54. {dataenginex-0.4.2 → dataenginex-0.4.3}/.github/workflows/enforce-dev-to-main.yml +0 -0
  55. {dataenginex-0.4.2 → dataenginex-0.4.3}/.github/workflows/security.yml +0 -0
  56. {dataenginex-0.4.2 → dataenginex-0.4.3}/.gitignore +0 -0
  57. {dataenginex-0.4.2 → dataenginex-0.4.3}/.gitleaks.toml +0 -0
  58. {dataenginex-0.4.2 → dataenginex-0.4.3}/.pre-commit-config.yaml +0 -0
  59. {dataenginex-0.4.2 → dataenginex-0.4.3}/.python-version +0 -0
  60. {dataenginex-0.4.2 → dataenginex-0.4.3}/CHANGELOG.md +0 -0
  61. {dataenginex-0.4.2 → dataenginex-0.4.3}/CLAUDE.md +0 -0
  62. {dataenginex-0.4.2 → dataenginex-0.4.3}/CODEOWNERS +0 -0
  63. {dataenginex-0.4.2 → dataenginex-0.4.3}/CODE_OF_CONDUCT.md +0 -0
  64. {dataenginex-0.4.2 → dataenginex-0.4.3}/CONTRIBUTING.md +0 -0
  65. {dataenginex-0.4.2 → dataenginex-0.4.3}/Dockerfile +0 -0
  66. {dataenginex-0.4.2 → dataenginex-0.4.3}/LICENSE +0 -0
  67. {dataenginex-0.4.2 → dataenginex-0.4.3}/SECURITY.md +0 -0
  68. {dataenginex-0.4.2 → dataenginex-0.4.3}/docker-compose.test.yml +0 -0
  69. {dataenginex-0.4.2 → dataenginex-0.4.3}/docs/adr/0000-template.md +0 -0
  70. {dataenginex-0.4.2 → dataenginex-0.4.3}/docs/adr/0001-medallion-architecture.md +0 -0
  71. {dataenginex-0.4.2 → dataenginex-0.4.3}/docs/api-reference/api.md +0 -0
  72. {dataenginex-0.4.2 → dataenginex-0.4.3}/docs/architecture.md +0 -0
  73. {dataenginex-0.4.2 → dataenginex-0.4.3}/docs/ci-cd.md +0 -0
  74. {dataenginex-0.4.2 → dataenginex-0.4.3}/docs/contributing.md +0 -0
  75. {dataenginex-0.4.2 → dataenginex-0.4.3}/docs/development.md +0 -0
  76. {dataenginex-0.4.2 → dataenginex-0.4.3}/docs/index.md +0 -0
  77. {dataenginex-0.4.2 → dataenginex-0.4.3}/docs/observability.md +0 -0
  78. {dataenginex-0.4.2 → dataenginex-0.4.3}/docs/quickstart.md +0 -0
  79. {dataenginex-0.4.2 → dataenginex-0.4.3}/docs/sdlc.md +0 -0
  80. {dataenginex-0.4.2 → dataenginex-0.4.3}/docs/security-scanning.md +0 -0
  81. {dataenginex-0.4.2 → dataenginex-0.4.3}/examples/01_hello_pipeline.py +0 -0
  82. {dataenginex-0.4.2 → dataenginex-0.4.3}/examples/02_api_quickstart.py +0 -0
  83. {dataenginex-0.4.2 → dataenginex-0.4.3}/examples/03_quality_gate.py +0 -0
  84. {dataenginex-0.4.2 → dataenginex-0.4.3}/examples/04_ml_training.py +0 -0
  85. {dataenginex-0.4.2 → dataenginex-0.4.3}/examples/05_rag_demo.py +0 -0
  86. {dataenginex-0.4.2 → dataenginex-0.4.3}/examples/06_llm_quickstart.py +0 -0
  87. {dataenginex-0.4.2 → dataenginex-0.4.3}/examples/08_spark_ml.py +0 -0
  88. {dataenginex-0.4.2 → dataenginex-0.4.3}/examples/09_feature_engineering.py +0 -0
  89. {dataenginex-0.4.2 → dataenginex-0.4.3}/examples/10_model_analysis.py +0 -0
  90. {dataenginex-0.4.2 → dataenginex-0.4.3}/examples/GUIDE.md +0 -0
  91. {dataenginex-0.4.2 → dataenginex-0.4.3}/examples/dashboard/dashboard_config.yaml +0 -0
  92. {dataenginex-0.4.2 → dataenginex-0.4.3}/examples/dashboard/run_dashboard.py +0 -0
  93. {dataenginex-0.4.2 → dataenginex-0.4.3}/examples/data/events.csv +0 -0
  94. {dataenginex-0.4.2 → dataenginex-0.4.3}/examples/data/users.csv +0 -0
  95. {dataenginex-0.4.2 → dataenginex-0.4.3}/examples/dex.yaml +0 -0
  96. {dataenginex-0.4.2 → dataenginex-0.4.3}/examples/ecommerce/data/customers.csv +0 -0
  97. {dataenginex-0.4.2 → dataenginex-0.4.3}/examples/ecommerce/data/orders.csv +0 -0
  98. {dataenginex-0.4.2 → dataenginex-0.4.3}/examples/ecommerce/data/products.csv +0 -0
  99. {dataenginex-0.4.2 → dataenginex-0.4.3}/examples/ecommerce/dex.yaml +0 -0
  100. {dataenginex-0.4.2 → dataenginex-0.4.3}/examples/ecommerce/run_all.py +0 -0
  101. {dataenginex-0.4.2 → dataenginex-0.4.3}/examples/movies.csv +0 -0
  102. {dataenginex-0.4.2 → dataenginex-0.4.3}/scripts/localstack/init.sh +0 -0
  103. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/README.md +0 -0
  104. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/RELEASE_NOTES.md +0 -0
  105. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/_json.py +0 -0
  106. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/__init__.py +0 -0
  107. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/agents/__init__.py +0 -0
  108. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/agents/builtin.py +0 -0
  109. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/llm.py +0 -0
  110. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/memory/__init__.py +0 -0
  111. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/memory/base.py +0 -0
  112. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/memory/episodic.py +0 -0
  113. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/memory/long_term.py +0 -0
  114. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/observability/__init__.py +0 -0
  115. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/observability/audit.py +0 -0
  116. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/observability/cost.py +0 -0
  117. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/observability/metrics.py +0 -0
  118. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/retrieval/__init__.py +0 -0
  119. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/retrieval/builtin.py +0 -0
  120. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/retrieval/graph.py +0 -0
  121. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/routing/__init__.py +0 -0
  122. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/routing/anthropic.py +0 -0
  123. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/routing/guarded.py +0 -0
  124. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/routing/ollama.py +0 -0
  125. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/routing/openai.py +0 -0
  126. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/routing/router.py +0 -0
  127. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/runtime/__init__.py +0 -0
  128. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/runtime/checkpoint.py +0 -0
  129. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/runtime/executor.py +0 -0
  130. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/runtime/sandbox.py +0 -0
  131. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/tools/__init__.py +0 -0
  132. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/tools/builtin.py +0 -0
  133. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/vectorstore.py +0 -0
  134. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/workflows/__init__.py +0 -0
  135. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/workflows/conditions.py +0 -0
  136. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/workflows/dag.py +0 -0
  137. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ai/workflows/human_loop.py +0 -0
  138. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/api/__init__.py +0 -0
  139. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/api/errors.py +0 -0
  140. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/api/pagination.py +0 -0
  141. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/api/schemas.py +0 -0
  142. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/cli/__init__.py +0 -0
  143. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/cli/main.py +0 -0
  144. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/cli/run.py +0 -0
  145. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/cli/secops.py +0 -0
  146. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/cli/train.py +0 -0
  147. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/config/__init__.py +0 -0
  148. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/config/defaults.py +0 -0
  149. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/config/loader.py +0 -0
  150. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/config/settings.py +0 -0
  151. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/core/exceptions.py +0 -0
  152. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/core/interfaces.py +0 -0
  153. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/core/quality.py +0 -0
  154. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/core/registry.py +0 -0
  155. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/core/schemas.py +0 -0
  156. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/core/validators.py +0 -0
  157. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/data/connectors/_utils.py +0 -0
  158. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/data/connectors/csv.py +0 -0
  159. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/data/connectors/dbt.py +0 -0
  160. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/data/connectors/delta.py +0 -0
  161. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/data/connectors/duckdb.py +0 -0
  162. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/data/connectors/http.py +0 -0
  163. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/data/connectors/parquet.py +0 -0
  164. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/data/connectors/rest.py +0 -0
  165. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/data/connectors/spark.py +0 -0
  166. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/data/connectors/sse.py +0 -0
  167. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/data/pipeline/__init__.py +0 -0
  168. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/data/pipeline/run_history.py +0 -0
  169. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/data/pipeline/runner.py +0 -0
  170. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/data/profiler.py +0 -0
  171. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/data/quality/__init__.py +0 -0
  172. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/data/quality/gates.py +0 -0
  173. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/data/quality/spark.py +0 -0
  174. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/data/registry.py +0 -0
  175. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/data/transforms/__init__.py +0 -0
  176. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/data/transforms/sql.py +0 -0
  177. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/engine.py +0 -0
  178. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/lakehouse/__init__.py +0 -0
  179. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/lakehouse/catalog.py +0 -0
  180. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/lakehouse/partitioning.py +0 -0
  181. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/lakehouse/storage.py +0 -0
  182. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/middleware/__init__.py +0 -0
  183. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/middleware/domain_metrics.py +0 -0
  184. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/middleware/logging_config.py +0 -0
  185. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/middleware/metrics.py +0 -0
  186. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ml/__init__.py +0 -0
  187. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ml/drift.py +0 -0
  188. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ml/features/__init__.py +0 -0
  189. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ml/features/builtin.py +0 -0
  190. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ml/metrics.py +0 -0
  191. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ml/mlflow_registry.py +0 -0
  192. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ml/registry.py +0 -0
  193. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ml/serving.py +0 -0
  194. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ml/serving_engine/__init__.py +0 -0
  195. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ml/serving_engine/builtin.py +0 -0
  196. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ml/tracking/__init__.py +0 -0
  197. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ml/tracking/builtin.py +0 -0
  198. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/ml/training.py +0 -0
  199. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/orchestration/__init__.py +0 -0
  200. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/orchestration/builtin.py +0 -0
  201. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/orchestration/scheduler.py +0 -0
  202. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/plugins/__init__.py +0 -0
  203. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/plugins/registry.py +0 -0
  204. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/py.typed +0 -0
  205. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/secops/__init__.py +0 -0
  206. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/secops/audit.py +0 -0
  207. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/secops/gate.py +0 -0
  208. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/secops/guard.py +0 -0
  209. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/secops/masking.py +0 -0
  210. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/secops/pii.py +0 -0
  211. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/store.py +0 -0
  212. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/warehouse/__init__.py +0 -0
  213. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/warehouse/lineage.py +0 -0
  214. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/warehouse/transforms.py +0 -0
  215. {dataenginex-0.4.2 → dataenginex-0.4.3}/src/dataenginex/worker.py +0 -0
  216. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/__init__.py +0 -0
  217. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/conformance/__init__.py +0 -0
  218. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/conformance/test_connector.py +0 -0
  219. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/conformance/test_feature_store.py +0 -0
  220. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/conformance/test_tracker.py +0 -0
  221. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/conformance/test_transform.py +0 -0
  222. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/conftest.py +0 -0
  223. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/fixtures/__init__.py +0 -0
  224. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/fixtures/sample_data.py +0 -0
  225. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/fixtures/sample_jobs.csv +0 -0
  226. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/fixtures/sample_jobs.json +0 -0
  227. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/integration/__init__.py +0 -0
  228. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/integration/test_ai_integration.py +0 -0
  229. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/integration/test_cli_run.py +0 -0
  230. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/integration/test_config_cli.py +0 -0
  231. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/integration/test_lineage_integration.py +0 -0
  232. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/integration/test_ml_integration.py +0 -0
  233. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/integration/test_pipeline_e2e.py +0 -0
  234. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/integration/test_secops_integration.py +0 -0
  235. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/integration/test_storage_real.py +0 -0
  236. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/load/__init__.py +0 -0
  237. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/__init__.py +0 -0
  238. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_agent_runtime.py +0 -0
  239. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_ai_modules.py +0 -0
  240. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_api_pagination.py +0 -0
  241. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_api_schemas.py +0 -0
  242. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_api_validators.py +0 -0
  243. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_builtin_agent.py +0 -0
  244. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_builtin_feature_store.py +0 -0
  245. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_builtin_serving.py +0 -0
  246. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_builtin_tracker.py +0 -0
  247. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_cli_train.py +0 -0
  248. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_config_loader.py +0 -0
  249. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_config_schema.py +0 -0
  250. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_config_schema_extended.py +0 -0
  251. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_core_exceptions.py +0 -0
  252. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_core_interfaces.py +0 -0
  253. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_core_quality.py +0 -0
  254. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_core_registry.py +0 -0
  255. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_core_schemas_extended.py +0 -0
  256. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_csv_connector.py +0 -0
  257. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_dbt_connector.py +0 -0
  258. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_dex_engine.py +0 -0
  259. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_dex_store.py +0 -0
  260. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_domain_metrics.py +0 -0
  261. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_domain_metrics_wiring.py +0 -0
  262. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_drift_scheduler.py +0 -0
  263. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_duckdb_connector.py +0 -0
  264. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_guarded_provider.py +0 -0
  265. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_lakehouse.py +0 -0
  266. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_llm.py +0 -0
  267. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_llm_extended.py +0 -0
  268. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_llm_litellm_vllm.py +0 -0
  269. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_logging.py +0 -0
  270. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_medallion_extended.py +0 -0
  271. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_middleware_metrics.py +0 -0
  272. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_ml.py +0 -0
  273. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_parquet_connector.py +0 -0
  274. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_pipeline_dag.py +0 -0
  275. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_pipeline_runner.py +0 -0
  276. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_plugins.py +0 -0
  277. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_privacy_guard_wiring.py +0 -0
  278. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_quality_gates.py +0 -0
  279. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_quality_spark.py +0 -0
  280. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_retriever.py +0 -0
  281. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_retriever_graph.py +0 -0
  282. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_run_history.py +0 -0
  283. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_scheduler.py +0 -0
  284. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_secops.py +0 -0
  285. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_secops_engine_and_cli.py +0 -0
  286. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_secops_guard.py +0 -0
  287. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_spark_connector.py +0 -0
  288. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_spark_fixtures.py +0 -0
  289. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_sql_transforms.py +0 -0
  290. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_storage_abstraction.py +0 -0
  291. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_vectorstore.py +0 -0
  292. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_vectorstore_extended.py +0 -0
  293. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_warehouse.py +0 -0
  294. {dataenginex-0.4.2 → dataenginex-0.4.3}/tests/unit/test_warehouse_transforms.py +0 -0
@@ -19,7 +19,7 @@ jobs:
19
19
  name: Code Quality
20
20
  runs-on: ubuntu-latest
21
21
  steps:
22
- - uses: actions/checkout@v6
22
+ - uses: actions/checkout@v7
23
23
  - uses: astral-sh/setup-uv@v8.2.0
24
24
  with:
25
25
  version: "latest"
@@ -34,7 +34,7 @@ jobs:
34
34
  runs-on: ubuntu-latest
35
35
  needs: quality
36
36
  steps:
37
- - uses: actions/checkout@v6
37
+ - uses: actions/checkout@v7
38
38
  - uses: astral-sh/setup-uv@v8.2.0
39
39
  with:
40
40
  version: "latest"
@@ -58,7 +58,7 @@ jobs:
58
58
  matrix:
59
59
  python-version: ["3.11", "3.12"]
60
60
  steps:
61
- - uses: actions/checkout@v6
61
+ - uses: actions/checkout@v7
62
62
  - uses: astral-sh/setup-uv@v8.2.0
63
63
  with:
64
64
  version: "latest"
@@ -23,7 +23,7 @@ jobs:
23
23
  permissions:
24
24
  contents: read
25
25
  steps:
26
- - uses: actions/checkout@v6
26
+ - uses: actions/checkout@v7
27
27
  with:
28
28
  ref: ${{ inputs.ref || github.ref }}
29
29
  - uses: astral-sh/setup-uv@v8.2.0
@@ -58,7 +58,7 @@ jobs:
58
58
  permissions:
59
59
  contents: write
60
60
  steps:
61
- - uses: actions/checkout@v6
61
+ - uses: actions/checkout@v7
62
62
  with:
63
63
  ref: ${{ inputs.ref || github.ref }}
64
64
  - uses: astral-sh/setup-uv@v8.2.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dataenginex
3
- Version: 0.4.2
3
+ Version: 0.4.3
4
4
  Summary: DataEngineX — open-source, self-hosted, local-first Data + ML + AI workbench library
5
5
  Author-email: Jay <jayapal.myaka99@gmail.com>
6
6
  License: MIT License
@@ -7,8 +7,6 @@
7
7
 
8
8
  The Python library that powers [DEX Studio](https://github.com/TheDataEngineX/dex-studio) — an open-source, self-hosted, local-first Data + ML + AI workbench for individuals and small teams. **Use the library directly when you want code; install DEX Studio when you want a UI.**
9
9
 
10
- > **Pre-1.0 status.** `0.4.0` is honest about it. See the [CHANGELOG scope-reset entry](CHANGELOG.md) for the rationale.
11
-
12
10
  ______________________________________________________________________
13
11
 
14
12
  ## Install
@@ -0,0 +1,191 @@
1
+ # dataenginex.ai
2
+
3
+ LLM routing, agent runtimes, vector stores, memory, retrieval, observability, and workflow orchestration.
4
+
5
+ ## Quick import
6
+
7
+ ```python
8
+ from dataenginex.ai import (
9
+ ModelRouter, BaseProvider,
10
+ LLMProvider, LLMResponse,
11
+ BuiltinAgentRuntime,
12
+ BuiltinRetriever,
13
+ VectorStore,
14
+ SandboxConfig,
15
+ )
16
+ ```
17
+
18
+ ______________________________________________________________________
19
+
20
+ ## LLM Interface
21
+
22
+ `dataenginex.ai.llm`
23
+
24
+ Unified LLM request/response interface across providers. Handles streaming, tool calls, retries, and token counting.
25
+
26
+ ::: dataenginex.ai.llm
27
+
28
+ **Key classes:** `LLMProvider`, `LLMResponse`, `LLMMessage`, `ToolCall`
29
+
30
+ ```python
31
+ from dataenginex.ai.llm import LLMMessage
32
+
33
+ response = provider.complete([
34
+ LLMMessage(role="user", content="Summarize this dataset."),
35
+ ])
36
+ print(response.content)
37
+ ```
38
+
39
+ ______________________________________________________________________
40
+
41
+ ## Model Router
42
+
43
+ `dataenginex.ai.routing.router`
44
+
45
+ Routes LLM requests to the appropriate provider based on cost, latency, capability, and fallback rules.
46
+
47
+ ::: dataenginex.ai.routing.router
48
+
49
+ **Key class:** `ModelRouter`
50
+
51
+ ```python
52
+ from dataenginex.ai.routing.router import ModelRouter
53
+
54
+ router = ModelRouter.from_config(engine.config)
55
+ response = router.complete("Explain this error.", model_hint="fast")
56
+ ```
57
+
58
+ ### Providers
59
+
60
+ `dataenginex.ai.routing.anthropic` · `dataenginex.ai.routing.openai` · `dataenginex.ai.routing.ollama` · `dataenginex.ai.routing.guarded`
61
+
62
+ ::: dataenginex.ai.routing.anthropic
63
+ ::: dataenginex.ai.routing.openai
64
+ ::: dataenginex.ai.routing.ollama
65
+ ::: dataenginex.ai.routing.guarded
66
+
67
+ ______________________________________________________________________
68
+
69
+ ## Agents
70
+
71
+ `dataenginex.ai.agents.builtin`
72
+
73
+ Built-in agent runtime — tool-use loop, memory injection, step tracing, and structured output parsing.
74
+
75
+ ::: dataenginex.ai.agents.builtin
76
+
77
+ **Key class:** `BuiltinAgentRuntime`
78
+
79
+ ```python
80
+ from dataenginex.ai.agents.builtin import BuiltinAgentRuntime
81
+
82
+ agent = BuiltinAgentRuntime(router=router, tools=[search_tool, sql_tool])
83
+ result = agent.run("Find the top 10 customers by revenue last quarter.")
84
+ print(result.output)
85
+ ```
86
+
87
+ ______________________________________________________________________
88
+
89
+ ## Vector Store
90
+
91
+ `dataenginex.ai.vectorstore`
92
+
93
+ Embedding storage and similarity search. Defaults to in-process DuckDB VSS; swap for Qdrant via `dataenginex[qdrant]`.
94
+
95
+ ::: dataenginex.ai.vectorstore
96
+
97
+ **Key class:** `VectorStore`
98
+
99
+ ```python
100
+ from dataenginex.ai.vectorstore import VectorStore
101
+
102
+ store = VectorStore(db_path=".dex/store.duckdb")
103
+ store.upsert("doc-1", embedding=[0.1, 0.2, ...], metadata={"source": "wiki"})
104
+ results = store.search(query_embedding, top_k=5)
105
+ ```
106
+
107
+ ______________________________________________________________________
108
+
109
+ ## Memory
110
+
111
+ `dataenginex.ai.memory.base` — abstract memory interface
112
+
113
+ ::: dataenginex.ai.memory.base
114
+
115
+ `dataenginex.ai.memory.episodic` — short-term conversation memory scoped to a single agent session
116
+
117
+ ::: dataenginex.ai.memory.episodic
118
+
119
+ `dataenginex.ai.memory.long_term` — persistent memory backed by the vector store, survives across sessions
120
+
121
+ ::: dataenginex.ai.memory.long_term
122
+
123
+ ______________________________________________________________________
124
+
125
+ ## Retrieval
126
+
127
+ `dataenginex.ai.retrieval.builtin` — RAG retriever: embeds query, searches vector store, returns ranked chunks
128
+
129
+ ::: dataenginex.ai.retrieval.builtin
130
+
131
+ `dataenginex.ai.retrieval.graph` — graph-based retrieval for structured knowledge graphs
132
+
133
+ ::: dataenginex.ai.retrieval.graph
134
+
135
+ ______________________________________________________________________
136
+
137
+ ## Runtime
138
+
139
+ `dataenginex.ai.runtime.executor` — async execution engine with concurrency, timeout, and step-level error handling
140
+
141
+ ::: dataenginex.ai.runtime.executor
142
+
143
+ `dataenginex.ai.runtime.checkpoint` — saves and restores agent run state for long-running or resumable workflows
144
+
145
+ ::: dataenginex.ai.runtime.checkpoint
146
+
147
+ `dataenginex.ai.runtime.sandbox` — isolated code execution sandbox for agent-generated Python with configurable resource limits
148
+
149
+ ::: dataenginex.ai.runtime.sandbox
150
+
151
+ ______________________________________________________________________
152
+
153
+ ## Tools
154
+
155
+ `dataenginex.ai.tools.builtin`
156
+
157
+ Built-in agent tools: `sql_query`, `web_search`, `file_read`, `python_exec`, `vector_search`.
158
+
159
+ ::: dataenginex.ai.tools.builtin
160
+
161
+ ______________________________________________________________________
162
+
163
+ ## Workflows
164
+
165
+ `dataenginex.ai.workflows.dag` — multi-step agent workflows as DAGs; steps branch, merge, and pass structured outputs
166
+
167
+ ::: dataenginex.ai.workflows.dag
168
+
169
+ `dataenginex.ai.workflows.conditions` — conditional branching logic for DAG workflows
170
+
171
+ ::: dataenginex.ai.workflows.conditions
172
+
173
+ `dataenginex.ai.workflows.human_loop` — pause a workflow at a step requiring human review or approval
174
+
175
+ ::: dataenginex.ai.workflows.human_loop
176
+
177
+ ______________________________________________________________________
178
+
179
+ ## Observability
180
+
181
+ `dataenginex.ai.observability.audit` — logs every LLM request/response, tool call, and agent step for compliance
182
+
183
+ ::: dataenginex.ai.observability.audit
184
+
185
+ `dataenginex.ai.observability.cost` — tracks token usage and estimated cost per provider, model, and agent run
186
+
187
+ ::: dataenginex.ai.observability.cost
188
+
189
+ `dataenginex.ai.observability.metrics` — Prometheus metrics for LLM latency, token throughput, error rate
190
+
191
+ ::: dataenginex.ai.observability.metrics
@@ -0,0 +1,84 @@
1
+ # dataenginex.config
2
+
3
+ Config schema, loader, settings, and defaults. The `dex.yaml` file is parsed into a typed `DexConfig` object that drives the engine.
4
+
5
+ ## Quick import
6
+
7
+ ```python
8
+ from dataenginex.config import DexConfig, load_config, DexSettings
9
+ ```
10
+
11
+ ______________________________________________________________________
12
+
13
+ ## Schema
14
+
15
+ `dataenginex.config.schema`
16
+
17
+ Pydantic models for `dex.yaml`. Covers pipelines, connectors, transforms, ML, AI, secops, and lakehouse config blocks.
18
+
19
+ ::: dataenginex.config.schema
20
+
21
+ **Key model:** `DexConfig`
22
+
23
+ ```python
24
+ from dataenginex.config.schema import DexConfig
25
+
26
+ config = DexConfig.model_validate({
27
+ "pipelines": {
28
+ "ingest_events": {
29
+ "source": {"type": "csv", "path": "data/raw/events.csv"},
30
+ "destination": {"type": "parquet", "path": "data/bronze/events"},
31
+ }
32
+ }
33
+ })
34
+ ```
35
+
36
+ ______________________________________________________________________
37
+
38
+ ## Loader
39
+
40
+ `dataenginex.config.loader`
41
+
42
+ Loads and validates `dex.yaml` (or a custom path) with environment variable interpolation and secret resolution.
43
+
44
+ ::: dataenginex.config.loader
45
+
46
+ **Key function:** `load_config`
47
+
48
+ ```python
49
+ from dataenginex.config.loader import load_config
50
+
51
+ config = load_config("dex.yaml")
52
+ ```
53
+
54
+ ______________________________________________________________________
55
+
56
+ ## Settings
57
+
58
+ `dataenginex.config.settings`
59
+
60
+ Runtime settings sourced from environment variables (`.env` or system env). Covers API keys, storage paths, log level, and feature flags.
61
+
62
+ ::: dataenginex.config.settings
63
+
64
+ **Key class:** `DexSettings`
65
+
66
+ ```python
67
+ from dataenginex.config.settings import DexSettings
68
+
69
+ settings = DexSettings()
70
+ print(settings.log_level) # "INFO"
71
+ print(settings.dex_store_path) # ".dex/store.duckdb"
72
+ ```
73
+
74
+ See `.env.template` in the project root for all available settings.
75
+
76
+ ______________________________________________________________________
77
+
78
+ ## Defaults
79
+
80
+ `dataenginex.config.defaults`
81
+
82
+ Default values applied when config keys are omitted.
83
+
84
+ ::: dataenginex.config.defaults
@@ -0,0 +1,143 @@
1
+ # dataenginex.core
2
+
3
+ Foundation layer — interfaces, medallion architecture, quality gates, registries, exceptions, and shared schemas.
4
+
5
+ ## Quick import
6
+
7
+ ```python
8
+ from dataenginex.core import (
9
+ MedallionConfig, Layer,
10
+ QualityGate, QualityCheck, QualityResult, Severity,
11
+ BaseConnector, BaseTransform, BaseRunner,
12
+ NotFoundError, ValidationError, PipelineError,
13
+ ComponentRegistry,
14
+ )
15
+ ```
16
+
17
+ ______________________________________________________________________
18
+
19
+ ## Medallion Architecture
20
+
21
+ `dataenginex.core.medallion_architecture`
22
+
23
+ Defines the Bronze → Silver → Gold layer model and per-layer configuration.
24
+
25
+ ::: dataenginex.core.medallion_architecture
26
+
27
+ **Key classes:** `MedallionConfig`, `Layer`, `LayerConfig`, `MedallionPipeline`
28
+
29
+ ```python
30
+ from dataenginex.core.medallion_architecture import Layer, MedallionConfig, LayerConfig
31
+
32
+ cfg = MedallionConfig(
33
+ bronze=LayerConfig(path="data/bronze"),
34
+ silver=LayerConfig(path="data/silver", quality_threshold=0.95),
35
+ gold=LayerConfig(path="data/gold", quality_threshold=0.99),
36
+ )
37
+ ```
38
+
39
+ ______________________________________________________________________
40
+
41
+ ## Quality Gates
42
+
43
+ `dataenginex.core.quality`
44
+
45
+ Declarative data quality checks that run at layer promotion boundaries.
46
+
47
+ ::: dataenginex.core.quality
48
+
49
+ **Key classes:** `QualityCheck`, `QualityGate`, `QualityResult`, `Severity`
50
+
51
+ ```python
52
+ from dataenginex.core.quality import QualityCheck, QualityGate, Severity
53
+
54
+ gate = QualityGate(
55
+ checks=[
56
+ QualityCheck(name="no_nulls", column="user_id", check_type="not_null"),
57
+ QualityCheck(
58
+ name="email_format",
59
+ column="email",
60
+ check_type="regex",
61
+ pattern=r"^[^@]+@[^@]+\.[^@]+$",
62
+ severity=Severity.ERROR,
63
+ ),
64
+ ]
65
+ )
66
+ result = gate.run(df)
67
+ assert result.passed
68
+ ```
69
+
70
+ ______________________________________________________________________
71
+
72
+ ## Interfaces
73
+
74
+ `dataenginex.core.interfaces`
75
+
76
+ Abstract base classes for connectors, transforms, runners, and storage backends. Implement these to extend DEX with custom components.
77
+
78
+ ::: dataenginex.core.interfaces
79
+
80
+ **Key classes:** `BaseConnector`, `BaseTransform`, `BaseRunner`, `BaseStorage`, `BaseProfiler`
81
+
82
+ ______________________________________________________________________
83
+
84
+ ## Registry
85
+
86
+ `dataenginex.core.registry`
87
+
88
+ Generic component registry used by connectors, transforms, models, and agents.
89
+
90
+ ::: dataenginex.core.registry
91
+
92
+ **Key class:** `ComponentRegistry`
93
+
94
+ ```python
95
+ from dataenginex.core.registry import ComponentRegistry
96
+
97
+ registry: ComponentRegistry[MyPlugin] = ComponentRegistry()
98
+ registry.register("my_plugin", MyPlugin)
99
+ plugin = registry.get("my_plugin")
100
+ ```
101
+
102
+ ______________________________________________________________________
103
+
104
+ ## Schemas
105
+
106
+ `dataenginex.core.schemas`
107
+
108
+ Shared Pydantic response models used across the engine, CLI, and API layers.
109
+
110
+ ::: dataenginex.core.schemas
111
+
112
+ **Key models:** `HealthResponse`, `RootResponse`, `EchoRequest`, `EchoResponse`, `ErrorResponse`, `ComponentStatus`
113
+
114
+ ______________________________________________________________________
115
+
116
+ ## Validators
117
+
118
+ `dataenginex.core.validators`
119
+
120
+ Reusable Pydantic validators and field helpers for config schema enforcement.
121
+
122
+ ::: dataenginex.core.validators
123
+
124
+ ______________________________________________________________________
125
+
126
+ ## Exceptions
127
+
128
+ `dataenginex.core.exceptions`
129
+
130
+ Typed exception hierarchy for pipeline, validation, and resource errors.
131
+
132
+ ::: dataenginex.core.exceptions
133
+
134
+ **Key exceptions:** `DexError`, `NotFoundError`, `ValidationError`, `PipelineError`, `RegistryError`, `ConfigError`
135
+
136
+ ```python
137
+ from dataenginex.core.exceptions import NotFoundError, PipelineError
138
+
139
+ try:
140
+ engine.run_pipeline("missing")
141
+ except NotFoundError as e:
142
+ print(e.detail)
143
+ ```