fabricks 3.0.18__tar.gz → 4.0.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 (493) hide show
  1. {fabricks-3.0.18 → fabricks-4.0.0}/PKG-INFO +9 -4
  2. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/context.py +15 -3
  3. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/notebooks/schedule.py +2 -3
  4. fabricks-4.0.0/fabricks/api/parsers.py +4 -0
  5. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/utils.py +3 -1
  6. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/__init__.py +1 -2
  7. fabricks-4.0.0/fabricks/cdc/base/__init__.py +3 -0
  8. fabricks-4.0.0/fabricks/cdc/base/_types.py +12 -0
  9. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/base/configurator.py +5 -0
  10. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/base/generator.py +7 -3
  11. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/base/merger.py +2 -0
  12. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/base/processor.py +15 -0
  13. fabricks-4.0.0/fabricks/cdc/templates/README.md +490 -0
  14. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/templates/ctes/base.sql.jinja +1 -0
  15. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/templates/ctes/current.sql.jinja +4 -0
  16. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/templates/merges/scd1.sql.jinja +6 -0
  17. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/templates/merges/scd2.sql.jinja +6 -0
  18. fabricks-4.0.0/fabricks/cdc/templates/queries/context.sql.jinja +197 -0
  19. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/templates/query.sql.jinja +1 -1
  20. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/context/__init__.py +13 -1
  21. fabricks-4.0.0/fabricks/context/config.py +18 -0
  22. fabricks-4.0.0/fabricks/context/log.py +168 -0
  23. fabricks-4.0.0/fabricks/context/runtime.py +59 -0
  24. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/context/spark_session.py +8 -7
  25. fabricks-4.0.0/fabricks/context/utils.py +67 -0
  26. fabricks-4.0.0/fabricks/core/__init__.py +4 -0
  27. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/dags/base.py +5 -5
  28. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/dags/processor.py +2 -3
  29. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/extenders.py +1 -1
  30. fabricks-4.0.0/fabricks/core/job_schema.py +42 -0
  31. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/jobs/__init__.py +1 -7
  32. fabricks-4.0.0/fabricks/core/jobs/base/README.md +1545 -0
  33. fabricks-4.0.0/fabricks/core/jobs/base/__init__.py +3 -0
  34. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/jobs/base/checker.py +7 -7
  35. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/jobs/base/configurator.py +142 -63
  36. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/jobs/base/generator.py +38 -34
  37. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/jobs/base/invoker.py +48 -63
  38. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/jobs/base/processor.py +13 -28
  39. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/jobs/bronze.py +88 -38
  40. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/jobs/get_job.py +3 -6
  41. fabricks-4.0.0/fabricks/core/jobs/get_job_conf.py +103 -0
  42. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/jobs/get_jobs.py +10 -11
  43. fabricks-4.0.0/fabricks/core/jobs/get_schedules.py +18 -0
  44. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/jobs/gold.py +96 -43
  45. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/jobs/silver.py +42 -22
  46. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/masks.py +11 -8
  47. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/parsers/__init__.py +0 -2
  48. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/parsers/base.py +10 -10
  49. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/parsers/decorator.py +1 -1
  50. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/parsers/get_parser.py +4 -5
  51. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/schedules/process.py +1 -4
  52. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/steps/base.py +27 -17
  53. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/steps/get_step.py +2 -4
  54. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/steps/get_step_conf.py +3 -7
  55. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/udfs.py +9 -8
  56. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/views.py +2 -2
  57. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/deploy/__init__.py +27 -16
  58. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/deploy/masks.py +1 -1
  59. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/deploy/notebooks.py +19 -16
  60. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/deploy/schedules.py +1 -1
  61. fabricks-4.0.0/fabricks/deploy/tables.py +99 -0
  62. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/deploy/udfs.py +2 -2
  63. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/deploy/views.py +15 -16
  64. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/metastore/database.py +3 -3
  65. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/metastore/table.py +103 -68
  66. fabricks-4.0.0/fabricks/models/__init__.py +125 -0
  67. fabricks-4.0.0/fabricks/models/common.py +79 -0
  68. fabricks-4.0.0/fabricks/models/config.py +225 -0
  69. fabricks-4.0.0/fabricks/models/dependency.py +50 -0
  70. fabricks-4.0.0/fabricks/models/job.py +157 -0
  71. fabricks-4.0.0/fabricks/models/path.py +17 -0
  72. fabricks-4.0.0/fabricks/models/runtime.py +182 -0
  73. fabricks-4.0.0/fabricks/models/schedule.py +21 -0
  74. fabricks-4.0.0/fabricks/models/step.py +103 -0
  75. fabricks-4.0.0/fabricks/models/table.py +77 -0
  76. fabricks-3.0.18/fabricks/core/jobs/get_job_id.py → fabricks-4.0.0/fabricks/models/utils.py +2 -0
  77. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/utils/helpers.py +6 -5
  78. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/utils/log.py +25 -6
  79. fabricks-4.0.0/fabricks/utils/path.py +415 -0
  80. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/utils/pip.py +7 -7
  81. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/utils/read/read.py +23 -22
  82. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/utils/read/read_yaml.py +2 -2
  83. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/utils/write/delta.py +4 -4
  84. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/utils/write/stream.py +2 -2
  85. {fabricks-3.0.18 → fabricks-4.0.0}/format.sh +1 -1
  86. {fabricks-3.0.18 → fabricks-4.0.0}/pyproject.toml +21 -6
  87. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/_types.py +6 -6
  88. fabricks-4.0.0/tests/integration/add_missing_modules.py +28 -0
  89. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/fabricksconfig.json +2 -1
  90. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/jobs/job2/test_silver.py +2 -2
  91. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/jobs/job5/test_step.py +3 -3
  92. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/reset.py +5 -4
  93. fabricks-4.0.0/tests/integration/runtime/fabricks/masks/dummy.sql +1 -0
  94. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/fabricks/notebooks/schedule.py +2 -3
  95. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/fabricks/parsers/delete_log.py +13 -11
  96. fabricks-4.0.0/tests/integration/runtime/fabricks/parsers/monarch.py +126 -0
  97. fabricks-4.0.0/tests/integration/runtime/fabricks/udfs/__init__.py +0 -0
  98. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/fact/dependency_notebook.ipynb +1 -1
  99. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/fact/notebook.ipynb +5 -2
  100. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/invoke/_config.invoke.yml +26 -1
  101. fabricks-4.0.0/tests/integration/runtime/gold/gold/invoke/complete_notebook.py +51 -0
  102. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/scd1/_config.scd1.yml +3 -1
  103. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/scd2/_config.scd2.yml +1 -0
  104. fabricks-3.0.18/tests/integration/runtime/gold/gold/invoke/pre_run/exe_2.py → fabricks-4.0.0/tests/integration/runtime/gold/transf/post_run.py +4 -0
  105. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/schedule.py +2 -3
  106. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/utils.py +8 -5
  107. fabricks-4.0.0/utilities.sh +164 -0
  108. fabricks-4.0.0/uv.lock +5496 -0
  109. fabricks-3.0.18/fabricks/api/parsers.py +0 -3
  110. fabricks-3.0.18/fabricks/cdc/base/__init__.py +0 -4
  111. fabricks-3.0.18/fabricks/cdc/base/_types.py +0 -10
  112. fabricks-3.0.18/fabricks/cdc/templates/queries/context.sql.jinja +0 -189
  113. fabricks-3.0.18/fabricks/context/_types.py +0 -137
  114. fabricks-3.0.18/fabricks/context/config.py +0 -127
  115. fabricks-3.0.18/fabricks/context/helpers.py +0 -63
  116. fabricks-3.0.18/fabricks/context/log.py +0 -77
  117. fabricks-3.0.18/fabricks/context/runtime.py +0 -93
  118. fabricks-3.0.18/fabricks/context/utils.py +0 -80
  119. fabricks-3.0.18/fabricks/core/__init__.py +0 -4
  120. fabricks-3.0.18/fabricks/core/job_schema.py +0 -32
  121. fabricks-3.0.18/fabricks/core/jobs/base/__init__.py +0 -10
  122. fabricks-3.0.18/fabricks/core/jobs/base/_types.py +0 -284
  123. fabricks-3.0.18/fabricks/core/jobs/get_job_conf.py +0 -152
  124. fabricks-3.0.18/fabricks/core/jobs/get_schedules.py +0 -32
  125. fabricks-3.0.18/fabricks/core/parsers/_types.py +0 -6
  126. fabricks-3.0.18/fabricks/deploy/tables.py +0 -82
  127. fabricks-3.0.18/fabricks/utils/fdict.py +0 -240
  128. fabricks-3.0.18/fabricks/utils/path.py +0 -248
  129. fabricks-3.0.18/fabricks/utils/pydantic.py +0 -94
  130. fabricks-3.0.18/fabricks/utils/schema/__init__.py +0 -7
  131. fabricks-3.0.18/fabricks/utils/schema/get_json_schema_for_type.py +0 -161
  132. fabricks-3.0.18/fabricks/utils/schema/get_schema_for_type.py +0 -99
  133. fabricks-3.0.18/tests/integration/runtime/fabricks/masks/dummy.sql +0 -1
  134. fabricks-3.0.18/tests/integration/runtime/fabricks/parsers/monarch.py +0 -22
  135. fabricks-3.0.18/uv.lock +0 -3621
  136. {fabricks-3.0.18 → fabricks-4.0.0}/.gitignore +0 -0
  137. {fabricks-3.0.18 → fabricks-4.0.0}/.gitkeep +0 -0
  138. {fabricks-3.0.18 → fabricks-4.0.0}/.python-version +0 -0
  139. {fabricks-3.0.18 → fabricks-4.0.0}/README.md +0 -0
  140. {fabricks-3.0.18 → fabricks-4.0.0}/databricks.yml +0 -0
  141. {fabricks-3.0.18 → fabricks-4.0.0}/docs/helpers/init.md +0 -0
  142. {fabricks-3.0.18 → fabricks-4.0.0}/docs/helpers/job.md +0 -0
  143. {fabricks-3.0.18 → fabricks-4.0.0}/docs/helpers/runtime.md +0 -0
  144. {fabricks-3.0.18 → fabricks-4.0.0}/docs/helpers/schedule.md +0 -0
  145. {fabricks-3.0.18 → fabricks-4.0.0}/docs/helpers/step.md +0 -0
  146. {fabricks-3.0.18 → fabricks-4.0.0}/docs/index.md +0 -0
  147. {fabricks-3.0.18 → fabricks-4.0.0}/docs/introduction/layers.md +0 -0
  148. {fabricks-3.0.18 → fabricks-4.0.0}/docs/introduction/overview.md +0 -0
  149. {fabricks-3.0.18 → fabricks-4.0.0}/docs/reference/cdc.md +0 -0
  150. {fabricks-3.0.18 → fabricks-4.0.0}/docs/reference/checks-data-quality.md +0 -0
  151. {fabricks-3.0.18 → fabricks-4.0.0}/docs/reference/extenders-udfs-parsers.md +0 -0
  152. {fabricks-3.0.18 → fabricks-4.0.0}/docs/reference/table-options.md +0 -0
  153. {fabricks-3.0.18 → fabricks-4.0.0}/docs/steps/BRONZE.md +0 -0
  154. {fabricks-3.0.18 → fabricks-4.0.0}/docs/steps/GOLD.md +0 -0
  155. {fabricks-3.0.18 → fabricks-4.0.0}/docs/steps/SILVER.md +0 -0
  156. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/__init__.py +0 -0
  157. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/__init__.py +0 -0
  158. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/cdc/__init__.py +0 -0
  159. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/cdc/nocdc.py +0 -0
  160. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/cdc/scd1.py +0 -0
  161. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/cdc/scd2.py +0 -0
  162. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/core.py +0 -0
  163. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/deploy.py +0 -0
  164. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/exceptions.py +0 -0
  165. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/extenders.py +0 -0
  166. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/job_schema.py +0 -0
  167. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/log.py +0 -0
  168. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/masks.py +0 -0
  169. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/metastore/__init__.py +0 -0
  170. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/metastore/database.py +0 -0
  171. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/metastore/table.py +0 -0
  172. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/metastore/view.py +0 -0
  173. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/notebooks/__init__.py +0 -0
  174. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/notebooks/cluster.py +0 -0
  175. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/notebooks/initialize.py +0 -0
  176. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/notebooks/process.py +0 -0
  177. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/notebooks/run.py +0 -0
  178. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/notebooks/terminate.py +0 -0
  179. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/schedules.py +0 -0
  180. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/udfs.py +0 -0
  181. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/version.py +0 -0
  182. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/api/views.py +0 -0
  183. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/base/cdc.py +0 -0
  184. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/cdc.py +0 -0
  185. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/nocdc.py +0 -0
  186. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/scd.py +0 -0
  187. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/scd1.py +0 -0
  188. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/scd2.py +0 -0
  189. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/templates/__init__.py +0 -0
  190. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/templates/ctes/deduplicate_hash.sql.jinja +0 -0
  191. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/templates/ctes/deduplicate_key.sql.jinja +0 -0
  192. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/templates/ctes/rectify.sql.jinja +0 -0
  193. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/templates/ctes/slice.sql.jinja +0 -0
  194. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/templates/filter.sql.jinja +0 -0
  195. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/templates/filters/final.sql.jinja +0 -0
  196. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/templates/filters/latest.sql.jinja +0 -0
  197. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/templates/filters/update.sql.jinja +0 -0
  198. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/templates/macros/bactick.sql.jinja +0 -0
  199. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/templates/macros/hash.sql.jinja +0 -0
  200. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/templates/merge.sql.jinja +0 -0
  201. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/templates/merges/nocdc.sql.jinja +0 -0
  202. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/templates/queries/__init__.py +0 -0
  203. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/templates/queries/final.sql.jinja +0 -0
  204. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/templates/queries/nocdc/complete.sql.jinja +0 -0
  205. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/templates/queries/nocdc/update.sql.jinja +0 -0
  206. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/templates/queries/scd1.sql.jinja +0 -0
  207. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/cdc/templates/queries/scd2.sql.jinja +0 -0
  208. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/context/secret.py +0 -0
  209. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/dags/__init__.py +0 -0
  210. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/dags/generator.py +0 -0
  211. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/dags/log.py +0 -0
  212. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/dags/run.py +0 -0
  213. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/dags/terminator.py +0 -0
  214. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/dags/utils.py +0 -0
  215. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/jobs/base/exception.py +0 -0
  216. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/jobs/base/job.py +0 -0
  217. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/jobs/get_schedule.py +0 -0
  218. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/parsers/utils.py +0 -0
  219. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/schedules/__init__.py +0 -0
  220. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/schedules/diagrams.py +0 -0
  221. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/schedules/generate.py +0 -0
  222. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/schedules/get_schedule.py +0 -0
  223. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/schedules/get_schedules.py +0 -0
  224. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/schedules/run.py +0 -0
  225. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/schedules/terminate.py +0 -0
  226. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/schedules/views.py +0 -0
  227. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/steps/__init__.py +0 -0
  228. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/core/steps/_types.py +0 -0
  229. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/deploy/utils.py +0 -0
  230. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/metastore/README.md +0 -0
  231. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/metastore/__init__.py +0 -0
  232. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/metastore/_types.py +0 -0
  233. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/metastore/dbobject.py +0 -0
  234. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/metastore/pyproject.toml +0 -0
  235. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/metastore/utils.py +0 -0
  236. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/metastore/view.py +0 -0
  237. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/utils/__init__.py +0 -0
  238. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/utils/_types.py +0 -0
  239. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/utils/azure_queue.py +0 -0
  240. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/utils/azure_table.py +0 -0
  241. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/utils/console.py +0 -0
  242. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/utils/mermaid.py +0 -0
  243. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/utils/read/__init__.py +0 -0
  244. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/utils/read/_types.py +0 -0
  245. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/utils/read/read_excel.py +0 -0
  246. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/utils/spark.py +0 -0
  247. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/utils/sqlglot.py +0 -0
  248. {fabricks-3.0.18 → fabricks-4.0.0}/fabricks/utils/write/__init__.py +0 -0
  249. {fabricks-3.0.18 → fabricks-4.0.0}/mkdocs.sh +0 -0
  250. {fabricks-3.0.18 → fabricks-4.0.0}/mkdocs.yml +0 -0
  251. {fabricks-3.0.18 → fabricks-4.0.0}/tests/__init__.py +0 -0
  252. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/README.md +0 -0
  253. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/__init__.py +0 -0
  254. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/armageddon.py +0 -0
  255. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/compare.py +0 -0
  256. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job1/king/2022/01/01/0001/king_202201010001.json +0 -0
  257. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job1/king/2022/01/02/0001/king_202201020001.json +0 -0
  258. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job1/king__deletelog/2022/02/01/0001/king_202201010001.json +0 -0
  259. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job1/prince/2022/01/01/0001/prince_202201010001.json +0 -0
  260. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job1/princess/2022/01/01/0001/princess_202201010001.json +0 -0
  261. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job1/queen/2022/01/01/0001/queen_202201010001.json +0 -0
  262. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job1/queen/2022/01/02/0001/queen_202201020001.json +0 -0
  263. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job1/queen/2022/01/04/0001/queen_202201040001.json +0 -0
  264. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job1/queen__deletelog/2022/01/03/0001/queen_202201030001.json +0 -0
  265. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job1/queen__deletelog/2022/01/04/0001/queen_202201040001.json +0 -0
  266. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job1/too_many_columns/2022/01/01/0001/sample_202201010001.json +0 -0
  267. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job10/king/2022/10/01/0001/king_202210010001.json +0 -0
  268. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job10/king/2022/10/02/0001/king_202210020001.json +0 -0
  269. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job10/king/2022/10/02/0002/king_202210020002.json +0 -0
  270. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job10/king/2022/10/03/0001/king_202210030001.json +0 -0
  271. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job10/queen__deletelog/2022/10/01/0001/queen_202210010001.json +0 -0
  272. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job11/king/2022/11/01/0001/king_202210010001.json +0 -0
  273. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job11/king__deletelog/2022/11/01/0001/king_202211010001.json +0 -0
  274. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job2/king/2022/02/05/0001/king_202202050001.json +0 -0
  275. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job2/prince__deletelog/2022/02/01/0001/prince_202202010001.json +0 -0
  276. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job2/princess/2022/02/05/0001/princess_202202050001.json +0 -0
  277. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job2/queen/2022/02/05/0001/queen_202202050001.json +0 -0
  278. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job3/king/2022/03/01/001234/king_20220301001234.json +0 -0
  279. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job3/king__deletelog/2022/03/01/001234/king_20220301001234.json +0 -0
  280. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job3/queen/2022/03/05/001234/queen_20220305001234.json +0 -0
  281. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job3/queen/2022/03/06/0001/queen_202203060001.json +0 -0
  282. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job4/king/2022/04/01/0001/king_202204010001.json +0 -0
  283. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job4/monarch/2022/04/01/0001/monarch_202204010001.json +0 -0
  284. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job4/queen/2022/04/01/0001/queen_202204010001.json +0 -0
  285. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job4/regent/2022/04/01/0001/regent_202204010001.json +0 -0
  286. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job5/king/2022/05/01/0001/king_202205010001.json +0 -0
  287. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job5/queen/2022/05/01/0001/queen_202205010001.json +0 -0
  288. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job6/king/2022/06/01/0001/king_202206010001.json +0 -0
  289. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job6/queen/2022/06/01/0001/queen_202206010001.json +0 -0
  290. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job7/king/2022/07/01/0001/king_202207010001.json +0 -0
  291. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job7/queen/2022/07/01/0001/queen_202207010001.json +0 -0
  292. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job8/king/2022/08/01/0001/king_202208010001.json +0 -0
  293. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job8/queen/2022/08/01/0001/queen_202208010001.json +0 -0
  294. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job9/king/2022/09/01/0001/king_202209010001.json +0 -0
  295. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job9/king/2022/09/03/0001/king_202209030001.json +0 -0
  296. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job9/king/2022/09/03/0002/king_202209030002.json +0 -0
  297. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job9/king/2022/09/08/0001/king_202209080001.json +0 -0
  298. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job9/king__deletelog/2022/09/02/0001/king_202209020001.json +0 -0
  299. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job9/king__deletelog/2022/09/04/0001/king_202209040001.json +0 -0
  300. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job9/king__deletelog/2022/09/04/0005/king_202209040005.json +0 -0
  301. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job9/king__deletelog/2022/09/04/0009/king_202209040009.json +0 -0
  302. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job9/queen/2022/09/08/0001/queen_202209080001.json +0 -0
  303. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/data/job9/queen__deletelog/2022/09/01/0001/queen_202209030001.json +0 -0
  304. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/gold/scd1/job01.sql +0 -0
  305. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/gold/scd1/job02.sql +0 -0
  306. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/gold/scd1/job03.sql +0 -0
  307. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/gold/scd1/job04.sql +0 -0
  308. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/gold/scd1/job05.sql +0 -0
  309. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/gold/scd1/job06.sql +0 -0
  310. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/gold/scd1/job07.sql +0 -0
  311. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/gold/scd1/job08.sql +0 -0
  312. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/gold/scd1/job09.sql +0 -0
  313. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/gold/scd1/job10.sql +0 -0
  314. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/gold/scd1/job11.sql +0 -0
  315. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/gold/scd2/job01.sql +0 -0
  316. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/gold/scd2/job02.sql +0 -0
  317. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/gold/scd2/job03.sql +0 -0
  318. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/gold/scd2/job04.sql +0 -0
  319. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/gold/scd2/job05.sql +0 -0
  320. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/gold/scd2/job06.sql +0 -0
  321. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/gold/scd2/job07.sql +0 -0
  322. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/gold/scd2/job08.sql +0 -0
  323. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/gold/scd2/job09.sql +0 -0
  324. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/gold/scd2/job10.sql +0 -0
  325. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/gold/scd2/job11.sql +0 -0
  326. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/silver/scd1/job01.sql +0 -0
  327. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/silver/scd1/job02.sql +0 -0
  328. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/silver/scd1/job03.sql +0 -0
  329. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/silver/scd1/job04.sql +0 -0
  330. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/silver/scd1/job05.sql +0 -0
  331. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/silver/scd1/job06.sql +0 -0
  332. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/silver/scd1/job07.sql +0 -0
  333. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/silver/scd1/job08.sql +0 -0
  334. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/silver/scd1/job09.sql +0 -0
  335. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/silver/scd1/job10.sql +0 -0
  336. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/silver/scd1/job11.sql +0 -0
  337. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/silver/scd2/job01.sql +0 -0
  338. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/silver/scd2/job02.sql +0 -0
  339. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/silver/scd2/job03.sql +0 -0
  340. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/silver/scd2/job04.sql +0 -0
  341. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/silver/scd2/job05.sql +0 -0
  342. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/silver/scd2/job06.sql +0 -0
  343. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/silver/scd2/job07.sql +0 -0
  344. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/silver/scd2/job08.sql +0 -0
  345. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/silver/scd2/job09.sql +0 -0
  346. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/silver/scd2/job10.sql +0 -0
  347. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/expected/silver/scd2/job11.sql +0 -0
  348. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/init.sh +0 -0
  349. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/initialize.py +0 -0
  350. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/jobs/__init__.py +0 -0
  351. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/jobs/job1/__init__.py +0 -0
  352. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/jobs/job1/test_cdc.py +0 -0
  353. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/jobs/job1/test_check.py +0 -0
  354. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/jobs/job1/test_dependency.py +0 -0
  355. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/jobs/job1/test_gold.py +0 -0
  356. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/jobs/job1/test_invoke.py +0 -0
  357. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/jobs/job1/test_overwrite.py +0 -0
  358. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/jobs/job1/test_schedule.py +0 -0
  359. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/jobs/job1/test_semantic.py +0 -0
  360. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/jobs/job1/test_silver.py +0 -0
  361. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/jobs/job2/__init__.py +0 -0
  362. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/jobs/job2/test_gold.py +0 -0
  363. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/jobs/job2/test_run.py +0 -0
  364. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/jobs/job2/test_semantic.py +0 -0
  365. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/jobs/job3/__init__.py +0 -0
  366. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/jobs/job3/test_gold.py +0 -0
  367. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/jobs/job3/test_run.py +0 -0
  368. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/jobs/job3/test_silver.py +0 -0
  369. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/jobs/job4/__init__.py +0 -0
  370. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/jobs/job4/test_gold.py +0 -0
  371. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/jobs/job4/test_run.py +0 -0
  372. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/jobs/job5/__init__.py +0 -0
  373. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/landing_to_raw.py +0 -0
  374. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/run.py +0 -0
  375. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runjobs.py +0 -0
  376. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtests.py +0 -0
  377. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/.gitignore +0 -0
  378. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/__init__.py +0 -0
  379. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/bronze/_config.kings.yml +0 -0
  380. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/bronze/_config.memory.yml +0 -0
  381. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/bronze/_config.monarchs.yml +0 -0
  382. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/bronze/_config.princes.yml +0 -0
  383. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/bronze/_config.princesses.yml +0 -0
  384. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/bronze/_config.queens.yml +0 -0
  385. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/bronze/_config.regents.yml +0 -0
  386. {fabricks-3.0.18/tests/integration/runtime/fabricks/extenders → fabricks-4.0.0/tests/integration/runtime/fabricks}/__init__.py +0 -0
  387. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/fabricks/conf.fabricks.yml +0 -0
  388. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/fabricks/conf.uc.fabricks.yml +0 -0
  389. {fabricks-3.0.18/tests/integration/runtime/fabricks/parsers → fabricks-4.0.0/tests/integration/runtime/fabricks/extenders}/__init__.py +0 -0
  390. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/fabricks/extenders/add_country.py +0 -0
  391. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/fabricks/extenders/drop__cols.py +0 -0
  392. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/fabricks/extenders/force_reload.py +0 -0
  393. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/fabricks/extenders/monarch.py +0 -0
  394. {fabricks-3.0.18/tests/integration → fabricks-4.0.0/tests/integration/runtime/fabricks/notebooks}/add_missing_modules.py +0 -0
  395. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/fabricks/notebooks/cluster.py +0 -0
  396. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/fabricks/notebooks/initialize.py +0 -0
  397. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/fabricks/notebooks/process.py +0 -0
  398. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/fabricks/notebooks/run.py +0 -0
  399. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/fabricks/notebooks/terminate.py +0 -0
  400. {fabricks-3.0.18/tests/integration/runtime/fabricks/udfs → fabricks-4.0.0/tests/integration/runtime/fabricks/parsers}/__init__.py +0 -0
  401. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/fabricks/requirements.txt +0 -0
  402. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/fabricks/schedules/schedule.yml +0 -0
  403. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/fabricks/udfs/addition.py +0 -0
  404. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/fabricks/udfs/identity.py +0 -0
  405. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/fabricks/udfs/key.sql +0 -0
  406. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/fabricks/udfs/parse_phone_number.py +0 -0
  407. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/fabricks/views/monarch.sql +0 -0
  408. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/check/_config.check.yml +0 -0
  409. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/check/count_must_equal.sql +0 -0
  410. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/check/duplicate_identity.sql +0 -0
  411. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/check/duplicate_key.sql +0 -0
  412. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/check/fail.pre_run.sql +0 -0
  413. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/check/fail.sql +0 -0
  414. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/check/max_rows.sql +0 -0
  415. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/check/min_rows.sql +0 -0
  416. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/check/skip.skip.sql +0 -0
  417. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/check/skip.sql +0 -0
  418. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/check/warning.post_run.sql +0 -0
  419. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/check/warning.sql +0 -0
  420. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/dim/_config.dim.yml +0 -0
  421. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/dim/date.sql +0 -0
  422. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/dim/identity.sql +0 -0
  423. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/dim/overwrite.sql +0 -0
  424. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/dim/time.sql +0 -0
  425. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/fact/_config.fact.yml +0 -0
  426. {fabricks-3.0.18/tests/integration/runtime/fabricks/notebooks → fabricks-4.0.0/tests/integration/runtime/gold/gold/fact}/add_missing_modules.py +0 -0
  427. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/fact/append.sql +0 -0
  428. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/fact/deduplicate.sql +0 -0
  429. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/fact/dependency_sql.sql +0 -0
  430. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/fact/foreign_keys.sql +0 -0
  431. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/fact/manual.sql +0 -0
  432. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/fact/masker_and_commenter.sql +0 -0
  433. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/fact/memory.sql +0 -0
  434. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/fact/no_drop.sql +0 -0
  435. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/fact/optimize_vacuum.sql +0 -0
  436. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/fact/option.sql +0 -0
  437. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/fact/order_duplicate.sql +0 -0
  438. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/fact/overwrite.sql +0 -0
  439. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/fact/primary_key.sql +0 -0
  440. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/fact/udf.sql +0 -0
  441. {fabricks-3.0.18/tests/integration/runtime/gold/gold/fact → fabricks-4.0.0/tests/integration/runtime/gold/gold/invoke}/add_missing_modules.py +0 -0
  442. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/invoke/failed_pre_run.sql +0 -0
  443. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/invoke/notebook.py +0 -0
  444. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/invoke/notebook_without_argument.ipynb +0 -0
  445. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/invoke/notebooks.py +0 -0
  446. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/invoke/notebooks_failed_pre_run.sql +0 -0
  447. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/invoke/post_run/exe.py +0 -0
  448. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/invoke/post_run.sql +0 -0
  449. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/invoke/pre_run/exe.py +0 -0
  450. /fabricks-3.0.18/tests/integration/runtime/gold/transf/post_run.py → /fabricks-4.0.0/tests/integration/runtime/gold/gold/invoke/pre_run/exe_2.py +0 -0
  451. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/invoke/timedout.py +0 -0
  452. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/invoke/timedout_pre_run.sql +0 -0
  453. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/nocdc/_config.nocdc.yml +0 -0
  454. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/nocdc/deduplicate.sql +0 -0
  455. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/nocdc/update.sql +0 -0
  456. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/scd1/complete.sql +0 -0
  457. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/scd1/identity.sql +0 -0
  458. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/scd1/last_timestamp.sql +0 -0
  459. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/scd1/memory.sql +0 -0
  460. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/scd1/special_char.sql +0 -0
  461. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/scd1/update.sql +0 -0
  462. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/scd2/complete.sql +0 -0
  463. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/scd2/correct_valid_from.sql +0 -0
  464. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/scd2/last_timestamp.sql +0 -0
  465. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/scd2/memory.sql +0 -0
  466. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/scd2/update.sql +0 -0
  467. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/type_widening/_config.type_widening.yml +0 -0
  468. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/type_widening/merge.sql +0 -0
  469. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/gold/type_widening/overwrite.sql +0 -0
  470. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/transf/fact/_config.transf.yml +0 -0
  471. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/gold/transf/fact/memory.sql +0 -0
  472. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/job-schema.json +0 -0
  473. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/semantic/dim/_config.semantic.yml +0 -0
  474. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/semantic/dim/complex_query.sql +0 -0
  475. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/semantic/fact/_config.semantic.yml +0 -0
  476. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/semantic/fact/job_option.sql +0 -0
  477. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/semantic/fact/powerbi.sql +0 -0
  478. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/semantic/fact/schema_drift.sql +0 -0
  479. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/semantic/fact/step_option.sql +0 -0
  480. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/semantic/fact/zstd.sql +0 -0
  481. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/silver/_config.kings_and_queens.yml +0 -0
  482. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/silver/_config.memory.yml +0 -0
  483. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/silver/_config.monarchs.yml +0 -0
  484. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/silver/_config.princes.yml +0 -0
  485. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/silver/_config.princesses.yml +0 -0
  486. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/silver/_config.regents.yml +0 -0
  487. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/uc/bronze/_config.kings.yml +0 -0
  488. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/uc/bronze/_config.memory.yml +0 -0
  489. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/uc/bronze/_config.monarchs.yml +0 -0
  490. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/uc/bronze/_config.princes.yml +0 -0
  491. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/uc/bronze/_config.princesses.yml +0 -0
  492. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/uc/bronze/_config.queens.yml +0 -0
  493. {fabricks-3.0.18 → fabricks-4.0.0}/tests/integration/runtime/uc/bronze/_config.regents.yml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fabricks
3
- Version: 3.0.18
3
+ Version: 4.0.0
4
4
  Author-email: BMS DWH Team <bi_support@bmsuisse.ch>
5
5
  Requires-Python: <4,>=3.9
6
6
  Requires-Dist: azure-data-tables<13,>=12.5.0
@@ -8,15 +8,20 @@ Requires-Dist: azure-identity>=1.10.0
8
8
  Requires-Dist: azure-storage-blob>=12.14.1
9
9
  Requires-Dist: azure-storage-queue<13,>=12.10.0
10
10
  Requires-Dist: databricks-cli>=0.18.0
11
+ Requires-Dist: databricks-connect>=11.0.0
11
12
  Requires-Dist: databricks-sdk>=0.20.0
12
- Requires-Dist: importlib-metadata>=8.6.1
13
+ Requires-Dist: deptry>=0.23.1
14
+ Requires-Dist: ipython>=8.18.1
13
15
  Requires-Dist: jinja2>=2.11.3
14
16
  Requires-Dist: mermaid-magic>=0.1.4
15
- Requires-Dist: pydantic-settings
16
- Requires-Dist: pydantic-yaml>=1.4.0
17
+ Requires-Dist: pandas>=2.2.3
18
+ Requires-Dist: py4j>=0.10.9.7
19
+ Requires-Dist: pydantic-settings>=2.11.0
17
20
  Requires-Dist: pydantic>=1.10.21
21
+ Requires-Dist: pyspark>=3.5.7
18
22
  Requires-Dist: python-dotenv>=1.0.1
19
23
  Requires-Dist: pyyaml>=6.0.0
24
+ Requires-Dist: sparkdantic>=1.5.0
20
25
  Requires-Dist: sqlglot>=22.1.1
21
26
  Requires-Dist: tenacity>=9.1.2
22
27
  Requires-Dist: tomli>=2.2.1; python_version < '3.11'
@@ -1,5 +1,17 @@
1
- from fabricks.context import BRONZE, DBUTILS, GOLD, SECRET_SCOPE, SILVER, SPARK, init_spark_session, pprint_runtime
2
- from fabricks.core.jobs.base._types import Bronzes, Golds, Silvers, Steps
1
+ from fabricks.context import (
2
+ BRONZE,
3
+ CONF_RUNTIME,
4
+ DBUTILS,
5
+ GOLD,
6
+ SILVER,
7
+ SPARK,
8
+ Bronzes,
9
+ Golds,
10
+ Silvers,
11
+ Steps,
12
+ init_spark_session,
13
+ pprint_runtime,
14
+ )
3
15
 
4
16
  # step
5
17
  BRONZES = Bronzes
@@ -18,7 +30,7 @@ __all__ = [
18
30
  "GOLDS",
19
31
  "init_spark_session",
20
32
  "pprint_runtime",
21
- "SECRET_SCOPE",
33
+ "CONF_RUNTIME",
22
34
  "SILVER",
23
35
  "Silvers",
24
36
  "SILVERS",
@@ -4,14 +4,13 @@
4
4
  # COMMAND ----------
5
5
 
6
6
  from logging import DEBUG
7
- from typing import Any, cast
7
+ from typing import Any
8
8
 
9
9
  from databricks.sdk.runtime import dbutils, display, spark
10
10
 
11
11
  from fabricks.context import PATH_NOTEBOOKS
12
12
  from fabricks.context.log import DEFAULT_LOGGER
13
13
  from fabricks.core import get_step
14
- from fabricks.core.jobs.base._types import TStep
15
14
  from fabricks.core.schedules import generate, terminate
16
15
  from fabricks.utils.helpers import run_in_parallel, run_notebook
17
16
 
@@ -51,7 +50,7 @@ steps = [row.step for row in spark.sql("select step from {df} group by step", df
51
50
 
52
51
 
53
52
  def _schedule(task: Any):
54
- step = get_step(step=cast(TStep, task))
53
+ step = get_step(step=task)
55
54
  run_notebook(
56
55
  PATH_NOTEBOOKS.joinpath("process"),
57
56
  timeout=step.timeouts.step,
@@ -0,0 +1,4 @@
1
+ from fabricks.core.parsers import BaseParser, parser
2
+ from fabricks.models import ParserOptions
3
+
4
+ __all__ = ["BaseParser", "ParserOptions", "parser"]
@@ -1,9 +1,11 @@
1
1
  from fabricks.utils.helpers import concat_dfs, concat_ws, run_in_parallel
2
- from fabricks.utils.path import Path
2
+ from fabricks.utils.path import FileSharePath, GitPath, Path
3
3
 
4
4
  __all__ = [
5
5
  "concat_dfs",
6
6
  "concat_ws",
7
+ "FileSharePath",
8
+ "GitPath",
7
9
  "Path",
8
10
  "run_in_parallel",
9
11
  ]
@@ -1,4 +1,4 @@
1
- from fabricks.cdc.base import AllowedChangeDataCaptures, BaseCDC
1
+ from fabricks.cdc.base import BaseCDC
2
2
  from fabricks.cdc.cdc import CDC
3
3
  from fabricks.cdc.nocdc import NoCDC
4
4
  from fabricks.cdc.scd1 import SCD1
@@ -7,7 +7,6 @@ from fabricks.cdc.scd2 import SCD2
7
7
  __all__ = [
8
8
  "BaseCDC",
9
9
  "CDC",
10
- "AllowedChangeDataCaptures",
11
10
  "NoCDC",
12
11
  "SCD1",
13
12
  "SCD2",
@@ -0,0 +1,3 @@
1
+ from fabricks.cdc.base.cdc import BaseCDC
2
+
3
+ __all__ = ["BaseCDC"]
@@ -0,0 +1,12 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Union
4
+
5
+ from pyspark.sql import DataFrame
6
+ from pyspark.sql.types import StructType
7
+
8
+ from fabricks.metastore.table import Table
9
+
10
+ # Import from models for consistency
11
+
12
+ AllowedSources = Union[DataFrame, Table, str, StructType]
@@ -4,6 +4,7 @@ from abc import ABC, abstractmethod
4
4
  from typing import List, Optional, Union
5
5
 
6
6
  from pyspark.sql import DataFrame, SparkSession
7
+ from pyspark.sql.types import StructType
7
8
 
8
9
  from fabricks.cdc.base._types import AllowedSources
9
10
  from fabricks.context import SPARK
@@ -111,6 +112,7 @@ class Configurator(ABC):
111
112
  cols = [
112
113
  "__operation",
113
114
  "__metadata",
115
+ "__last_updated",
114
116
  "__rescued_data",
115
117
  ]
116
118
 
@@ -135,6 +137,7 @@ class Configurator(ABC):
135
137
  # Trailing
136
138
  "__operation",
137
139
  "__metadata",
140
+ "__last_updated",
138
141
  "__rescued_data",
139
142
  ]
140
143
 
@@ -149,6 +152,8 @@ class Configurator(ABC):
149
152
  df = self.table.dataframe
150
153
  elif isinstance(src, str):
151
154
  df = self.spark.sql(src)
155
+ elif isinstance(src, StructType):
156
+ df = self.spark.createDataFrame([], schema=src)
152
157
  else:
153
158
  raise ValueError(f"{src} not allowed")
154
159
 
@@ -4,6 +4,7 @@ from typing import Any, List, Optional, Sequence, Union, cast
4
4
 
5
5
  from py4j.protocol import Py4JJavaError
6
6
  from pyspark.sql import DataFrame
7
+ from pyspark.sql.types import StructType
7
8
 
8
9
  from fabricks.cdc.base._types import AllowedSources
9
10
  from fabricks.cdc.base.configurator import Configurator
@@ -25,11 +26,11 @@ class Generator(Configurator):
25
26
  identity: Optional[bool] = False,
26
27
  liquid_clustering: Optional[bool] = False,
27
28
  cluster_by: Optional[Union[List[str], str]] = None,
28
- properties: Optional[dict[str, str]] = None,
29
+ properties: Optional[dict[str, str | bool | int]] = None,
29
30
  masks: Optional[dict[str, str]] = None,
30
31
  primary_key: Optional[dict[str, Any]] = None,
31
32
  foreign_keys: Optional[dict[str, Any]] = None,
32
- comments: Optional[dict[str, str]] = None,
33
+ comments: Optional[dict[str, Any]] = None,
33
34
  **kwargs,
34
35
  ):
35
36
  kwargs["mode"] = "complete"
@@ -145,6 +146,7 @@ class Generator(Configurator):
145
146
  d = self.get_schema_differences(src, **kwargs)
146
147
  if d is None:
147
148
  return None
149
+
148
150
  return len(d) > 0
149
151
 
150
152
  def _update_schema(
@@ -155,7 +157,9 @@ class Generator(Configurator):
155
157
  **kwargs,
156
158
  ):
157
159
  if self.is_view:
158
- assert not isinstance(src, DataFrameLike), "dataframe not allowed"
160
+ assert not isinstance(src, DataFrameLike) and not isinstance(src, StructType), (
161
+ "dataframe and structtype not allowed"
162
+ )
159
163
  self.create_or_replace_view(src=src)
160
164
 
161
165
  else:
@@ -7,6 +7,7 @@ from pyspark.sql import DataFrame
7
7
 
8
8
  from fabricks.cdc.base._types import AllowedSources
9
9
  from fabricks.cdc.base.processor import Processor
10
+ from fabricks.context.config import IS_DEBUGMODE
10
11
  from fabricks.context.log import DEFAULT_LOGGER
11
12
  from fabricks.metastore.view import create_or_replace_global_temp_view
12
13
  from fabricks.utils._types import DataFrameLike
@@ -56,6 +57,7 @@ class Merger(Processor):
56
57
  assert "__key" or keys, f"{self} - __key or keys not found"
57
58
 
58
59
  return {
60
+ "debugmode": IS_DEBUGMODE,
59
61
  "src": src,
60
62
  "format": format,
61
63
  "tgt": self.table,
@@ -7,6 +7,7 @@ from pyspark.sql import DataFrame
7
7
 
8
8
  from fabricks.cdc.base._types import AllowedSources
9
9
  from fabricks.cdc.base.generator import Generator
10
+ from fabricks.context.config import IS_DEBUGMODE
10
11
  from fabricks.context.log import DEFAULT_LOGGER
11
12
  from fabricks.metastore.table import Table
12
13
  from fabricks.metastore.view import create_or_replace_global_temp_view
@@ -65,6 +66,7 @@ class Processor(Generator):
65
66
  add_key = kwargs.get("add_key", None)
66
67
  add_hash = kwargs.get("add_hash", None)
67
68
  add_timestamp = kwargs.get("add_timestamp", None)
69
+ add_last_updated = kwargs.get("add_last_updated", None)
68
70
  add_metadata = kwargs.get("add_metadata", None)
69
71
 
70
72
  has_order_by = None if not order_duplicate_by else True
@@ -78,6 +80,7 @@ class Processor(Generator):
78
80
  has_hash = add_hash or "__hash" in inputs
79
81
  has_identity = "__identity" in inputs
80
82
  has_rescued_data = "__rescued_data" in inputs
83
+ has_last_updated = add_last_updated or "__last_updated" in inputs
81
84
 
82
85
  soft_delete = kwargs.get("soft_delete", None)
83
86
  delete_missing = kwargs.get("delete_missing", None)
@@ -152,6 +155,10 @@ class Processor(Generator):
152
155
  if add_hash and "__hash" in inputs:
153
156
  overwrite.append("__hash")
154
157
 
158
+ # override __last_updated if added and found in df
159
+ if add_last_updated and "__last_updated" in inputs:
160
+ overwrite.append("__last_updated")
161
+
155
162
  # override metadata if added and found in df
156
163
  if add_metadata and "__metadata" in inputs:
157
164
  overwrite.append("__metadata")
@@ -219,6 +226,11 @@ class Processor(Generator):
219
226
  outputs.append("__metadata")
220
227
  if "__metadata" not in intermediates:
221
228
  intermediates.append("__metadata")
229
+ if has_last_updated:
230
+ if "__last_updated" not in outputs:
231
+ outputs.append("__last_updated")
232
+ if "__last_updated" not in intermediates:
233
+ intermediates.append("__last_updated")
222
234
  if has_source:
223
235
  if "__source" not in outputs:
224
236
  outputs.append("__source")
@@ -311,6 +323,7 @@ class Processor(Generator):
311
323
  parent_final = "__final"
312
324
 
313
325
  return {
326
+ "debugmode": IS_DEBUGMODE,
314
327
  "src": src,
315
328
  "format": format,
316
329
  "tgt": tgt,
@@ -337,6 +350,7 @@ class Processor(Generator):
337
350
  "has_rows": has_rows,
338
351
  "has_source": has_source,
339
352
  "has_metadata": has_metadata,
353
+ "has_last_updated": has_last_updated,
340
354
  "has_timestamp": has_timestamp,
341
355
  "has_operation": has_operation,
342
356
  "has_identity": has_identity,
@@ -347,6 +361,7 @@ class Processor(Generator):
347
361
  # default add
348
362
  "add_metadata": add_metadata,
349
363
  "add_timestamp": add_timestamp,
364
+ "add_last_updated": add_last_updated,
350
365
  "add_key": add_key,
351
366
  "add_hash": add_hash,
352
367
  # value add