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
@@ -1,4 +1,4 @@
1
- CHANGELOG.md,sha256=Bcv6R9s2GXipza3JFrI01IqqjTCUlQY7SMsAycnLs1A,12721
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=zvnWnYB8FNvh74u_Hkla2DBwfEgaEsJrtHFLiaCWRn4,2977
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=M-5vHaZcvsMBewQclEJiXjFhJdglyq1zhFV-X_pC2YI,4577
45
- castor_extractor/knowledge/notion/client/client_test.py,sha256=M9pnb-bIoz0kyBBtfFvnsvgu3Q8f8pkwJjfL4ynHvlo,1855
46
- castor_extractor/knowledge/notion/client/constants.py,sha256=6JxsCdUSx1iDNXAXL3Dk7gG_wecfQymquYmhHeHkkbI,117
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=aoCD2Yo3GNWWmg5wObU0vY33rk52jQMdhTpB_B_tp2s,399
49
- castor_extractor/knowledge/notion/client/pagination.py,sha256=u-h4JjYeYsgUHkge6wc8Sp9DfD0vSSjScS5n87box_A,324
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=KFTPBlt9vIEEiJ44xbQ2bgmdAWBdg1NA5Dw_u3vARLQ,154
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=7hcPiugu-PZPSEqpwvIbyx5be5WlilPZnOnG9M_UCVo,3011
57
- castor_extractor/quality/soda/client/credentials.py,sha256=66SlmXEBHWPlXipzHV__q2485PxjB0ljva5UXEW2qJk,715
58
- castor_extractor/quality/soda/client/endpoints.py,sha256=iSiURqeODL2GYqG5_kvS-lARLwKRK4j4qgEhL9umt2s,393
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=pyob3yX5aGnpX8s8pqjs9fXRmV9aCzWWHQDGLBkQWyA,1359
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=CRE-xJKm6fVV9dB8ljzB5YoOxX4I1sCD1KSgqs3Y8_Y,161
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=4TQpRaijzDn2p-LsuwLTYzMl8VWMnGgJh4lt8zwlcQM,2427
73
- castor_extractor/utils/client/api_test.py,sha256=0KTlfbUaZbqBLSp7f8Zl-KwDq6-jJ-Wc6-JxIbP1N2I,816
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=9jMkDNrI-B0qSzMK_MeCIGVBt4K4GiH5uLFg2lvHvro,1752
79
- castor_extractor/utils/collection_test.py,sha256=I9xLnBUPiAGj7UDqEd0G6pcgqjcNHJ5DYXbmTXVhBM8,1713
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=IoZnJVkALgEAg5P_fiecrPbukLFsKT8AmL7qA8mov0g,165
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=OsUS3qysHCkgWge8BgBwyuvoWcJ6pR_RQmQDcHlors4,3410
106
- castor_extractor/utils/retry_test.py,sha256=nsMttlmyKygVcffX3Hay8U2S1BspkGPiCmzIXPpLKyk,2230
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=KgqvncwDESb9pVkf4yeI8cRygB0n3QwSWsAUuYBSUWM,2861
113
- castor_extractor/utils/salesforce/client_test.py,sha256=s6UTogjC36jrJOnYA-gFuyTQsvROCt9y_eoD2O41xCg,682
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=gJqbDKq5M2wuYknyzmp-5J_G5w4a9jyFW_-ZpADo9bE,9453
131
- castor_extractor/visualization/domo/client/credentials.py,sha256=_dcoJCQa5dKz2EG-sFJzL663Mvx99phGFsPsEVbgKQI,890
132
- castor_extractor/visualization/domo/client/endpoints.py,sha256=6UI5psMYaIa1Pq_Gulb4cNna7NZ16xMotScX7yg5TRQ,2367
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=-C6M93N2di0XEkvhBLf_Axhu8viY9y5v8wT2vJaEGlo,983
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=sQIROc8lKEEUs496Qhi_Uvk9YV1Is4klqmn6Etvudbs,5935
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=pghxuUJcdaNa6OJGDD6u5SeHGOzZdaozLgiZAMYZXek,530
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=PTA2voPOvU68RjCnoCqK_5IARlSHO3xLHHYvbks9mIA,757
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=fE12wiTeDvyKzDJ3XwXLk7bOW00uyESJpvIVmA9Xekk,617
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=JXDc1x0rw_fqIP7Gj2PS_qWjkNKJgsMsjCgCjORA5bM,646
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=hzaXWLcYt0aAHXK46DbsLmzocjRY1llwrNj8_3TObKs,1849
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=FzMPsBiGEy_FG1sbEEe5zIe5-8RjF6UBeGbQd_cY0-c,7143
226
- castor_extractor/visualization/sigma/client/client_test.py,sha256=BdxJsmTyhslup4vePbkiaoTTaJ9RDY7UfK4OhBpu1Z4,1592
227
- castor_extractor/visualization/sigma/client/credentials.py,sha256=vXFBUeU9XpfmCGAdm8b2dC0tLQ6ITQnGOZcYxKFn_2c,486
228
- castor_extractor/visualization/sigma/client/endpoints.py,sha256=7yNDL0p9wZDE7CcVOj9Z1eP2tdJE1CUT9vbfSEV2kOY,1157
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=TST9rYHMBd9iQjmet1P4xC-Rw2VqwHAfCVLkAlYj6SM,1173
256
- castor_extractor/visualization/tableau/tests/unit/rest_api/credentials_test.py,sha256=m7rKsEIuto8ZH28XcZdo9MWWhwMnx2pK3o5SomNs1tY,419
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=owlwaI2E4UKk1YhkaHgaAXx6gu3Op6EqZ7bjp0tHI6s,351
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=LTg35m0-yaOx9xkVR3i4u_slFU1p0aifvFpr7Znm9ug,9719
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/tsc_fields.py,sha256=WsDliPCo-XsQ7wN-j0gpW9bdxCHvgH-aePywiltzfbU,688
274
- castor_extractor/visualization/tableau_revamp/constants.py,sha256=PcdudAogQhi3e-knalhgliMKjy5ahN0em_-7XSLrnxM,87
275
- castor_extractor/visualization/tableau_revamp/extract.py,sha256=1HV2BE07vd0Hfcv4LLFGq9JBx25fvCzAUeYDA1_wZCk,1461
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/client.py,sha256=Nsl4tnh2sx8dRJb-pyNEXF1wp1HI3pbdZUr-wIzdG1c,21434
303
- castor_extractor/warehouse/databricks/client_test.py,sha256=DpjkcvMbli-SYRNI-41VWG0xtQ4trjDoJBMxKs4CrPU,5625
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=RWRViqLaj2K0in5T5F6OLp7HCm554BCh3zi4CJqOEt8,576
311
- castor_extractor/warehouse/databricks/utils_test.py,sha256=5Qrd_tLNLWrDHX2uQyVUf0vqXJzD44uQGGxDBOkwvUU,503
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=IwoJvbmE5VZkMCP9yHf6ta3_AQPEuBPrZZ3meefbcJs,974
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=F3UdD5-9umEU-u_c7uVtaksg81VZeXRW83BVsFvYDkE,4902
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=8jMmyoTc791GExNl0TQje2B8NtP9SkAIBigIjfAM_hg,1623
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.0.dist-info/LICENCE,sha256=sL-IGa4hweyya1HgzMskrRdybbIa2cktzxb5qmUgDg8,8254
398
- castor_extractor-0.19.0.dist-info/METADATA,sha256=Xi_s8ev26fkioPu6aHSBvaDciP2nVddc7_nF7tg12_g,7217
399
- castor_extractor-0.19.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
400
- castor_extractor-0.19.0.dist-info/entry_points.txt,sha256=X_pDYOmhUUMbiAD9h2GZveuGdT8UgL38KJqP44xkvqo,1495
401
- castor_extractor-0.19.0.dist-info/RECORD,,
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")