castor-extractor 0.22.5__py3-none-any.whl → 0.22.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.
- CHANGELOG.md +5 -0
- castor_extractor/file_checker/file.py +1 -1
- castor_extractor/visualization/powerbi/assets.py +2 -12
- castor_extractor/visualization/powerbi/extract.py +2 -2
- castor_extractor/warehouse/abstract/extract.py +1 -1
- castor_extractor/warehouse/bigquery/client.py +3 -3
- {castor_extractor-0.22.5.dist-info → castor_extractor-0.22.6.dist-info}/METADATA +8 -3
- {castor_extractor-0.22.5.dist-info → castor_extractor-0.22.6.dist-info}/RECORD +11 -11
- {castor_extractor-0.22.5.dist-info → castor_extractor-0.22.6.dist-info}/LICENCE +0 -0
- {castor_extractor-0.22.5.dist-info → castor_extractor-0.22.6.dist-info}/WHEEL +0 -0
- {castor_extractor-0.22.5.dist-info → castor_extractor-0.22.6.dist-info}/entry_points.txt +0 -0
CHANGELOG.md
CHANGED
|
@@ -123,7 +123,7 @@ class FileCheckerRun:
|
|
|
123
123
|
"""
|
|
124
124
|
if not self.verbose:
|
|
125
125
|
return
|
|
126
|
-
header = f"Issues detected on Row #{index+1}\n"
|
|
126
|
+
header = f"Issues detected on Row #{index + 1}\n"
|
|
127
127
|
for k, v in row.items():
|
|
128
128
|
header += f"{str(k):<20} {str(v):<100}\n"
|
|
129
129
|
self.logger.info(header + _SEPARATOR + issue_log + _SEPARATOR)
|
|
@@ -8,6 +8,7 @@ class PowerBiAsset(ExternalAsset):
|
|
|
8
8
|
DASHBOARDS = "dashboards"
|
|
9
9
|
DATASETS = "datasets"
|
|
10
10
|
DATASET_FIELDS = "dataset_fields"
|
|
11
|
+
DATASET_RELATIONSHIPS = "dataset_relationships"
|
|
11
12
|
METADATA = "metadata"
|
|
12
13
|
PAGES = "pages"
|
|
13
14
|
REPORTS = "reports"
|
|
@@ -19,20 +20,9 @@ class PowerBiAsset(ExternalAsset):
|
|
|
19
20
|
def optional(cls) -> set["PowerBiAsset"]:
|
|
20
21
|
return {
|
|
21
22
|
PowerBiAsset.DATASET_FIELDS,
|
|
23
|
+
PowerBiAsset.DATASET_RELATIONSHIPS,
|
|
22
24
|
PowerBiAsset.PAGES,
|
|
23
25
|
PowerBiAsset.TABLES,
|
|
24
26
|
PowerBiAsset.TILES,
|
|
25
27
|
PowerBiAsset.USERS,
|
|
26
28
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
# Assets extracted from the Metadata file
|
|
30
|
-
# They are not directly fetched from the PowerBi api.
|
|
31
|
-
METADATA_ASSETS = (
|
|
32
|
-
PowerBiAsset.DATASET_FIELDS,
|
|
33
|
-
PowerBiAsset.TABLES,
|
|
34
|
-
PowerBiAsset.TILES,
|
|
35
|
-
PowerBiAsset.USERS,
|
|
36
|
-
)
|
|
37
|
-
|
|
38
|
-
REPORTS_ASSETS = (PowerBiAsset.PAGES,)
|
|
@@ -11,7 +11,7 @@ from ...utils import (
|
|
|
11
11
|
write_json,
|
|
12
12
|
write_summary,
|
|
13
13
|
)
|
|
14
|
-
from .assets import
|
|
14
|
+
from .assets import PowerBiAsset
|
|
15
15
|
from .client import PowerbiClient, PowerbiCredentials
|
|
16
16
|
|
|
17
17
|
logger = logging.getLogger(__name__)
|
|
@@ -21,7 +21,7 @@ def iterate_all_data(
|
|
|
21
21
|
client: PowerbiClient,
|
|
22
22
|
) -> Iterable[tuple[PowerBiAsset, Union[list, dict]]]:
|
|
23
23
|
for asset in PowerBiAsset:
|
|
24
|
-
if asset in
|
|
24
|
+
if asset in PowerBiAsset.optional:
|
|
25
25
|
continue
|
|
26
26
|
|
|
27
27
|
logger.info(f"Extracting {asset.name} from API")
|
|
@@ -60,7 +60,7 @@ class SQLExtractionProcessor:
|
|
|
60
60
|
total = len(queries)
|
|
61
61
|
|
|
62
62
|
for i, query in enumerate(queries):
|
|
63
|
-
logger.info(f"Extracting {asset.value}: query {i+1}/{total}")
|
|
63
|
+
logger.info(f"Extracting {asset.value}: query {i + 1}/{total}")
|
|
64
64
|
# concatenate results of all queries
|
|
65
65
|
data = chain(data, self._fetch(query))
|
|
66
66
|
|
|
@@ -66,9 +66,9 @@ class BigQueryClient(SqlalchemyClient):
|
|
|
66
66
|
return BIGQUERY_URI
|
|
67
67
|
|
|
68
68
|
def _credentials(self) -> Credentials:
|
|
69
|
-
assert (
|
|
70
|
-
|
|
71
|
-
)
|
|
69
|
+
assert CREDENTIALS_INFO_KEY in self._options, (
|
|
70
|
+
"Missing BigQuery credentials in engine's options"
|
|
71
|
+
)
|
|
72
72
|
credentials = self._options[CREDENTIALS_INFO_KEY]
|
|
73
73
|
return Credentials.from_service_account_info(credentials)
|
|
74
74
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: castor-extractor
|
|
3
|
-
Version: 0.22.
|
|
3
|
+
Version: 0.22.6
|
|
4
4
|
Summary: Extract your metadata assets.
|
|
5
5
|
Home-page: https://www.castordoc.com/
|
|
6
6
|
License: EULA
|
|
@@ -38,7 +38,7 @@ Requires-Dist: google-cloud-core (>=2.1.0,<3.0.0)
|
|
|
38
38
|
Requires-Dist: google-cloud-storage (>=2,<3)
|
|
39
39
|
Requires-Dist: google-resumable-media (>=2.0.3,<3.0.0)
|
|
40
40
|
Requires-Dist: googleapis-common-protos (>=1.53.0,<2.0.0)
|
|
41
|
-
Requires-Dist: looker-sdk (>=
|
|
41
|
+
Requires-Dist: looker-sdk (>=25.0.0,<26.0.0) ; extra == "looker" or extra == "all"
|
|
42
42
|
Requires-Dist: msal (>=1.20.0,<2.0.0) ; extra == "powerbi" or extra == "all"
|
|
43
43
|
Requires-Dist: numpy (<2) ; extra == "bigquery" or extra == "databricks" or extra == "all"
|
|
44
44
|
Requires-Dist: numpy (>=1.26) ; (python_version >= "3.12" and python_version < "3.13") and (extra == "bigquery" or extra == "databricks" or extra == "all")
|
|
@@ -57,7 +57,7 @@ Requires-Dist: snowflake-sqlalchemy (!=1.2.5,<2.0.0) ; extra == "snowflake" or e
|
|
|
57
57
|
Requires-Dist: sqlalchemy (>=1.4,<1.5)
|
|
58
58
|
Requires-Dist: sqlalchemy-bigquery[bqstorage] (>=1.0.0,<=2.0.0) ; extra == "bigquery" or extra == "all"
|
|
59
59
|
Requires-Dist: sqlalchemy-redshift (>=0.8.14,<0.9.0) ; extra == "redshift" or extra == "all"
|
|
60
|
-
Requires-Dist: tableauserverclient (
|
|
60
|
+
Requires-Dist: tableauserverclient (>=0.25.0,<0.26.0) ; extra == "tableau" or extra == "all"
|
|
61
61
|
Requires-Dist: tqdm (>=4.0.0,<5.0.0)
|
|
62
62
|
Requires-Dist: typing-extensions (>=4,<5)
|
|
63
63
|
Requires-Dist: websocket-client (>=1,<2) ; extra == "qlik" or extra == "all"
|
|
@@ -207,6 +207,11 @@ For any questions or bug report, contact us at [support@castordoc.com](mailto:su
|
|
|
207
207
|
|
|
208
208
|
# Changelog
|
|
209
209
|
|
|
210
|
+
## 0.22.6 - 2025-01-21
|
|
211
|
+
|
|
212
|
+
* bump dependencies: looker, databricks, deptry, ...
|
|
213
|
+
|
|
214
|
+
|
|
210
215
|
## 0.22.5 - 2025-01-09
|
|
211
216
|
|
|
212
217
|
* Databricks: validate and deduplicate lineage links
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
CHANGELOG.md,sha256=
|
|
1
|
+
CHANGELOG.md,sha256=NINE1E6fLk7AivCkBrN79ea93u3F3bwlZzvn8xvwSbM,15414
|
|
2
2
|
Dockerfile,sha256=xQ05-CFfGShT3oUqaiumaldwA288dj9Yb_pxofQpufg,301
|
|
3
3
|
DockerfileUsage.md,sha256=2hkJQF-5JuuzfPZ7IOxgM6QgIQW7l-9oRMFVwyXC4gE,998
|
|
4
4
|
LICENCE,sha256=sL-IGa4hweyya1HgzMskrRdybbIa2cktzxb5qmUgDg8,8254
|
|
@@ -33,7 +33,7 @@ castor_extractor/file_checker/column.py,sha256=6bJhcW1snYwgHKkqlS0Ak7XLHZr4YBwO4
|
|
|
33
33
|
castor_extractor/file_checker/column_test.py,sha256=1j8PxvmvmJgpd-mk30iMYOme32ovPSIn4yCXywFoXrg,1935
|
|
34
34
|
castor_extractor/file_checker/constants.py,sha256=X9UvTqcKKZf0pkJErngq0UH_e9PL0dXUlS1g_Lbo5q8,289
|
|
35
35
|
castor_extractor/file_checker/enums.py,sha256=Js8YN8hAoPChH1j2I7Mmk1yHsSNh8WjndHv4gz7c9KA,536
|
|
36
|
-
castor_extractor/file_checker/file.py,sha256=
|
|
36
|
+
castor_extractor/file_checker/file.py,sha256=WXcnsqnDA5mF26sPuMPnCVtusNe3IIM8QVJdqXRiqrA,6537
|
|
37
37
|
castor_extractor/file_checker/file_test.py,sha256=gFcXiRdzX7q5gWEJ2JaywRCHP6Kq1OH2yk5gh92V6KY,2124
|
|
38
38
|
castor_extractor/file_checker/file_test_users.csv,sha256=ftw4T_RBg71c8_DAxnd9fHG3FNg4mwbEQKe1DuEn3ps,547
|
|
39
39
|
castor_extractor/file_checker/file_test_users_valid.csv,sha256=Ek3q7DjUS0neOu1LQaNmObINdEIR3qeHvI4IuKuHLSA,286
|
|
@@ -215,7 +215,7 @@ castor_extractor/visualization/mode/client/credentials.py,sha256=ptIpCCpoNt06yYa
|
|
|
215
215
|
castor_extractor/visualization/mode/errors.py,sha256=SKpFT2AiLOuWx2VRLyO7jbAiKcGDFXXrsebpNEKtr0E,1495
|
|
216
216
|
castor_extractor/visualization/mode/extract.py,sha256=PmLWWjUwplQh3TNMemiGwyFdxMcKVMvumZPxSMLJAwk,1625
|
|
217
217
|
castor_extractor/visualization/powerbi/__init__.py,sha256=AJnmfdmm2mGaInWJkUfZxRqrI7dBkTUSebpow05g5zo,135
|
|
218
|
-
castor_extractor/visualization/powerbi/assets.py,sha256=
|
|
218
|
+
castor_extractor/visualization/powerbi/assets.py,sha256=IB_XKwgdN1pZYGZ4RfeHrLjflianTzWf_6tg-4CIwu0,742
|
|
219
219
|
castor_extractor/visualization/powerbi/client/__init__.py,sha256=8Bzhd9Z0ebVg2gDchXCOPa80Yqlq_9oCjbGi8u1M6J0,93
|
|
220
220
|
castor_extractor/visualization/powerbi/client/authentication.py,sha256=fz0v9qxeADwA1jiS9UzAQN5mA5kmZT53onlcWon2RGw,892
|
|
221
221
|
castor_extractor/visualization/powerbi/client/client.py,sha256=Y_rwkyPO3GbTAtaOClqnGVEK5iWmREIuDKDJx0LefHs,7203
|
|
@@ -225,7 +225,7 @@ castor_extractor/visualization/powerbi/client/credentials.py,sha256=sVi4ecJP8ydf
|
|
|
225
225
|
castor_extractor/visualization/powerbi/client/credentials_test.py,sha256=TzFqxsWVQ3sXR_n0bJsexK9Uz7ceXCEPVqDGWTJzW60,993
|
|
226
226
|
castor_extractor/visualization/powerbi/client/endpoints.py,sha256=DrAFpYHhp9Z7fxebdy_Ir6LFfFluHRBJId4tVCYTUVs,2051
|
|
227
227
|
castor_extractor/visualization/powerbi/client/pagination.py,sha256=OZMjoDQPRGMoWd9QcKKrPh3aErJR20SHlrTqY_siLkk,755
|
|
228
|
-
castor_extractor/visualization/powerbi/extract.py,sha256=
|
|
228
|
+
castor_extractor/visualization/powerbi/extract.py,sha256=Z5KbqMhMnqjWcnzged2G1-Gf6GYWJobTL9_TpAdgb8o,1309
|
|
229
229
|
castor_extractor/visualization/qlik/__init__.py,sha256=u6lIfm_WOykBwt6SlaB7C0Dtx37XBliUbM5oWv26gC8,177
|
|
230
230
|
castor_extractor/visualization/qlik/assets.py,sha256=Ab_kG61mHcK8GoGZbfQW7RSWyd7D9bVga9DOqnm0iSE,1625
|
|
231
231
|
castor_extractor/visualization/qlik/client/__init__.py,sha256=5O5N9Jrt3d99agFEJ28lKWs2KkDaXK-lZ07IUtLj56M,130
|
|
@@ -318,12 +318,12 @@ castor_extractor/warehouse/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJ
|
|
|
318
318
|
castor_extractor/warehouse/abstract/__init__.py,sha256=Fdfa026tgOo64MvzVRLHM_F2G-JmcehrF0mh3dHgb7s,419
|
|
319
319
|
castor_extractor/warehouse/abstract/asset.py,sha256=JiFRohZfPkQrgJJ8gTirD69snY1ubjPr5_Mg3vM--RY,2647
|
|
320
320
|
castor_extractor/warehouse/abstract/asset_test.py,sha256=_kd4ybNlWSAdSdEgJKC-jhJTa1nMRa9i8RO3YbqKLM4,758
|
|
321
|
-
castor_extractor/warehouse/abstract/extract.py,sha256=
|
|
321
|
+
castor_extractor/warehouse/abstract/extract.py,sha256=9Y2fUn3y2-2WjiHnrabjvAvOA8UETJeTYr18zcM7bdI,2924
|
|
322
322
|
castor_extractor/warehouse/abstract/query.py,sha256=20vGhKKX0Kdprj0pbyt0A7L82hwVPezovx38h8seEfA,2614
|
|
323
323
|
castor_extractor/warehouse/abstract/time_filter.py,sha256=bggIONfMmUxffkA6TwM3BsjfS2l9WFxPq8krfsau5pw,935
|
|
324
324
|
castor_extractor/warehouse/abstract/time_filter_test.py,sha256=PIkegB7KOKBdpc6zIvmyl_CeQyADeFDplyQ8HTNU5LA,448
|
|
325
325
|
castor_extractor/warehouse/bigquery/__init__.py,sha256=PCGNYdi7dHv-SyanUWzRuBp-ypuQ01PkDaQjVnaNhbM,170
|
|
326
|
-
castor_extractor/warehouse/bigquery/client.py,sha256=
|
|
326
|
+
castor_extractor/warehouse/bigquery/client.py,sha256=lPAn6WUwDq0rIPNaMOcabet8C4TYJ93EWZUxX72XrZc,5595
|
|
327
327
|
castor_extractor/warehouse/bigquery/client_test.py,sha256=Ym8e4d--0YQwiVcNUnXLx0X-X6ZznwNMBMbMaDS5oEA,1514
|
|
328
328
|
castor_extractor/warehouse/bigquery/credentials.py,sha256=oCZ8H7qpudKzwM7PRMpVAmWXt7bjIRa8Harmp-ysQJ4,425
|
|
329
329
|
castor_extractor/warehouse/bigquery/extract.py,sha256=TAxpdwZ6kfSe7xv22vcFwAE3-Rr1VF9UnX0DM_IPdF8,2934
|
|
@@ -436,8 +436,8 @@ castor_extractor/warehouse/sqlserver/queries/table.sql,sha256=kbBQP-TdG5px1IVgyx
|
|
|
436
436
|
castor_extractor/warehouse/sqlserver/queries/user.sql,sha256=gOrZsMVypusR2dc4vwVs4E1a-CliRsr_UjnD2EbXs-A,94
|
|
437
437
|
castor_extractor/warehouse/sqlserver/query.py,sha256=g0hPT-RmeGi2DyenAi3o72cTlQsLToXIFYojqc8E5fQ,533
|
|
438
438
|
castor_extractor/warehouse/synapse/queries/column.sql,sha256=lNcFoIW3Y0PFOqoOzJEXmPvZvfAsY0AP63Mu2LuPzPo,1351
|
|
439
|
-
castor_extractor-0.22.
|
|
440
|
-
castor_extractor-0.22.
|
|
441
|
-
castor_extractor-0.22.
|
|
442
|
-
castor_extractor-0.22.
|
|
443
|
-
castor_extractor-0.22.
|
|
439
|
+
castor_extractor-0.22.6.dist-info/LICENCE,sha256=sL-IGa4hweyya1HgzMskrRdybbIa2cktzxb5qmUgDg8,8254
|
|
440
|
+
castor_extractor-0.22.6.dist-info/METADATA,sha256=CygRIOqL2H1YeiwzeQElCbImi8qEBLfwXyVTqA4m5kE,22437
|
|
441
|
+
castor_extractor-0.22.6.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
|
442
|
+
castor_extractor-0.22.6.dist-info/entry_points.txt,sha256=7aVSxc-_2dicp28Ow-S4y0p4wGoTm9zGmVptMvfLdw8,1649
|
|
443
|
+
castor_extractor-0.22.6.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|