dataenginex 0.4.2__tar.gz → 0.4.4__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 (299) hide show
  1. {dataenginex-0.4.2 → dataenginex-0.4.4}/.claude/commands/new-feature.md +1 -1
  2. {dataenginex-0.4.2 → dataenginex-0.4.4}/.claude/commands/validate.md +7 -6
  3. {dataenginex-0.4.2 → dataenginex-0.4.4}/.github/dependabot.yml +0 -2
  4. {dataenginex-0.4.2 → dataenginex-0.4.4}/.github/release-pr-template.md +1 -1
  5. dataenginex-0.4.4/.github/workflows/auto-pr.yml +16 -0
  6. {dataenginex-0.4.2 → dataenginex-0.4.4}/.github/workflows/ci.yml +9 -5
  7. {dataenginex-0.4.2 → dataenginex-0.4.4}/.github/workflows/release.yml +3 -3
  8. {dataenginex-0.4.2 → dataenginex-0.4.4}/.github/workflows/security.yml +3 -3
  9. {dataenginex-0.4.2 → dataenginex-0.4.4}/CLAUDE.md +6 -6
  10. {dataenginex-0.4.2 → dataenginex-0.4.4}/CONTRIBUTING.md +5 -5
  11. {dataenginex-0.4.2 → dataenginex-0.4.4}/PKG-INFO +1 -3
  12. {dataenginex-0.4.2 → dataenginex-0.4.4}/README.md +3 -5
  13. {dataenginex-0.4.2 → dataenginex-0.4.4}/docker-compose.test.yml +1 -1
  14. {dataenginex-0.4.2 → dataenginex-0.4.4}/docs/adr/0001-medallion-architecture.md +3 -3
  15. dataenginex-0.4.4/docs/api-reference/ai.md +191 -0
  16. dataenginex-0.4.4/docs/api-reference/config.md +84 -0
  17. dataenginex-0.4.4/docs/api-reference/core.md +143 -0
  18. dataenginex-0.4.4/docs/api-reference/data.md +279 -0
  19. dataenginex-0.4.4/docs/api-reference/engine.md +96 -0
  20. dataenginex-0.4.4/docs/api-reference/index.md +19 -0
  21. dataenginex-0.4.4/docs/api-reference/lakehouse.md +78 -0
  22. dataenginex-0.4.4/docs/api-reference/middleware.md +73 -0
  23. dataenginex-0.4.4/docs/api-reference/ml.md +172 -0
  24. dataenginex-0.4.4/docs/api-reference/orchestration.md +59 -0
  25. dataenginex-0.4.4/docs/api-reference/plugins.md +53 -0
  26. dataenginex-0.4.4/docs/api-reference/secops.md +121 -0
  27. dataenginex-0.4.4/docs/api-reference/warehouse.md +67 -0
  28. {dataenginex-0.4.2 → dataenginex-0.4.4}/docs/architecture.md +5 -8
  29. dataenginex-0.4.4/docs/ci-cd.md +97 -0
  30. {dataenginex-0.4.2 → dataenginex-0.4.4}/docs/contributing.md +4 -4
  31. {dataenginex-0.4.2 → dataenginex-0.4.4}/docs/development.md +6 -6
  32. {dataenginex-0.4.2 → dataenginex-0.4.4}/docs/quickstart.md +2 -2
  33. {dataenginex-0.4.2 → dataenginex-0.4.4}/docs/release-notes.md +4 -0
  34. {dataenginex-0.4.2 → dataenginex-0.4.4}/docs/sdlc.md +12 -55
  35. {dataenginex-0.4.2 → dataenginex-0.4.4}/docs/security-scanning.md +2 -2
  36. {dataenginex-0.4.2 → dataenginex-0.4.4}/examples/01_hello_pipeline.py +1 -1
  37. {dataenginex-0.4.2 → dataenginex-0.4.4}/examples/02_api_quickstart.py +1 -1
  38. {dataenginex-0.4.2 → dataenginex-0.4.4}/examples/07_api_ingestion.py +1 -11
  39. {dataenginex-0.4.2 → dataenginex-0.4.4}/examples/08_spark_ml.py +3 -3
  40. {dataenginex-0.4.2 → dataenginex-0.4.4}/examples/09_feature_engineering.py +2 -2
  41. {dataenginex-0.4.2 → dataenginex-0.4.4}/examples/10_model_analysis.py +3 -3
  42. {dataenginex-0.4.2 → dataenginex-0.4.4}/examples/dashboard/dashboard_config.yaml +1 -1
  43. {dataenginex-0.4.2 → dataenginex-0.4.4}/examples/dashboard/run_dashboard.py +1 -1
  44. {dataenginex-0.4.2 → dataenginex-0.4.4}/poe_tasks.toml +3 -4
  45. {dataenginex-0.4.2 → dataenginex-0.4.4}/pyproject.toml +3 -4
  46. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/__init__.py +2 -3
  47. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/_json.py +8 -9
  48. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/__init__.py +1 -35
  49. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/memory/__init__.py +0 -3
  50. dataenginex-0.4.4/src/dataenginex/ai/observability/__init__.py +9 -0
  51. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/observability/metrics.py +6 -6
  52. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/runtime/__init__.py +0 -3
  53. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/runtime/sandbox.py +1 -1
  54. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/api/pagination.py +1 -1
  55. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/config/schema.py +56 -0
  56. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/core/__init__.py +1 -6
  57. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/core/exceptions.py +3 -46
  58. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/core/medallion_architecture.py +1 -123
  59. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/core/schemas.py +1 -1
  60. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/core/validators.py +105 -105
  61. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/data/__init__.py +0 -21
  62. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/data/connectors/__init__.py +7 -18
  63. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/data/connectors/dbt.py +1 -1
  64. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/data/connectors/spark.py +2 -2
  65. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/data/pipeline/__init__.py +0 -3
  66. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/data/pipeline/dag.py +46 -0
  67. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/data/registry.py +1 -1
  68. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/engine.py +1 -14
  69. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/lakehouse/partitioning.py +109 -109
  70. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/lakehouse/storage.py +1 -1
  71. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ml/mlflow_registry.py +2 -2
  72. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/conftest.py +162 -162
  73. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/fixtures/sample_data.py +2 -2
  74. dataenginex-0.4.4/tests/integration/__init__.py +1 -0
  75. dataenginex-0.4.4/tests/unit/__init__.py +1 -0
  76. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_core_schemas_extended.py +1 -16
  77. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_data.py +126 -230
  78. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_llm.py +2 -2
  79. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_medallion.py +166 -251
  80. {dataenginex-0.4.2 → dataenginex-0.4.4}/uv.lock +149 -194
  81. dataenginex-0.4.2/.github/workflows/auto-pr.yml +0 -23
  82. dataenginex-0.4.2/.github/workflows/enforce-dev-to-main.yml +0 -11
  83. dataenginex-0.4.2/Dockerfile +0 -53
  84. dataenginex-0.4.2/docs/api-reference/core.md +0 -5
  85. dataenginex-0.4.2/docs/api-reference/data.md +0 -5
  86. dataenginex-0.4.2/docs/api-reference/index.md +0 -14
  87. dataenginex-0.4.2/docs/api-reference/lakehouse.md +0 -5
  88. dataenginex-0.4.2/docs/api-reference/middleware.md +0 -5
  89. dataenginex-0.4.2/docs/api-reference/ml.md +0 -45
  90. dataenginex-0.4.2/docs/api-reference/plugins.md +0 -5
  91. dataenginex-0.4.2/docs/api-reference/warehouse.md +0 -5
  92. dataenginex-0.4.2/docs/ci-cd.md +0 -361
  93. dataenginex-0.4.2/src/dataenginex/ai/observability/__init__.py +0 -15
  94. dataenginex-0.4.2/src/dataenginex/data/connectors/legacy.py +0 -365
  95. dataenginex-0.4.2/tests/integration/__init__.py +0 -1
  96. dataenginex-0.4.2/tests/unit/__init__.py +0 -1
  97. {dataenginex-0.4.2 → dataenginex-0.4.4}/.claude/settings.json +0 -0
  98. {dataenginex-0.4.2 → dataenginex-0.4.4}/.env.template +0 -0
  99. {dataenginex-0.4.2 → dataenginex-0.4.4}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  100. {dataenginex-0.4.2 → dataenginex-0.4.4}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  101. {dataenginex-0.4.2 → dataenginex-0.4.4}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  102. {dataenginex-0.4.2 → dataenginex-0.4.4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  103. {dataenginex-0.4.2 → dataenginex-0.4.4}/.github/labels.yml +0 -0
  104. {dataenginex-0.4.2 → dataenginex-0.4.4}/.github/workflows/docs-sync.yml +0 -0
  105. {dataenginex-0.4.2 → dataenginex-0.4.4}/.gitignore +0 -0
  106. {dataenginex-0.4.2 → dataenginex-0.4.4}/.gitleaks.toml +0 -0
  107. {dataenginex-0.4.2 → dataenginex-0.4.4}/.pre-commit-config.yaml +0 -0
  108. {dataenginex-0.4.2 → dataenginex-0.4.4}/.python-version +0 -0
  109. {dataenginex-0.4.2 → dataenginex-0.4.4}/CHANGELOG.md +0 -0
  110. {dataenginex-0.4.2 → dataenginex-0.4.4}/CODEOWNERS +0 -0
  111. {dataenginex-0.4.2 → dataenginex-0.4.4}/CODE_OF_CONDUCT.md +0 -0
  112. {dataenginex-0.4.2 → dataenginex-0.4.4}/LICENSE +0 -0
  113. {dataenginex-0.4.2 → dataenginex-0.4.4}/SECURITY.md +0 -0
  114. {dataenginex-0.4.2 → dataenginex-0.4.4}/docs/adr/0000-template.md +0 -0
  115. {dataenginex-0.4.2 → dataenginex-0.4.4}/docs/api-reference/api.md +0 -0
  116. {dataenginex-0.4.2 → dataenginex-0.4.4}/docs/index.md +0 -0
  117. {dataenginex-0.4.2 → dataenginex-0.4.4}/docs/observability.md +0 -0
  118. {dataenginex-0.4.2 → dataenginex-0.4.4}/examples/03_quality_gate.py +0 -0
  119. {dataenginex-0.4.2 → dataenginex-0.4.4}/examples/04_ml_training.py +0 -0
  120. {dataenginex-0.4.2 → dataenginex-0.4.4}/examples/05_rag_demo.py +0 -0
  121. {dataenginex-0.4.2 → dataenginex-0.4.4}/examples/06_llm_quickstart.py +0 -0
  122. {dataenginex-0.4.2 → dataenginex-0.4.4}/examples/GUIDE.md +0 -0
  123. {dataenginex-0.4.2 → dataenginex-0.4.4}/examples/data/events.csv +0 -0
  124. {dataenginex-0.4.2 → dataenginex-0.4.4}/examples/data/users.csv +0 -0
  125. {dataenginex-0.4.2 → dataenginex-0.4.4}/examples/dex.yaml +0 -0
  126. {dataenginex-0.4.2 → dataenginex-0.4.4}/examples/ecommerce/data/customers.csv +0 -0
  127. {dataenginex-0.4.2 → dataenginex-0.4.4}/examples/ecommerce/data/orders.csv +0 -0
  128. {dataenginex-0.4.2 → dataenginex-0.4.4}/examples/ecommerce/data/products.csv +0 -0
  129. {dataenginex-0.4.2 → dataenginex-0.4.4}/examples/ecommerce/dex.yaml +0 -0
  130. {dataenginex-0.4.2 → dataenginex-0.4.4}/examples/ecommerce/run_all.py +0 -0
  131. {dataenginex-0.4.2 → dataenginex-0.4.4}/examples/movies.csv +0 -0
  132. {dataenginex-0.4.2 → dataenginex-0.4.4}/scripts/localstack/init.sh +0 -0
  133. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/README.md +0 -0
  134. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/RELEASE_NOTES.md +0 -0
  135. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/agents/__init__.py +0 -0
  136. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/agents/builtin.py +0 -0
  137. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/llm.py +0 -0
  138. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/memory/base.py +0 -0
  139. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/memory/episodic.py +0 -0
  140. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/memory/long_term.py +0 -0
  141. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/observability/audit.py +0 -0
  142. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/observability/cost.py +0 -0
  143. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/retrieval/__init__.py +0 -0
  144. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/retrieval/builtin.py +0 -0
  145. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/retrieval/graph.py +0 -0
  146. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/routing/__init__.py +0 -0
  147. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/routing/anthropic.py +0 -0
  148. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/routing/guarded.py +0 -0
  149. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/routing/ollama.py +0 -0
  150. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/routing/openai.py +0 -0
  151. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/routing/router.py +0 -0
  152. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/runtime/checkpoint.py +0 -0
  153. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/runtime/executor.py +0 -0
  154. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/tools/__init__.py +0 -0
  155. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/tools/builtin.py +0 -0
  156. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/vectorstore.py +0 -0
  157. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/workflows/__init__.py +0 -0
  158. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/workflows/conditions.py +0 -0
  159. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/workflows/dag.py +0 -0
  160. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ai/workflows/human_loop.py +0 -0
  161. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/api/__init__.py +0 -0
  162. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/api/errors.py +0 -0
  163. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/api/schemas.py +0 -0
  164. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/cli/__init__.py +0 -0
  165. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/cli/main.py +0 -0
  166. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/cli/run.py +0 -0
  167. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/cli/secops.py +0 -0
  168. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/cli/train.py +0 -0
  169. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/config/__init__.py +0 -0
  170. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/config/defaults.py +0 -0
  171. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/config/loader.py +0 -0
  172. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/config/settings.py +0 -0
  173. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/core/interfaces.py +0 -0
  174. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/core/quality.py +0 -0
  175. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/core/registry.py +0 -0
  176. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/data/connectors/_utils.py +0 -0
  177. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/data/connectors/csv.py +0 -0
  178. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/data/connectors/delta.py +0 -0
  179. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/data/connectors/duckdb.py +0 -0
  180. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/data/connectors/http.py +0 -0
  181. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/data/connectors/parquet.py +0 -0
  182. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/data/connectors/rest.py +0 -0
  183. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/data/connectors/sse.py +0 -0
  184. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/data/pipeline/run_history.py +0 -0
  185. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/data/pipeline/runner.py +0 -0
  186. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/data/profiler.py +0 -0
  187. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/data/quality/__init__.py +0 -0
  188. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/data/quality/gates.py +0 -0
  189. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/data/quality/spark.py +0 -0
  190. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/data/transforms/__init__.py +0 -0
  191. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/data/transforms/sql.py +0 -0
  192. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/lakehouse/__init__.py +0 -0
  193. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/lakehouse/catalog.py +0 -0
  194. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/middleware/__init__.py +0 -0
  195. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/middleware/domain_metrics.py +0 -0
  196. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/middleware/logging_config.py +0 -0
  197. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/middleware/metrics.py +0 -0
  198. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ml/__init__.py +0 -0
  199. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ml/drift.py +0 -0
  200. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ml/features/__init__.py +0 -0
  201. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ml/features/builtin.py +0 -0
  202. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ml/metrics.py +0 -0
  203. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ml/registry.py +0 -0
  204. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ml/serving.py +0 -0
  205. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ml/serving_engine/__init__.py +0 -0
  206. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ml/serving_engine/builtin.py +0 -0
  207. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ml/tracking/__init__.py +0 -0
  208. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ml/tracking/builtin.py +0 -0
  209. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/ml/training.py +0 -0
  210. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/orchestration/__init__.py +0 -0
  211. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/orchestration/builtin.py +0 -0
  212. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/orchestration/scheduler.py +0 -0
  213. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/plugins/__init__.py +0 -0
  214. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/plugins/registry.py +0 -0
  215. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/py.typed +0 -0
  216. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/secops/__init__.py +0 -0
  217. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/secops/audit.py +0 -0
  218. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/secops/gate.py +0 -0
  219. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/secops/guard.py +0 -0
  220. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/secops/masking.py +0 -0
  221. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/secops/pii.py +0 -0
  222. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/store.py +0 -0
  223. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/warehouse/__init__.py +0 -0
  224. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/warehouse/lineage.py +0 -0
  225. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/warehouse/transforms.py +0 -0
  226. {dataenginex-0.4.2 → dataenginex-0.4.4}/src/dataenginex/worker.py +0 -0
  227. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/__init__.py +0 -0
  228. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/conformance/__init__.py +0 -0
  229. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/conformance/test_connector.py +0 -0
  230. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/conformance/test_feature_store.py +0 -0
  231. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/conformance/test_tracker.py +0 -0
  232. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/conformance/test_transform.py +0 -0
  233. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/fixtures/__init__.py +0 -0
  234. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/fixtures/sample_jobs.csv +0 -0
  235. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/fixtures/sample_jobs.json +0 -0
  236. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/integration/test_ai_integration.py +0 -0
  237. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/integration/test_cli_run.py +0 -0
  238. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/integration/test_config_cli.py +0 -0
  239. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/integration/test_lineage_integration.py +0 -0
  240. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/integration/test_ml_integration.py +0 -0
  241. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/integration/test_pipeline_e2e.py +0 -0
  242. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/integration/test_secops_integration.py +0 -0
  243. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/integration/test_storage_real.py +0 -0
  244. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/load/__init__.py +0 -0
  245. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_agent_runtime.py +0 -0
  246. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_ai_modules.py +0 -0
  247. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_api_pagination.py +0 -0
  248. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_api_schemas.py +0 -0
  249. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_api_validators.py +0 -0
  250. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_builtin_agent.py +0 -0
  251. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_builtin_feature_store.py +0 -0
  252. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_builtin_serving.py +0 -0
  253. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_builtin_tracker.py +0 -0
  254. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_cli_train.py +0 -0
  255. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_config_loader.py +0 -0
  256. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_config_schema.py +0 -0
  257. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_config_schema_extended.py +0 -0
  258. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_core_exceptions.py +0 -0
  259. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_core_interfaces.py +0 -0
  260. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_core_quality.py +0 -0
  261. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_core_registry.py +0 -0
  262. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_csv_connector.py +0 -0
  263. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_dbt_connector.py +0 -0
  264. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_dex_engine.py +0 -0
  265. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_dex_store.py +0 -0
  266. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_domain_metrics.py +0 -0
  267. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_domain_metrics_wiring.py +0 -0
  268. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_drift_scheduler.py +0 -0
  269. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_duckdb_connector.py +0 -0
  270. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_guarded_provider.py +0 -0
  271. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_lakehouse.py +0 -0
  272. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_llm_extended.py +0 -0
  273. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_llm_litellm_vllm.py +0 -0
  274. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_logging.py +0 -0
  275. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_medallion_extended.py +0 -0
  276. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_middleware_metrics.py +0 -0
  277. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_ml.py +0 -0
  278. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_parquet_connector.py +0 -0
  279. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_pipeline_dag.py +0 -0
  280. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_pipeline_runner.py +0 -0
  281. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_plugins.py +0 -0
  282. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_privacy_guard_wiring.py +0 -0
  283. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_quality_gates.py +0 -0
  284. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_quality_spark.py +0 -0
  285. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_retriever.py +0 -0
  286. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_retriever_graph.py +0 -0
  287. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_run_history.py +0 -0
  288. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_scheduler.py +0 -0
  289. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_secops.py +0 -0
  290. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_secops_engine_and_cli.py +0 -0
  291. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_secops_guard.py +0 -0
  292. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_spark_connector.py +0 -0
  293. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_spark_fixtures.py +0 -0
  294. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_sql_transforms.py +0 -0
  295. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_storage_abstraction.py +0 -0
  296. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_vectorstore.py +0 -0
  297. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_vectorstore_extended.py +0 -0
  298. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_warehouse.py +0 -0
  299. {dataenginex-0.4.2 → dataenginex-0.4.4}/tests/unit/test_warehouse_transforms.py +0 -0
@@ -1,4 +1,4 @@
1
- # New Feature (DEX)
1
+ # New Feature (DataEngineX)
2
2
 
3
3
  Scaffold a new feature for the `dataenginex` core framework. Ask for the feature name and description if not provided as $ARGUMENTS.
4
4
 
@@ -1,6 +1,6 @@
1
- # Validate (DEX)
1
+ # Validate (DataEngineX)
2
2
 
3
- Run the full DEX validation pipeline in order. Stop and report on first failure.
3
+ Run the full DataEngineX validation pipeline in order. Stop and report on first failure.
4
4
 
5
5
  1. **Lint**
6
6
 
@@ -25,10 +25,11 @@ Run the full DEX validation pipeline in order. Stop and report on first failure.
25
25
  ```bash
26
26
  uv run python examples/02_api_quickstart.py &
27
27
  sleep 2
28
- curl -sf http://localhost:17000/health | python -m json.tool
29
- curl -sf http://localhost:17000/ | python -m json.tool
30
- curl -sf http://localhost:17000/metrics | head -20
31
- curl -sf -X POST http://localhost:17000/echo -H "Content-Type: application/json" -d '{"message":"test"}' | python -m json.tool
28
+ # dataenginex has no built-in HTTP server; these endpoints apply to dex-studio
29
+ curl -sf http://localhost:7860/health | python -m json.tool
30
+ curl -sf http://localhost:7860/ | python -m json.tool
31
+ curl -sf http://localhost:7860/metrics | head -20
32
+ curl -sf -X POST http://localhost:7860/echo -H "Content-Type: application/json" -d '{"message":"test"}' | python -m json.tool
32
33
  ```
33
34
 
34
35
  Check response **bodies** — not just status codes. Kill the server after.
@@ -4,9 +4,7 @@ updates:
4
4
  directory: "/"
5
5
  schedule:
6
6
  interval: weekly
7
- target-branch: dev
8
7
  - package-ecosystem: github-actions
9
8
  directory: "/"
10
9
  schedule:
11
10
  interval: weekly
12
- target-branch: dev
@@ -1,6 +1,6 @@
1
1
  # Release PR Template
2
2
 
3
- Use this template whenever opening a release PR (`dev → main`). Reference `release-notes.md` and verify QA steps before merging.
3
+ Use this template whenever opening a release PR to `main`. Reference `release-notes.md` and verify QA steps before merging.
4
4
 
5
5
  ## Summary
6
6
 
@@ -0,0 +1,16 @@
1
+ name: Auto PR
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - '*'
7
+
8
+ permissions:
9
+ contents: write
10
+ pull-requests: write
11
+
12
+ jobs:
13
+ auto-pr:
14
+ if: github.ref_name != 'main'
15
+ uses: TheDataEngineX/.github/.github/workflows/reusable-auto-pr-to-main.yml@main
16
+ secrets: inherit
@@ -2,9 +2,9 @@ name: CI
2
2
 
3
3
  on:
4
4
  push:
5
- branches: [main, dev]
5
+ branches: [main]
6
6
  pull_request:
7
- branches: [main, dev]
7
+ branches: [main]
8
8
  workflow_dispatch:
9
9
 
10
10
  schedule:
@@ -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"
@@ -27,14 +27,18 @@ jobs:
27
27
  - run: uv sync --group ml
28
28
  env:
29
29
  UV_PROJECT_ENVIRONMENT: .venv
30
+ - uses: reviewdog/action-actionlint@v1
31
+
30
32
  - run: uv run poe quality
31
33
 
34
+ - run: uv build
35
+
32
36
  test:
33
37
  name: Tests (Python 3.13)
34
38
  runs-on: ubuntu-latest
35
39
  needs: quality
36
40
  steps:
37
- - uses: actions/checkout@v6
41
+ - uses: actions/checkout@v7
38
42
  - uses: astral-sh/setup-uv@v8.2.0
39
43
  with:
40
44
  version: "latest"
@@ -58,7 +62,7 @@ jobs:
58
62
  matrix:
59
63
  python-version: ["3.11", "3.12"]
60
64
  steps:
61
- - uses: actions/checkout@v6
65
+ - uses: actions/checkout@v7
62
66
  - uses: astral-sh/setup-uv@v8.2.0
63
67
  with:
64
68
  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
@@ -80,6 +80,6 @@ jobs:
80
80
  RELEASE_TAG: ${{ inputs.tag || github.ref_name }}
81
81
  run: |
82
82
  gh release create "$RELEASE_TAG" \
83
- --title "DEX $RELEASE_TAG" \
83
+ --title "dataenginex $RELEASE_TAG" \
84
84
  --generate-notes \
85
85
  "sbom-dex-${{ steps.version.outputs.version }}.json"
@@ -2,9 +2,9 @@ name: Security Scans
2
2
 
3
3
  on:
4
4
  push:
5
- branches: [main, dev]
5
+ branches: [main]
6
6
  pull_request:
7
- branches: [main, dev]
7
+ branches: [main]
8
8
  workflow_dispatch:
9
9
 
10
10
  permissions:
@@ -13,5 +13,5 @@ permissions:
13
13
 
14
14
  jobs:
15
15
  security:
16
- uses: TheDataEngineX/.github/.github/workflows/security.yml@main
16
+ uses: TheDataEngineX/.github/.github/workflows/reusable-security.yml@main
17
17
  secrets: inherit
@@ -1,4 +1,4 @@
1
- # CLAUDE.md — DEX (dataenginex)
1
+ # CLAUDE.md — DataEngineX (dataenginex)
2
2
 
3
3
  Brief answers only. No explanations unless asked.
4
4
  Goal is to save Claude code tokens for lower cost without losing quality.
@@ -7,7 +7,7 @@ Goal is to save Claude code tokens for lower cost without losing quality.
7
7
 
8
8
  ## Project Overview
9
9
 
10
- **DEX** — unified Data + ML + AI library. Config-driven, self-hosted, local-first. Pure Python — no bundled HTTP server.
10
+ **DataEngineX** — unified Data + ML + AI library. Config-driven, self-hosted, local-first. Pure Python — no bundled HTTP server.
11
11
 
12
12
  | Package | Location | Purpose |
13
13
  |---------|----------|---------|
@@ -41,7 +41,7 @@ dex validate dex.yaml # Validate config file
41
41
  dex version # Show version + environment
42
42
 
43
43
  # Dev
44
- uv run poe dev # Dev server (uvicorn reload, port 17000) — for examples/API testing only
44
+ uv run poe dev # Dev server (uvicorn reload, port 17000) — for examples/API testing only (dataenginex has no built-in HTTP server; see dex-studio for web UI)
45
45
  uv run poe docker-up # Docker compose up
46
46
  uv run poe docker-down # Docker compose down
47
47
 
@@ -63,7 +63,7 @@ pip install 'litellm>=1.83.3' --no-deps # LLM routing (separate: pins python-dot
63
63
 
64
64
  ______________________________________________________________________
65
65
 
66
- ## Mandatory Validation
66
+ ## Validation
67
67
 
68
- Run `/validate` after ANY code change. Steps 4-5 (config validation + server smoke test) are NON-NEGOTIABLE.
69
- Tests passing ≠ app working.
68
+ After any code change run: `uv run poe check-all` (lint + typecheck + test).
69
+ Tests passing ≠ app working — run `dex validate dex.yaml` to verify config.
@@ -1,18 +1,18 @@
1
- # Contributing to DEX
1
+ # Contributing to DataEngineX
2
2
 
3
3
  Thank you for your interest in contributing to DataEngineX!
4
4
 
5
- **→ Full contributor guide: [docs/CONTRIBUTING.md](docs/CONTRIBUTING.md)**
5
+ **→ Full contributor guide: [docs/contributing.md](docs/contributing.md)**
6
6
 
7
7
  Quick essentials:
8
8
 
9
- - Development setup: [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md)
10
- - Governance & legal: See [docs/CONTRIBUTING.md](docs/CONTRIBUTING.md)
9
+ - Development setup: [docs/development.md](docs/development.md)
10
+ - Governance & legal: See [docs/contributing.md](docs/contributing.md)
11
11
  - Code of Conduct: [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)
12
12
 
13
13
  ## Quick Start
14
14
 
15
- 1. Fork and create a feature branch from `dev`
15
+ 1. Fork and create a feature branch from `main`
16
16
  1. Run local checks: `uv run poe check-all`
17
17
  1. Open a PR using `.github/PULL_REQUEST_TEMPLATE.md`
18
18
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dataenginex
3
- Version: 0.4.2
3
+ Version: 0.4.4
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
@@ -30,7 +30,6 @@ Requires-Dist: click>=8.3.3
30
30
  Requires-Dist: croniter>=6.2.2
31
31
  Requires-Dist: duckdb>=1.5.2
32
32
  Requires-Dist: httpx>=0.28.1
33
- Requires-Dist: msgpack>=1.2.1
34
33
  Requires-Dist: orjson>=3.11.0
35
34
  Requires-Dist: prometheus-client>=0.25.0
36
35
  Requires-Dist: pyarrow>=23.0.1
@@ -38,7 +37,6 @@ Requires-Dist: pydantic-settings>=2.14.2
38
37
  Requires-Dist: pydantic>=2.13.4
39
38
  Requires-Dist: pyyaml>=6.0.3
40
39
  Requires-Dist: structlog>=25.5.0
41
- Requires-Dist: zstandard>=0.25.0
42
40
  Provides-Extra: cloud
43
41
  Requires-Dist: boto3>=1.43.7; extra == 'cloud'
44
42
  Requires-Dist: google-cloud-bigquery>=3.41.0; extra == 'cloud'
@@ -1,13 +1,11 @@
1
1
  # dataenginex
2
2
 
3
- [![CI](https://github.com/TheDataEngineX/dataenginex/actions/workflows/ci.yml/badge.svg?branch=dev)](https://github.com/TheDataEngineX/dataenginex/actions/workflows/ci.yml)
3
+ [![CI](https://github.com/TheDataEngineX/dataenginex/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/TheDataEngineX/dataenginex/actions/workflows/ci.yml)
4
4
  [![PyPI](https://img.shields.io/pypi/v/dataenginex)](https://pypi.org/project/dataenginex/)
5
5
  [![Python 3.13+](https://img.shields.io/badge/python-3.13+-blue.svg)](https://www.python.org/downloads/)
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
7
7
 
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
-
10
- > **Pre-1.0 status.** `0.4.0` is honest about it. See the [CHANGELOG scope-reset entry](CHANGELOG.md) for the rationale.
8
+ The Python library that powers [DataEngineX 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 DataEngineX Studio when you want a UI.**
11
9
 
12
10
  ______________________________________________________________________
13
11
 
@@ -118,7 +116,7 @@ git clone https://github.com/TheDataEngineX/dex-studio && cd dex-studio
118
116
  docker compose up # http://localhost:7860
119
117
  ```
120
118
 
121
- DEX Studio imports `dataenginex` directly — no separate API server, no HTTP hop.
119
+ DataEngineX Studio imports `dataenginex` directly — no separate API server, no HTTP hop.
122
120
 
123
121
  ______________________________________________________________________
124
122
 
@@ -1,5 +1,5 @@
1
1
  # ---------------------------------------------------------------
2
- # DEX — Storage Emulators for Integration Tests
2
+ # DataEngineX — Storage Emulators for Integration Tests
3
3
  #
4
4
  # Spins up LocalStack (S3) and fake-gcs-server (GCS) for local
5
5
  # integration testing without real cloud accounts.
@@ -8,18 +8,18 @@
8
8
 
9
9
  ## Context
10
10
 
11
- DEX needs a scalable, standardized data architecture that works across all projects (CareerDEX, Weather, etc.). The data pipeline needs to handle:
11
+ DataEngineX needs a scalable, standardized data architecture that works across all projects (CareerDEX, Weather, etc.). The data pipeline needs to handle:
12
12
 
13
13
  - Raw data ingestion from multiple sources
14
14
  - Data transformation and quality validation
15
15
  - Feature engineering for ML models
16
16
  - Analytics-ready data consumption
17
17
 
18
- Multiple projects will be built on the DEX platform, each with different data sources and transformations. We need a consistent, reusable pattern.
18
+ Multiple projects will be built on the DataEngineX platform, each with different data sources and transformations. We need a consistent, reusable pattern.
19
19
 
20
20
  ## Decision
21
21
 
22
- Implement the **Medallion Architecture** (Bronze → Silver → Gold layers) as the standard data architecture for all DEX projects.
22
+ Implement the **Medallion Architecture** (Bronze → Silver → Gold layers) as the standard data architecture for all DataEngineX projects.
23
23
 
24
24
  ### Architecture Layers
25
25
 
@@ -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