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.
- CHANGELOG.md +29 -2
- castor_extractor/file_checker/templates/generic_warehouse.py +1 -1
- castor_extractor/knowledge/notion/client/client.py +44 -80
- castor_extractor/knowledge/notion/client/client_test.py +9 -4
- castor_extractor/knowledge/notion/client/constants.py +1 -0
- castor_extractor/knowledge/notion/client/endpoints.py +1 -1
- castor_extractor/knowledge/notion/client/pagination.py +9 -5
- castor_extractor/quality/soda/assets.py +1 -1
- castor_extractor/quality/soda/client/client.py +30 -83
- castor_extractor/quality/soda/client/credentials.py +0 -11
- castor_extractor/quality/soda/client/endpoints.py +3 -6
- castor_extractor/quality/soda/client/pagination.py +25 -0
- castor_extractor/utils/__init__.py +13 -2
- castor_extractor/utils/client/__init__.py +14 -0
- castor_extractor/utils/client/api/__init__.py +5 -0
- castor_extractor/utils/client/api/auth.py +76 -0
- castor_extractor/utils/client/api/auth_test.py +49 -0
- castor_extractor/utils/client/api/client.py +153 -0
- castor_extractor/utils/client/api/client_test.py +47 -0
- castor_extractor/utils/client/api/pagination.py +83 -0
- castor_extractor/utils/client/api/pagination_test.py +51 -0
- castor_extractor/utils/{safe_request_test.py → client/api/safe_request_test.py} +4 -1
- castor_extractor/utils/client/api/utils.py +9 -0
- castor_extractor/utils/client/api/utils_test.py +16 -0
- castor_extractor/utils/collection.py +34 -2
- castor_extractor/utils/collection_test.py +17 -3
- castor_extractor/utils/pager/__init__.py +0 -1
- castor_extractor/utils/retry.py +44 -0
- castor_extractor/utils/retry_test.py +26 -1
- castor_extractor/utils/salesforce/client.py +44 -49
- castor_extractor/utils/salesforce/client_test.py +2 -2
- castor_extractor/utils/salesforce/pagination.py +33 -0
- castor_extractor/visualization/domo/client/client.py +10 -5
- castor_extractor/visualization/domo/client/credentials.py +1 -1
- castor_extractor/visualization/domo/client/endpoints.py +19 -7
- castor_extractor/visualization/looker/api/credentials.py +1 -1
- castor_extractor/visualization/metabase/client/api/client.py +26 -11
- castor_extractor/visualization/metabase/client/api/credentials.py +1 -1
- castor_extractor/visualization/metabase/client/db/credentials.py +1 -1
- castor_extractor/visualization/mode/client/credentials.py +1 -1
- castor_extractor/visualization/qlik/client/engine/credentials.py +1 -1
- castor_extractor/visualization/salesforce_reporting/client/rest.py +4 -3
- castor_extractor/visualization/sigma/client/client.py +106 -111
- castor_extractor/visualization/sigma/client/credentials.py +11 -1
- castor_extractor/visualization/sigma/client/endpoints.py +1 -1
- castor_extractor/visualization/sigma/client/pagination.py +22 -18
- castor_extractor/visualization/tableau/tests/unit/rest_api/auth_test.py +0 -1
- castor_extractor/visualization/tableau/tests/unit/rest_api/credentials_test.py +0 -3
- castor_extractor/visualization/tableau_revamp/assets.py +11 -0
- castor_extractor/visualization/tableau_revamp/client/client.py +71 -151
- castor_extractor/visualization/tableau_revamp/client/client_metadata_api.py +95 -0
- castor_extractor/visualization/tableau_revamp/client/client_rest_api.py +128 -0
- castor_extractor/visualization/tableau_revamp/client/client_tsc.py +66 -0
- castor_extractor/visualization/tableau_revamp/client/{tsc_fields.py → rest_fields.py} +15 -2
- castor_extractor/visualization/tableau_revamp/constants.py +0 -2
- castor_extractor/visualization/tableau_revamp/extract.py +5 -11
- castor_extractor/warehouse/databricks/api_client.py +239 -0
- castor_extractor/warehouse/databricks/api_client_test.py +15 -0
- castor_extractor/warehouse/databricks/client.py +37 -490
- castor_extractor/warehouse/databricks/client_test.py +1 -99
- castor_extractor/warehouse/databricks/endpoints.py +28 -0
- castor_extractor/warehouse/databricks/lineage.py +141 -0
- castor_extractor/warehouse/databricks/lineage_test.py +34 -0
- castor_extractor/warehouse/databricks/pagination.py +22 -0
- castor_extractor/warehouse/databricks/sql_client.py +90 -0
- castor_extractor/warehouse/databricks/utils.py +44 -1
- castor_extractor/warehouse/databricks/utils_test.py +58 -1
- castor_extractor/warehouse/mysql/client.py +0 -2
- castor_extractor/warehouse/salesforce/client.py +12 -59
- castor_extractor/warehouse/salesforce/pagination.py +34 -0
- castor_extractor/warehouse/sqlserver/client.py +0 -1
- castor_extractor-0.19.6.dist-info/METADATA +903 -0
- {castor_extractor-0.19.0.dist-info → castor_extractor-0.19.6.dist-info}/RECORD +77 -60
- castor_extractor/utils/client/api.py +0 -87
- castor_extractor/utils/client/api_test.py +0 -24
- castor_extractor/utils/pager/pager_on_token.py +0 -52
- castor_extractor/utils/pager/pager_on_token_test.py +0 -73
- castor_extractor/visualization/sigma/client/client_test.py +0 -54
- castor_extractor-0.19.0.dist-info/METADATA +0 -207
- /castor_extractor/utils/{safe_request.py → client/api/safe_request.py} +0 -0
- {castor_extractor-0.19.0.dist-info → castor_extractor-0.19.6.dist-info}/LICENCE +0 -0
- {castor_extractor-0.19.0.dist-info → castor_extractor-0.19.6.dist-info}/WHEEL +0 -0
- {castor_extractor-0.19.0.dist-info → castor_extractor-0.19.6.dist-info}/entry_points.txt +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
CHANGELOG.md,sha256=
|
|
1
|
+
CHANGELOG.md,sha256=zyNu2cYYt2A3eJFu6_xeQr9o9A__fBgF4zfio2TbdRY,13216
|
|
2
2
|
Dockerfile,sha256=HcX5z8OpeSvkScQsN-Y7CNMUig_UB6vTMDl7uqzuLGE,303
|
|
3
3
|
DockerfileUsage.md,sha256=2hkJQF-5JuuzfPZ7IOxgM6QgIQW7l-9oRMFVwyXC4gE,998
|
|
4
4
|
LICENCE,sha256=sL-IGa4hweyya1HgzMskrRdybbIa2cktzxb5qmUgDg8,8254
|
|
@@ -36,26 +36,27 @@ castor_extractor/file_checker/file_test.py,sha256=yxsTL8uRxb7p-AdP49piYzFNlTLG2c
|
|
|
36
36
|
castor_extractor/file_checker/file_test_users.csv,sha256=ftw4T_RBg71c8_DAxnd9fHG3FNg4mwbEQKe1DuEn3ps,547
|
|
37
37
|
castor_extractor/file_checker/file_test_users_valid.csv,sha256=Ek3q7DjUS0neOu1LQaNmObINdEIR3qeHvI4IuKuHLSA,286
|
|
38
38
|
castor_extractor/file_checker/templates/__init__.py,sha256=StVLm4ZGyGVmPzarxEaDR_k08T3nUnyiv8N99sAz6AQ,60
|
|
39
|
-
castor_extractor/file_checker/templates/generic_warehouse.py,sha256=
|
|
39
|
+
castor_extractor/file_checker/templates/generic_warehouse.py,sha256=3LREeiTsYsh5_wkuZost_frmMDp_K-jfiuod02vFMe8,2963
|
|
40
40
|
castor_extractor/knowledge/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
41
41
|
castor_extractor/knowledge/notion/__init__.py,sha256=ZDmh0eNSxHf1zVPm0aYlKPci-vzOXhAgdsWjS2hdjh4,117
|
|
42
42
|
castor_extractor/knowledge/notion/assets.py,sha256=QHv1-pomt5UeN_prP2L6t_zJ-tDSqB8LgopkGAODYPQ,164
|
|
43
43
|
castor_extractor/knowledge/notion/client/__init__.py,sha256=CDPorBCethuNTEtpjvHGcWnWeVfqkEq-IbakWjDKATw,76
|
|
44
|
-
castor_extractor/knowledge/notion/client/client.py,sha256=
|
|
45
|
-
castor_extractor/knowledge/notion/client/client_test.py,sha256=
|
|
46
|
-
castor_extractor/knowledge/notion/client/constants.py,sha256=
|
|
44
|
+
castor_extractor/knowledge/notion/client/client.py,sha256=PJSM27wrJUxOwOoET6bScO_O8GOdoljxkVQYPFmcXmg,3607
|
|
45
|
+
castor_extractor/knowledge/notion/client/client_test.py,sha256=fo3_WgCIUfeF3nMfHTSB6wjxIW_dHp1XZL41tNzBisQ,1976
|
|
46
|
+
castor_extractor/knowledge/notion/client/constants.py,sha256=dZCpSrxFlLbR_cFPJKz4M5wcMVcY4UfWFG0N5S22Fhw,147
|
|
47
47
|
castor_extractor/knowledge/notion/client/credentials.py,sha256=-mBY6IhAb9z2RP1MilzIyS3BW39J__u_M5n9uIuUlxA,398
|
|
48
|
-
castor_extractor/knowledge/notion/client/endpoints.py,sha256=
|
|
49
|
-
castor_extractor/knowledge/notion/client/pagination.py,sha256=
|
|
48
|
+
castor_extractor/knowledge/notion/client/endpoints.py,sha256=5wUodq7les28CpZkMm5drhry6FFWbBU3V4oeUAn0G-w,405
|
|
49
|
+
castor_extractor/knowledge/notion/client/pagination.py,sha256=pPJZxFHe9ecwS8xHat8tADQohgqerCfTnhMvED3XpT8,445
|
|
50
50
|
castor_extractor/knowledge/notion/extract.py,sha256=ExG354_5VJKLUp_7QQvIl6HnZqBmOypAquY3tA9rFXc,1717
|
|
51
51
|
castor_extractor/logger.py,sha256=ovf1mBEKwbJBskBXoqHbcAomBrp58mUwSrCWtEMlYPM,1197
|
|
52
52
|
castor_extractor/quality/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
53
53
|
castor_extractor/quality/soda/__init__.py,sha256=y2H6f_UqLrqlssKlTVqPwa4ITvRh7na4P6HywrUoTb8,78
|
|
54
|
-
castor_extractor/quality/soda/assets.py,sha256=
|
|
54
|
+
castor_extractor/quality/soda/assets.py,sha256=1mMBFoVOEelmX4dtY0oxzMzHzfwFpGWq6t9UBykJ-80,140
|
|
55
55
|
castor_extractor/quality/soda/client/__init__.py,sha256=LUvHHyyL2t3mk5GORshnef4FgAu7VMqrIQWQx-7kO4I,48
|
|
56
|
-
castor_extractor/quality/soda/client/client.py,sha256=
|
|
57
|
-
castor_extractor/quality/soda/client/credentials.py,sha256=
|
|
58
|
-
castor_extractor/quality/soda/client/endpoints.py,sha256=
|
|
56
|
+
castor_extractor/quality/soda/client/client.py,sha256=8JEnLJn4-m_km-JyJaq-9RNpqBxwErVDIEgYpRju5QA,1509
|
|
57
|
+
castor_extractor/quality/soda/client/credentials.py,sha256=yVFIYeEv76LogOwP_JEWieRpRFyOtACj7VLhSjyPH5k,426
|
|
58
|
+
castor_extractor/quality/soda/client/endpoints.py,sha256=x3B-XlnDF8NJMuk-81N72_6HA-YZEzA895khLyj0j54,228
|
|
59
|
+
castor_extractor/quality/soda/client/pagination.py,sha256=KgCNdLLX-G9SSnNuTslw5rh7Llwl_4LDmJEuf2ylm_A,604
|
|
59
60
|
castor_extractor/types.py,sha256=Hd_shbsGAknJLTrAk3SBxZeFPOlbWBXXjIscC9C7CW8,1281
|
|
60
61
|
castor_extractor/uploader/__init__.py,sha256=SSRtwjg-dNoxME-RJy9G1flASiUKAC5bH1htq3CURQg,75
|
|
61
62
|
castor_extractor/uploader/constant.py,sha256=yTigLHDlYwoRr6CpFIl7ReElFsQd4H-qkluMZJPWSx0,865
|
|
@@ -64,19 +65,28 @@ castor_extractor/uploader/env_test.py,sha256=ClCWWtwd2N-5ClIDUxVMeKkWfhhOTxpppsX
|
|
|
64
65
|
castor_extractor/uploader/upload.py,sha256=c86NP4ZxWnz3Hy1iWDYd9qjJSSjZ1bLq3fxVGBIU4Rc,3238
|
|
65
66
|
castor_extractor/uploader/upload_test.py,sha256=7fwstdQe7FjuwGilsCdFpEQr1qLoR2WTRUzyy93fISw,402
|
|
66
67
|
castor_extractor/uploader/utils.py,sha256=Tx_i875L2vJ8btOLV3-L0UMEFiyhH8E5n0XXRyLjO0Y,793
|
|
67
|
-
castor_extractor/utils/__init__.py,sha256=
|
|
68
|
+
castor_extractor/utils/__init__.py,sha256=MReSpH6I4AQZ5WTQp752P2sP4wVVZO8MyyglN0K0VKw,1509
|
|
68
69
|
castor_extractor/utils/argument_parser.py,sha256=S4EcIh3wNDjs3fOrQnttCcPsAmG8m_Txl7xvEh0Q37s,283
|
|
69
70
|
castor_extractor/utils/argument_parser_test.py,sha256=wnyLFJ74iEiPxxLSbwFtckR7FIHxsFOVU38ljs9gqRA,633
|
|
70
|
-
castor_extractor/utils/client/__init__.py,sha256=
|
|
71
|
+
castor_extractor/utils/client/__init__.py,sha256=h5gm8UNNCCkAqhjYK5f6BY7k0cHFOyAvkmlktqwpir0,392
|
|
71
72
|
castor_extractor/utils/client/abstract.py,sha256=aA5Qcb9TwWDSMq8WpXbGkOB20hehwX2VTpqQAwV76wk,2048
|
|
72
|
-
castor_extractor/utils/client/api.py,sha256=
|
|
73
|
-
castor_extractor/utils/client/
|
|
73
|
+
castor_extractor/utils/client/api/__init__.py,sha256=vlG7WXznYgLTn3XyMGsyUkgRkup8FbKM14EXJ8mv-b0,264
|
|
74
|
+
castor_extractor/utils/client/api/auth.py,sha256=QDLM5h1zGibLaKyATxLF0gycg01SE92G-Y69f_YBClc,1896
|
|
75
|
+
castor_extractor/utils/client/api/auth_test.py,sha256=NoZYsz7bcCyWBZdMF1TaOuK-s1j09DhTRyM4GSUW_YQ,1311
|
|
76
|
+
castor_extractor/utils/client/api/client.py,sha256=h8cQZ4CSD0LUuNv1VC5qa_p_jFbiOUbYztJnNmpJa2Q,4231
|
|
77
|
+
castor_extractor/utils/client/api/client_test.py,sha256=FM3ZxsLLfMOBn44cXX6FIgnA31-5TTNIyp9D4LBwtXE,1222
|
|
78
|
+
castor_extractor/utils/client/api/pagination.py,sha256=Ne-4dqKrwEAETheBn14KPrGRzxsrkuCO96Z6gkCI-0Y,2437
|
|
79
|
+
castor_extractor/utils/client/api/pagination_test.py,sha256=jCOgXFXrH-jrCxe2dfk80ZksJF-EtmpJPU11BGabsqk,1385
|
|
80
|
+
castor_extractor/utils/client/api/safe_request.py,sha256=SeBteAK8KhBjXldIdyUpkZphf9ktjzbvBM49AXrvD0g,1686
|
|
81
|
+
castor_extractor/utils/client/api/safe_request_test.py,sha256=LqS5FBxs6lLLcTkcgxIoLb6OinxShHXR5y4CWZpwmwg,2005
|
|
82
|
+
castor_extractor/utils/client/api/utils.py,sha256=jr8CWf48cIp8QP1P7oZ1zg9WaGlDO3mqCWgQKdEcpyc,238
|
|
83
|
+
castor_extractor/utils/client/api/utils_test.py,sha256=a5aL-pCwa74C8Ne7OT169Bjp8WPDV5Fl8MxNxAllHJg,514
|
|
74
84
|
castor_extractor/utils/client/postgres.py,sha256=n6ulaT222WWPY0_6qAZ0MHF0m91HtI9mMqL71nyygo0,866
|
|
75
85
|
castor_extractor/utils/client/query.py,sha256=O6D5EjD1KmBlwa786Uw4D4kzxx97_HH50xIIeSWt0B8,205
|
|
76
86
|
castor_extractor/utils/client/uri.py,sha256=jmP9hY-6PRqdc3-vAOdtll_U6q9VCqSqmBAN6QRs3ZI,150
|
|
77
87
|
castor_extractor/utils/client/uri_test.py,sha256=1XKF6qSseCeD4G4ckaNO07JXfGbt7XUVinOZdpEYrDQ,259
|
|
78
|
-
castor_extractor/utils/collection.py,sha256=
|
|
79
|
-
castor_extractor/utils/collection_test.py,sha256=
|
|
88
|
+
castor_extractor/utils/collection.py,sha256=1e3lW0QrL4uFWw48QWdKyktgLopTpUMitIajuHP9cLE,2344
|
|
89
|
+
castor_extractor/utils/collection_test.py,sha256=XJAGo0Veg0H8wZRCESIkU2t8bXxTNET0BdosomO3-Ls,2104
|
|
80
90
|
castor_extractor/utils/constants.py,sha256=qBQprS9U66mS-RIBXiLujdTSV3WvGv40Bc0khP4Abdk,39
|
|
81
91
|
castor_extractor/utils/dbt/__init__.py,sha256=LHQROlMqYWCc7tcmhdjXtROFpJqUvCg9jPC8avHgD4I,107
|
|
82
92
|
castor_extractor/utils/dbt/assets.py,sha256=JY1nKEGySZ84wNoe7dnizwAYw2q0t8NVaIfqhB2rSw0,148
|
|
@@ -95,25 +105,22 @@ castor_extractor/utils/json_stream_write.py,sha256=OUdg4-47I47pgbpN9_a6y-lmxuod7
|
|
|
95
105
|
castor_extractor/utils/load.py,sha256=MXwGVB_Dp_VitGwo71sNB_xDmGzQ4oQ13MhaXXyYkS0,265
|
|
96
106
|
castor_extractor/utils/object.py,sha256=xCcQtoj9313TCcoyRXkLpDcMxmDeQMFMseDNx95oGc0,1959
|
|
97
107
|
castor_extractor/utils/object_test.py,sha256=uy8p1VTtJX5Q1AhpORRlx7rM6vLuhnW0Gb3fprBIlG8,2487
|
|
98
|
-
castor_extractor/utils/pager/__init__.py,sha256=
|
|
108
|
+
castor_extractor/utils/pager/__init__.py,sha256=whWh-Kr524ELXrukzorPWo-7ugEPJTcn-vzb9F096J8,124
|
|
99
109
|
castor_extractor/utils/pager/pager.py,sha256=h_toZkR6RbXh-rdbAKule86bVijEqriV3GMnMTpCYIM,2389
|
|
100
110
|
castor_extractor/utils/pager/pager_on_id.py,sha256=WATgZcZ2_1W2v1IbkwKIwjw2paoimm8r-ZJiNtPVc5w,1940
|
|
101
111
|
castor_extractor/utils/pager/pager_on_id_test.py,sha256=CfAXhXaAmCXnm0oflj8_82An6znOS2mBk4nqvtrCqs4,1613
|
|
102
|
-
castor_extractor/utils/pager/pager_on_token.py,sha256=G442SKl4BXJFMPbYIIgCk5M8wl7V3jMg3K1WUUkl0I0,1579
|
|
103
|
-
castor_extractor/utils/pager/pager_on_token_test.py,sha256=w2GCUGKR3cD5lfmtFAsNvExtzxkYdBR0pusBrGKFQ08,2548
|
|
104
112
|
castor_extractor/utils/pager/pager_test.py,sha256=QPBVShSXhkiYZUfnAMs43xnys6CD8pAhL3Jhj-Ov2Xc,1705
|
|
105
|
-
castor_extractor/utils/retry.py,sha256=
|
|
106
|
-
castor_extractor/utils/retry_test.py,sha256=
|
|
113
|
+
castor_extractor/utils/retry.py,sha256=pTCASEtKjSBPwS5ummaCF_C0rZcQwEhOPYRQi0PpDG0,4719
|
|
114
|
+
castor_extractor/utils/retry_test.py,sha256=YMZfiEy95FQHsp8StPDAHfMvljIl-nLNpAjwRFh91KA,2916
|
|
107
115
|
castor_extractor/utils/safe.py,sha256=jpfIimwdBSVUvU2DPFrhqpKC_DSYwxQqd08MlIkSODY,1967
|
|
108
|
-
castor_extractor/utils/safe_request.py,sha256=SeBteAK8KhBjXldIdyUpkZphf9ktjzbvBM49AXrvD0g,1686
|
|
109
|
-
castor_extractor/utils/safe_request_test.py,sha256=WiOO3iXaf8l4uwQbUflovkrcP8fOdssBW1NUP7pumKs,1992
|
|
110
116
|
castor_extractor/utils/safe_test.py,sha256=IHN1Z761tYMFslYC-2HAfkXmFPh4LYSqNLs4QZwykjk,2160
|
|
111
117
|
castor_extractor/utils/salesforce/__init__.py,sha256=fZ2U6t6AFFAIC-DLXvFHBgpBDjTvX0tFgZ8zJoehPAc,88
|
|
112
|
-
castor_extractor/utils/salesforce/client.py,sha256=
|
|
113
|
-
castor_extractor/utils/salesforce/client_test.py,sha256=
|
|
118
|
+
castor_extractor/utils/salesforce/client.py,sha256=aX_iWQFWdhk8gh16_gSHYeCI9A7wqohcQhY-DOEWKko,2350
|
|
119
|
+
castor_extractor/utils/salesforce/client_test.py,sha256=T3gUnZ0cRvnL_4dVc4lInRSO9Ti2WeLkLWV1scps4IY,668
|
|
114
120
|
castor_extractor/utils/salesforce/constants.py,sha256=7yPmUeyn4IHQiHLDutXE0L_OBd41E5080vFxqA_s4Dc,58
|
|
115
121
|
castor_extractor/utils/salesforce/credentials.py,sha256=Fp-7yaidGpeuaXad1ng6dr1jSOI9Bl2KMVZXPyTBVjM,1148
|
|
116
122
|
castor_extractor/utils/salesforce/credentials_test.py,sha256=FQRyNk2Jsh6KtYiW20oL43CVnGjXLcAjdFATkE7jK0s,586
|
|
123
|
+
castor_extractor/utils/salesforce/pagination.py,sha256=wJq0rKLdacFRggyHwB6Fh3K6iXPvL4QWhsDvZdjQjM8,849
|
|
117
124
|
castor_extractor/utils/store.py,sha256=D_pVaPsu1MKAJC0K47O_vYTs-Afl6oejravAJdvjmGc,2040
|
|
118
125
|
castor_extractor/utils/string.py,sha256=aW6bbjqEGnh9kT5KZBnMlV6fhdgOJ0ENCkCTDon1xA0,2377
|
|
119
126
|
castor_extractor/utils/string_test.py,sha256=QWuNog77GogQsPI5kSXLskq6z3Obt89YbugWEia6PH4,2527
|
|
@@ -127,9 +134,9 @@ castor_extractor/visualization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
|
|
|
127
134
|
castor_extractor/visualization/domo/__init__.py,sha256=1axOCPm4RpdIyUt9LQEvlMvbOPllW8rk63h6EjVgJ0Y,111
|
|
128
135
|
castor_extractor/visualization/domo/assets.py,sha256=bK1urFR2tnlWkVkkhR32mAKMoKbESNlop-CNGx-65PY,206
|
|
129
136
|
castor_extractor/visualization/domo/client/__init__.py,sha256=Do0fU4B8Hhlhahcv734gnJl_ryCztfTBDea7XNCKfB8,72
|
|
130
|
-
castor_extractor/visualization/domo/client/client.py,sha256=
|
|
131
|
-
castor_extractor/visualization/domo/client/credentials.py,sha256=
|
|
132
|
-
castor_extractor/visualization/domo/client/endpoints.py,sha256=
|
|
137
|
+
castor_extractor/visualization/domo/client/client.py,sha256=ZeEwudAjjDixYHiA8chTDYn9p8ac3wCbF-6y6Cvfw1g,9607
|
|
138
|
+
castor_extractor/visualization/domo/client/credentials.py,sha256=fyJ4wOmCqMQ1g3jDoOjtChtUES0sHfp3eLAfb4JxZP4,879
|
|
139
|
+
castor_extractor/visualization/domo/client/endpoints.py,sha256=jl5JvE6HZ36g9kpbm4TU501uxLa0mMZyitJ7JTJP-HI,2781
|
|
133
140
|
castor_extractor/visualization/domo/client/pagination.py,sha256=ukVkHVzoH4mfZ29H9YcnC2YrdVolP10wv25J6Q3ehRw,821
|
|
134
141
|
castor_extractor/visualization/domo/client/pagination_test.py,sha256=nV4yZWfus13QFCr-tlBUgwva21VqfpF6P-0ks_Awwis,581
|
|
135
142
|
castor_extractor/visualization/domo/extract.py,sha256=W_HRz7GGShlU4JVAR017q96wM8fgR8dhUzA-o8icWkc,1846
|
|
@@ -138,7 +145,7 @@ castor_extractor/visualization/looker/api/__init__.py,sha256=HDLsLy3kDWHIplAzLl1
|
|
|
138
145
|
castor_extractor/visualization/looker/api/client.py,sha256=xp7wV59UsrXQXrkR-vB9YH78aPu2rAfwNRFxXegJluo,11283
|
|
139
146
|
castor_extractor/visualization/looker/api/client_test.py,sha256=a80DpBOorFumXEA3D_qHuRZJqR51-DUtbz65XSLuSHc,1977
|
|
140
147
|
castor_extractor/visualization/looker/api/constants.py,sha256=pZpq09tqcGi2Vh8orXxn9eil8ewfPUOLKfVuqgV2W-A,4126
|
|
141
|
-
castor_extractor/visualization/looker/api/credentials.py,sha256
|
|
148
|
+
castor_extractor/visualization/looker/api/credentials.py,sha256=dnEMW-d-g4N_JJhkXd-CJcnKLA1zBNMbgnELL_-guNI,972
|
|
142
149
|
castor_extractor/visualization/looker/api/extraction_parameters.py,sha256=53tMtYHxlgALWuKr9w-lOE0xHIqKLvIQHl4w5wufjbU,1284
|
|
143
150
|
castor_extractor/visualization/looker/api/sdk.py,sha256=KEhVCpQ__K9yTxSoIDG5y1FFuAhmeHo65pvxh7g90Ts,1600
|
|
144
151
|
castor_extractor/visualization/looker/api/sdk_test.py,sha256=NHtKZTflPhqzBFHs1TyAQaubgxfzLLwYKFT8rEqR55I,1742
|
|
@@ -154,12 +161,12 @@ castor_extractor/visualization/metabase/__init__.py,sha256=3E36cmkMyEgBB6Ot5rWk-
|
|
|
154
161
|
castor_extractor/visualization/metabase/assets.py,sha256=RrrE7H0ezqD-YpNLjDOo4u5fFPUK1PIRxLXNERFqFn8,2906
|
|
155
162
|
castor_extractor/visualization/metabase/client/__init__.py,sha256=KBvaPMofBRV3m_sZAnKNCrJGr-Z88EbpdzEzWPQ_uBk,99
|
|
156
163
|
castor_extractor/visualization/metabase/client/api/__init__.py,sha256=BYSPWHY4KbT-LvenNI0pRonxolzZ5HSl6v3-PbJr-7M,78
|
|
157
|
-
castor_extractor/visualization/metabase/client/api/client.py,sha256=
|
|
164
|
+
castor_extractor/visualization/metabase/client/api/client.py,sha256=FBlet27PMW8EDAAvCiAJEnAKTaqk7Fho-bFHT4DwYHg,6236
|
|
158
165
|
castor_extractor/visualization/metabase/client/api/client_test.py,sha256=7Lb5yvrvHQmCIOnFzS2D00oR2Zps1SVxGIAukzRVeKg,559
|
|
159
|
-
castor_extractor/visualization/metabase/client/api/credentials.py,sha256=
|
|
166
|
+
castor_extractor/visualization/metabase/client/api/credentials.py,sha256=SiHWyWWEDy_Ak4ne0hgXPZCSP6mEuHH26wDhsed_9v8,519
|
|
160
167
|
castor_extractor/visualization/metabase/client/db/__init__.py,sha256=nawDhJ-JGlpM6VMzZZRjf066QXk9kWzZr6l9n6OHTZ0,76
|
|
161
168
|
castor_extractor/visualization/metabase/client/db/client.py,sha256=s38mubBaun4LfYWXqk_fyObWTk9f69AorDrXyW4HNiw,3369
|
|
162
|
-
castor_extractor/visualization/metabase/client/db/credentials.py,sha256=
|
|
169
|
+
castor_extractor/visualization/metabase/client/db/credentials.py,sha256=LrtfUd2c1jAAFzxu64suIwvZe2dJnZ8suv9vGTnXtrI,746
|
|
163
170
|
castor_extractor/visualization/metabase/client/db/queries/.sqlfluff,sha256=sOQQOpAa9QMj9cBlulfmt-DZ_kQzMpzSAEnh10QGSB0,76
|
|
164
171
|
castor_extractor/visualization/metabase/client/db/queries/base_url.sql,sha256=p2EL9kdt-hw_yh3aeCE91AXEB4RrYAbG2QrBBNqQjDE,79
|
|
165
172
|
castor_extractor/visualization/metabase/client/db/queries/card.sql,sha256=U4-ZrZP5XS7Kssd3CFlpGrABbHAMK09Bh_yeT3z7Yk8,419
|
|
@@ -182,7 +189,7 @@ castor_extractor/visualization/mode/client/client.py,sha256=HJbwLeKWkvw4DNMHTZuX
|
|
|
182
189
|
castor_extractor/visualization/mode/client/client_test.json,sha256=oGmzg7fTXQa67xvsvFKmogcNpj8hfMbzmlY7iP9oa9g,2087
|
|
183
190
|
castor_extractor/visualization/mode/client/client_test.py,sha256=zljcREpnIm3ZQtj2Nmza1PlAuQiXZlz0-HgtLfxomCo,1462
|
|
184
191
|
castor_extractor/visualization/mode/client/constants.py,sha256=_Si5AF6VnpoSfnNNgb5afV1mby1E-_1GGE2WLSR_fRI,453
|
|
185
|
-
castor_extractor/visualization/mode/client/credentials.py,sha256=
|
|
192
|
+
castor_extractor/visualization/mode/client/credentials.py,sha256=ptIpCCpoNt06yYaWQgl3Xu78_jVMoqsqWAGqQXVFZlo,606
|
|
186
193
|
castor_extractor/visualization/mode/errors.py,sha256=SKpFT2AiLOuWx2VRLyO7jbAiKcGDFXXrsebpNEKtr0E,1495
|
|
187
194
|
castor_extractor/visualization/mode/extract.py,sha256=g_X7k8L8MldFPbuwOrnyNMF3BEH1r-IAAgNmi3KLF-U,1623
|
|
188
195
|
castor_extractor/visualization/powerbi/__init__.py,sha256=VylJP6kw4yd2zGj31V-U9UXdhnPS9MK2Fz7Sd9KTkKI,119
|
|
@@ -203,7 +210,7 @@ castor_extractor/visualization/qlik/client/constants.py,sha256=HM7_czk2v87bf3HCA
|
|
|
203
210
|
castor_extractor/visualization/qlik/client/engine/__init__.py,sha256=UhqIEpQy9TO0sXz1qS9vMZjGGml5iKvASKGYct9cNKw,77
|
|
204
211
|
castor_extractor/visualization/qlik/client/engine/client.py,sha256=aPrIJVQCePwKUUUzYuKlhas6wnNMbQcYga8WKhuisOQ,3324
|
|
205
212
|
castor_extractor/visualization/qlik/client/engine/constants.py,sha256=acVM_AA0WXR0YWnUo06L5WZkKGQuIJgwTAVfnvJHTHo,749
|
|
206
|
-
castor_extractor/visualization/qlik/client/engine/credentials.py,sha256=
|
|
213
|
+
castor_extractor/visualization/qlik/client/engine/credentials.py,sha256=iFbaLGMb2FYinb4yqZozGQefcyonf-eWX0GD8SCadd0,635
|
|
207
214
|
castor_extractor/visualization/qlik/client/engine/error.py,sha256=Ex9dfNjetN0j5LZLZu5HH-PxqbAcAB25hoCsbwBZHEY,1637
|
|
208
215
|
castor_extractor/visualization/qlik/client/engine/error_test.py,sha256=YpyK3nWvOFpYC9JlPsbECkdBlCnZPTojUbimX5ZT1e8,1005
|
|
209
216
|
castor_extractor/visualization/qlik/client/engine/json_rpc.py,sha256=xu6AB7BnGIY2Thj3Hkm09ua6h3_7in8I7Eg4ZdTNbno,1411
|
|
@@ -216,17 +223,16 @@ castor_extractor/visualization/qlik/extract.py,sha256=2ACqmWheVdkIXmDtmhdunf8oyN
|
|
|
216
223
|
castor_extractor/visualization/salesforce_reporting/__init__.py,sha256=MvArD0GKNIpCDvLIYcpKrjMjFLhMyDETK6i3k0Fb6Tk,124
|
|
217
224
|
castor_extractor/visualization/salesforce_reporting/assets.py,sha256=2J-iAmJGGDufOcJUgE47M3-dEcjYXcVyVUNcmHrj79w,271
|
|
218
225
|
castor_extractor/visualization/salesforce_reporting/client/__init__.py,sha256=DIA6f_vNJZqT89qVYxg98Le7QeDn2y0Qew03V3J9t9o,44
|
|
219
|
-
castor_extractor/visualization/salesforce_reporting/client/rest.py,sha256=
|
|
226
|
+
castor_extractor/visualization/salesforce_reporting/client/rest.py,sha256=97ud629qekagQvInQnTk-Ni0mFQKxJWyeYAeKO8XA6I,1866
|
|
220
227
|
castor_extractor/visualization/salesforce_reporting/client/soql.py,sha256=DcJgchC9IYcK_bLdwskwycItCh3wtfKkwj4nyaSn66Q,1646
|
|
221
228
|
castor_extractor/visualization/salesforce_reporting/extract.py,sha256=RMhlf7NeYiAO_8hkFk4-JxTghNbC0vtX3P2M80qt9U8,1339
|
|
222
229
|
castor_extractor/visualization/sigma/__init__.py,sha256=GINql4yJLtjfOJgjHaWNpE13cMtnKNytiFRomwav27Q,114
|
|
223
230
|
castor_extractor/visualization/sigma/assets.py,sha256=JZ1Cpxnml8P3mIJoTUM57hvylB18ErECQXaP5FF63O4,268
|
|
224
231
|
castor_extractor/visualization/sigma/client/__init__.py,sha256=YQv06FBBQHvBMFg_tN0nUcmUp2NCL2s-eFTXG8rXaBg,74
|
|
225
|
-
castor_extractor/visualization/sigma/client/client.py,sha256=
|
|
226
|
-
castor_extractor/visualization/sigma/client/
|
|
227
|
-
castor_extractor/visualization/sigma/client/
|
|
228
|
-
castor_extractor/visualization/sigma/client/
|
|
229
|
-
castor_extractor/visualization/sigma/client/pagination.py,sha256=EZGMaONTzZ15VINUAtH0sOmJae0JlDjOQPKBXK_V8sg,667
|
|
232
|
+
castor_extractor/visualization/sigma/client/client.py,sha256=Gi8GzP_xxjDZDmNRK4pXJUvSPzZCCJpn6ClUTML5amE,6218
|
|
233
|
+
castor_extractor/visualization/sigma/client/credentials.py,sha256=0f2VeDFaNbaZOTN0fPdmx3s-nxxFe35yBF9D_2B2lGI,718
|
|
234
|
+
castor_extractor/visualization/sigma/client/endpoints.py,sha256=DBFphbgoH78_MZUGM_bKBAq28Nl7LWSZ6VRsbxrxtDg,1162
|
|
235
|
+
castor_extractor/visualization/sigma/client/pagination.py,sha256=gHBewkYoJaR0vADzU_VPsNkcAa-6KAC6hplpDL5gT8U,690
|
|
230
236
|
castor_extractor/visualization/sigma/extract.py,sha256=pnArK5-F6DZcO0f3wp3_km_Od0f18Qmw9yTmynJ-2TU,2278
|
|
231
237
|
castor_extractor/visualization/tableau/__init__.py,sha256=hDohrWjkorrX01JMc154aa9vi3ZqBKmA1lkfQtMFfYE,114
|
|
232
238
|
castor_extractor/visualization/tableau/assets.py,sha256=mfBUzcBCLyiU9gnTB_6rvtiB5yXSDU99nezhGC__HQo,1270
|
|
@@ -252,8 +258,8 @@ castor_extractor/visualization/tableau/tests/unit/assets/rest_api/workbook_get.x
|
|
|
252
258
|
castor_extractor/visualization/tableau/tests/unit/graphql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
253
259
|
castor_extractor/visualization/tableau/tests/unit/graphql/paginated_object_test.py,sha256=stFLqx8ifMBe75D62Bq6izn26kLgvxrmyBxGZH2wK4c,1922
|
|
254
260
|
castor_extractor/visualization/tableau/tests/unit/rest_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
255
|
-
castor_extractor/visualization/tableau/tests/unit/rest_api/auth_test.py,sha256=
|
|
256
|
-
castor_extractor/visualization/tableau/tests/unit/rest_api/credentials_test.py,sha256=
|
|
261
|
+
castor_extractor/visualization/tableau/tests/unit/rest_api/auth_test.py,sha256=L3LfrD9DGISdg0YZL9Ma0ZE_ab2jWfRNLL_mqrh2vM4,1123
|
|
262
|
+
castor_extractor/visualization/tableau/tests/unit/rest_api/credentials_test.py,sha256=IXemuC0wO_BYuU-wm_O-NUfm92RnIJeu98sogA3pmf4,331
|
|
257
263
|
castor_extractor/visualization/tableau/tests/unit/rest_api/projects_test.py,sha256=ySm56VP4Iy7CZYHUEdrBow9_YKGBc7XwHbvzZRJEKUo,1779
|
|
258
264
|
castor_extractor/visualization/tableau/tests/unit/rest_api/usages_test.py,sha256=OdY9OehUEjSsHnOJ7lR906oEvIo5k2RV9y-Zvgy_XMs,1401
|
|
259
265
|
castor_extractor/visualization/tableau/tests/unit/rest_api/users_test.py,sha256=-D3mZtnsXQd5xUow8nYo5Ru2Rl9mXDdGGQZ5bVzAmJg,1499
|
|
@@ -264,15 +270,18 @@ castor_extractor/visualization/tableau/tsc_fields.py,sha256=BoV6XVu-HUan9hxeYRbv
|
|
|
264
270
|
castor_extractor/visualization/tableau/types.py,sha256=_T3fahMHRkV2TVaYcjITh61T0FLzSBYKD21VurzkF5M,322
|
|
265
271
|
castor_extractor/visualization/tableau/usage.py,sha256=LlFwlbEr-EnYUJjKZha99CRCRrERJ350oAvzBQlp9_s,427
|
|
266
272
|
castor_extractor/visualization/tableau_revamp/__init__.py,sha256=a3DGjQhaz17gBqW-E84TAgupKbqLC40y5Ajo1yn-ot4,156
|
|
267
|
-
castor_extractor/visualization/tableau_revamp/assets.py,sha256=
|
|
273
|
+
castor_extractor/visualization/tableau_revamp/assets.py,sha256=8sJsK6Qixao6xVmVaO1usvs16SjNub9sIx7o-adYV14,659
|
|
268
274
|
castor_extractor/visualization/tableau_revamp/client/__init__.py,sha256=wmS9uLtUiqNYVloi0-DgD8d2qzu3RVZEAtWiaDp6G_M,90
|
|
269
|
-
castor_extractor/visualization/tableau_revamp/client/client.py,sha256=
|
|
275
|
+
castor_extractor/visualization/tableau_revamp/client/client.py,sha256=8pATeVTKslF5HCbN1c_DusysP7lTU51yXPp8uhzWwZg,7165
|
|
276
|
+
castor_extractor/visualization/tableau_revamp/client/client_metadata_api.py,sha256=yNnGR3Tk32TUmaDejaz5fkw2p9DtmMeCv5rsZNOHUfY,3047
|
|
277
|
+
castor_extractor/visualization/tableau_revamp/client/client_rest_api.py,sha256=0g8AddrhzirRCUWR2jrudPR02mk4Of5YilWth7zJO-g,4016
|
|
278
|
+
castor_extractor/visualization/tableau_revamp/client/client_tsc.py,sha256=BBwIOqK2zU66udFRmLGmB_3J1ILGhVOY5Hq4nmsonF0,1853
|
|
270
279
|
castor_extractor/visualization/tableau_revamp/client/credentials.py,sha256=qA-EaX-4rbQRsn8v4zWh5Kh784ndHLjJaoZwnkQgCyo,1905
|
|
271
280
|
castor_extractor/visualization/tableau_revamp/client/errors.py,sha256=dTe1shqmWmAXpDpCz-E24m8dGYjt6rvIGV9qQb4jnvI,150
|
|
272
281
|
castor_extractor/visualization/tableau_revamp/client/gql_queries.py,sha256=-V3ToD5Gi7nmfVB2OxTOZw8dcOiF7_ciSWjjW2UdvvI,2270
|
|
273
|
-
castor_extractor/visualization/tableau_revamp/client/
|
|
274
|
-
castor_extractor/visualization/tableau_revamp/constants.py,sha256=
|
|
275
|
-
castor_extractor/visualization/tableau_revamp/extract.py,sha256=
|
|
282
|
+
castor_extractor/visualization/tableau_revamp/client/rest_fields.py,sha256=gx39X1zMfRVpjmFbgvbgbvtlE0QwxOtk8rZFsIqeGRI,978
|
|
283
|
+
castor_extractor/visualization/tableau_revamp/constants.py,sha256=thS935pJyuZkdciM2EFHbIuTqSFYfB3YGCJYJ_Ls294,55
|
|
284
|
+
castor_extractor/visualization/tableau_revamp/extract.py,sha256=o8ZORM5OXtp51plmDNhk7o0egc0Vf2MOBysjJtRucBI,1289
|
|
276
285
|
castor_extractor/warehouse/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
277
286
|
castor_extractor/warehouse/abstract/__init__.py,sha256=Fdfa026tgOo64MvzVRLHM_F2G-JmcehrF0mh3dHgb7s,419
|
|
278
287
|
castor_extractor/warehouse/abstract/asset.py,sha256=Qs7T2Iw7KHgWVT2aAoBfCQ8tB143cUZY-DRUSkpgvGU,2689
|
|
@@ -299,18 +308,25 @@ castor_extractor/warehouse/bigquery/queries/view_ddl.sql,sha256=obCm-IN9V8_YSZTw
|
|
|
299
308
|
castor_extractor/warehouse/bigquery/query.py,sha256=5Qc8PEa-kQKpTzguj4RNCAwKyvzWt20vAESYNB0lueo,4768
|
|
300
309
|
castor_extractor/warehouse/bigquery/types.py,sha256=DHK3wUaaLyLMp7LP-7QkXTDYpYTZiPtvptAOkpxgp4g,88
|
|
301
310
|
castor_extractor/warehouse/databricks/__init__.py,sha256=YG3YSIJgCFRjjI8eExy9T7qGnfnjWhMFh8c15KTs_BA,184
|
|
302
|
-
castor_extractor/warehouse/databricks/
|
|
303
|
-
castor_extractor/warehouse/databricks/
|
|
311
|
+
castor_extractor/warehouse/databricks/api_client.py,sha256=lfS-DMLlTEsEMAEs7TeH8JmLX74l4Ai0k12nuP2fo2Y,8110
|
|
312
|
+
castor_extractor/warehouse/databricks/api_client_test.py,sha256=YTWC-X7L-XAfK5b39TUgTmR1ifv0QrY5tvLNoSbpmjg,466
|
|
313
|
+
castor_extractor/warehouse/databricks/client.py,sha256=neH-KnyWtxEMApbjIV2uhY7Me3tCpavd1NMnljrT05k,4768
|
|
314
|
+
castor_extractor/warehouse/databricks/client_test.py,sha256=UKr_D3M8mhqV1oL2_3y_6pEzAFLVE3FHDNZh4omFLK4,2286
|
|
304
315
|
castor_extractor/warehouse/databricks/credentials.py,sha256=iphbVynVTQXMEbJy4QaT5fer-GpOi7QtbAlg8R7-Lj4,598
|
|
316
|
+
castor_extractor/warehouse/databricks/endpoints.py,sha256=qPoL9CtPFJdwVuW9rJ37nmeMd-nChOBouEVYb4SlaUE,670
|
|
305
317
|
castor_extractor/warehouse/databricks/extract.py,sha256=VYygE06f7ngYWVlRa48O6drLIZF-_4IBJdyXTYfxZQU,7395
|
|
306
318
|
castor_extractor/warehouse/databricks/format.py,sha256=p252NFzQN1uZdsu5wpP-bMHK0rBBVzallX3-o92Mvh4,6744
|
|
307
319
|
castor_extractor/warehouse/databricks/format_test.py,sha256=ls0IcOElqp_qecAzNbK0zdca7Pms4seCHimbw8NAoAI,3322
|
|
320
|
+
castor_extractor/warehouse/databricks/lineage.py,sha256=qWVXCT9bRYVYPV5hsiUgPcdThsMN-6EeCEDKL8Fykj0,4724
|
|
321
|
+
castor_extractor/warehouse/databricks/lineage_test.py,sha256=EejO4qKH_kJlJSrIap6GvkUi9E55RFvfiySKazAh0_A,1048
|
|
322
|
+
castor_extractor/warehouse/databricks/pagination.py,sha256=pYxdoUBEGkd1p_zQRme60NEn3dBp7H0VxQO3la-gOmc,551
|
|
323
|
+
castor_extractor/warehouse/databricks/sql_client.py,sha256=KBP0rmMQBWw3jshDfv_NpFW8HqPxGfcBkS4d9T9aXvE,2977
|
|
308
324
|
castor_extractor/warehouse/databricks/test_constants.py,sha256=Hm96yq_ltVAKv7WYhYz637r4Cuj-1cCdyOuxMEe3J-Q,2246
|
|
309
325
|
castor_extractor/warehouse/databricks/types.py,sha256=hD6gC8oiT3QSWEvbtgUOGK_lLzzz36sEauB3lS_wxlE,218
|
|
310
|
-
castor_extractor/warehouse/databricks/utils.py,sha256=
|
|
311
|
-
castor_extractor/warehouse/databricks/utils_test.py,sha256=
|
|
326
|
+
castor_extractor/warehouse/databricks/utils.py,sha256=QOYpv50rqxUrr302vdzXJlBRT4CZV8zb7gtmW9g5n2E,1954
|
|
327
|
+
castor_extractor/warehouse/databricks/utils_test.py,sha256=_guTuzRWRTZdDY7ils0X1K8jhI9T877MEtw3x_YDg9I,2415
|
|
312
328
|
castor_extractor/warehouse/mysql/__init__.py,sha256=2KFDogo9GNbApHqw3Vm5t_uNmIRjdp76nmP_WQQMfQY,116
|
|
313
|
-
castor_extractor/warehouse/mysql/client.py,sha256=
|
|
329
|
+
castor_extractor/warehouse/mysql/client.py,sha256=DUDI8Zm24kxYjh9xYgaRZUj8K_JlPjcjr67gmGfFpNs,942
|
|
314
330
|
castor_extractor/warehouse/mysql/client_test.py,sha256=wRTv-3c5chy_HKj-buasNiYOOCIfynYqbabM4Hxdh5E,1052
|
|
315
331
|
castor_extractor/warehouse/mysql/extract.py,sha256=nGDVA1DrMBQEuUBFrNwnzZbUR0SZeg0a8QN2Aemfnto,2124
|
|
316
332
|
castor_extractor/warehouse/mysql/queries/.sqlfluff,sha256=RjzW9cyXVYL1l55HpaC3zFren7CIh9lVGwoODNk2i-4,27
|
|
@@ -348,11 +364,12 @@ castor_extractor/warehouse/redshift/queries/user.sql,sha256=sEXveJAuNvZacvpI6Wfw
|
|
|
348
364
|
castor_extractor/warehouse/redshift/queries/view_ddl.sql,sha256=Pkyh_QT6d4rhTeyiVcqw6O8CRl7NEhk2p7eM5YIn5kg,719
|
|
349
365
|
castor_extractor/warehouse/redshift/query.py,sha256=0C81rkt2cpkWrJIxxwALDyqr-49vlqQM04y_N6wwStc,540
|
|
350
366
|
castor_extractor/warehouse/salesforce/__init__.py,sha256=NR4aNea5jeE1xYqeZ_29deeN84CkN0_D_Z7CLQdJvFY,137
|
|
351
|
-
castor_extractor/warehouse/salesforce/client.py,sha256=
|
|
367
|
+
castor_extractor/warehouse/salesforce/client.py,sha256=NbbXTi_eX0ge815FgsiWh4uUnvZMOAl9_mXA_e172_0,3281
|
|
352
368
|
castor_extractor/warehouse/salesforce/constants.py,sha256=GusduVBCPvwpk_Im6F3bDvXeNQ7hRnCMdIAjIg65RnE,52
|
|
353
369
|
castor_extractor/warehouse/salesforce/extract.py,sha256=GaxkGWhdksDT_rlT24KX8DMpWnhKlhDMAUvBPGalli0,3454
|
|
354
370
|
castor_extractor/warehouse/salesforce/format.py,sha256=eiPM_4i_m3FEg_2jkMYlhaRBg3gTvV-9xQuk8ghJZiM,3289
|
|
355
371
|
castor_extractor/warehouse/salesforce/format_test.py,sha256=6xDtCxNqvLo5JeHCtXyAun62WMzfVaVsvvMGXXfGgmA,2254
|
|
372
|
+
castor_extractor/warehouse/salesforce/pagination.py,sha256=m1S9JRNf6Oe-6dDghYUY5wwTzGzKW5H9pE60PCXMha0,920
|
|
356
373
|
castor_extractor/warehouse/salesforce/soql.py,sha256=XB8ohKwHFfC4Xger7Y84DXLW17IJDye_bZ3FL6DCcOI,1188
|
|
357
374
|
castor_extractor/warehouse/snowflake/__init__.py,sha256=TEGXTyxWp4Tr9gIHb-UFVTRKj6YWmrRtqHruiKSZGiY,174
|
|
358
375
|
castor_extractor/warehouse/snowflake/client.py,sha256=XT0QLVNff_586SDuMe40iu8FCwPDh2uBV5aKc1Ql914,5555
|
|
@@ -375,7 +392,7 @@ castor_extractor/warehouse/snowflake/queries/user.sql,sha256=88V8eRj1NDaD_ufclsK
|
|
|
375
392
|
castor_extractor/warehouse/snowflake/queries/view_ddl.sql,sha256=eWsci_50cxiYIv3N7BKkbXVM3RoIzqSDtohqRnE5kg4,673
|
|
376
393
|
castor_extractor/warehouse/snowflake/query.py,sha256=yDpG4e23xtjEfAKNSAgL9wx17ChFSlvAbig2mJ5ZEC0,1769
|
|
377
394
|
castor_extractor/warehouse/sqlserver/__init__.py,sha256=PdOuYznmvKAbfWAm8UdN47MfEsd9jqPi_dDi3WEo1KY,116
|
|
378
|
-
castor_extractor/warehouse/sqlserver/client.py,sha256=
|
|
395
|
+
castor_extractor/warehouse/sqlserver/client.py,sha256=l6O0OhAKtRqy0oTl9KDYDawgWKc4XCNOA-bVdnMdEjM,1592
|
|
379
396
|
castor_extractor/warehouse/sqlserver/extract.py,sha256=2mBNx9clyrhoiirD635BW-5u6pPoxHyIsB071XoZjho,2087
|
|
380
397
|
castor_extractor/warehouse/sqlserver/queries/.sqlfluff,sha256=yy0KQdz8I_67vnXyX8eeWwOWkxTXvHyVKSVwhURktd8,48
|
|
381
398
|
castor_extractor/warehouse/sqlserver/queries/column.sql,sha256=Szdf8hwcDffRTgtD6zf4ZuIyHIVijFgSDk1rZbKI3g8,2480
|
|
@@ -394,8 +411,8 @@ castor_extractor/warehouse/synapse/queries/schema.sql,sha256=aX9xNrBD_ydwl-znGSF
|
|
|
394
411
|
castor_extractor/warehouse/synapse/queries/table.sql,sha256=mCE8bR1Vb7j7SwZW2gafcXidQ2fo1HwxcybA8wP2Kfs,1049
|
|
395
412
|
castor_extractor/warehouse/synapse/queries/user.sql,sha256=sTb_SS7Zj3AXW1SggKPLNMCd0qoTpL7XI_BJRMaEpBg,67
|
|
396
413
|
castor_extractor/warehouse/synapse/queries/view_ddl.sql,sha256=3EVbp5_yTgdByHFIPLHmnoOnqqLE77SrjAwFDvu4e54,249
|
|
397
|
-
castor_extractor-0.19.
|
|
398
|
-
castor_extractor-0.19.
|
|
399
|
-
castor_extractor-0.19.
|
|
400
|
-
castor_extractor-0.19.
|
|
401
|
-
castor_extractor-0.19.
|
|
414
|
+
castor_extractor-0.19.6.dist-info/LICENCE,sha256=sL-IGa4hweyya1HgzMskrRdybbIa2cktzxb5qmUgDg8,8254
|
|
415
|
+
castor_extractor-0.19.6.dist-info/METADATA,sha256=WwVX_mbh9I8rK33bnNoCeljtxLXNwQQKgCl-pdyJe58,20434
|
|
416
|
+
castor_extractor-0.19.6.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
417
|
+
castor_extractor-0.19.6.dist-info/entry_points.txt,sha256=X_pDYOmhUUMbiAD9h2GZveuGdT8UgL38KJqP44xkvqo,1495
|
|
418
|
+
castor_extractor-0.19.6.dist-info/RECORD,,
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
from typing import Any, Callable, Dict, Literal, Optional
|
|
3
|
-
|
|
4
|
-
import requests
|
|
5
|
-
|
|
6
|
-
from ...types import ExternalAsset
|
|
7
|
-
from ..safe_request import RequestSafeMode, handle_response
|
|
8
|
-
|
|
9
|
-
logger = logging.getLogger(__name__)
|
|
10
|
-
|
|
11
|
-
DEFAULT_TIMEOUT_S = 30
|
|
12
|
-
|
|
13
|
-
# https://requests.readthedocs.io/en/latest/api/#requests.request
|
|
14
|
-
HttpMethod = Literal["GET", "OPTIONS", "HEAD", "POST", "PUT", "PATCH", "DELETE"]
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
def _authentication_header(token: Optional[str] = None) -> Dict[str, str]:
|
|
18
|
-
if token:
|
|
19
|
-
return {"Authorization": f"Bearer {token}"}
|
|
20
|
-
return dict()
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
class APIClient:
|
|
24
|
-
"""
|
|
25
|
-
API client
|
|
26
|
-
- authentication via access token
|
|
27
|
-
"""
|
|
28
|
-
|
|
29
|
-
def __init__(
|
|
30
|
-
self,
|
|
31
|
-
host: str,
|
|
32
|
-
token: Optional[str] = None,
|
|
33
|
-
headers: Optional[Dict[str, str]] = None,
|
|
34
|
-
timeout: int = DEFAULT_TIMEOUT_S,
|
|
35
|
-
safe_mode: RequestSafeMode = RequestSafeMode(),
|
|
36
|
-
):
|
|
37
|
-
self._host = host
|
|
38
|
-
self._token = token or ""
|
|
39
|
-
self._timeout = timeout
|
|
40
|
-
self._base_headers = headers or {}
|
|
41
|
-
self.safe_mode = safe_mode
|
|
42
|
-
|
|
43
|
-
@staticmethod
|
|
44
|
-
def build_url(host: str, path: str):
|
|
45
|
-
if not host.startswith("https://"):
|
|
46
|
-
host = "https://" + host
|
|
47
|
-
return f"{host.strip('/')}/{path}"
|
|
48
|
-
|
|
49
|
-
@property
|
|
50
|
-
def _headers(self):
|
|
51
|
-
"""Returns specified headers and authentication headers altogether"""
|
|
52
|
-
return {**self._base_headers, **_authentication_header(self._token)}
|
|
53
|
-
|
|
54
|
-
def _call(
|
|
55
|
-
self,
|
|
56
|
-
url: str,
|
|
57
|
-
method: HttpMethod = "GET",
|
|
58
|
-
*,
|
|
59
|
-
params: Optional[dict] = None,
|
|
60
|
-
data: Optional[dict] = None,
|
|
61
|
-
processor: Optional[Callable] = None,
|
|
62
|
-
) -> Any:
|
|
63
|
-
logger.debug(f"Calling {method} on {url}")
|
|
64
|
-
response = requests.request(
|
|
65
|
-
method,
|
|
66
|
-
url,
|
|
67
|
-
headers=self._headers,
|
|
68
|
-
params=params,
|
|
69
|
-
json=data,
|
|
70
|
-
timeout=self._timeout,
|
|
71
|
-
)
|
|
72
|
-
response_payload = handle_response(response, self.safe_mode)
|
|
73
|
-
|
|
74
|
-
if processor:
|
|
75
|
-
return processor(response)
|
|
76
|
-
|
|
77
|
-
return response_payload
|
|
78
|
-
|
|
79
|
-
def get(
|
|
80
|
-
self,
|
|
81
|
-
path: str,
|
|
82
|
-
payload: Optional[dict] = None,
|
|
83
|
-
processor: Optional[Callable] = None,
|
|
84
|
-
) -> dict:
|
|
85
|
-
"""path: REST API operation path, such as /api/2.0/clusters/get"""
|
|
86
|
-
url = self.build_url(self._host, path)
|
|
87
|
-
return self._call(url=url, data=payload, processor=processor)
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
from .api import APIClient, _authentication_header
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
def test_APIClient_build_url():
|
|
5
|
-
expected = "https://3.14.azuredatabricks.net/api/2.1/unity-catalog/tables"
|
|
6
|
-
|
|
7
|
-
path = "api/2.1/unity-catalog/tables"
|
|
8
|
-
|
|
9
|
-
host = "3.14.azuredatabricks.net"
|
|
10
|
-
assert expected == APIClient.build_url(host, path)
|
|
11
|
-
|
|
12
|
-
host_with_http = "https://3.14.azuredatabricks.net"
|
|
13
|
-
assert expected == APIClient.build_url(host_with_http, path)
|
|
14
|
-
|
|
15
|
-
host_with_trailing_slash = "https://3.14.azuredatabricks.net/"
|
|
16
|
-
assert expected == APIClient.build_url(host_with_trailing_slash, path)
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
def test__authentication_header():
|
|
20
|
-
expected_headers = {"Authorization": "Bearer my_token"}
|
|
21
|
-
assert _authentication_header("my_token") == expected_headers
|
|
22
|
-
|
|
23
|
-
assert _authentication_header("") == {}
|
|
24
|
-
assert _authentication_header() == {}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
from typing import Any, Callable, Dict, Iterator, Optional, Sequence, TypeVar
|
|
2
|
-
|
|
3
|
-
from .pager import (
|
|
4
|
-
DEFAULT_PER_PAGE,
|
|
5
|
-
AbstractPager,
|
|
6
|
-
PagerLogger,
|
|
7
|
-
PagerStopStrategy,
|
|
8
|
-
)
|
|
9
|
-
|
|
10
|
-
T = TypeVar("T")
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
class PagerOnToken(AbstractPager):
|
|
14
|
-
"""Token-based pagination"""
|
|
15
|
-
|
|
16
|
-
def __init__(
|
|
17
|
-
self,
|
|
18
|
-
callback: Callable[[Optional[str], Optional[int]], Dict[Any, Any]],
|
|
19
|
-
*,
|
|
20
|
-
logger: Optional[PagerLogger] = None,
|
|
21
|
-
start_page: int = 1,
|
|
22
|
-
stop_strategy: PagerStopStrategy = PagerStopStrategy.EMPTY_PAGE,
|
|
23
|
-
):
|
|
24
|
-
self._callback = callback
|
|
25
|
-
self._logger = logger or PagerLogger()
|
|
26
|
-
self._start_page = start_page
|
|
27
|
-
self._stop_strategy = stop_strategy
|
|
28
|
-
|
|
29
|
-
def iterator(
|
|
30
|
-
self,
|
|
31
|
-
per_page: int = DEFAULT_PER_PAGE,
|
|
32
|
-
) -> Iterator[Sequence[T]]:
|
|
33
|
-
"""Yields data provided by the callback as a list using the nexttoken"""
|
|
34
|
-
stop_on_empty_page = self._stop_strategy == PagerStopStrategy.EMPTY_PAGE
|
|
35
|
-
page = self._start_page
|
|
36
|
-
total_results = 0
|
|
37
|
-
page_token = None
|
|
38
|
-
while True:
|
|
39
|
-
results = self._callback(page_token, per_page)
|
|
40
|
-
nb_results = len(results.get("res", []))
|
|
41
|
-
total_results += nb_results
|
|
42
|
-
|
|
43
|
-
if results.get("res"):
|
|
44
|
-
yield results["res"]
|
|
45
|
-
|
|
46
|
-
stop = self.should_stop(nb_results, per_page, stop_on_empty_page)
|
|
47
|
-
page_token = results.get("next_page_token")
|
|
48
|
-
if stop or not page_token:
|
|
49
|
-
break
|
|
50
|
-
page += 1
|
|
51
|
-
|
|
52
|
-
self._logger.on_success(page, total_results)
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
from typing import Any, Callable, Dict, List, Optional
|
|
2
|
-
|
|
3
|
-
from .pager_on_token import PagerOnToken
|
|
4
|
-
|
|
5
|
-
ITEMS = list(range(1000))
|
|
6
|
-
|
|
7
|
-
OStr = Optional[str]
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
def _make_callback_with_token(
|
|
11
|
-
elements: List[Dict[str, str]],
|
|
12
|
-
) -> Callable[[OStr, int], Dict[str, Any]]:
|
|
13
|
-
def _callback(page_token: OStr, per_page: int) -> Dict[str, Any]:
|
|
14
|
-
"""callable with a token that indicates how to retrieve the next page"""
|
|
15
|
-
if page_token:
|
|
16
|
-
_start = int(page_token)
|
|
17
|
-
else:
|
|
18
|
-
_start = 0
|
|
19
|
-
_end = _start + per_page
|
|
20
|
-
return {"res": elements[_start:_end], "next_page_token": str(_end)}
|
|
21
|
-
|
|
22
|
-
return _callback
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
def _make_callback_with_missing_token(
|
|
26
|
-
elements: List[Dict[str, str]],
|
|
27
|
-
) -> Callable[[OStr, int], Dict[str, Any]]:
|
|
28
|
-
def _callback(page_token: OStr, per_page: int) -> Dict[str, Any]:
|
|
29
|
-
"""callable with a token that indicates how to retrieve the next page
|
|
30
|
-
except for the last page"""
|
|
31
|
-
if page_token:
|
|
32
|
-
_start = int(page_token)
|
|
33
|
-
else:
|
|
34
|
-
_start = 0
|
|
35
|
-
_end = _start + per_page
|
|
36
|
-
if _end == len(ITEMS):
|
|
37
|
-
return {"res": elements[_start:_end]}
|
|
38
|
-
return {"res": elements[_start:_end], "next_page_token": str(_end)}
|
|
39
|
-
|
|
40
|
-
return _callback
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
def test_pagerontoken__all():
|
|
44
|
-
"""unit test for PagerOnToken#all()"""
|
|
45
|
-
pager = PagerOnToken(_make_callback_with_token(ITEMS))
|
|
46
|
-
# When no argument provided
|
|
47
|
-
assert pager.all() == ITEMS
|
|
48
|
-
# When per page is less than the number of ITEMS
|
|
49
|
-
assert pager.all(per_page=1) == ITEMS
|
|
50
|
-
# When per page is more than the number of ITEMS
|
|
51
|
-
assert pager.all(per_page=len(ITEMS) + 20) == ITEMS
|
|
52
|
-
|
|
53
|
-
# Same test suite, but no token is provided at the last call
|
|
54
|
-
pager = PagerOnToken(_make_callback_with_missing_token(ITEMS))
|
|
55
|
-
# When no argument provided
|
|
56
|
-
assert pager.all() == ITEMS
|
|
57
|
-
# When per page is less than the number of ITEMS
|
|
58
|
-
assert pager.all(per_page=1) == ITEMS
|
|
59
|
-
# When per page is more than the number of ITEMS
|
|
60
|
-
assert pager.all(per_page=len(ITEMS) + 20) == ITEMS
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
def test_pagerontoken__iterator__pagination():
|
|
64
|
-
"""unit test for PagerOnToken#iterator() (pagination)"""
|
|
65
|
-
pager = PagerOnToken(_make_callback_with_token(ITEMS))
|
|
66
|
-
|
|
67
|
-
def nb_of_pages(per_page: int) -> int:
|
|
68
|
-
return len([page for page in pager.iterator(per_page=per_page)])
|
|
69
|
-
|
|
70
|
-
assert nb_of_pages(per_page=len(ITEMS)) == 1
|
|
71
|
-
assert nb_of_pages(per_page=1) == len(ITEMS)
|
|
72
|
-
assert nb_of_pages(per_page=2) == len(ITEMS) // 2
|
|
73
|
-
assert nb_of_pages(per_page=4) == len(ITEMS) // 4
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
from unittest.mock import Mock, patch
|
|
2
|
-
|
|
3
|
-
from .client import SigmaClient, SigmaCredentials
|
|
4
|
-
|
|
5
|
-
FAKE_CREDENTIALS = SigmaCredentials( # noqa: S106
|
|
6
|
-
host="IamFake",
|
|
7
|
-
client_id="MeTwo",
|
|
8
|
-
api_token="MeThree",
|
|
9
|
-
)
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
def _client() -> SigmaClient:
|
|
13
|
-
return SigmaClient(credentials=FAKE_CREDENTIALS)
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
@patch("requests.get")
|
|
17
|
-
@patch.object(SigmaClient, "_get_headers")
|
|
18
|
-
def test__get(mocked_headers, mocked_request):
|
|
19
|
-
client = _client()
|
|
20
|
-
mocked_headers.return_value = {"header": "MyHeader"}
|
|
21
|
-
fact = {
|
|
22
|
-
"fact": "Lions are the only cats that live in groups, called prides. "
|
|
23
|
-
"Every female within the pride is usually related.",
|
|
24
|
-
"length": 109,
|
|
25
|
-
}
|
|
26
|
-
mocked_request.return_value = Mock(json=lambda: fact, status_code=200)
|
|
27
|
-
|
|
28
|
-
result = client._get("https://catfact.ninja/fact")
|
|
29
|
-
assert result == fact
|
|
30
|
-
|
|
31
|
-
result = client._get("https://catfact.ninja/fact")["length"]
|
|
32
|
-
assert result == 109
|
|
33
|
-
|
|
34
|
-
mocked_request.return_value = Mock("not a json", status_code=200)
|
|
35
|
-
|
|
36
|
-
result = client._get("https/whatev.er")
|
|
37
|
-
assert result == {}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
@patch.object(SigmaClient, "_get")
|
|
41
|
-
@patch.object(SigmaClient, "_get_headers")
|
|
42
|
-
def test__get_with_pagination(mocked_headers, mocked_request):
|
|
43
|
-
client = _client()
|
|
44
|
-
mocked_headers.return_value = {"header": "my_header"}
|
|
45
|
-
mocked_request.return_value = {
|
|
46
|
-
"nextPage": None,
|
|
47
|
-
"entries": ["dataset_1", "dataset_2"],
|
|
48
|
-
"total": 2,
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
assets = client._get_with_pagination("my_endpoint")
|
|
52
|
-
assert list(assets) == ["dataset_1", "dataset_2"]
|
|
53
|
-
|
|
54
|
-
mocked_request.assert_called_with("my_endpoint?page=0")
|