fabricks 2024.7.1.5__py3-none-any.whl

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 (154) hide show
  1. fabricks/__init__.py +0 -0
  2. fabricks/api/__init__.py +7 -0
  3. fabricks/api/cdc/__init__.py +6 -0
  4. fabricks/api/cdc/nocdc.py +3 -0
  5. fabricks/api/cdc/scd1.py +3 -0
  6. fabricks/api/cdc/scd2.py +3 -0
  7. fabricks/api/context.py +31 -0
  8. fabricks/api/core.py +4 -0
  9. fabricks/api/extenders.py +3 -0
  10. fabricks/api/log.py +3 -0
  11. fabricks/api/metastore/__init__.py +10 -0
  12. fabricks/api/metastore/database.py +3 -0
  13. fabricks/api/metastore/table.py +3 -0
  14. fabricks/api/metastore/view.py +6 -0
  15. fabricks/api/notebooks/__init__.py +0 -0
  16. fabricks/api/notebooks/cluster.py +6 -0
  17. fabricks/api/notebooks/deploy/__init__.py +0 -0
  18. fabricks/api/notebooks/deploy/fabricks.py +147 -0
  19. fabricks/api/notebooks/deploy/notebooks.py +86 -0
  20. fabricks/api/notebooks/initialize.py +38 -0
  21. fabricks/api/notebooks/optimize.py +25 -0
  22. fabricks/api/notebooks/process.py +50 -0
  23. fabricks/api/notebooks/run.py +87 -0
  24. fabricks/api/notebooks/terminate.py +27 -0
  25. fabricks/api/notebooks/vacuum.py +25 -0
  26. fabricks/api/parsers.py +3 -0
  27. fabricks/api/udfs.py +3 -0
  28. fabricks/api/utils.py +9 -0
  29. fabricks/cdc/__init__.py +14 -0
  30. fabricks/cdc/base/__init__.py +4 -0
  31. fabricks/cdc/base/cdc.py +5 -0
  32. fabricks/cdc/base/configurator.py +145 -0
  33. fabricks/cdc/base/generator.py +117 -0
  34. fabricks/cdc/base/merger.py +107 -0
  35. fabricks/cdc/base/processor.py +338 -0
  36. fabricks/cdc/base/types.py +3 -0
  37. fabricks/cdc/cdc.py +5 -0
  38. fabricks/cdc/nocdc.py +19 -0
  39. fabricks/cdc/scd.py +21 -0
  40. fabricks/cdc/scd1.py +15 -0
  41. fabricks/cdc/scd2.py +15 -0
  42. fabricks/cdc/templates/__init__.py +0 -0
  43. fabricks/cdc/templates/merge/scd1.sql.jinja +72 -0
  44. fabricks/cdc/templates/merge/scd2.sql.jinja +54 -0
  45. fabricks/cdc/templates/merge.sql.jinja +2 -0
  46. fabricks/cdc/templates/query/__init__.py +0 -0
  47. fabricks/cdc/templates/query/base.sql.jinja +34 -0
  48. fabricks/cdc/templates/query/context.sql.jinja +95 -0
  49. fabricks/cdc/templates/query/current.sql.jinja +32 -0
  50. fabricks/cdc/templates/query/deduplicate_hash.sql.jinja +21 -0
  51. fabricks/cdc/templates/query/deduplicate_key.sql.jinja +14 -0
  52. fabricks/cdc/templates/query/filter.sql.jinja +71 -0
  53. fabricks/cdc/templates/query/final.sql.jinja +1 -0
  54. fabricks/cdc/templates/query/hash.sql.jinja +1 -0
  55. fabricks/cdc/templates/query/nocdc.sql.jinja +10 -0
  56. fabricks/cdc/templates/query/rectify.sql.jinja +120 -0
  57. fabricks/cdc/templates/query/scd1.sql.jinja +112 -0
  58. fabricks/cdc/templates/query/scd2.sql.jinja +114 -0
  59. fabricks/cdc/templates/query.sql.jinja +11 -0
  60. fabricks/context/__init__.py +51 -0
  61. fabricks/context/log.py +26 -0
  62. fabricks/context/runtime.py +143 -0
  63. fabricks/context/spark.py +43 -0
  64. fabricks/context/types.py +123 -0
  65. fabricks/core/__init__.py +4 -0
  66. fabricks/core/dags/__init__.py +9 -0
  67. fabricks/core/dags/base.py +72 -0
  68. fabricks/core/dags/generator.py +154 -0
  69. fabricks/core/dags/log.py +14 -0
  70. fabricks/core/dags/processor.py +163 -0
  71. fabricks/core/dags/terminator.py +26 -0
  72. fabricks/core/deploy/__init__.py +12 -0
  73. fabricks/core/deploy/tables.py +76 -0
  74. fabricks/core/deploy/views.py +417 -0
  75. fabricks/core/extenders.py +29 -0
  76. fabricks/core/jobs/__init__.py +20 -0
  77. fabricks/core/jobs/base/__init__.py +10 -0
  78. fabricks/core/jobs/base/checker.py +89 -0
  79. fabricks/core/jobs/base/configurator.py +323 -0
  80. fabricks/core/jobs/base/error.py +16 -0
  81. fabricks/core/jobs/base/generator.py +391 -0
  82. fabricks/core/jobs/base/invoker.py +119 -0
  83. fabricks/core/jobs/base/job.py +5 -0
  84. fabricks/core/jobs/base/processor.py +204 -0
  85. fabricks/core/jobs/base/types.py +191 -0
  86. fabricks/core/jobs/bronze.py +333 -0
  87. fabricks/core/jobs/get_job.py +126 -0
  88. fabricks/core/jobs/get_job_conf.py +115 -0
  89. fabricks/core/jobs/get_job_id.py +26 -0
  90. fabricks/core/jobs/get_jobs.py +89 -0
  91. fabricks/core/jobs/gold.py +218 -0
  92. fabricks/core/jobs/silver.py +354 -0
  93. fabricks/core/parsers/__init__.py +12 -0
  94. fabricks/core/parsers/base.py +91 -0
  95. fabricks/core/parsers/decorator.py +11 -0
  96. fabricks/core/parsers/get_parser.py +25 -0
  97. fabricks/core/parsers/types.py +6 -0
  98. fabricks/core/schedules.py +89 -0
  99. fabricks/core/scripts/__init__.py +13 -0
  100. fabricks/core/scripts/armageddon.py +82 -0
  101. fabricks/core/scripts/generate.py +20 -0
  102. fabricks/core/scripts/job_schema.py +28 -0
  103. fabricks/core/scripts/optimize.py +45 -0
  104. fabricks/core/scripts/process.py +9 -0
  105. fabricks/core/scripts/stats.py +48 -0
  106. fabricks/core/scripts/steps.py +27 -0
  107. fabricks/core/scripts/terminate.py +6 -0
  108. fabricks/core/scripts/vacuum.py +45 -0
  109. fabricks/core/site_packages.py +55 -0
  110. fabricks/core/steps/__init__.py +4 -0
  111. fabricks/core/steps/base.py +282 -0
  112. fabricks/core/steps/get_step.py +10 -0
  113. fabricks/core/steps/get_step_conf.py +33 -0
  114. fabricks/core/steps/types.py +7 -0
  115. fabricks/core/udfs.py +106 -0
  116. fabricks/core/utils.py +69 -0
  117. fabricks/core/views.py +36 -0
  118. fabricks/metastore/README.md +3 -0
  119. fabricks/metastore/__init__.py +5 -0
  120. fabricks/metastore/database.py +71 -0
  121. fabricks/metastore/pyproject.toml +20 -0
  122. fabricks/metastore/relational.py +61 -0
  123. fabricks/metastore/table.py +529 -0
  124. fabricks/metastore/utils.py +35 -0
  125. fabricks/metastore/view.py +40 -0
  126. fabricks/utils/README.md +3 -0
  127. fabricks/utils/__init__.py +0 -0
  128. fabricks/utils/azure_queue.py +63 -0
  129. fabricks/utils/azure_table.py +99 -0
  130. fabricks/utils/console.py +51 -0
  131. fabricks/utils/container.py +57 -0
  132. fabricks/utils/fdict.py +28 -0
  133. fabricks/utils/helpers.py +89 -0
  134. fabricks/utils/log.py +153 -0
  135. fabricks/utils/path.py +206 -0
  136. fabricks/utils/pip.py +61 -0
  137. fabricks/utils/pydantic.py +92 -0
  138. fabricks/utils/pyproject.toml +18 -0
  139. fabricks/utils/read/__init__.py +11 -0
  140. fabricks/utils/read/read.py +305 -0
  141. fabricks/utils/read/read_excel.py +5 -0
  142. fabricks/utils/read/read_yaml.py +43 -0
  143. fabricks/utils/read/types.py +3 -0
  144. fabricks/utils/schema/__init__.py +7 -0
  145. fabricks/utils/schema/get_json_schema_for_type.py +161 -0
  146. fabricks/utils/schema/get_schema_for_type.py +93 -0
  147. fabricks/utils/secret.py +78 -0
  148. fabricks/utils/sqlglot.py +48 -0
  149. fabricks/utils/write/__init__.py +8 -0
  150. fabricks/utils/write/delta.py +46 -0
  151. fabricks/utils/write/stream.py +27 -0
  152. fabricks-2024.7.1.5.dist-info/METADATA +212 -0
  153. fabricks-2024.7.1.5.dist-info/RECORD +154 -0
  154. fabricks-2024.7.1.5.dist-info/WHEEL +4 -0
@@ -0,0 +1,212 @@
1
+ Metadata-Version: 2.1
2
+ Name: fabricks
3
+ Version: 2024.7.1.5
4
+ Summary:
5
+ Author: BMS DWH Team
6
+ Author-email: bi_support@bmsuisse.ch
7
+ Requires-Python: >=3.9,<4
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Programming Language :: Python :: 3.9
10
+ Classifier: Programming Language :: Python :: 3.10
11
+ Classifier: Programming Language :: Python :: 3.11
12
+ Classifier: Programming Language :: Python :: 3.12
13
+ Requires-Dist: azure-data-tables (>=12.5.0,<13.0.0)
14
+ Requires-Dist: azure-identity (>=1.10.0)
15
+ Requires-Dist: azure-storage-blob (>=12.14.1)
16
+ Requires-Dist: azure-storage-queue (>=12.10.0,<13.0.0)
17
+ Requires-Dist: databricks-sdk (>=0.29.0)
18
+ Requires-Dist: jinja2 (>=2.11.3)
19
+ Requires-Dist: python-dotenv (>=1.0.1)
20
+ Requires-Dist: sqlglot (>=22.1.1)
21
+ Description-Content-Type: text/markdown
22
+
23
+ # Fabricks
24
+
25
+ Fabricks is a Python framework developed to help create a lake house in Databricks. It simplifies the process of building and maintaining data pipelines by providing a standardized approach to defining and managing data processing workflows.
26
+
27
+ Though Fabricks is currently really meant to be run on Databricks, the code using Fabricks is really portable - you'll almost exclusively
28
+ write SQL-Select Code - no need to manually write DDL/DML/Merge queries. Later on we might add support for other platforms as well, eg. DuckDB or Open Source Spark.
29
+
30
+
31
+
32
+ ## Features
33
+
34
+ - YAML configuration files: Fabricks uses YAML files for configuration, making it easy to define and modify workflows without requiring significant changes to the code.
35
+ - SQL files for business logic: Business logic is defined in SQL files, providing a familiar and powerful tool for data processing.
36
+ - Version control: Fabricks supports version control, ensuring that changes are tracked and can be rolled back if necessary.
37
+ - Seamless integration of new data sources: Fabricks can easily integrate new data sources into existing workflows.
38
+ - Change Data Capture: Fabricks supports Change Data Capture, allowing it to track and handle changes in the data over time.
39
+ - Drop and create: Fabricks can drop and create tables as needed, providing flexibility in managing the data schema.
40
+
41
+ ## Getting Started
42
+
43
+ To get started with Fabricks, you'll need to install it and set up your first project. Here's a basic guide on how to do that:
44
+
45
+ ### Installation
46
+
47
+ To install Fabricks, you need to install the library on your Databricks cluster. Follow the steps below:
48
+
49
+ 1. Navigate to your Databricks workspace.
50
+ 2. Select the cluster where you want to install the library.
51
+ 3. Click on the `Libraries` tab.
52
+ 4. Click on `Install New`.
53
+ 5. Choose `PyPI` from the library source dropdown.
54
+ 6. Enter `fabricks` in the package text box.
55
+ 7. Click `Install`.
56
+
57
+ After the library is installed, you can import it in your notebooks or scripts using `import fabricks`.
58
+
59
+ ### Setting Up Your First Project
60
+
61
+ # Fabricks Runtime Configuration
62
+
63
+ The Fabricks runtime configuration is defined in a YAML file. This file specifies the settings for the Fabricks runtime, including options for the runtime environment, path options, Spark options, and the configuration for different stages of the data pipeline (bronze, silver, gold, etc.).
64
+
65
+ A sample can be found in the [tests](tests/runtime/fabricks/conf.5589296195699698.yml)
66
+
67
+ ## Configuration Options
68
+
69
+ - `name`: The name of the configuration.
70
+ - `options`: General options for the runtime. This includes:
71
+ - `secret_scope`: The name of the secret scope in Databricks.
72
+ - `timeout`: The timeout for the runtime in seconds.
73
+ - `workers`: The number of workers for the runtime.
74
+ - `path_options`: Options for the storage path. This includes:
75
+ - `storage`: The storage path for the data.
76
+ - `spark_options`: Options for Spark. This includes:
77
+ - `sql`: SQL options for Spark.
78
+
79
+ ## Data Pipeline Stages
80
+
81
+ The configuration file defines the settings for different stages of the data pipeline:
82
+
83
+ - `bronze`: The initial stage of the data pipeline. This includes:
84
+ - `name`: The name of the stage.
85
+ - `path_options`: Options for the storage path.
86
+ - `options`: Options for the stage.
87
+
88
+ For some samples, see in the [tests/runtime/bronze Folder](tests/runtime/bronze)
89
+ - `silver`: The intermediate stage of the data pipeline. This includes:
90
+ - `name`: The name of the stage.
91
+ - `path_options`: Options for the storage path.
92
+ - `options`: Options for the stage.
93
+
94
+ For some samples, see in the [tests/runtime/silver Folder](tests/runtime/silver)
95
+ - `gold`: The final stage of the data pipeline. This includes:
96
+ - `name`: The name of the stage.
97
+ - `path_options`: Options for the storage path.
98
+ - `options`: Options for the stage.
99
+
100
+
101
+ For some samples, see in the [tests/runtime/gold Folder](tests/runtime/gold)
102
+
103
+ The folder names and the stage names can be configures in the main Fabricks config, you don't have t o stick with the defaults
104
+
105
+ ## Other Configurations
106
+
107
+ - `powerbi`: Configuration for PowerBI integration.
108
+ - `databases`: Configuration for the databases.
109
+ - `credentials`: Credentials for accessing different resources.
110
+ - `variables`: Variables used in the configuration.
111
+
112
+ Please note that this is a basic documentation based on the provided YAML file. The actual configuration options may vary depending on the specific requirements of your project.
113
+
114
+ # Bronze Step Configuration
115
+
116
+ The "bronze" step in Fabricks is the initial stage of the data pipeline. It is responsible for ingesting raw data and storing it in a "bronze" table for further processing. The configuration for the "bronze" step is defined in a YAML file. Each job in the "bronze" step has the following configuration options:
117
+
118
+ - `step`: The step in the data pipeline. For these jobs, it is always "bronze".
119
+ - `topic`: The topic of the job. This is usually the name of the data source.
120
+ - `item`: The item of the job. This is usually the name of the specific data item being processed.
121
+ - `tags`: Tags for the job. These can be used to categorize or filter jobs.
122
+ - `options`: Options for the job. This includes:
123
+ - `mode`: The mode of the job. This can be "append", "memory", or "register".
124
+ - `uri`: The URI of the data source. This is usually an Azure Blob File System (ABFS) URI.
125
+ - `parser`: The parser to use for the data. This can be "monarch", "parquet", etc.
126
+ - `keys`: The keys for the data. These are the columns that uniquely identify each row in the data.
127
+ - `source`: The source of the data. This is usually the same as the topic.
128
+ - `extender`: The extender for the data. This is used to extend the data with additional columns or transformations.
129
+ - `encrypted_columns`: The columns in the data that are encrypted. These columns will be decrypted during the "bronze" step.
130
+ - `calculated_columns`: The columns in the data that are calculated. These columns will be calculated during the "bronze" step.
131
+
132
+ Here's an example of a "bronze" step job:
133
+
134
+ ```yaml
135
+ - job:
136
+ step: bronze
137
+ topic: king
138
+ item: scd1
139
+ tags: [test]
140
+ options:
141
+ mode: append
142
+ uri: abfss://fabricks@$datahub/raw/king
143
+ parser: monarch
144
+ keys: [id]
145
+ source: king
146
+ ```
147
+
148
+ # Silver Step Configuration
149
+
150
+ The "silver" step in Fabricks is the intermediate stage of the data pipeline. It is responsible for processing the raw data ingested in the "bronze" step and storing it in a "silver" table for further processing. The configuration for the "silver" step is defined in a YAML file. Each job in the "silver" step has the following configuration options:
151
+
152
+ - `step`: The step in the data pipeline. For these jobs, it is always "silver".
153
+ - `topic`: The topic of the job. This is usually the name of the data source.
154
+ - `item`: The item of the job. This is usually the name of the specific data item being processed.
155
+ - `tags`: Tags for the job. These can be used to categorize or filter jobs.
156
+ - `options`: Options for the job. This includes:
157
+ - `mode`: The mode of the job. This can be "update", "memory", "latest", "append", "combine", etc.
158
+ - `change_data_capture`: The type of Change Data Capture (CDC) to use. This can be "scd1", "scd2", "nocdc", etc.
159
+ - `parents`: The parent jobs that this job depends on. These are usually "bronze" step jobs.
160
+ - `extender`: The extender for the data. This is used to extend the data with additional columns or transformations.
161
+ - `order_duplicate_by`: The order to use when removing duplicates. This can be "asc" or "desc".
162
+ - `check_options`: Options for checking the data. This includes:
163
+ - `max_rows`: The maximum number of rows to check.
164
+ - `stream`: Whether to stream the data. This can be "true" or "false".
165
+
166
+ Here's an example of a "silver" step job:
167
+
168
+ ```yaml
169
+ - job:
170
+ step: silver
171
+ topic: king_and_queen
172
+ item: scd1
173
+ tags: [test]
174
+ options:
175
+ mode: update
176
+ change_data_capture: scd1
177
+ parents: [bronze.queen_scd1, bronze.king_scd1]
178
+ ```
179
+ # Gold Step Configuration
180
+
181
+ The "gold" step in Fabricks is the final stage of the data pipeline. It is responsible for processing the data from the "silver" step and storing it in a "gold" table for consumption. The configuration for the "gold" step is defined in a YAML file. Each job in the "gold" step has the following configuration options:
182
+
183
+ - `step`: The step in the data pipeline. For these jobs, it is always "gold".
184
+ - `topic`: The topic of the job. This is usually the name of the data source.
185
+ - `item`: The item of the job. This is usually the name of the specific data item being processed.
186
+ - `tags`: Tags for the job. These can be used to categorize or filter jobs.
187
+ - `options`: Options for the job. This includes:
188
+ - `mode`: The mode of the job. This can be "complete", "memory", etc.
189
+ - `change_data_capture`: The type of Change Data Capture (CDC) to use. This can be "scd1", "scd2", "nocdc", etc.
190
+
191
+ Here's an example of a "gold" step job:
192
+
193
+ ```yaml
194
+ - job:
195
+ step: gold
196
+ topic: scd2
197
+ item: complete
198
+ tags: [test]
199
+ options:
200
+ change_data_capture: scd2
201
+ mode: complete
202
+ ````
203
+
204
+ ## Usage
205
+
206
+ // Instructions on how to use the framework go here
207
+
208
+
209
+ ## License
210
+
211
+ This project is licensed under the terms of the MIT license.
212
+
@@ -0,0 +1,154 @@
1
+ fabricks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ fabricks/api/__init__.py,sha256=O4t4Dj-qEwomMDkhcBUzzwemSazpL83k3kkDzTrV8yo,120
3
+ fabricks/api/cdc/__init__.py,sha256=Cl3LhLbQrA42IvNLqoV7CCbjQEYQMJfO6cAZv1l1aas,196
4
+ fabricks/api/cdc/nocdc.py,sha256=3E1Cn6cPHfEszGMaHEknrLqEvVKS-5-hk8s_GRu6TYY,58
5
+ fabricks/api/cdc/scd1.py,sha256=3mlWD50g-8SLMV51BLhtEz4ETcnOWgkOdaNIZCl75WY,55
6
+ fabricks/api/cdc/scd2.py,sha256=2XNDDvY0xaaqcq8o7V3Z2L0oTEUCPNaB-MxN4YDWcvQ,55
7
+ fabricks/api/context.py,sha256=1Y3OwIEHDowcEKYBUh7aT817xabcBKe4hFNtQXlcd8g,517
8
+ fabricks/api/core.py,sha256=b6bMtPjpw81opqpg02cPeeKjUYKvbqspzLM8OXTIOAE,137
9
+ fabricks/api/extenders.py,sha256=Qk4ZDgEkXe-dtPINmePkbtWlhkC209X6YKkqG-8lHAo,69
10
+ fabricks/api/log.py,sha256=y4vjOTAQ78bHLM4oAVz1olzlDuygW-JpzslTzvS_yi4,106
11
+ fabricks/api/metastore/__init__.py,sha256=ikM4mnzZRpcJ_CZcknYAq1qkWvKG2la-O453va8w1uo,255
12
+ fabricks/api/metastore/database.py,sha256=e1MMgY312aChjhVpHDuqZatoyp4ucp0_-6HIK-ah-hI,64
13
+ fabricks/api/metastore/table.py,sha256=2jsbBk90jzxZbHXm3MizwNGRruVrjIRMwD0_nK7WhiM,58
14
+ fabricks/api/metastore/view.py,sha256=MBUSN0YW8CcLoVJdkV5hFmKfS8CmqEMJkbG0pdToAF8,132
15
+ fabricks/api/notebooks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
+ fabricks/api/notebooks/cluster.py,sha256=P-SId7jALIj2yremcVRuWZgPGpaGaphBYha5DkdDRCc,129
17
+ fabricks/api/notebooks/deploy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
+ fabricks/api/notebooks/deploy/fabricks.py,sha256=sDVBh67_nZa7x41JuGFC2PkUnMiYA0L2amA7Jq8RprQ,3153
19
+ fabricks/api/notebooks/deploy/notebooks.py,sha256=PQXI2Cay1K5_cmnic4NkoyxOYa9sSM5iP7871EWjajw,2016
20
+ fabricks/api/notebooks/initialize.py,sha256=_GmApGg3a_CxzuuLYe3jO99fTubyf12yd2L3aGAnBKk,721
21
+ fabricks/api/notebooks/optimize.py,sha256=CGi63SkMn1-hx8AfJxWaLwXFkzHjKm1iytsOl9c6qYA,654
22
+ fabricks/api/notebooks/process.py,sha256=q6PklWUxvhhbllootSDaIuzSJSa-HUkTQdjwyZ3QGK0,1075
23
+ fabricks/api/notebooks/run.py,sha256=dH3QoB1QtMcdgC9mOgBruK_sSVFdiOjUE_VVfltpQKU,1713
24
+ fabricks/api/notebooks/terminate.py,sha256=SsPo7Rm5RIV_7sack5F0VlcCOjIPAH8b4OScZN-tW30,659
25
+ fabricks/api/notebooks/vacuum.py,sha256=CqTntfdoZjtVSbRE2d6pgSyOkazd8keveF2zsmXeSXQ,650
26
+ fabricks/api/parsers.py,sha256=nPUDzQ_Hz0fVmnBfGCqqHo7X7R6M-oGsXWDYSikjB54,121
27
+ fabricks/api/udfs.py,sha256=3JTX4OWkoW7_AP9pUKHVS0C6zIBVdOJoAn8MpmB6R48,124
28
+ fabricks/api/utils.py,sha256=a-YrCXkDFzMmcNN8QOSDs_-YQtSePaDP4C4WYMX2AEg,196
29
+ fabricks/cdc/__init__.py,sha256=_ncE8b8xuT2HqWC3JiCa4JCb_na2xQnVz3M6tLkAXD8,302
30
+ fabricks/cdc/base/__init__.py,sha256=sTvAAnoZI23IUaMvuIdNq7S5pElQFkpKTXmK2m4joyQ,142
31
+ fabricks/cdc/base/cdc.py,sha256=9w5BqQxSVbFVEozJWmZQThqdppkE_SYi4fHSzJ7WMvA,78
32
+ fabricks/cdc/base/configurator.py,sha256=pty5UIP0MQtmHiDm905FRkgJSQhLbkFitpaqyVpz6PE,4318
33
+ fabricks/cdc/base/generator.py,sha256=eRH3N6dijkmsqF-oyhUDPN7gjhWfp7LAuchqOW-3yq0,4060
34
+ fabricks/cdc/base/merger.py,sha256=aJUAu2EYwWltxmPivSxj-FcbAj83LpWczpfJxukV6Wk,3898
35
+ fabricks/cdc/base/processor.py,sha256=vniAM8e4_QgTuTnw17pDCmV6GylOznR5CrIG-Ftjk9M,12915
36
+ fabricks/cdc/base/types.py,sha256=IMI5bT4IFfqSnjTVrPBHsJkRXNdaRcMVUYW8qpfsTs0,82
37
+ fabricks/cdc/cdc.py,sha256=2CjPUtogWjnvyLjwiyVllcyDV1gpJ0QoRP0yUsiHXuc,69
38
+ fabricks/cdc/nocdc.py,sha256=Nwj0pE3NjSVyLxKs9PUimHzWcKN5ehHt1trrlq69qE4,518
39
+ fabricks/cdc/scd.py,sha256=r1NVK9QAKJG4tRSpEAksvOO3nAuNwRLZoGmNG2TsypE,630
40
+ fabricks/cdc/scd1.py,sha256=WsOVRsp55WEw4-7nEtb3dfv310icExrj-zEJSEehyz8,334
41
+ fabricks/cdc/scd2.py,sha256=4vZkhc8pJAUlgiBmIw9j_2RsWuAFMcgCkU3WMVt0A-A,334
42
+ fabricks/cdc/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
+ fabricks/cdc/templates/merge/scd1.sql.jinja,sha256=pdVQOie12o5vb2zTy5CgzVxaw9ZJGwJcHAaq73r_340,1586
44
+ fabricks/cdc/templates/merge/scd2.sql.jinja,sha256=XRtDb8Bqi1dbcspVNoleecFQeNrOs64XpIE99BAQ0IE,1250
45
+ fabricks/cdc/templates/merge.sql.jinja,sha256=iNpgqGiuI2QABmyTkHCibRr_5r7SASb3yqojhNP3e20,144
46
+ fabricks/cdc/templates/query/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
+ fabricks/cdc/templates/query/base.sql.jinja,sha256=c4BJ_kPhAUisNmmThFqeMDrttARo0gpPAQbVKTqTpWU,1599
48
+ fabricks/cdc/templates/query/context.sql.jinja,sha256=_C9i4cl3l1CZ9MZKskFl2myTaeEJRdyhjfhAjOSlIzA,2880
49
+ fabricks/cdc/templates/query/current.sql.jinja,sha256=yaug0rLuOIZIdr4y6XIM3hOTxBhAx95tPBu4LjBJ-eQ,1407
50
+ fabricks/cdc/templates/query/deduplicate_hash.sql.jinja,sha256=t4YuIbSEGN-jMX5JkcxW_fyklp3SjQak3d3-qHebLZs,692
51
+ fabricks/cdc/templates/query/deduplicate_key.sql.jinja,sha256=TMvV7BI7s-EPJTugvRBl38xMq6AgNea8AhR56Qy5shI,551
52
+ fabricks/cdc/templates/query/filter.sql.jinja,sha256=z_nfeOEWW08CoIFKM5qgIkm9AjgcbueAHhZ-b9wIF3Y,2570
53
+ fabricks/cdc/templates/query/final.sql.jinja,sha256=vxH434CO5k8Ia7tugaH8LC1co7Epaj7Z1M7Y9BdqzaI,111
54
+ fabricks/cdc/templates/query/hash.sql.jinja,sha256=gV0phswHf1s1N1ASlD7hAunQ6ZTYGgN-fyCIE9h6zQA,120
55
+ fabricks/cdc/templates/query/nocdc.sql.jinja,sha256=efrtMj28bSucsHoX3oYOXlaIFMN1S7lQj1ltoFHg_gc,211
56
+ fabricks/cdc/templates/query/rectify.sql.jinja,sha256=U0LZ1vXDkC1Ed7vC80BoUX7lM7BI-iwS5EOQs2xLsso,4943
57
+ fabricks/cdc/templates/query/scd1.sql.jinja,sha256=9964BH-j9KpYABSb5gD8rmoew0Pxkm1GBdNM-tWgqY0,3903
58
+ fabricks/cdc/templates/query/scd2.sql.jinja,sha256=Q6G1QYWGl--_ZnrFSBRacGZxbpAiY9RslGvcXGcyJ9g,4460
59
+ fabricks/cdc/templates/query.sql.jinja,sha256=mj8USfjvMyWikc4JIisDNwwHqNwZjhRnQxAzK0_Sqi8,749
60
+ fabricks/context/__init__.py,sha256=kC02-1Dy_rUpYbbEYs29pvGyQwiLgOB4nGLa605sjYg,900
61
+ fabricks/context/log.py,sha256=DHZtc2GZdZUX_eG458QGKHZ4QnL1kzX9BIl1iZNe4jw,852
62
+ fabricks/context/runtime.py,sha256=BfZO8jTlsiM8ozK5f7G18dNqqn9Y0L4qBRHeKZgaggA,4695
63
+ fabricks/context/spark.py,sha256=2SLQRjkSxwMgvMdpyUXoJN39TyOlpo0pOMM-FLHT7WQ,1592
64
+ fabricks/context/types.py,sha256=7XfTUqRkF6aYQCHm5scY4weqAqxvhQj8-UqkzvT0yiQ,2380
65
+ fabricks/core/__init__.py,sha256=LaqDi4xuyHAoLOvS44PQdZdRfq9SmVr7mB6BDHyxYpc,209
66
+ fabricks/core/dags/__init__.py,sha256=0DUKzVcXcROvxkN19P_kaOJ7da5BAM7Vt8EGQbp2KSY,240
67
+ fabricks/core/dags/base.py,sha256=YW0nay6OoI43WNmpOBwioknDKndwfybMN_BOlFVkwUA,2504
68
+ fabricks/core/dags/generator.py,sha256=9q6K8neTTTN_iVz_4RjeEDRf5CrV_ZGYl5Y-23havVk,4805
69
+ fabricks/core/dags/log.py,sha256=Pk5SaBrVVfHcLs_egwST-3Gql5PqqvHegLytSi_j7Xo,619
70
+ fabricks/core/dags/processor.py,sha256=gIQXfuJabSG4JgMbLKNSEoVC2ms4UlCKCU9McgnuRNU,5705
71
+ fabricks/core/dags/terminator.py,sha256=FvOgY0plZ_VlOMhU46wUvV5p2TVJQBD6cBIEJ-AZhd4,804
72
+ fabricks/core/deploy/__init__.py,sha256=acSerdvEr3baT-J0-oXJQxJiUm4n8hQvdolHXt2TgG8,268
73
+ fabricks/core/deploy/tables.py,sha256=QGNPb1Q6AtC4rFF1-66tmzDWsLFLKwqfy6Lz4U-YEes,2514
74
+ fabricks/core/deploy/views.py,sha256=cWcTpOxazUPrSSFqxSfqWBHl46S6n4fwMXnUc_KvNAc,11137
75
+ fabricks/core/extenders.py,sha256=ip7ojyYDU9ofsclsWct-dsQfcys_b6HvyJ0jscgaddI,701
76
+ fabricks/core/jobs/__init__.py,sha256=m9XAiSAWD3STJOC_Ex4db42izYDQuJ8cXgBLSaeppDU,507
77
+ fabricks/core/jobs/base/__init__.py,sha256=VGIuBrNuwzc66ueoU2Fza_5i4oplW9nT4mavZptm6EE,207
78
+ fabricks/core/jobs/base/checker.py,sha256=Ik-MCkVjQLwMmLozds5QKnxSWzc3ywDOLz9KM5laUQ4,3696
79
+ fabricks/core/jobs/base/configurator.py,sha256=PRximuzAYymxF88KwhJBwJ1s6k5SNhuy4Jzbk5Pp_rg,11246
80
+ fabricks/core/jobs/base/error.py,sha256=dhAOXiQT_s2pN21eCK57oDu9_9ke2qefaAlE4E_6mds,448
81
+ fabricks/core/jobs/base/generator.py,sha256=PyUV4Z9uMqW9WMhdg13Uyi1q7RoddtZrhAOL8qfO7zg,15207
82
+ fabricks/core/jobs/base/invoker.py,sha256=-oH9-GksOzEgpsFi6r40kDr9Q4IrSYXBH5FfcVrcbik,4692
83
+ fabricks/core/jobs/base/job.py,sha256=dWmk2PpQH2NETaaDS6KoiefRnDHfDMdCyhmogkdcSFI,93
84
+ fabricks/core/jobs/base/processor.py,sha256=UlmvG04nRX0zOAKH0L0ogAR8Q_1MHhF8t5_lMpAa5Y4,7549
85
+ fabricks/core/jobs/base/types.py,sha256=IVW1w-OuzkLfKb-sCMbFIRDV34CNlQ-f1ScHCNEzbOk,4896
86
+ fabricks/core/jobs/bronze.py,sha256=lFEPVHoJtq-R3EpSrHVePbnx4oTkqRrNbuNw0rVrjmk,12230
87
+ fabricks/core/jobs/get_job.py,sha256=TGu0QcDJCMJFCLLcpOklENUmquwndubRPEpH1i0mLSU,3505
88
+ fabricks/core/jobs/get_job_conf.py,sha256=3M4Eso06ZlIxUX3qcpvjr9cDO-ONHq3Bn0DbJOD2OtM,3643
89
+ fabricks/core/jobs/get_job_id.py,sha256=tTNZgdjF6a6_lomLbKZuoskCVhvQCOOH8sXeDvh7_a8,496
90
+ fabricks/core/jobs/get_jobs.py,sha256=iATJNOic7bKkXp_zKjoto9j3dhIhuL3Ff_MAFZjMduA,2706
91
+ fabricks/core/jobs/gold.py,sha256=v4TS2qx2gEbvRqbRp4Zu2HJ_mbRbk08yYxgtydw0BYY,7605
92
+ fabricks/core/jobs/silver.py,sha256=1fbjtP3VEvc2WtSntvr3238wRRNd7WrcCwHG7Wvq1GA,12712
93
+ fabricks/core/parsers/__init__.py,sha256=MlGVrOtILly8cYTi6oWqhGwFz0i8wBPFGa-4au4VSwY,321
94
+ fabricks/core/parsers/base.py,sha256=wbSL2YQoM00MIPmXRJoZlSy8dXzQeot0KSPb8GH_ltM,3275
95
+ fabricks/core/parsers/decorator.py,sha256=u9fuaJJPw0sDLJlBevGMWk0r3jWmrWIPRbMnT3T5iwA,306
96
+ fabricks/core/parsers/get_parser.py,sha256=b5nagOx4X5zyH0vPJ1oFyfqSpbqzNjAVxptFkdfB0Hw,878
97
+ fabricks/core/parsers/types.py,sha256=JC2Oh-wUvaX8SBzeuf5owPgRaj-Q3-7MXxyIYPQ7QwA,147
98
+ fabricks/core/schedules.py,sha256=OOiymLPQqx8Z1Tnmzgm_DivHhG4qETat4me8xAzmyxw,2444
99
+ fabricks/core/scripts/__init__.py,sha256=H2k0-Kua4ca35bqcvS-kCL27GD09noCUORx_lSy57ss,349
100
+ fabricks/core/scripts/armageddon.py,sha256=oKxBR_DxHAquvTyf1O1Sp2AdzG6lbVOTMwIZ4So3-14,6171
101
+ fabricks/core/scripts/generate.py,sha256=ma2BV1FNRdb_MqxY3-9CU1dsNGB-x32m28YRTLjxx-0,608
102
+ fabricks/core/scripts/job_schema.py,sha256=ObUnRYbGl5Y_qnOO4Dum3aaBsjyTnGY-v5wftdF2Uzw,798
103
+ fabricks/core/scripts/optimize.py,sha256=-k5Fi2up31Q9mKrgW1gylhgPFjF4-ts0goCS8v0bdWM,1192
104
+ fabricks/core/scripts/process.py,sha256=uzhjGG3g-CEhBCSInAm_J-K8VxnG1ys0So7v0qENvdk,293
105
+ fabricks/core/scripts/stats.py,sha256=u_XvnOT969Ryte-2lpjGi3xBl1HKSXTR2_WgwS3q568,1381
106
+ fabricks/core/scripts/steps.py,sha256=yYnJQHjzDPHa6cIjTqSnISmfJlzZMRWjcY5y8jx3GJs,676
107
+ fabricks/core/scripts/terminate.py,sha256=Xt_qqu-QJkNQ4rlf5dzdRIU986k8d-J3HmfhTPyJfs0,156
108
+ fabricks/core/scripts/vacuum.py,sha256=qDqkG3_aNHqQKkWh5Ua8IB6kUB5eTXy4KifGBDngBTU,1184
109
+ fabricks/core/site_packages.py,sha256=9LzFRVLjgHDX3ZLZ7ho8LcUXjbybKVoghwQ-W4Ww9Xg,1662
110
+ fabricks/core/steps/__init__.py,sha256=JP-kaDa890-9XqBSPp6YdssAexdxv-MqQ__WfVYdgeg,132
111
+ fabricks/core/steps/base.py,sha256=a_FYSCu8r-gayeeAw3oKH6Gnvk1yDgtXOh7yfuCA7ik,9685
112
+ fabricks/core/steps/get_step.py,sha256=Deoyk3vhmm4NLCmNEtZMLRLri1h3BtZoR_7WyFXSRLI,275
113
+ fabricks/core/steps/get_step_conf.py,sha256=FaSCHgT3hWgjQenRTYZW2RTCNvc2HMtYFqyDJy9cp38,676
114
+ fabricks/core/steps/types.py,sha256=VxIrH3nFwmPlwG-UI8sDDP0AwK_9jlsy6yQp6YfgtqE,90
115
+ fabricks/core/udfs.py,sha256=onqp1oSnbUNphCXJm4VV0KrM7ZOx2REyhkuco55KX68,3196
116
+ fabricks/core/utils.py,sha256=qdn2ElpqBgDsW55-tACWZaFOT0ebrBYg2fenqSgd6YI,2456
117
+ fabricks/core/views.py,sha256=BWEJ858soSoWyodb4fbbizgqp5K-cieRVK6p6IEfqoY,988
118
+ fabricks/metastore/README.md,sha256=utPUGAxmjyNMGe43GfL0Gup4MjeTKKwyiUoNVSfMquI,51
119
+ fabricks/metastore/__init__.py,sha256=RhjY2CuqtZBg8fEizzzvW8qszqCM-vSCL1tQGuzoato,174
120
+ fabricks/metastore/database.py,sha256=Ck392hVxUKwmetNrpj2GXsFYQYZ_3xzWDU0G8tuwCZg,2212
121
+ fabricks/metastore/pyproject.toml,sha256=6RZM9RMKMDF_EAequhORZ7TD0BQNk7aBCTWAv-sRcp0,519
122
+ fabricks/metastore/relational.py,sha256=hfrsRGHROvGbDAktucrpocFJQvEVFuhiqgEBQdqNuvE,1895
123
+ fabricks/metastore/table.py,sha256=zk15l3LXtm4fXn9q3kDo71RuU3J4-XWMr7nrFZd9V-c,19454
124
+ fabricks/metastore/utils.py,sha256=wC6FGcdd37eYH51z_328KbNzxlXmd3oiF2Q96taVJtY,849
125
+ fabricks/metastore/view.py,sha256=sdPLaB6T-PxC8yg-AUd1ZAmOz0g1vP-YLx_iF9SzKHk,1194
126
+ fabricks/utils/README.md,sha256=RO0e9powkA70y-YRSpk9vtfM1QClQRtU77y-nsNT9VE,53
127
+ fabricks/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
+ fabricks/utils/azure_queue.py,sha256=V-xqrqLiTPe62B9GRnhobfFng6CZHrhQzYuCFwpQcmg,1899
129
+ fabricks/utils/azure_table.py,sha256=civ4T9dkyXarU6b4uhasrUS6wPFDGBLMVY2tNTXrNzU,3437
130
+ fabricks/utils/console.py,sha256=X4lLgL_UxCjoFRx-ZRCwzdBveRGPKlFYZDi6vl7uevQ,1017
131
+ fabricks/utils/container.py,sha256=4e1NMivUUjUeXd5qBnKr4yuyepquTo4etD19us6WyFM,2154
132
+ fabricks/utils/fdict.py,sha256=3Iltz_s0G7oDTQ0AxUjMrwMaqE_HnIcHOwbOMDuqgzs,792
133
+ fabricks/utils/helpers.py,sha256=g7rIsIQmV2TwNpJq0j_C9ss0mGXYkSewXY6P847e3x4,2862
134
+ fabricks/utils/log.py,sha256=N8XnQGKxbFYh3Ep_KcVGATy3Pj6pYuyiFV7xaQaWsww,5031
135
+ fabricks/utils/path.py,sha256=zghKQzeH7ZlMHyCsvQM9GoTxz_cBfIFyrppyQpf7kiM,5956
136
+ fabricks/utils/pip.py,sha256=UHo7NTjFGJNghWBuuDow28xUkZYg2YrlbAP49IxZyXY,1522
137
+ fabricks/utils/pydantic.py,sha256=k5r_JPnPjLK4aPlX-Jmd8dv0q8M5TEiMqiSDbCSZuDY,2517
138
+ fabricks/utils/pyproject.toml,sha256=N9HuvpEzI9Ydf1DEIOi8Ch0tmGk4Jd-J-K_u4xUK_7s,398
139
+ fabricks/utils/read/__init__.py,sha256=a_5l60m1AyzQUII170bfRRuXR_ynC3EwfysidRy44GE,272
140
+ fabricks/utils/read/read.py,sha256=VrkY-lUpD4njxnwnVumpvXjG71DwpakHMkPCGZcSctI,8420
141
+ fabricks/utils/read/read_excel.py,sha256=TnirdvaVk3gFtEpTD20_U2v3KRnTAc_T85JzwqOHUwI,108
142
+ fabricks/utils/read/read_yaml.py,sha256=Y2Sse5p-um_ElVqw-kbxfEM8I9ZBLPfLwcg2O4XS0Rk,1171
143
+ fabricks/utils/read/types.py,sha256=_JEjDLOtI2WytLly2i0hITU4YajD5VSHLuBa2_IuS30,69
144
+ fabricks/utils/schema/__init__.py,sha256=jWGhKohpxbeKE260n3GktiCnk11MnlVcbkkzjN-6ZJw,232
145
+ fabricks/utils/schema/get_json_schema_for_type.py,sha256=IdNXlMYFs3DLc3V_rmSb52Rt-BGcvg1sUEzqS0nbmmw,5807
146
+ fabricks/utils/schema/get_schema_for_type.py,sha256=hHZmvRyFfQS_kanUelWiThe59EM7ZG4ALL_aZAOZEDs,3391
147
+ fabricks/utils/secret.py,sha256=dcHA9o3lh5fpz26f21KG7-0epqB6zNj3GH-f_7OjjfE,2574
148
+ fabricks/utils/sqlglot.py,sha256=rUmseXmzEIFExbm8XXbzewbPRSrEPhqa-x1GSj4Ch6g,1183
149
+ fabricks/utils/write/__init__.py,sha256=i0UnZenXj9Aq0b0_aU3s6882vg-Vu_AyKfQhl_dTp-g,200
150
+ fabricks/utils/write/delta.py,sha256=f0RSCqTHpw9U3GCRiJCSBeMfFRfobJnfCBk9Ww8Nilg,1228
151
+ fabricks/utils/write/stream.py,sha256=wQBpAnQtYA6nl79sPKhVM6u5m-66suX7B6VQ6tW4TOs,622
152
+ fabricks-2024.7.1.5.dist-info/METADATA,sha256=-uiTfdrG-ltpIjqIUlpafbnLuST0LY8lkuRyTlHc4LM,10023
153
+ fabricks-2024.7.1.5.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
154
+ fabricks-2024.7.1.5.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: poetry-core 1.9.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any