dataenginex 0.3.5__tar.gz → 0.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. dataenginex-0.4.0/.claude/commands/new-feature.md +22 -0
  2. dataenginex-0.4.0/.claude/commands/validate.md +44 -0
  3. dataenginex-0.4.0/.claude/settings.json +71 -0
  4. dataenginex-0.4.0/.env.template +73 -0
  5. dataenginex-0.4.0/.github/ISSUE_TEMPLATE/bug_report.yml +107 -0
  6. dataenginex-0.4.0/.github/ISSUE_TEMPLATE/config.yml +20 -0
  7. dataenginex-0.4.0/.github/ISSUE_TEMPLATE/feature_request.yml +110 -0
  8. dataenginex-0.4.0/.github/PULL_REQUEST_TEMPLATE.md +75 -0
  9. dataenginex-0.4.0/.github/dependabot.yml +12 -0
  10. dataenginex-0.4.0/.github/labels.yml +107 -0
  11. dataenginex-0.4.0/.github/release-pr-template.md +23 -0
  12. dataenginex-0.4.0/.github/workflows/auto-pr.yml +23 -0
  13. dataenginex-0.4.0/.github/workflows/ci.yml +69 -0
  14. dataenginex-0.4.0/.github/workflows/enforce-dev-to-main.yml +11 -0
  15. dataenginex-0.4.0/.github/workflows/release.yml +69 -0
  16. dataenginex-0.4.0/.github/workflows/security.yml +17 -0
  17. dataenginex-0.4.0/.gitignore +97 -0
  18. dataenginex-0.4.0/.gitleaks.toml +4 -0
  19. dataenginex-0.4.0/.pre-commit-config.yaml +45 -0
  20. dataenginex-0.4.0/.python-version +1 -0
  21. dataenginex-0.4.0/CHANGELOG.md +572 -0
  22. dataenginex-0.4.0/CLAUDE.md +69 -0
  23. dataenginex-0.4.0/CODEOWNERS +4 -0
  24. dataenginex-0.4.0/CODE_OF_CONDUCT.md +57 -0
  25. dataenginex-0.4.0/CONTRIBUTING.md +19 -0
  26. dataenginex-0.4.0/Dockerfile +53 -0
  27. dataenginex-0.4.0/LICENSE +21 -0
  28. dataenginex-0.4.0/PKG-INFO +156 -0
  29. dataenginex-0.4.0/README.md +149 -0
  30. dataenginex-0.4.0/SECURITY.md +71 -0
  31. dataenginex-0.4.0/docker-compose.test.yml +55 -0
  32. dataenginex-0.4.0/docs/adr/0000-template.md +71 -0
  33. dataenginex-0.4.0/docs/adr/0001-medallion-architecture.md +171 -0
  34. dataenginex-0.4.0/docs/api-reference/api.md +63 -0
  35. dataenginex-0.4.0/docs/api-reference/core.md +5 -0
  36. dataenginex-0.4.0/docs/api-reference/dashboard.md +8 -0
  37. dataenginex-0.4.0/docs/api-reference/data.md +5 -0
  38. dataenginex-0.4.0/docs/api-reference/index.md +15 -0
  39. dataenginex-0.4.0/docs/api-reference/lakehouse.md +5 -0
  40. dataenginex-0.4.0/docs/api-reference/middleware.md +5 -0
  41. dataenginex-0.4.0/docs/api-reference/ml.md +45 -0
  42. dataenginex-0.4.0/docs/api-reference/plugins.md +5 -0
  43. dataenginex-0.4.0/docs/api-reference/warehouse.md +5 -0
  44. dataenginex-0.4.0/docs/architecture.md +182 -0
  45. dataenginex-0.4.0/docs/ci-cd.md +361 -0
  46. dataenginex-0.4.0/docs/contributing.md +106 -0
  47. dataenginex-0.4.0/docs/development.md +212 -0
  48. dataenginex-0.4.0/docs/index.md +10 -0
  49. dataenginex-0.4.0/docs/observability.md +796 -0
  50. dataenginex-0.4.0/docs/quickstart.md +155 -0
  51. dataenginex-0.4.0/docs/release-notes.md +141 -0
  52. dataenginex-0.4.0/docs/sdlc.md +206 -0
  53. dataenginex-0.4.0/docs/security-scanning.md +56 -0
  54. dataenginex-0.4.0/examples/01_hello_pipeline.py +84 -0
  55. dataenginex-0.4.0/examples/02_api_quickstart.py +74 -0
  56. dataenginex-0.4.0/examples/03_quality_gate.py +113 -0
  57. dataenginex-0.4.0/examples/04_ml_training.py +126 -0
  58. dataenginex-0.4.0/examples/05_rag_demo.py +112 -0
  59. dataenginex-0.4.0/examples/06_llm_quickstart.py +66 -0
  60. dataenginex-0.4.0/examples/07_api_ingestion.py +213 -0
  61. dataenginex-0.4.0/examples/08_spark_ml.py +208 -0
  62. dataenginex-0.4.0/examples/09_feature_engineering.py +186 -0
  63. dataenginex-0.4.0/examples/10_model_analysis.py +164 -0
  64. dataenginex-0.4.0/examples/GUIDE.md +59 -0
  65. dataenginex-0.4.0/examples/dashboard/dashboard_config.yaml +20 -0
  66. dataenginex-0.4.0/examples/dashboard/run_dashboard.py +25 -0
  67. dataenginex-0.4.0/examples/data/events.csv +11 -0
  68. dataenginex-0.4.0/examples/data/users.csv +11 -0
  69. dataenginex-0.4.0/examples/dex.yaml +82 -0
  70. dataenginex-0.4.0/examples/ecommerce/data/customers.csv +21 -0
  71. dataenginex-0.4.0/examples/ecommerce/data/orders.csv +51 -0
  72. dataenginex-0.4.0/examples/ecommerce/data/products.csv +11 -0
  73. dataenginex-0.4.0/examples/ecommerce/dex.yaml +142 -0
  74. dataenginex-0.4.0/examples/ecommerce/run_all.py +426 -0
  75. dataenginex-0.4.0/examples/movies.csv +9 -0
  76. dataenginex-0.4.0/poe_tasks.toml +162 -0
  77. dataenginex-0.4.0/pyproject.toml +163 -0
  78. dataenginex-0.4.0/scripts/localstack/init.sh +7 -0
  79. dataenginex-0.4.0/src/dataenginex/README.md +106 -0
  80. dataenginex-0.4.0/src/dataenginex/RELEASE_NOTES.md +48 -0
  81. dataenginex-0.4.0/src/dataenginex/__init__.py +96 -0
  82. dataenginex-0.4.0/src/dataenginex/ai/__init__.py +117 -0
  83. dataenginex-0.4.0/src/dataenginex/ai/agents/__init__.py +12 -0
  84. dataenginex-0.4.0/src/dataenginex/ai/agents/builtin.py +193 -0
  85. dataenginex-0.4.0/src/dataenginex/ai/llm.py +678 -0
  86. dataenginex-0.4.0/src/dataenginex/ai/memory/__init__.py +16 -0
  87. dataenginex-0.4.0/src/dataenginex/ai/memory/base.py +59 -0
  88. dataenginex-0.4.0/src/dataenginex/ai/memory/episodic.py +40 -0
  89. dataenginex-0.4.0/src/dataenginex/ai/memory/long_term.py +52 -0
  90. dataenginex-0.4.0/src/dataenginex/ai/observability/__init__.py +15 -0
  91. dataenginex-0.4.0/src/dataenginex/ai/observability/audit.py +45 -0
  92. dataenginex-0.4.0/src/dataenginex/ai/observability/cost.py +57 -0
  93. dataenginex-0.4.0/src/dataenginex/ai/observability/metrics.py +26 -0
  94. dataenginex-0.4.0/src/dataenginex/ai/retrieval/__init__.py +14 -0
  95. dataenginex-0.4.0/src/dataenginex/ai/retrieval/builtin.py +184 -0
  96. dataenginex-0.4.0/src/dataenginex/ai/retrieval/graph.py +159 -0
  97. dataenginex-0.4.0/src/dataenginex/ai/routing/__init__.py +8 -0
  98. dataenginex-0.4.0/src/dataenginex/ai/routing/anthropic.py +58 -0
  99. dataenginex-0.4.0/src/dataenginex/ai/routing/guarded.py +80 -0
  100. dataenginex-0.4.0/src/dataenginex/ai/routing/ollama.py +48 -0
  101. dataenginex-0.4.0/src/dataenginex/ai/routing/openai.py +58 -0
  102. dataenginex-0.4.0/src/dataenginex/ai/routing/router.py +56 -0
  103. dataenginex-0.4.0/src/dataenginex/ai/runtime/__init__.py +27 -0
  104. dataenginex-0.4.0/src/dataenginex/ai/runtime/checkpoint.py +31 -0
  105. dataenginex-0.4.0/src/dataenginex/ai/runtime/executor.py +173 -0
  106. dataenginex-0.4.0/src/dataenginex/ai/runtime/sandbox.py +257 -0
  107. dataenginex-0.4.0/src/dataenginex/ai/tools/__init__.py +57 -0
  108. dataenginex-0.4.0/src/dataenginex/ai/tools/builtin.py +259 -0
  109. dataenginex-0.4.0/src/dataenginex/ai/vectorstore.py +540 -0
  110. dataenginex-0.4.0/src/dataenginex/ai/workflows/__init__.py +9 -0
  111. dataenginex-0.4.0/src/dataenginex/ai/workflows/conditions.py +48 -0
  112. dataenginex-0.4.0/src/dataenginex/ai/workflows/dag.py +124 -0
  113. dataenginex-0.4.0/src/dataenginex/ai/workflows/human_loop.py +47 -0
  114. dataenginex-0.4.0/src/dataenginex/api/__init__.py +36 -0
  115. dataenginex-0.4.0/src/dataenginex/api/errors.py +43 -0
  116. {dataenginex-0.3.5 → dataenginex-0.4.0}/src/dataenginex/api/pagination.py +25 -5
  117. dataenginex-0.4.0/src/dataenginex/api/schemas.py +141 -0
  118. dataenginex-0.4.0/src/dataenginex/cli/__init__.py +3 -0
  119. dataenginex-0.4.0/src/dataenginex/cli/main.py +104 -0
  120. dataenginex-0.4.0/src/dataenginex/cli/run.py +69 -0
  121. dataenginex-0.4.0/src/dataenginex/cli/secops.py +125 -0
  122. dataenginex-0.4.0/src/dataenginex/cli/train.py +171 -0
  123. dataenginex-0.4.0/src/dataenginex/config/__init__.py +13 -0
  124. dataenginex-0.4.0/src/dataenginex/config/defaults.py +26 -0
  125. dataenginex-0.4.0/src/dataenginex/config/loader.py +225 -0
  126. dataenginex-0.4.0/src/dataenginex/config/schema.py +298 -0
  127. dataenginex-0.4.0/src/dataenginex/core/__init__.py +83 -0
  128. dataenginex-0.4.0/src/dataenginex/core/exceptions.py +101 -0
  129. dataenginex-0.4.0/src/dataenginex/core/interfaces.py +232 -0
  130. dataenginex-0.4.0/src/dataenginex/core/medallion_architecture.py +485 -0
  131. dataenginex-0.4.0/src/dataenginex/core/quality.py +356 -0
  132. dataenginex-0.4.0/src/dataenginex/core/registry.py +109 -0
  133. dataenginex-0.4.0/src/dataenginex/core/schemas.py +173 -0
  134. dataenginex-0.4.0/src/dataenginex/core/validators.py +105 -0
  135. dataenginex-0.4.0/src/dataenginex/data/__init__.py +63 -0
  136. dataenginex-0.4.0/src/dataenginex/data/connectors/__init__.py +39 -0
  137. dataenginex-0.4.0/src/dataenginex/data/connectors/_utils.py +17 -0
  138. dataenginex-0.4.0/src/dataenginex/data/connectors/csv.py +96 -0
  139. dataenginex-0.4.0/src/dataenginex/data/connectors/dbt.py +158 -0
  140. dataenginex-0.4.0/src/dataenginex/data/connectors/duckdb.py +103 -0
  141. dataenginex-0.3.5/src/dataenginex/data/connectors.py → dataenginex-0.4.0/src/dataenginex/data/connectors/legacy.py +364 -332
  142. dataenginex-0.4.0/src/dataenginex/data/connectors/parquet.py +108 -0
  143. dataenginex-0.4.0/src/dataenginex/data/connectors/spark.py +141 -0
  144. dataenginex-0.4.0/src/dataenginex/data/pipeline/__init__.py +15 -0
  145. dataenginex-0.4.0/src/dataenginex/data/pipeline/dag.py +67 -0
  146. dataenginex-0.4.0/src/dataenginex/data/pipeline/run_history.py +89 -0
  147. dataenginex-0.4.0/src/dataenginex/data/pipeline/runner.py +534 -0
  148. {dataenginex-0.3.5 → dataenginex-0.4.0}/src/dataenginex/data/profiler.py +21 -4
  149. dataenginex-0.4.0/src/dataenginex/data/quality/__init__.py +7 -0
  150. dataenginex-0.4.0/src/dataenginex/data/quality/gates.py +192 -0
  151. dataenginex-0.4.0/src/dataenginex/data/quality/spark.py +89 -0
  152. {dataenginex-0.3.5 → dataenginex-0.4.0}/src/dataenginex/data/registry.py +161 -148
  153. dataenginex-0.4.0/src/dataenginex/data/transforms/__init__.py +10 -0
  154. dataenginex-0.4.0/src/dataenginex/data/transforms/sql.py +171 -0
  155. dataenginex-0.4.0/src/dataenginex/engine.py +1023 -0
  156. dataenginex-0.4.0/src/dataenginex/lakehouse/__init__.py +48 -0
  157. {dataenginex-0.3.5 → dataenginex-0.4.0}/src/dataenginex/lakehouse/catalog.py +172 -145
  158. {dataenginex-0.3.5 → dataenginex-0.4.0}/src/dataenginex/lakehouse/partitioning.py +10 -0
  159. dataenginex-0.4.0/src/dataenginex/lakehouse/storage.py +722 -0
  160. dataenginex-0.4.0/src/dataenginex/middleware/__init__.py +43 -0
  161. dataenginex-0.4.0/src/dataenginex/middleware/domain_metrics.py +77 -0
  162. dataenginex-0.4.0/src/dataenginex/middleware/logging_config.py +131 -0
  163. {dataenginex-0.3.5 → dataenginex-0.4.0}/src/dataenginex/middleware/metrics.py +28 -4
  164. dataenginex-0.4.0/src/dataenginex/ml/__init__.py +56 -0
  165. {dataenginex-0.3.5 → dataenginex-0.4.0}/src/dataenginex/ml/drift.py +21 -2
  166. dataenginex-0.4.0/src/dataenginex/ml/features/__init__.py +11 -0
  167. dataenginex-0.4.0/src/dataenginex/ml/features/builtin.py +116 -0
  168. dataenginex-0.4.0/src/dataenginex/ml/metrics.py +55 -0
  169. dataenginex-0.4.0/src/dataenginex/ml/mlflow_registry.py +226 -0
  170. {dataenginex-0.3.5 → dataenginex-0.4.0}/src/dataenginex/ml/registry.py +187 -156
  171. {dataenginex-0.3.5 → dataenginex-0.4.0}/src/dataenginex/ml/serving.py +164 -141
  172. dataenginex-0.4.0/src/dataenginex/ml/serving_engine/__init__.py +12 -0
  173. dataenginex-0.4.0/src/dataenginex/ml/serving_engine/builtin.py +82 -0
  174. dataenginex-0.4.0/src/dataenginex/ml/tracking/__init__.py +11 -0
  175. dataenginex-0.4.0/src/dataenginex/ml/tracking/builtin.py +146 -0
  176. dataenginex-0.4.0/src/dataenginex/ml/training.py +373 -0
  177. dataenginex-0.4.0/src/dataenginex/orchestration/__init__.py +23 -0
  178. dataenginex-0.4.0/src/dataenginex/orchestration/builtin.py +101 -0
  179. dataenginex-0.4.0/src/dataenginex/orchestration/scheduler.py +352 -0
  180. dataenginex-0.4.0/src/dataenginex/plugins/__init__.py +35 -0
  181. dataenginex-0.4.0/src/dataenginex/plugins/registry.py +170 -0
  182. dataenginex-0.4.0/src/dataenginex/py.typed +0 -0
  183. dataenginex-0.4.0/src/dataenginex/secops/__init__.py +37 -0
  184. dataenginex-0.4.0/src/dataenginex/secops/audit.py +258 -0
  185. dataenginex-0.4.0/src/dataenginex/secops/gate.py +112 -0
  186. dataenginex-0.4.0/src/dataenginex/secops/guard.py +281 -0
  187. dataenginex-0.4.0/src/dataenginex/secops/masking.py +148 -0
  188. dataenginex-0.4.0/src/dataenginex/secops/pii.py +259 -0
  189. dataenginex-0.4.0/src/dataenginex/store.py +814 -0
  190. dataenginex-0.4.0/src/dataenginex/warehouse/__init__.py +40 -0
  191. dataenginex-0.4.0/src/dataenginex/warehouse/lineage.py +473 -0
  192. {dataenginex-0.3.5 → dataenginex-0.4.0}/src/dataenginex/warehouse/transforms.py +244 -206
  193. dataenginex-0.4.0/src/dataenginex/worker.py +180 -0
  194. dataenginex-0.4.0/tests/__init__.py +0 -0
  195. dataenginex-0.4.0/tests/conformance/__init__.py +0 -0
  196. dataenginex-0.4.0/tests/conformance/test_connector.py +38 -0
  197. dataenginex-0.4.0/tests/conformance/test_feature_store.py +42 -0
  198. dataenginex-0.4.0/tests/conformance/test_tracker.py +57 -0
  199. dataenginex-0.4.0/tests/conformance/test_transform.py +23 -0
  200. dataenginex-0.4.0/tests/conftest.py +144 -0
  201. dataenginex-0.4.0/tests/fixtures/__init__.py +5 -0
  202. dataenginex-0.4.0/tests/fixtures/sample_data.py +67 -0
  203. dataenginex-0.4.0/tests/fixtures/sample_jobs.csv +6 -0
  204. dataenginex-0.4.0/tests/fixtures/sample_jobs.json +57 -0
  205. dataenginex-0.4.0/tests/integration/__init__.py +1 -0
  206. dataenginex-0.4.0/tests/integration/test_ai_integration.py +427 -0
  207. dataenginex-0.4.0/tests/integration/test_cli_run.py +102 -0
  208. dataenginex-0.4.0/tests/integration/test_config_cli.py +108 -0
  209. dataenginex-0.4.0/tests/integration/test_lineage_integration.py +391 -0
  210. dataenginex-0.4.0/tests/integration/test_ml_integration.py +277 -0
  211. dataenginex-0.4.0/tests/integration/test_pipeline_e2e.py +63 -0
  212. dataenginex-0.4.0/tests/integration/test_secops_integration.py +316 -0
  213. dataenginex-0.4.0/tests/integration/test_storage_real.py +488 -0
  214. dataenginex-0.4.0/tests/load/__init__.py +0 -0
  215. dataenginex-0.4.0/tests/unit/__init__.py +1 -0
  216. dataenginex-0.4.0/tests/unit/test_agent_runtime.py +73 -0
  217. dataenginex-0.4.0/tests/unit/test_ai_modules.py +759 -0
  218. dataenginex-0.4.0/tests/unit/test_api_pagination.py +83 -0
  219. dataenginex-0.4.0/tests/unit/test_api_schemas.py +53 -0
  220. dataenginex-0.4.0/tests/unit/test_api_validators.py +110 -0
  221. dataenginex-0.4.0/tests/unit/test_builtin_agent.py +41 -0
  222. dataenginex-0.4.0/tests/unit/test_builtin_feature_store.py +60 -0
  223. dataenginex-0.4.0/tests/unit/test_builtin_serving.py +95 -0
  224. dataenginex-0.4.0/tests/unit/test_builtin_tracker.py +75 -0
  225. dataenginex-0.4.0/tests/unit/test_cli_train.py +96 -0
  226. dataenginex-0.4.0/tests/unit/test_config_loader.py +151 -0
  227. dataenginex-0.4.0/tests/unit/test_config_schema.py +98 -0
  228. dataenginex-0.4.0/tests/unit/test_config_schema_extended.py +299 -0
  229. dataenginex-0.4.0/tests/unit/test_core_exceptions.py +47 -0
  230. dataenginex-0.4.0/tests/unit/test_core_interfaces.py +127 -0
  231. dataenginex-0.4.0/tests/unit/test_core_quality.py +264 -0
  232. dataenginex-0.4.0/tests/unit/test_core_registry.py +78 -0
  233. dataenginex-0.4.0/tests/unit/test_core_schemas_extended.py +202 -0
  234. dataenginex-0.4.0/tests/unit/test_csv_connector.py +32 -0
  235. dataenginex-0.4.0/tests/unit/test_data.py +230 -0
  236. dataenginex-0.4.0/tests/unit/test_dbt_connector.py +172 -0
  237. dataenginex-0.4.0/tests/unit/test_dex_engine.py +144 -0
  238. dataenginex-0.4.0/tests/unit/test_dex_store.py +338 -0
  239. dataenginex-0.4.0/tests/unit/test_domain_metrics.py +98 -0
  240. dataenginex-0.4.0/tests/unit/test_domain_metrics_wiring.py +95 -0
  241. dataenginex-0.4.0/tests/unit/test_drift_scheduler.py +320 -0
  242. dataenginex-0.4.0/tests/unit/test_duckdb_connector.py +67 -0
  243. dataenginex-0.4.0/tests/unit/test_guarded_provider.py +108 -0
  244. dataenginex-0.4.0/tests/unit/test_lakehouse.py +210 -0
  245. dataenginex-0.4.0/tests/unit/test_llm.py +290 -0
  246. dataenginex-0.4.0/tests/unit/test_llm_extended.py +182 -0
  247. dataenginex-0.4.0/tests/unit/test_llm_litellm_vllm.py +102 -0
  248. dataenginex-0.4.0/tests/unit/test_logging.py +39 -0
  249. dataenginex-0.4.0/tests/unit/test_medallion.py +251 -0
  250. dataenginex-0.4.0/tests/unit/test_medallion_extended.py +261 -0
  251. dataenginex-0.4.0/tests/unit/test_middleware_metrics.py +101 -0
  252. dataenginex-0.4.0/tests/unit/test_ml.py +225 -0
  253. dataenginex-0.4.0/tests/unit/test_parquet_connector.py +173 -0
  254. dataenginex-0.4.0/tests/unit/test_pipeline_dag.py +45 -0
  255. dataenginex-0.4.0/tests/unit/test_pipeline_runner.py +104 -0
  256. dataenginex-0.4.0/tests/unit/test_plugins.py +216 -0
  257. dataenginex-0.4.0/tests/unit/test_privacy_guard_wiring.py +245 -0
  258. dataenginex-0.4.0/tests/unit/test_quality_gates.py +97 -0
  259. dataenginex-0.4.0/tests/unit/test_quality_spark.py +93 -0
  260. dataenginex-0.4.0/tests/unit/test_retriever.py +81 -0
  261. dataenginex-0.4.0/tests/unit/test_retriever_graph.py +89 -0
  262. dataenginex-0.4.0/tests/unit/test_run_history.py +57 -0
  263. dataenginex-0.4.0/tests/unit/test_scheduler.py +56 -0
  264. dataenginex-0.4.0/tests/unit/test_secops.py +353 -0
  265. dataenginex-0.4.0/tests/unit/test_secops_engine_and_cli.py +289 -0
  266. dataenginex-0.4.0/tests/unit/test_secops_guard.py +328 -0
  267. dataenginex-0.4.0/tests/unit/test_spark_connector.py +209 -0
  268. dataenginex-0.4.0/tests/unit/test_spark_fixtures.py +72 -0
  269. dataenginex-0.4.0/tests/unit/test_sql_transforms.py +123 -0
  270. dataenginex-0.4.0/tests/unit/test_storage_abstraction.py +232 -0
  271. dataenginex-0.4.0/tests/unit/test_vectorstore.py +180 -0
  272. dataenginex-0.4.0/tests/unit/test_vectorstore_extended.py +287 -0
  273. dataenginex-0.4.0/tests/unit/test_warehouse.py +159 -0
  274. dataenginex-0.4.0/tests/unit/test_warehouse_transforms.py +223 -0
  275. dataenginex-0.4.0/uv.lock +4633 -0
  276. dataenginex-0.3.5/PKG-INFO +0 -66
  277. dataenginex-0.3.5/pyproject.toml +0 -37
  278. dataenginex-0.3.5/src/dataenginex/README.md +0 -35
  279. dataenginex-0.3.5/src/dataenginex/RELEASE_NOTES.md +0 -48
  280. dataenginex-0.3.5/src/dataenginex/__init__.py +0 -16
  281. dataenginex-0.3.5/src/dataenginex/api/__init__.py +0 -11
  282. dataenginex-0.3.5/src/dataenginex/api/auth.py +0 -173
  283. dataenginex-0.3.5/src/dataenginex/api/errors.py +0 -70
  284. dataenginex-0.3.5/src/dataenginex/api/health.py +0 -133
  285. dataenginex-0.3.5/src/dataenginex/api/rate_limit.py +0 -122
  286. dataenginex-0.3.5/src/dataenginex/api/routers/__init__.py +0 -1
  287. dataenginex-0.3.5/src/dataenginex/api/routers/v1.py +0 -113
  288. dataenginex-0.3.5/src/dataenginex/core/__init__.py +0 -36
  289. dataenginex-0.3.5/src/dataenginex/core/medallion_architecture.py +0 -414
  290. dataenginex-0.3.5/src/dataenginex/core/pipeline_config.py +0 -111
  291. dataenginex-0.3.5/src/dataenginex/core/schemas.py +0 -304
  292. dataenginex-0.3.5/src/dataenginex/core/validators.py +0 -394
  293. dataenginex-0.3.5/src/dataenginex/data/__init__.py +0 -22
  294. dataenginex-0.3.5/src/dataenginex/lakehouse/__init__.py +0 -22
  295. dataenginex-0.3.5/src/dataenginex/lakehouse/storage.py +0 -177
  296. dataenginex-0.3.5/src/dataenginex/middleware/__init__.py +0 -19
  297. dataenginex-0.3.5/src/dataenginex/middleware/logging_config.py +0 -137
  298. dataenginex-0.3.5/src/dataenginex/middleware/metrics_middleware.py +0 -61
  299. dataenginex-0.3.5/src/dataenginex/middleware/request_logging.py +0 -77
  300. dataenginex-0.3.5/src/dataenginex/middleware/tracing.py +0 -87
  301. dataenginex-0.3.5/src/dataenginex/ml/__init__.py +0 -28
  302. dataenginex-0.3.5/src/dataenginex/ml/training.py +0 -205
  303. dataenginex-0.3.5/src/dataenginex/warehouse/__init__.py +0 -19
  304. dataenginex-0.3.5/src/dataenginex/warehouse/lineage.py +0 -164
@@ -0,0 +1,22 @@
1
+ # New Feature (DEX)
2
+
3
+ Scaffold a new feature for the `dataenginex` core framework. Ask for the feature name and description if not provided as $ARGUMENTS.
4
+
5
+ Steps:
6
+
7
+ 1. **Plan** — Write the implementation plan to `tasks/todo.md`. Check in before implementing.
8
+ 1. **Explore** — Search `src/dataenginex/` for related patterns. Use Context7 MCP for library docs.
9
+ 1. **Design** — Identify the right module:
10
+ - API endpoint → `src/dataenginex/api/` — `response_model=` required, type hints, auth via lifespan middleware
11
+ - Middleware → `src/dataenginex/middleware/` — follows request logging → metrics → auth → rate limit order
12
+ - Data pipeline → Medallion pattern (bronze → silver → gold) via `SchemaRegistry` / `DataCatalog`
13
+ - ML feature → `src/dataenginex/ml/` — `ModelRegistry` lifecycle (development → staging → production → archived)
14
+ - Quality gate → `src/dataenginex/quality/`
15
+ - Plugin hook → `src/dataenginex/plugins/` — entry-point based discovery
16
+ - Framework util → `src/dataenginex/core/`
17
+ 1. **Implement** — Follow existing patterns. `from __future__ import annotations` at top. `structlog` only (no loguru, no print). Use `BackendRegistry` for new pluggable subsystems.
18
+ 1. **Test** — Unit tests in `tests/unit/`, integration tests in `tests/integration/` (live uvicorn). `asyncio_mode = "auto"` — no `@pytest.mark.asyncio` needed.
19
+ 1. **Validate** — Run `/validate` (dex version — includes real server step)
20
+ 1. **Update** — Mark complete in `tasks/todo.md`; update `TODO.md` if relevant
21
+
22
+ Follow all standards in `CLAUDE.md` and `../CLAUDE.md`.
@@ -0,0 +1,44 @@
1
+ # Validate (DEX)
2
+
3
+ Run the full DEX validation pipeline in order. Stop and report on first failure.
4
+
5
+ 1. **Lint**
6
+
7
+ ```bash
8
+ uv run poe lint
9
+ ```
10
+
11
+ 1. **Typecheck**
12
+
13
+ ```bash
14
+ uv run poe typecheck
15
+ ```
16
+
17
+ 1. **Tests**
18
+
19
+ ```bash
20
+ uv run poe test
21
+ ```
22
+
23
+ 1. **Real server** — start the quickstart example and verify all endpoints
24
+
25
+ ```bash
26
+ uv run python examples/02_api_quickstart.py &
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
32
+ ```
33
+
34
+ Check response **bodies** — not just status codes. Kill the server after.
35
+
36
+ 1. **Standalone import**
37
+
38
+ ```bash
39
+ uv run python -c "import dataenginex; print('OK', dataenginex.__file__)"
40
+ ```
41
+
42
+ Tests passing ≠ app working. Step 4 is NON-NEGOTIABLE.
43
+
44
+ Report pass/fail for each step with exact output. On failure, identify root cause — do not skip ahead.
@@ -0,0 +1,71 @@
1
+ {
2
+ "autoUpdatesChannel": "latest",
3
+ "statusLine": {
4
+ "type": "command",
5
+ "command": "b=$(git branch --show-current 2>/dev/null); [ -n \"$b\" ] && echo \"[$b]\" || echo \"\"",
6
+ "padding": 2
7
+ },
8
+ "permissions": {
9
+ "defaultMode": "default",
10
+ "allow": [
11
+ "Read",
12
+ "Edit",
13
+ "Bash(uv run poe *)",
14
+ "Bash(uv run uvicorn *)",
15
+ "Bash(uv run python *)",
16
+ "Bash(uv run *)",
17
+ "Bash(uv lock *)",
18
+ "Bash(uv sync *)",
19
+ "Bash(curl *)",
20
+ "Bash(git status)",
21
+ "Bash(git status *)",
22
+ "Bash(git diff *)",
23
+ "Bash(git log *)",
24
+ "Bash(git branch *)",
25
+ "Bash(git add *)",
26
+ "Bash(git fetch *)",
27
+ "Bash(ls *)",
28
+ "Bash(pwd)",
29
+ "Bash(which *)",
30
+ "Bash(wc *)",
31
+ "Bash(echo *)",
32
+ "Bash(python -c *)",
33
+ "Bash(python3 *)",
34
+ "Bash(gh pr *)",
35
+ "Bash(gh issue *)",
36
+ "Bash(gh release *)",
37
+ "Bash(gh run *)",
38
+ "Bash(gh api *)",
39
+ "Bash(llmfit *)",
40
+ "Bash(npx -y @upstash/context7-mcp*)"
41
+ ],
42
+ "deny": [
43
+ "Bash(git commit *)",
44
+ "Bash(git push *)",
45
+ "Bash(rm -rf *)",
46
+ "Bash(git push --force*)",
47
+ "Bash(git reset --hard*)",
48
+ "Bash(pip install*)",
49
+ "Bash(sudo *)",
50
+ "Bash(chmod 777*)",
51
+ "Bash(curl * | bash*)"
52
+ ]
53
+ },
54
+ "hooks": {
55
+ "UserPromptSubmit": [
56
+ {
57
+ "matcher": "",
58
+ "hooks": [
59
+ {
60
+ "type": "prompt",
61
+ "prompt": "Classify this task as 'simple' (data lookup, quick questions, simple edits — use haiku for speed/cost), 'moderate' (implementation, debugging, refactoring — use sonnet for balance), or 'complex' (architecture, multi-file design, research — use opus for reasoning). Based on the user message below, respond with ONLY the word: haiku, sonnet, or opus. User message: $ARGUMENTS",
62
+ "statusMessage": "Analyzing task complexity...",
63
+ "model": "claude-haiku-4-5-20251001"
64
+ }
65
+ ]
66
+ }
67
+ ]
68
+ },
69
+ "alwaysThinkingEnabled": false,
70
+ "cleanupPeriodDays": 7
71
+ }
@@ -0,0 +1,73 @@
1
+ # =============================================================================
2
+ # DataEngineX — Environment Configuration Template
3
+ # =============================================================================
4
+ # Copy to .env and fill in values for your environment.
5
+ # NEVER commit secrets to version control — use a secret manager in production.
6
+ # =============================================================================
7
+
8
+ # -- Application -------------------------------------------------------------
9
+ APP_NAME=dataenginex
10
+ ENVIRONMENT=dev
11
+
12
+ # -- Logging -----------------------------------------------------------------
13
+ LOG_LEVEL=INFO
14
+ # "json" for structured JSON output, "console" for human-readable
15
+ LOG_FORMAT=console
16
+
17
+ # -- API Server --------------------------------------------------------------
18
+ HOST=0.0.0.0
19
+ PORT=17000
20
+
21
+ # -- Authentication (JWT) ----------------------------------------------------
22
+ # Set to "true" to enforce Bearer-token auth on protected endpoints
23
+ DEX_AUTH_ENABLED=false
24
+ # HMAC-SHA256 secret — generate with: python -c "import secrets; print(secrets.token_urlsafe(64))"
25
+ DEX_JWT_SECRET=
26
+ DEX_JWT_ALGORITHM=HS256
27
+ # Token TTL in minutes
28
+ DEX_JWT_TTL_MINUTES=60
29
+
30
+ # -- Rate Limiting -----------------------------------------------------------
31
+ # Set to "true" to enable per-IP token-bucket rate limiting
32
+ DEX_RATE_LIMIT_ENABLED=false
33
+ DEX_RATE_LIMIT_RPM=60
34
+ DEX_RATE_LIMIT_BURST=10
35
+
36
+ # -- Observability / Tracing ------------------------------------------------
37
+ # OpenTelemetry collector endpoint (leave blank to disable OTLP export)
38
+ OTLP_ENDPOINT=
39
+ ENABLE_CONSOLE_TRACES=false
40
+
41
+ # -- Database ----------------------------------------------------------------
42
+ DB_DRIVER=
43
+ DB_SERVER=
44
+ DB_NAME=
45
+ DB_USER=
46
+ DB_PASSWORD=
47
+
48
+ # -- Databricks --------------------------------------------------------------
49
+ DATABRICKS_HOST=
50
+ DATABRICKS_CLIENT_ID=
51
+ DATABRICKS_SECRET=
52
+
53
+ # -- External APIs -----------------------------------------------------------
54
+ OPENWEATHER_API_KEY=
55
+
56
+ # -- GitHub App (CI/CD webhooks) ---------------------------------------------
57
+ GITHUB_PRIVATE_KEY=
58
+ GITHUB_APP_IDENTIFIER=
59
+ GITHUB_WEBHOOK_SECRET=
60
+ GITHUB_PERSONAL_ACCESS_TOKEN=
61
+
62
+ # -- MCP Servers -------------------------------------------------------------
63
+ # GitHub MCP uses GITHUB_PERSONAL_ACCESS_TOKEN above.
64
+ CLOUDFLARE_API_TOKEN=
65
+ CLOUDFLARE_ACCOUNT_ID=
66
+ POSTGRES_CONNECTION_STRING=
67
+
68
+ # -- Notifications -----------------------------------------------------------
69
+ SLACK_WEBHOOK_URL=
70
+
71
+ # -- Grafana (docker-compose local dev) --------------------------------------
72
+ GF_SECURITY_ADMIN_USER=admin
73
+ GF_SECURITY_ADMIN_PASSWORD=admin
@@ -0,0 +1,107 @@
1
+ name: Bug Report
2
+ description: Report a bug or unexpected behavior
3
+ title: "[Bug]: "
4
+ labels: ["type:bug", "needs-triage", "bug"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Thanks for taking the time to report a bug! Please fill out the sections below.
10
+
11
+ - type: textarea
12
+ id: description
13
+ attributes:
14
+ label: Bug Description
15
+ description: A clear and concise description of what the bug is.
16
+ placeholder: Describe what went wrong...
17
+ validations:
18
+ required: true
19
+
20
+ - type: textarea
21
+ id: reproduce
22
+ attributes:
23
+ label: Steps to Reproduce
24
+ description: How can we reproduce this issue?
25
+ placeholder: |
26
+ 1. Run command '...'
27
+ 2. Check output '...'
28
+ 3. See error
29
+ validations:
30
+ required: true
31
+
32
+ - type: textarea
33
+ id: expected
34
+ attributes:
35
+ label: Expected Behavior
36
+ description: What did you expect to happen?
37
+ placeholder: Describe the expected behavior...
38
+ validations:
39
+ required: true
40
+
41
+ - type: textarea
42
+ id: actual
43
+ attributes:
44
+ label: Actual Behavior
45
+ description: What actually happened?
46
+ placeholder: Describe what actually happened...
47
+ validations:
48
+ required: true
49
+
50
+ - type: textarea
51
+ id: logs
52
+ attributes:
53
+ label: Relevant Logs/Screenshots
54
+ description: Add any logs, error messages, or screenshots
55
+ placeholder: Paste logs or drag images here...
56
+ validations:
57
+ required: false
58
+
59
+ - type: dropdown
60
+ id: environment
61
+ attributes:
62
+ label: Environment
63
+ description: Which environment(s) are affected?
64
+ multiple: true
65
+ options:
66
+ - Local Development
67
+ - Dev (dex-dev)
68
+ - Prod (dex)
69
+ validations:
70
+ required: true
71
+
72
+ - type: dropdown
73
+ id: provider_context
74
+ attributes:
75
+ label: Cloud/Provider Context
76
+ description: Where does this bug occur?
77
+ options:
78
+ - Local only
79
+ - Cloud-agnostic path
80
+ - AWS-specific path
81
+ - GCP-specific path
82
+ - Azure-specific path
83
+ - Unsure
84
+ validations:
85
+ required: true
86
+
87
+ - type: dropdown
88
+ id: cost_impact
89
+ attributes:
90
+ label: Cost Impact
91
+ description: Does this bug increase runtime or infra cost?
92
+ options:
93
+ - No noticeable cost impact
94
+ - Minor cost impact
95
+ - Major cost impact
96
+ - Unknown
97
+ validations:
98
+ required: false
99
+
100
+ - type: textarea
101
+ id: additional
102
+ attributes:
103
+ label: Additional Context
104
+ description: Any other context about the problem
105
+ placeholder: Add any other context...
106
+ validations:
107
+ required: false
@@ -0,0 +1,20 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: Security Policy
4
+ url: https://github.com/TheDataEngineX/dataenginex/blob/main/SECURITY.md
5
+ about: Report vulnerabilities responsibly using the security policy
6
+ - name: Support Guide
7
+ url: https://github.com/TheDataEngineX/dataenginex/blob/main/SUPPORT.md
8
+ about: Find the right channel for help, bugs, and feature proposals
9
+ - name: Questions and Ideas (GitHub Discussions)
10
+ url: https://github.com/TheDataEngineX/dataenginex/discussions
11
+ about: Use Discussions for Q&A, design brainstorming, and early proposals
12
+ - name: Organization Projects
13
+ url: https://github.com/orgs/TheDataEngineX/projects
14
+ about: Track roadmap status, milestones, and planning boards
15
+ - name: Documentation
16
+ url: https://github.com/TheDataEngineX/dataenginex/blob/main/docs/docs-hub.md
17
+ about: Check the documentation for guides and runbooks
18
+ - name: SDLC Guide
19
+ url: https://github.com/TheDataEngineX/dataenginex/blob/main/docs/SDLC.md
20
+ about: Review the development lifecycle and workflow
@@ -0,0 +1,110 @@
1
+ name: Feature Request
2
+ description: Suggest a new feature or enhancement
3
+ title: "[Feature]: "
4
+ labels: ["type:feature", "needs-triage", "enhancement"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Thanks for suggesting a feature! Please describe your idea below.
10
+
11
+ - type: textarea
12
+ id: problem
13
+ attributes:
14
+ label: Problem Statement
15
+ description: Is your feature request related to a problem? Please describe.
16
+ placeholder: "I'm frustrated when..."
17
+ validations:
18
+ required: true
19
+
20
+ - type: textarea
21
+ id: solution
22
+ attributes:
23
+ label: Proposed Solution
24
+ description: Describe the solution you'd like
25
+ placeholder: Describe your proposed solution...
26
+ validations:
27
+ required: true
28
+
29
+ - type: textarea
30
+ id: alternatives
31
+ attributes:
32
+ label: Alternatives Considered
33
+ description: Describe any alternative solutions or features you've considered
34
+ placeholder: Other approaches you've thought about...
35
+ validations:
36
+ required: false
37
+
38
+ - type: dropdown
39
+ id: priority
40
+ attributes:
41
+ label: Priority
42
+ description: How important is this feature?
43
+ options:
44
+ - P0 - Critical (blocks release)
45
+ - P1 - High (needed soon)
46
+ - P2 - Medium (nice to have)
47
+ - P3 - Low (future consideration)
48
+ validations:
49
+ required: true
50
+
51
+ - type: dropdown
52
+ id: component
53
+ attributes:
54
+ label: Component
55
+ description: Which part of the system does this affect?
56
+ multiple: true
57
+ options:
58
+ - API (FastAPI)
59
+ - Data Pipelines
60
+ - ML Models
61
+ - Infrastructure (K8s/ArgoCD)
62
+ - CI/CD
63
+ - Documentation
64
+ - Other
65
+ validations:
66
+ required: true
67
+
68
+ - type: dropdown
69
+ id: cloud_neutrality
70
+ attributes:
71
+ label: Cloud Neutrality
72
+ description: How will this stay vendor-neutral?
73
+ options:
74
+ - No cloud dependency (local/open-source default)
75
+ - Optional provider adapter (AWS/GCP/Azure)
76
+ - Provider-specific (must justify)
77
+ validations:
78
+ required: true
79
+
80
+ - type: dropdown
81
+ id: cost_profile
82
+ attributes:
83
+ label: Cost Profile
84
+ description: Expected baseline operating cost for default usage
85
+ options:
86
+ - Free / local-first
87
+ - Free tier compatible
88
+ - Paid service required (must justify)
89
+ validations:
90
+ required: true
91
+
92
+ - type: textarea
93
+ id: acceptance
94
+ attributes:
95
+ label: Acceptance Criteria
96
+ description: What defines "done" for this feature?
97
+ placeholder: |
98
+ - [ ] Criterion 1
99
+ - [ ] Criterion 2
100
+ validations:
101
+ required: false
102
+
103
+ - type: textarea
104
+ id: additional
105
+ attributes:
106
+ label: Additional Context
107
+ description: Add any other context, mockups, or examples
108
+ placeholder: Links, diagrams, screenshots...
109
+ validations:
110
+ required: false
@@ -0,0 +1,75 @@
1
+ <!-- Describe the change and motivation in a few sentences -->
2
+
3
+ ## Description
4
+
5
+ **Related Issue**: Closes #XXX
6
+
7
+ ## Suggested PR Title
8
+
9
+ <!-- Example: chore: org/domain foundation with pages + label/project automation -->
10
+
11
+ ## Suggested Squash Commit Message
12
+
13
+ <!--
14
+ chore: establish org/domain foundation (pages, labels, project automation)
15
+
16
+ - migrate platform/docs references to thedataenginex.org
17
+ - add GitHub Pages docs deployment workflow
18
+ - add label sync and org project intake automation
19
+ - align issue templates/support/security/workflow docs
20
+ -->
21
+
22
+ ## Keep / Change / Remove
23
+
24
+ - **Keep**:
25
+ - **Change**:
26
+ - **Remove**:
27
+
28
+ ## Type of Change
29
+
30
+ - [ ] Bug fix (non-breaking change which fixes an issue)
31
+ - [ ] New feature (non-breaking change which adds functionality)
32
+ - [ ] Breaking change (fix or feature that would cause existing functionality to change)
33
+ - [ ] Documentation update
34
+ - [ ] Infrastructure/DevOps change
35
+
36
+ ## Changes Made
37
+
38
+ - Change 1
39
+ - Change 2
40
+ - Change 3
41
+
42
+ ## Testing
43
+
44
+ - [ ] Unit tests added/updated
45
+ - [ ] Integration tests added/updated
46
+ - [ ] Tests pass locally (`uv run poe test`)
47
+ - [ ] Coverage maintained/improved (target: 80%+)
48
+
49
+ ## Architecture Impact
50
+
51
+ - [ ] Cloud-neutral by default (no hard dependency on a single provider)
52
+ - [ ] Cost-aware default path (works locally or free/open-source tier)
53
+ - [ ] Extension points documented for future adapters/plugins
54
+
55
+ ## Deprecation / Migration
56
+
57
+ - [ ] No deprecation impact
58
+ - [ ] If behavior changed, deprecation/migration notes were added to docs/release notes
59
+
60
+ ## Checklist
61
+
62
+ - [ ] Linting passes (`uv run poe lint` ✓)
63
+ - [ ] Type checking passes (`uv run poe typecheck` ✓)
64
+ - [ ] Documentation updated (if applicable)
65
+ - [ ] Pre-commit hooks pass
66
+
67
+ ## External Setup (if applicable)
68
+
69
+ - [ ] GitHub Pages source set to **GitHub Actions**
70
+ - [ ] Org/Repo variable set: `ORG_PROJECT_URL`
71
+ - [ ] Org/Repo secret set: `ORG_PROJECT_TOKEN`
72
+ - [ ] Cloudflare DNS updated for docs/api/apex domains
73
+ - [ ] Post-cutover checks completed (see `docs/DEPLOY_RUNBOOK.md` → Org + Domain Rollout)
74
+
75
+ ## Notes for Reviewers
@@ -0,0 +1,12 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: pip
4
+ directory: "/"
5
+ schedule:
6
+ interval: weekly
7
+ target-branch: dev
8
+ - package-ecosystem: github-actions
9
+ directory: "/"
10
+ schedule:
11
+ interval: weekly
12
+ target-branch: dev
@@ -0,0 +1,107 @@
1
+ - name: type:bug
2
+ color: "D73A4A"
3
+ description: Defect or unintended behavior
4
+
5
+ - name: type:feature
6
+ color: "0E8A16"
7
+ description: New capability or enhancement request
8
+
9
+ - name: type:docs
10
+ color: "1D76DB"
11
+ description: Documentation improvements
12
+
13
+ - name: type:chore
14
+ color: "BFD4F2"
15
+ description: Maintenance and housekeeping work
16
+
17
+ - name: type:refactor
18
+ color: "C2E0C6"
19
+ description: Code restructuring without behavior changes
20
+
21
+ - name: area:api
22
+ color: "5319E7"
23
+ description: API layer and contracts
24
+
25
+ - name: area:data
26
+ color: "FBCA04"
27
+ description: Data pipelines, storage, and quality
28
+
29
+ - name: area:ml
30
+ color: "C5DEF5"
31
+ description: ML modeling, training, and inference
32
+
33
+ - name: area:infra
34
+ color: "0052CC"
35
+ description: Infrastructure, Kubernetes, and platform
36
+
37
+ - name: area:docs
38
+ color: "0E8A16"
39
+ description: Documentation structure and content
40
+
41
+ - name: area:ci
42
+ color: "0366D6"
43
+ description: CI/CD workflows and automation
44
+
45
+ - name: priority:p0
46
+ color: "B60205"
47
+ description: Critical priority
48
+
49
+ - name: priority:p1
50
+ color: "D93F0B"
51
+ description: High priority
52
+
53
+ - name: priority:p2
54
+ color: "FBCA04"
55
+ description: Medium priority
56
+
57
+ - name: priority:p3
58
+ color: "0E8A16"
59
+ description: Low priority
60
+
61
+ - name: needs-triage
62
+ color: "EDEDED"
63
+ description: Awaiting maintainer triage
64
+
65
+ - name: needs-info
66
+ color: "F9D0C4"
67
+ description: More information required
68
+
69
+ - name: blocked
70
+ color: "000000"
71
+ description: Blocked by external dependency
72
+
73
+ - name: duplicate
74
+ color: "CFD3D7"
75
+ description: Duplicate of an existing issue
76
+
77
+ - name: wontfix
78
+ color: "FFFFFF"
79
+ description: Intentionally not planned for implementation
80
+
81
+ - name: good first issue
82
+ color: "7057FF"
83
+ description: Good starter task for first-time contributors
84
+
85
+ - name: help wanted
86
+ color: "008672"
87
+ description: Community help welcomed
88
+
89
+ - name: incident
90
+ color: "B60205"
91
+ description: Incident issue generated from deployment failures
92
+
93
+ - name: deployment
94
+ color: "1D76DB"
95
+ description: Deployment and environment operations
96
+
97
+ - name: cd
98
+ color: "5319E7"
99
+ description: Continuous deployment automation
100
+
101
+ - name: bug
102
+ color: "D73A4A"
103
+ description: Backward-compatible alias for existing bug reports
104
+
105
+ - name: enhancement
106
+ color: "A2EEEF"
107
+ description: Backward-compatible alias for feature requests
@@ -0,0 +1,23 @@
1
+ # Release PR Template
2
+
3
+ Use this template whenever opening a release PR (`dev → main`). Reference `release-notes.md` and verify QA steps before merging.
4
+
5
+ ## Summary
6
+
7
+ - Describe what changed (e.g., alerts, APIs, docs).
8
+ - Link to the release note: [release-notes.md](release-notes.md).
9
+ - Note any rollout considerations (e.g., Alertmanager rules, Docker image tag).
10
+
11
+ ## Verification
12
+
13
+ - `uv run poe lint`
14
+ - `./.venv/bin/pytest -v`
15
+ - `docker compose build`
16
+ - Reload Prometheus/Alertmanager (see `observability.md` → "Reloading Alert Rules").
17
+
18
+ ## QA Checklist
19
+
20
+ - [ ] Release note referenced above
21
+ - [ ] Alert rules reloaded in target environment
22
+ - [ ] Docker image tagged and pushed (`ghcr.io/thedataenginex/dex:sha-<8-char-sha>`)
23
+ - [ ] Observability and QA docs updated as needed
@@ -0,0 +1,23 @@
1
+ name: Auto PR
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - dev
7
+ - 'feature/**'
8
+ - 'fix/**'
9
+
10
+ permissions:
11
+ contents: write
12
+ pull-requests: write
13
+
14
+ jobs:
15
+ feature-to-dev:
16
+ if: startsWith(github.ref, 'refs/heads/feature/') || startsWith(github.ref, 'refs/heads/fix/')
17
+ uses: TheDataEngineX/.github/.github/workflows/auto-pr-to-dev.yml@main
18
+ secrets: inherit
19
+
20
+ dev-to-main:
21
+ if: github.ref == 'refs/heads/dev'
22
+ uses: TheDataEngineX/.github/.github/workflows/auto-pr-dev-to-main.yml@main
23
+ secrets: inherit