castor-extractor 0.19.0__py3-none-any.whl → 0.19.6__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.

Potentially problematic release.


This version of castor-extractor might be problematic. Click here for more details.

Files changed (83) hide show
  1. CHANGELOG.md +29 -2
  2. castor_extractor/file_checker/templates/generic_warehouse.py +1 -1
  3. castor_extractor/knowledge/notion/client/client.py +44 -80
  4. castor_extractor/knowledge/notion/client/client_test.py +9 -4
  5. castor_extractor/knowledge/notion/client/constants.py +1 -0
  6. castor_extractor/knowledge/notion/client/endpoints.py +1 -1
  7. castor_extractor/knowledge/notion/client/pagination.py +9 -5
  8. castor_extractor/quality/soda/assets.py +1 -1
  9. castor_extractor/quality/soda/client/client.py +30 -83
  10. castor_extractor/quality/soda/client/credentials.py +0 -11
  11. castor_extractor/quality/soda/client/endpoints.py +3 -6
  12. castor_extractor/quality/soda/client/pagination.py +25 -0
  13. castor_extractor/utils/__init__.py +13 -2
  14. castor_extractor/utils/client/__init__.py +14 -0
  15. castor_extractor/utils/client/api/__init__.py +5 -0
  16. castor_extractor/utils/client/api/auth.py +76 -0
  17. castor_extractor/utils/client/api/auth_test.py +49 -0
  18. castor_extractor/utils/client/api/client.py +153 -0
  19. castor_extractor/utils/client/api/client_test.py +47 -0
  20. castor_extractor/utils/client/api/pagination.py +83 -0
  21. castor_extractor/utils/client/api/pagination_test.py +51 -0
  22. castor_extractor/utils/{safe_request_test.py → client/api/safe_request_test.py} +4 -1
  23. castor_extractor/utils/client/api/utils.py +9 -0
  24. castor_extractor/utils/client/api/utils_test.py +16 -0
  25. castor_extractor/utils/collection.py +34 -2
  26. castor_extractor/utils/collection_test.py +17 -3
  27. castor_extractor/utils/pager/__init__.py +0 -1
  28. castor_extractor/utils/retry.py +44 -0
  29. castor_extractor/utils/retry_test.py +26 -1
  30. castor_extractor/utils/salesforce/client.py +44 -49
  31. castor_extractor/utils/salesforce/client_test.py +2 -2
  32. castor_extractor/utils/salesforce/pagination.py +33 -0
  33. castor_extractor/visualization/domo/client/client.py +10 -5
  34. castor_extractor/visualization/domo/client/credentials.py +1 -1
  35. castor_extractor/visualization/domo/client/endpoints.py +19 -7
  36. castor_extractor/visualization/looker/api/credentials.py +1 -1
  37. castor_extractor/visualization/metabase/client/api/client.py +26 -11
  38. castor_extractor/visualization/metabase/client/api/credentials.py +1 -1
  39. castor_extractor/visualization/metabase/client/db/credentials.py +1 -1
  40. castor_extractor/visualization/mode/client/credentials.py +1 -1
  41. castor_extractor/visualization/qlik/client/engine/credentials.py +1 -1
  42. castor_extractor/visualization/salesforce_reporting/client/rest.py +4 -3
  43. castor_extractor/visualization/sigma/client/client.py +106 -111
  44. castor_extractor/visualization/sigma/client/credentials.py +11 -1
  45. castor_extractor/visualization/sigma/client/endpoints.py +1 -1
  46. castor_extractor/visualization/sigma/client/pagination.py +22 -18
  47. castor_extractor/visualization/tableau/tests/unit/rest_api/auth_test.py +0 -1
  48. castor_extractor/visualization/tableau/tests/unit/rest_api/credentials_test.py +0 -3
  49. castor_extractor/visualization/tableau_revamp/assets.py +11 -0
  50. castor_extractor/visualization/tableau_revamp/client/client.py +71 -151
  51. castor_extractor/visualization/tableau_revamp/client/client_metadata_api.py +95 -0
  52. castor_extractor/visualization/tableau_revamp/client/client_rest_api.py +128 -0
  53. castor_extractor/visualization/tableau_revamp/client/client_tsc.py +66 -0
  54. castor_extractor/visualization/tableau_revamp/client/{tsc_fields.py → rest_fields.py} +15 -2
  55. castor_extractor/visualization/tableau_revamp/constants.py +0 -2
  56. castor_extractor/visualization/tableau_revamp/extract.py +5 -11
  57. castor_extractor/warehouse/databricks/api_client.py +239 -0
  58. castor_extractor/warehouse/databricks/api_client_test.py +15 -0
  59. castor_extractor/warehouse/databricks/client.py +37 -490
  60. castor_extractor/warehouse/databricks/client_test.py +1 -99
  61. castor_extractor/warehouse/databricks/endpoints.py +28 -0
  62. castor_extractor/warehouse/databricks/lineage.py +141 -0
  63. castor_extractor/warehouse/databricks/lineage_test.py +34 -0
  64. castor_extractor/warehouse/databricks/pagination.py +22 -0
  65. castor_extractor/warehouse/databricks/sql_client.py +90 -0
  66. castor_extractor/warehouse/databricks/utils.py +44 -1
  67. castor_extractor/warehouse/databricks/utils_test.py +58 -1
  68. castor_extractor/warehouse/mysql/client.py +0 -2
  69. castor_extractor/warehouse/salesforce/client.py +12 -59
  70. castor_extractor/warehouse/salesforce/pagination.py +34 -0
  71. castor_extractor/warehouse/sqlserver/client.py +0 -1
  72. castor_extractor-0.19.6.dist-info/METADATA +903 -0
  73. {castor_extractor-0.19.0.dist-info → castor_extractor-0.19.6.dist-info}/RECORD +77 -60
  74. castor_extractor/utils/client/api.py +0 -87
  75. castor_extractor/utils/client/api_test.py +0 -24
  76. castor_extractor/utils/pager/pager_on_token.py +0 -52
  77. castor_extractor/utils/pager/pager_on_token_test.py +0 -73
  78. castor_extractor/visualization/sigma/client/client_test.py +0 -54
  79. castor_extractor-0.19.0.dist-info/METADATA +0 -207
  80. /castor_extractor/utils/{safe_request.py → client/api/safe_request.py} +0 -0
  81. {castor_extractor-0.19.0.dist-info → castor_extractor-0.19.6.dist-info}/LICENCE +0 -0
  82. {castor_extractor-0.19.0.dist-info → castor_extractor-0.19.6.dist-info}/WHEEL +0 -0
  83. {castor_extractor-0.19.0.dist-info → castor_extractor-0.19.6.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,903 @@
1
+ Metadata-Version: 2.1
2
+ Name: castor-extractor
3
+ Version: 0.19.6
4
+ Summary: Extract your metadata assets.
5
+ Home-page: https://www.castordoc.com/
6
+ License: EULA
7
+ Author: Castor
8
+ Author-email: support@castordoc.com
9
+ Requires-Python: >=3.8,<3.13
10
+ Classifier: License :: Other/Proprietary License
11
+ Classifier: Operating System :: OS Independent
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.8
14
+ Classifier: Programming Language :: Python :: 3.9
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Provides-Extra: all
19
+ Provides-Extra: bigquery
20
+ Provides-Extra: databricks
21
+ Provides-Extra: dbt
22
+ Provides-Extra: looker
23
+ Provides-Extra: metabase
24
+ Provides-Extra: mysql
25
+ Provides-Extra: postgres
26
+ Provides-Extra: powerbi
27
+ Provides-Extra: qlik
28
+ Provides-Extra: redshift
29
+ Provides-Extra: snowflake
30
+ Provides-Extra: sqlserver
31
+ Provides-Extra: tableau
32
+ Requires-Dist: cryptography (>=42.0.0,<43.0.0) ; extra == "snowflake"
33
+ Requires-Dist: databricks-sql-connector (>=3.2.0,<4.0.0) ; extra == "databricks" or extra == "all"
34
+ Requires-Dist: google-api-core (>=2.1.1,<3.0.0)
35
+ Requires-Dist: google-auth (>=2,<3)
36
+ Requires-Dist: google-cloud-core (>=2.1.0,<3.0.0)
37
+ Requires-Dist: google-cloud-storage (>=2,<3)
38
+ Requires-Dist: google-resumable-media (>=2.0.3,<3.0.0)
39
+ Requires-Dist: googleapis-common-protos (>=1.53.0,<2.0.0)
40
+ Requires-Dist: looker-sdk (>=24.0.0,<25.0.0) ; extra == "looker" or extra == "all"
41
+ Requires-Dist: msal (>=1.20.0,<2.0.0) ; extra == "powerbi" or extra == "all"
42
+ Requires-Dist: numpy (<1.25) ; (python_version >= "3.8" and python_version < "3.9") and (extra == "bigquery" or extra == "databricks" or extra == "all")
43
+ Requires-Dist: numpy (<2) ; extra == "bigquery" or extra == "databricks" or extra == "all"
44
+ Requires-Dist: numpy (>=1.26) ; (python_version >= "3.12" and python_version < "3.13") and (extra == "bigquery" or extra == "databricks" or extra == "all")
45
+ Requires-Dist: pandas (<2.1) ; (python_version >= "3.8" and python_version < "3.9") and (extra == "databricks" or extra == "all")
46
+ Requires-Dist: pandas (>=2.1) ; (python_version >= "3.12" and python_version < "3.13") and (extra == "databricks" or extra == "all")
47
+ Requires-Dist: psycopg2-binary (>=2.0.0,<3.0.0) ; extra == "metabase" or extra == "postgres" or extra == "redshift" or extra == "all"
48
+ Requires-Dist: pycryptodome (>=3.0.0,<4.0.0) ; extra == "metabase" or extra == "all"
49
+ Requires-Dist: pydantic (>=2.6,<3.0)
50
+ Requires-Dist: pydantic-settings (>=2.2,<3.0)
51
+ Requires-Dist: pymssql (>=2.2.11,<3.0.0) ; extra == "sqlserver" or extra == "all"
52
+ Requires-Dist: pymysql[rsa] (>=1.1.0,<2.0.0) ; extra == "mysql" or extra == "all"
53
+ Requires-Dist: python-dateutil (>=2.0.0,<=3.0.0)
54
+ Requires-Dist: requests (>=2.0.0,<3.0.0)
55
+ Requires-Dist: setuptools (>=72,<73)
56
+ Requires-Dist: snowflake-connector-python (>=3.4.0,<4.0.0) ; extra == "snowflake" or extra == "all"
57
+ Requires-Dist: snowflake-sqlalchemy (!=1.2.5,<2.0.0) ; extra == "snowflake" or extra == "all"
58
+ Requires-Dist: sqlalchemy (>=1.4,<1.5)
59
+ Requires-Dist: sqlalchemy-bigquery[bqstorage] (>=1.0.0,<=2.0.0) ; extra == "bigquery" or extra == "all"
60
+ Requires-Dist: sqlalchemy-redshift (>=0.8.14,<0.9.0) ; extra == "redshift" or extra == "all"
61
+ Requires-Dist: tableauserverclient (==0.25.0) ; extra == "tableau" or extra == "all"
62
+ Requires-Dist: tqdm (>=4.0.0,<5.0.0)
63
+ Requires-Dist: typing-extensions (>=4,<5)
64
+ Requires-Dist: websocket-client (>=1,<2) ; extra == "qlik" or extra == "all"
65
+ Project-URL: Documentation, https://docs.castordoc.com/castor-package/castor-extractor
66
+ Description-Content-Type: text/markdown
67
+
68
+ # Castor Extractor <img src="https://app.castordoc.com/images/castor_icon_dark.svg" width=30 />
69
+
70
+ This library contains utilities to extract your metadata assets into `JSON` or `CSV` files, on your local machine.
71
+ After extraction, those files can be pushed to Castor for ingestion.
72
+
73
+ - Visualization assets are typically:
74
+ - `dashboards`
75
+ - `users`
76
+ - `folders`
77
+ - ...
78
+
79
+ - Warehouse assets are typically:
80
+ - `databases`
81
+ - `schemas`
82
+ - `tables`
83
+ - `columns`
84
+ - `queries`
85
+ - ...
86
+
87
+ It also embeds utilities to help you push your metadata to Castor:
88
+
89
+ - `File Checker` to validate your [generic](https://docs.castordoc.com/integrations/data-warehouses/generic-warehouse) CSV files before pushing to Castor
90
+ - `Uploader` to push extracted files to our Google-Cloud-Storage (GCS)
91
+
92
+ ## Table of contents
93
+
94
+ - [Castor Extractor](#castor-extractor-)
95
+ - [Table of contents](#table-of-contents)
96
+ - [Installation](#installation)
97
+ - [Create castor-env](#create-castor-env)
98
+ - [PIP install](#pip-install)
99
+ - [Create the output directory](#create-the-output-directory)
100
+ - [Contact](#contact)
101
+
102
+ ## Installation
103
+
104
+ Requirements: **python3.8+**
105
+ <img src="https://upload.wikimedia.org/wikipedia/commons/c/c3/Python-logo-notext.svg" width=20 />
106
+
107
+ ### Create castor-env
108
+
109
+ We advise to create a dedicated [Python environment](https://docs.python.org/3/library/venv.html).
110
+
111
+ Here's an example using `Pyenv` and Python `3.8.12`:
112
+
113
+ - Install Pyenv
114
+
115
+ ```bash
116
+ brew install pyenv
117
+ brew install pyenv-virtualenv
118
+ ```
119
+
120
+ - [optional] Update your `.bashrc` if you encounter this [issue](https://stackoverflow.com/questions/45577194/failed-to-activate-virtualenv-with-pyenv/45578839)
121
+
122
+ ```bash
123
+ eval "$(pyenv init -)"
124
+ eval "$(pyenv init --path)"
125
+ eval "$(pyenv virtualenv-init -)"
126
+ ```
127
+
128
+ - [optional] Install python 3.8+
129
+
130
+ ```bash
131
+ pyenv versions # check your local python installations
132
+
133
+ pyenv install -v 3.8.12 # if none of the installed versions satisfy requirements 8+
134
+ ```
135
+
136
+ - Create your virtual env
137
+
138
+ ```bash
139
+ pyenv virtualenv 3.8.12 castor-env # create a dedicated env
140
+ pyenv shell castor-env # activate the environment
141
+
142
+ # optional checks
143
+ python --version # should be `3.8.12`
144
+ pyenv version # should be `castor-env`
145
+ ```
146
+
147
+ ### PIP install
148
+
149
+ ⚠️ `castor-env` must be created AND activated first.
150
+
151
+ ```bash
152
+ pyenv shell castor-env
153
+ (castor-env) $ # this means the environment is now active
154
+ ```
155
+
156
+ ℹ️ please upgrade `PIP` before installing Castor.
157
+
158
+ ```bash
159
+ pip install --upgrade pip
160
+ ```
161
+
162
+ Run the following command to install `castor-extractor`:
163
+
164
+ ```bash
165
+ pip install castor-extractor
166
+ ```
167
+
168
+ Depending on your use case, you can also install one of the following `extras`:
169
+
170
+ ```bash
171
+ pip install castor-extractor[bigquery]
172
+ pip install castor-extractor[looker]
173
+ pip install castor-extractor[metabase]
174
+ pip install castor-extractor[mysql]
175
+ pip install castor-extractor[powerbi]
176
+ pip install castor-extractor[qlik]
177
+ pip install castor-extractor[postgres]
178
+ pip install castor-extractor[redshift]
179
+ pip install castor-extractor[snowflake]
180
+ pip install castor-extractor[sqlserver]
181
+ pip install castor-extractor[tableau]
182
+ ```
183
+
184
+ ### Create the output directory
185
+
186
+ ```bash
187
+ mkdir /tmp/castor
188
+ ```
189
+
190
+ You will provide this path in the `extraction` scripts as follows:
191
+
192
+ ```bash
193
+ castor-extract-bigquery --output=/tmp/castor
194
+ ```
195
+
196
+ Alternatively, you can also set the following `ENV` in your `bashrc`:
197
+
198
+ ```bash
199
+ export CASTOR_OUTPUT_DIRECTORY="/tmp/castor"
200
+ ````
201
+
202
+ ## Contact
203
+
204
+ For any questions or bug report, contact us at [support@castordoc.com](mailto:support@castordoc.com)
205
+
206
+ [Castor](https://castordoc.com) helps you find, understand, use your data assets
207
+
208
+
209
+ # Changelog
210
+
211
+ ## 0.19.6 - 2024-09-03
212
+
213
+ * Metabase: Adding error handler on API call
214
+
215
+ ## 0.19.5 - 2024-09-02
216
+
217
+ * Databricks/Salesforce: Remove deprecated client dependencies
218
+
219
+ ## 0.19.4 - 2024-08-29
220
+
221
+ * Tableau Pulse: extract Metrics and Subscriptions
222
+
223
+ ## 0.19.3 - 2024-08-27
224
+
225
+ - Sigma: Add SafeMode to SigmaClient
226
+
227
+ ## 0.19.2 - 2024-08-23
228
+
229
+ - Reworked APIClient to unify client's behaviours
230
+
231
+ Impacted Technologies: Sigma, Soda, Notion
232
+
233
+ ## 0.19.1 - 2024-08-23
234
+
235
+ * Domo: extract datasources via cards metadata endpoint
236
+
237
+ ## 0.19.0 - 2024-08-21
238
+
239
+ * Breaking change Looker CLI:
240
+
241
+ `-u` and `--username` changed to `-c` `--client-id`
242
+
243
+ `-p` and `--password` changed to `-s` `--client-secret`
244
+
245
+ * Breaking change Metabase CLI:
246
+
247
+ `-u` and `--username` changed to `-u` `--user`
248
+
249
+
250
+ * Note: if you use environment variables you shouldn't be impacted
251
+
252
+ ## 0.18.13 - 2024-08-19
253
+
254
+ * Qlik: improve measures extraction
255
+
256
+ ## 0.18.12 - 2024-08-19
257
+
258
+ * Bumps: looker-sdk: 24, setuptools: 72
259
+
260
+ ## 0.18.11 - 2023-08-14
261
+
262
+ * Linting and formatting with Ruff
263
+
264
+ ## 0.18.10 - 2024-08-13
265
+
266
+ * Soda: Added Soda extractor (Castor-Managed integration only)
267
+
268
+ ## 0.18.9 - 2024-08-12
269
+
270
+ * Notion: Added Notion extractor
271
+
272
+ ## 0.18.8 - 2024-08-02
273
+
274
+ * Databricks: more reliable extraction of queries
275
+
276
+ ## 0.18.7 - 2024-08-01
277
+
278
+ * Salesforce: extract table descriptions
279
+
280
+ ## 0.18.6 - 2024-07-30
281
+
282
+ * BigQuery: introduce extended regions to extract missing queries
283
+
284
+ ## 0.18.5 - 2024-07-17
285
+
286
+ * Salesforce: extract DeveloperName and tooling url
287
+
288
+ ## 0.18.4 - 2024-07-16
289
+
290
+ * Fix environment variables assignments for credentials
291
+
292
+ ## 0.18.3 - 2024-07-16
293
+
294
+ * bump dependencies (minor and patches)
295
+
296
+ ## 0.18.2 - 2024-07-08
297
+
298
+ * Added StatusCode handling to SafeMode
299
+
300
+ ## 0.18.1 - 2024-07-04
301
+
302
+ * Bump dependencies: numpy, setuptools, tableauserverclient
303
+
304
+ ## 0.18.0 - 2024-07-03
305
+
306
+ * Dashboarding technologies : Reworked credentials using Pydantic
307
+
308
+ ## 0.17.5 - 2024-07-03
309
+
310
+ * Snowflake, Synapse, Redshift: Remove default_value from the extracted column
311
+
312
+ ## 0.17.4 - 2024-07-03
313
+
314
+ * Sigma: Add `input-table`, `pivot-table` and `viz` in the list of supported **Elements**
315
+
316
+ ## 0.17.3 - 2024-06-24
317
+
318
+ * Databricks: extract tags for tables and column
319
+
320
+ ## 0.17.2 - 2024-06-14
321
+
322
+ * Uploader: support multipart
323
+
324
+ ## 0.17.1 - 2024-06-12
325
+
326
+ * Databricks: extract table source links
327
+
328
+ ## 0.17.0 - 2024-06-10
329
+
330
+ * Uploader: redirect to the proxy, replace credentials with token
331
+
332
+ ## 0.16.15 - 2024-06-07
333
+
334
+ * Tableau: extract database_name for CustomSQLTables
335
+
336
+ ## 0.16.14 - 2024-06-06
337
+
338
+ * Snowflake: Extract SQL user defined function
339
+
340
+ ## 0.16.13 - 2024-06-05
341
+
342
+ * Tableau: extract database_name for tables
343
+
344
+ ## 0.16.12 - 2024-06-04
345
+
346
+ * Databricks: Extract lineage
347
+
348
+ ## 0.16.11 - 2024-06-03
349
+
350
+ * Tableau: add extra fields to optimise storage
351
+
352
+ ## 0.16.10 - 2024-05-30
353
+
354
+ * Salesforce: extract sobjects Label as table name
355
+
356
+ ## 0.16.9 - 2024-05-28
357
+
358
+ * Tableau: extract only fields that are necessary
359
+
360
+ ## 0.16.8 - 2024-05-21
361
+
362
+ * Add compatibility with python 3.12
363
+ * Looker: Bump looker-sdk and refactor client
364
+
365
+ ## 0.16.7 - 2024-05-16
366
+
367
+ * Databricks: allow no emails on user
368
+
369
+ ## 0.16.6 - 2024-05-14
370
+
371
+ * Introducing the revamped connector for Tableau
372
+
373
+ ## 0.16.5 - 2024-04-25
374
+
375
+ * Salesforce: remove DeploymentStatus from EntityDefinition query
376
+
377
+ ## 0.16.4 - 2024-04-25
378
+
379
+ * Salesforce: extract sobjects and fields
380
+
381
+ ## 0.16.3 - 2024-04-24
382
+
383
+ * Databricks: Extract table owners
384
+
385
+ ## 0.16.2 - 2024-04-09
386
+
387
+ * PowerBI: Extract pages from report
388
+
389
+ ## 0.16.1 - 2024-04-02
390
+
391
+ * Systematically escape nul bytes on CSV write
392
+
393
+ ## 0.16.0 - 2024-03-26
394
+
395
+ * Use pydantic v2
396
+
397
+ ## 0.15.4 - 2024-03-25
398
+
399
+ * Pagination: Fix behavior when next page token is missing
400
+
401
+ ## 0.15.3 - 2024-03-08
402
+
403
+ * Sigma: Regenerate token when expired
404
+
405
+ ## 0.15.2 - 2024-03-01
406
+
407
+ * DBT: Add host base URL, use of BaseSettings for DbtCredentials
408
+
409
+ ## 0.15.1 - 2024-03-06
410
+
411
+ * Salesforce: extract dashboard components
412
+
413
+ ## 0.15.0 - 2024-03-01
414
+
415
+ * Support Databricks Unity Catalog extraction
416
+
417
+ ## 0.14.14 - 2024-02-27
418
+
419
+ * Salesforce: Fix on salesforce folders URL
420
+
421
+ ## 0.14.13 - 2024-02-15
422
+
423
+ * Domo client: Handles cases where datasources aren't linked to any cards
424
+
425
+ ## 0.14.12 - 2024-02-13
426
+
427
+ * Domo client: No longer raise 400 exception upon API calls
428
+
429
+ ## 0.14.11 - 2024-02-13
430
+
431
+ * BigQuery client: Use partitioned `creation_time` instead of `start_time`
432
+
433
+ ## 0.14.10 - 2024-02-08
434
+
435
+ * Metabase ApiClient: Remove GET /api/dashboard that is deprecated
436
+
437
+ ## 0.14.9 - 2024-02-07
438
+
439
+ * Add support for python 3.11
440
+
441
+ ## 0.14.8 - 2024-02-06
442
+
443
+ * Salesforce client: extracting folders
444
+
445
+ ## 0.14.7 - 2024-02-05
446
+
447
+ * Domo: ignore 404 errors on datasources API endpoint
448
+
449
+ ## 0.14.6 - 2024-01-31
450
+
451
+ * Bump dependencies
452
+
453
+ ## 0.14.5 - 2024-01-31
454
+
455
+ * Allow support of external lineage for non-generic technologies
456
+
457
+ ## 0.14.4 - 2024-01-30
458
+
459
+ * Salesforce client: Renaming salesforce viz to salesforce reporting
460
+
461
+ ## 0.14.3 - 2024-01-29
462
+
463
+ * Domo: enhance pages with card's datasources to support direct tables lineage
464
+
465
+ ## 0.14.2 - 2024-01-25
466
+
467
+ * Salesforce client: Methods to extract users, dashboards and reports
468
+
469
+ ## 0.14.1 - 2024-01-24
470
+
471
+ * Add sensitive metadata information to credentials dataclass
472
+
473
+ ## 0.14.0 - 2024-01-24
474
+
475
+ * Adding Salesforce client
476
+
477
+ ## 0.13.0 - 2024-01-22
478
+
479
+ * Support MySQL catalog extraction
480
+
481
+ ## 0.12.3 - 2024-01-16
482
+
483
+ * Metabase: renaming of dashboard_cards for Metabase 0.48
484
+
485
+ ## 0.12.2 - 2023-12-27
486
+
487
+ * Metabase: Align postgres connection to postgres connector
488
+
489
+ ## 0.12.1 - 2023-12-27
490
+
491
+ * Tableau: replace luid with id during dashboards extraction
492
+
493
+ ## 0.12.0 - 2023-12-18
494
+
495
+ * SQL Server: extract catalog
496
+
497
+ ## 0.11.3 - 2023-12-21
498
+
499
+ * Metabase: Support postgres connection via SSL
500
+
501
+ ## 0.11.2 - 2023-12-20
502
+
503
+ * Extract: remove null byte characters
504
+
505
+ ## 0.11.1 - 2023-12-20
506
+
507
+ * Fixed bug with jitter argument in Retry class and added field validations
508
+
509
+ ## 0.11.0 - 2023-12-18
510
+
511
+ * Tableau: extract dashboards
512
+
513
+ ## 0.10.2 - 2023-12-13
514
+
515
+ * Redshift: Handle rows with mixed encodings
516
+
517
+ ## 0.10.1 - 2023-12-04
518
+
519
+ * Domo: fix pagination
520
+
521
+ ## 0.10.0 - 2023-11-28
522
+
523
+ * Looker : extract all Looker Explores, even if unused in Dashboards
524
+
525
+ ## 0.9.2 - 2023-11-23
526
+
527
+ * Looker : remove deprecated all_looks parameter
528
+
529
+ ## 0.9.1 - 2023-11-22
530
+
531
+ * Redshift : filter out queries exceeding 65535 char
532
+
533
+ ## 0.9.0 - 2023-11-20
534
+
535
+ * Snowflake : Add key-pair authentication
536
+
537
+ ## 0.8.1 - 2023-11-15
538
+
539
+ * Add a logging option to log to stdout
540
+
541
+ ## 0.8.0 - 2023-11-09
542
+
543
+ * Stream **Looker** Looks and Dashboards directly into their destination files
544
+
545
+ ## 0.7.8 - 2023-11-02
546
+
547
+ * Rollback `escapechar` in csv options
548
+
549
+ ## 0.7.7 - 2023-10-30
550
+
551
+ * Add `escapechar` in csv de-serialization
552
+
553
+ ## 0.7.6 - 2023-10-26
554
+
555
+ * Fetch Domo audits up to yesterday date
556
+
557
+ ## 0.7.5 - 2023-10-26
558
+
559
+ * Add `escapechar` in csv serialisation
560
+
561
+ ## 0.7.4 - 2023-10-23
562
+
563
+ * Pick the most recent sharded tables in `BigQuery`
564
+
565
+ ## 0.7.3 - 2023-10-19
566
+
567
+ * Add retry mechanism to LookerClient when multithreading
568
+
569
+ ## 0.7.2 - 2023-10-19
570
+
571
+ * pycryptodome moved as an optional dependency for extras: metabase and all
572
+
573
+ ## 0.7.1 - 2023-10-04
574
+
575
+ * Fix thread pool size verification
576
+
577
+ ## 0.7.0 - 2023-10-02
578
+
579
+ * Add option to fetch Looker Looks & Dashboards per folder
580
+
581
+ ## 0.6.3 - 2023-10-02
582
+
583
+ * Add refreshing mechanism for Domo authentication tokens
584
+
585
+ ## 0.6.2 - 2023-09-29
586
+
587
+ * Update field_size_limit in CSVFormatter
588
+
589
+ ## 0.6.1 - 2023-09-25
590
+
591
+ * Add support for Domo
592
+
593
+ ## 0.6.0 - 2023-09-25
594
+
595
+ * Move msal dependencies to powerbi extra
596
+
597
+ ## 0.5.10 - 2023-09-25
598
+
599
+ * Retrieve column_id instead of object_id for Snowflake column tags
600
+
601
+ ## 0.5.9 - 2023-09-21
602
+
603
+ * Add column tags for Snowflake
604
+
605
+ ## 0.5.8 - 2023-09-19
606
+
607
+ * Remove non-used dependencies
608
+ * Fix some import in tests
609
+ * Clean pyproject.toml
610
+ * Add deptry config
611
+
612
+ ## 0.5.7 - 2023-08-17
613
+
614
+ * Update column data type validator
615
+
616
+ ## 0.5.6 - 2023-08-10
617
+
618
+ * Use latest version of certifi (2023.7.22)
619
+
620
+ ## 0.5.5 - 2023-08-07
621
+
622
+ * Linting with flakeheaven
623
+
624
+ ## 0.5.4 - 2023-08-01
625
+
626
+ * Add support for Looker's `Users Attributes`
627
+
628
+ ## 0.5.3 - 2023-07-27
629
+
630
+ * Add support for PowerBI's `Activity Events`
631
+
632
+ ## 0.5.2 - 2023-07-12
633
+
634
+ * Fix Metabase DbClient url
635
+
636
+ ## 0.5.1 - 2023-07-03
637
+
638
+ * Add support for Looker's `ContentViews`
639
+
640
+ ## 0.5.0 - 2023-06-28
641
+
642
+ * Stop supporting python3.7
643
+
644
+ ## 0.4.1 - 2023-06-27
645
+
646
+ * Fix on Sigma elements extraction
647
+ * Fix BigQuery dataset extraction
648
+ * Fix the File Checker for View DDL file
649
+
650
+ ## 0.4.0 - 2023-06-12
651
+
652
+ * Added support for Sigma
653
+
654
+ ## 0.3.8 - 2023-05-02
655
+
656
+ * Added support for PowerBI datasets and fields
657
+
658
+ ## 0.3.7 - 2023-04-28
659
+
660
+ * Warning message to deprecate python < 3.8
661
+
662
+ ## 0.3.6 - 2023-04-24
663
+
664
+ * Update enum keys for Metabase credentials
665
+
666
+ ## 0.3.5 - 2023-04-07
667
+
668
+ * Extract metadata from successful dbt runs only
669
+
670
+ ## 0.3.4 - 2023-04-05
671
+
672
+ * Enhance uploader to support `QUALITY` files
673
+
674
+ ## 0.3.3 - 2023-04-04
675
+
676
+ * Tableau : Improve Table <> Datasource lineage
677
+
678
+ ## 0.3.2 - 2023-04-04
679
+
680
+ * Allow COPY statements from Snowflake
681
+
682
+ ## 0.3.1 - 2023-03-30
683
+
684
+ * Improved Field extraction in Tableau
685
+
686
+ ## 0.3.0 - 2023-03-29
687
+
688
+ * Added Tableau datasource and field integration
689
+
690
+ ## 0.2.3 - 2023-03-17
691
+
692
+ * Verify required admin permissions for Looker extraction
693
+
694
+ ## 0.2.2 - 2023-03-13
695
+
696
+ * Constraint `setuptools` explicitly added
697
+
698
+ ## 0.2.1 - 2023-02-23
699
+
700
+ * Constrain `google-cloud-bigquery` dependency below yanked 3.0.0
701
+
702
+ ## 0.2.0 - 2023-02-13
703
+
704
+ * Add connector for dbt-cloud
705
+
706
+ ## 0.1.2 - 2023-02-08
707
+
708
+ * Enhance **Looker** extraction of dashboard filters and groups with roles
709
+
710
+ ## 0.1.1 - 2023-02-06
711
+
712
+ * Add **Looker** support to extract `groups`-related assets
713
+ * Enhance **Looker** extraction of dashboard elements and users
714
+
715
+ ## 0.1.0 - 2023-01-17
716
+
717
+ * Upgrade to Python 3.8
718
+ * Upgrade dependencies
719
+
720
+ ## 0.0.44 - 2023-01-02
721
+
722
+ * Introduce new extractor for visualization tool **PowerBi** with support for
723
+ * `reports`
724
+ * `dashboards`
725
+ * `metadata`
726
+
727
+ ## 0.0.43 - 2022-12-21
728
+
729
+ * Update package dependencies
730
+
731
+ ## 0.0.42 - 2022-11-25
732
+
733
+ * Improve pagination
734
+
735
+ ## 0.0.41 - 2022-10-26
736
+
737
+ * Tableau: Optional `site-id` argument for Tableau Server users
738
+
739
+ ## 0.0.40 - 2022-10-25
740
+
741
+ * Fix command `file_check`
742
+
743
+ ## 0.0.39 - 2022-10-24
744
+
745
+ * Fix `FileChecker` template for `GenericWarehouse.view_ddl`
746
+
747
+ ## 0.0.38 - 2022-10-17
748
+
749
+ * Snowflake: extract `warehouse_size`
750
+
751
+ ## 0.0.37 - 2022-10-14
752
+
753
+ * Allow to skip "App size exceeded" error while fetching Qlik measures
754
+ * Fix missing arguments `warehouse` and `role` passing for script `extract_snowflake`
755
+
756
+ ## 0.0.36 - 2022-10-13
757
+
758
+ * Patch error in Looker explore names
759
+
760
+ ## 0.0.35 - 2022-10-12
761
+
762
+ * Add safe mode to **Looker**
763
+
764
+ ## 0.0.34 - 2022-10-11
765
+
766
+ * Fix extras dependencies
767
+
768
+ ## 0.0.33 - 2022-10-10
769
+
770
+ * Migrate package generation to poetry
771
+
772
+ ## 0.0.32 - 2022-10-07
773
+
774
+ * Improved logging
775
+
776
+ ## 0.0.31 - 2022-10-05
777
+
778
+ * Safe mode for bigquery and file logger
779
+
780
+ ## 0.0.30 - 2022-09-20
781
+
782
+ * Add **Qlik** support to extract `connections` assets
783
+
784
+ ## 0.0.29 - 2022-08-31
785
+
786
+ * Switch to engine's connect for database connections
787
+
788
+ ## 0.0.28 - 2022-07-29
789
+
790
+ * Widen dependencies ranges
791
+
792
+ ## 0.0.27 - 2022-07-28
793
+
794
+ * Improve support for Qlik `measures` and `lineage` and drop extraction of `qvds`
795
+
796
+ ## 0.0.26 - 2022-07-22
797
+
798
+ * Add **Qlik** support to extract `measures` assets
799
+
800
+ ## 0.0.25 - 2022-07-04
801
+
802
+ * Add **Qlik** support to extract `qvds` and `lineage` assets
803
+
804
+ ## 0.0.24 - 2022-06-30
805
+
806
+ * Allow to use `all_looks` endpoint to retrieve looker Looks for param or env variable.
807
+
808
+ ## 0.0.23 - 2022-06-29
809
+
810
+ * Allow to change Looker api timeout through param or env variable.
811
+
812
+ ## 0.0.22 - 2022-06-20
813
+
814
+ * Introduce new extractor for visualization tool **Qlik** with support for
815
+ * `spaces`
816
+ * `users`
817
+ * `apps`
818
+
819
+ ## 0.0.21 - 2022-06-09
820
+
821
+ * Fix typo in Snowflake schema extract query
822
+
823
+ ## 0.0.20 - 2022-06-08
824
+
825
+ * Fetch only distinct schemas in Snowflake warehouse
826
+
827
+ ## 0.0.19 - 2022-05-30
828
+
829
+ * Use versions with range to ease dependency resolution for python 3.7 to 3.10
830
+
831
+ ## 0.0.18 - 2022-05-19
832
+
833
+ * Enhance the file checker to search for prefixed files
834
+
835
+ ## 0.0.17 - 2022-05-18
836
+
837
+ * Add retry for mode analytics
838
+
839
+ ## 0.0.16 - 2022-05-18
840
+
841
+ * Add options to the pager:
842
+ * `start_page`: to start pagination at another index (default to 1)
843
+ * `stop_strategy`: to use different strategy to stop pagination (default to EMPTY_PAGE)
844
+
845
+ ## 0.0.15 - 2022-05-09
846
+
847
+ * Skip snowflake columns with no name
848
+
849
+ ## 0.0.14 - 2022-05-09
850
+
851
+ * Add missing metabase dependencies on Psycopg2
852
+
853
+ ## 0.0.13 - 2022-05-06
854
+
855
+ * Remove top-level imports to isolate modules with different extra dependencies
856
+
857
+ ## 0.0.12 - 2022-05-06
858
+
859
+ * Improved the file checker to detect repeated quotes in CSV.
860
+
861
+ ## 0.0.11 - 2022-05-02
862
+
863
+ * Fix import error in `file_checker` script
864
+
865
+ ## 0.0.10 - 2022-04-27
866
+
867
+ * Snowflake: discard 11 more `query_type` values when fetching queries
868
+
869
+ ## 0.0.9 - 2022-04-13
870
+
871
+ * allow Looker parameters `CASTOR_LOOKER_TIMEOUT_SECOND` and `CASTOR_LOOKER_PAGE_SIZE` to be passed through environment
872
+ variables
873
+ * fix import paths in `castor_extractor/commands/upload.py` script
874
+ * use `storage.Client.from_service_account_info` when `credentials` is a dictionary in `uploader/upload.py`
875
+
876
+ ## 0.0.8 - 2022-04-07
877
+
878
+ * Fix links to documentation in the README
879
+
880
+ ## 0.0.7 - 2022-04-05
881
+
882
+ * Fix dateutil import issue
883
+
884
+ ## 0.0.6 - 2022-04-05
885
+
886
+ First version of Castor Extractor, including:
887
+
888
+ * Warehouse assets extraction
889
+ * BigQuery
890
+ * Postgres
891
+ * Redshift
892
+ * Snowflake
893
+
894
+ * Visualization assets extraction
895
+ * Looker
896
+ * Metabase
897
+ * Mode Analytics
898
+ * Tableau
899
+
900
+ * Utilities
901
+ * Uploader to cloud-storage
902
+ * File Checker (for generic metadata)
903
+