castor-extractor 0.17.4__py3-none-any.whl → 0.18.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (92) hide show
  1. CHANGELOG.md +28 -0
  2. DockerfileUsage.md +21 -0
  3. castor_extractor/commands/extract_domo.py +2 -10
  4. castor_extractor/commands/extract_looker.py +2 -13
  5. castor_extractor/commands/extract_metabase_api.py +5 -10
  6. castor_extractor/commands/extract_metabase_db.py +6 -16
  7. castor_extractor/commands/extract_mode.py +2 -13
  8. castor_extractor/commands/extract_powerbi.py +2 -8
  9. castor_extractor/commands/extract_qlik.py +2 -7
  10. castor_extractor/commands/extract_salesforce.py +3 -12
  11. castor_extractor/commands/extract_salesforce_reporting.py +2 -10
  12. castor_extractor/commands/extract_sigma.py +2 -7
  13. castor_extractor/utils/__init__.py +3 -1
  14. castor_extractor/utils/argument_parser.py +7 -0
  15. castor_extractor/utils/argument_parser_test.py +25 -0
  16. castor_extractor/utils/collection.py +8 -0
  17. castor_extractor/utils/safe_request.py +57 -0
  18. castor_extractor/utils/safe_request_test.py +77 -0
  19. castor_extractor/utils/salesforce/__init__.py +1 -2
  20. castor_extractor/utils/salesforce/constants.py +0 -11
  21. castor_extractor/utils/salesforce/credentials.py +22 -45
  22. castor_extractor/visualization/domo/__init__.py +1 -1
  23. castor_extractor/visualization/domo/client/__init__.py +1 -1
  24. castor_extractor/visualization/domo/client/client.py +37 -52
  25. castor_extractor/visualization/domo/client/credentials.py +14 -27
  26. castor_extractor/visualization/domo/extract.py +5 -26
  27. castor_extractor/visualization/looker/__init__.py +6 -1
  28. castor_extractor/visualization/looker/api/__init__.py +2 -1
  29. castor_extractor/visualization/looker/api/client.py +6 -4
  30. castor_extractor/visualization/looker/api/client_test.py +5 -3
  31. castor_extractor/visualization/looker/api/credentials.py +33 -0
  32. castor_extractor/visualization/looker/api/extraction_parameters.py +38 -0
  33. castor_extractor/visualization/looker/api/sdk.py +2 -28
  34. castor_extractor/visualization/looker/constant.py +2 -27
  35. castor_extractor/visualization/looker/constants.py +17 -0
  36. castor_extractor/visualization/looker/extract.py +29 -29
  37. castor_extractor/visualization/metabase/__init__.py +6 -1
  38. castor_extractor/visualization/metabase/client/__init__.py +2 -2
  39. castor_extractor/visualization/metabase/client/api/__init__.py +1 -0
  40. castor_extractor/visualization/metabase/client/api/client.py +8 -14
  41. castor_extractor/visualization/metabase/client/api/credentials.py +13 -40
  42. castor_extractor/visualization/metabase/client/db/__init__.py +1 -0
  43. castor_extractor/visualization/metabase/client/db/client.py +13 -34
  44. castor_extractor/visualization/metabase/client/db/credentials.py +19 -73
  45. castor_extractor/visualization/metabase/errors.py +5 -3
  46. castor_extractor/visualization/metabase/extract.py +3 -3
  47. castor_extractor/visualization/mode/__init__.py +1 -1
  48. castor_extractor/visualization/mode/client/__init__.py +1 -0
  49. castor_extractor/visualization/mode/client/client.py +9 -12
  50. castor_extractor/visualization/mode/client/client_test.py +3 -3
  51. castor_extractor/visualization/mode/client/credentials.py +18 -51
  52. castor_extractor/visualization/mode/extract.py +6 -3
  53. castor_extractor/visualization/powerbi/__init__.py +1 -1
  54. castor_extractor/visualization/powerbi/client/__init__.py +2 -1
  55. castor_extractor/visualization/powerbi/client/credentials.py +17 -9
  56. castor_extractor/visualization/powerbi/client/credentials_test.py +12 -4
  57. castor_extractor/visualization/powerbi/client/rest.py +2 -2
  58. castor_extractor/visualization/powerbi/client/rest_test.py +2 -2
  59. castor_extractor/visualization/powerbi/extract.py +5 -16
  60. castor_extractor/visualization/qlik/__init__.py +5 -1
  61. castor_extractor/visualization/qlik/client/__init__.py +1 -0
  62. castor_extractor/visualization/qlik/client/engine/__init__.py +1 -0
  63. castor_extractor/visualization/qlik/client/engine/client.py +5 -6
  64. castor_extractor/visualization/qlik/client/engine/credentials.py +26 -0
  65. castor_extractor/visualization/qlik/client/master.py +5 -11
  66. castor_extractor/visualization/qlik/client/rest.py +4 -4
  67. castor_extractor/visualization/qlik/client/rest_test.py +6 -2
  68. castor_extractor/visualization/qlik/extract.py +6 -13
  69. castor_extractor/visualization/salesforce_reporting/extract.py +6 -20
  70. castor_extractor/visualization/sigma/__init__.py +1 -1
  71. castor_extractor/visualization/sigma/client/__init__.py +1 -1
  72. castor_extractor/visualization/sigma/client/client.py +5 -4
  73. castor_extractor/visualization/sigma/client/credentials.py +12 -28
  74. castor_extractor/visualization/sigma/extract.py +5 -18
  75. castor_extractor/visualization/tableau_revamp/client/credentials.py +40 -87
  76. castor_extractor/warehouse/databricks/client.py +3 -0
  77. castor_extractor/warehouse/redshift/queries/column.sql +0 -5
  78. castor_extractor/warehouse/salesforce/extract.py +2 -2
  79. castor_extractor/warehouse/salesforce/format.py +5 -3
  80. castor_extractor/warehouse/snowflake/queries/column.sql +0 -1
  81. castor_extractor/warehouse/synapse/queries/column.sql +0 -1
  82. {castor_extractor-0.17.4.dist-info → castor_extractor-0.18.5.dist-info}/METADATA +9 -9
  83. {castor_extractor-0.17.4.dist-info → castor_extractor-0.18.5.dist-info}/RECORD +86 -83
  84. castor_extractor/visualization/domo/client/client_test.py +0 -60
  85. castor_extractor/visualization/domo/constants.py +0 -6
  86. castor_extractor/visualization/looker/env.py +0 -48
  87. castor_extractor/visualization/looker/parameters.py +0 -78
  88. castor_extractor/visualization/qlik/constants.py +0 -3
  89. castor_extractor/visualization/sigma/constants.py +0 -4
  90. {castor_extractor-0.17.4.dist-info → castor_extractor-0.18.5.dist-info}/LICENCE +0 -0
  91. {castor_extractor-0.17.4.dist-info → castor_extractor-0.18.5.dist-info}/WHEEL +0 -0
  92. {castor_extractor-0.17.4.dist-info → castor_extractor-0.18.5.dist-info}/entry_points.txt +0 -0
@@ -2,7 +2,7 @@ import logging
2
2
  from typing import Dict, List, Tuple
3
3
 
4
4
  from ...utils import AbstractStorage, LocalStorage, write_summary
5
- from ...utils.salesforce import to_credentials
5
+ from ...utils.salesforce import SalesforceCredentials
6
6
  from ..abstract import (
7
7
  SupportedAssets,
8
8
  WarehouseAsset,
@@ -93,7 +93,7 @@ def extract_all(**kwargs) -> None:
93
93
  """
94
94
  output_directory, skip_existing = common_args(kwargs)
95
95
 
96
- client = SalesforceClient(credentials=to_credentials(kwargs))
96
+ client = SalesforceClient(credentials=SalesforceCredentials(**kwargs))
97
97
  storage = LocalStorage(directory=output_directory)
98
98
  extractor = SalesforceExtractionProcessor(
99
99
  client=client,
@@ -26,12 +26,14 @@ def _field_description(field: Dict[str, Any]) -> str:
26
26
  def _to_column_payload(field: dict, position: int, table_name: str) -> dict:
27
27
  field_name = field["QualifiedApiName"]
28
28
  return {
29
- "id": f"{table_name}.{field_name}",
30
- "table_id": table_name,
31
29
  "column_name": field_name,
32
- "description": _field_description(field),
33
30
  "data_type": field.get("DataType"),
31
+ "description": _field_description(field),
32
+ "id": f"{table_name}.{field_name}",
34
33
  "ordinal_position": position,
34
+ "salesforce_developer_name": field.get("DeveloperName"),
35
+ "salesforce_tooling_url": field.get("attributes", {}).get("url"),
36
+ "table_id": table_name,
35
37
  }
36
38
 
37
39
 
@@ -28,7 +28,6 @@ SELECT
28
28
  c.table_catalog_id AS database_id,
29
29
  c.table_catalog AS database_name,
30
30
  c.ordinal_position,
31
- c.column_default,
32
31
  c.is_nullable,
33
32
  c.data_type,
34
33
  c.maximum_cardinality,
@@ -18,7 +18,6 @@ SELECT
18
18
  COALESCE(su.uid, pu.uid) AS column_owner_id,
19
19
  ty.name AS data_type,
20
20
  ty.is_nullable AS is_nullable,
21
- sc.column_default AS column_default,
22
21
  c.max_length AS character_maximum_length,
23
22
  o.create_date AS created_at,
24
23
  o.modify_date AS updated_at,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: castor-extractor
3
- Version: 0.17.4
3
+ Version: 0.18.5
4
4
  Summary: Extract your metadata assets.
5
5
  Home-page: https://www.castordoc.com/
6
6
  License: EULA
@@ -37,13 +37,13 @@ Requires-Dist: google-cloud-core (>=2.1.0,<3.0.0)
37
37
  Requires-Dist: google-cloud-storage (>=2,<3)
38
38
  Requires-Dist: google-resumable-media (>=2.0.3,<3.0.0)
39
39
  Requires-Dist: googleapis-common-protos (>=1.53.0,<2.0.0)
40
- Requires-Dist: looker-sdk (>=23.0.0) ; extra == "looker" or extra == "all"
40
+ Requires-Dist: looker-sdk (>=23.0.0,<24.0.0) ; extra == "looker" or extra == "all"
41
41
  Requires-Dist: msal (>=1.20.0,<2.0.0) ; extra == "powerbi" or extra == "all"
42
- Requires-Dist: numpy (<1.25) ; python_version >= "3.8" and python_version < "3.9"
43
- Requires-Dist: numpy (>=1.26,<2) ; python_version >= "3.12" and python_version < "3.13"
44
- Requires-Dist: pandas (>=2,<2.2.0) ; python_version >= "3.9" and python_full_version <= "3.11.0"
45
- Requires-Dist: pandas (>=2.0,<2.1) ; python_version >= "3.8" and python_version < "3.9"
46
- Requires-Dist: pandas (>=2.1,<2.2.0) ; python_version >= "3.12" and python_version < "3.13"
42
+ Requires-Dist: numpy (<1.25) ; (python_version >= "3.8" and python_version < "3.9") and (extra == "bigquery" or extra == "databricks" or extra == "all")
43
+ Requires-Dist: numpy (<2) ; extra == "bigquery" or extra == "databricks" or extra == "all"
44
+ Requires-Dist: numpy (>=1.26) ; (python_version >= "3.12" and python_version < "3.13") and (extra == "bigquery" or extra == "databricks" or extra == "all")
45
+ Requires-Dist: pandas (<2.1) ; (python_version >= "3.8" and python_version < "3.9") and (extra == "databricks" or extra == "all")
46
+ Requires-Dist: pandas (>=2.1) ; (python_version >= "3.12" and python_version < "3.13") and (extra == "databricks" or extra == "all")
47
47
  Requires-Dist: psycopg2-binary (>=2.0.0,<3.0.0) ; extra == "metabase" or extra == "postgres" or extra == "redshift" or extra == "all"
48
48
  Requires-Dist: pycryptodome (>=3.0.0,<4.0.0) ; extra == "metabase" or extra == "all"
49
49
  Requires-Dist: pydantic (>=2.6,<3.0)
@@ -52,13 +52,13 @@ Requires-Dist: pymssql (>=2.2.11,<3.0.0) ; extra == "sqlserver" or extra == "all
52
52
  Requires-Dist: pymysql[rsa] (>=1.1.0,<2.0.0) ; extra == "mysql" or extra == "all"
53
53
  Requires-Dist: python-dateutil (>=2.0.0,<=3.0.0)
54
54
  Requires-Dist: requests (>=2.0.0,<3.0.0)
55
- Requires-Dist: setuptools (>=69,<70)
55
+ Requires-Dist: setuptools (>=70,<71)
56
56
  Requires-Dist: snowflake-connector-python (>=3.4.0,<4.0.0) ; extra == "snowflake" or extra == "all"
57
57
  Requires-Dist: snowflake-sqlalchemy (!=1.2.5,<2.0.0) ; extra == "snowflake" or extra == "all"
58
58
  Requires-Dist: sqlalchemy (>=1.4,<1.5)
59
59
  Requires-Dist: sqlalchemy-bigquery[bqstorage] (>=1.0.0,<=2.0.0) ; extra == "bigquery" or extra == "all"
60
60
  Requires-Dist: sqlalchemy-redshift (>=0.8.14,<0.9.0) ; extra == "redshift" or extra == "all"
61
- Requires-Dist: tableauserverclient (==0.17.0) ; extra == "tableau" or extra == "all"
61
+ Requires-Dist: tableauserverclient (==0.25.0) ; extra == "tableau" or extra == "all"
62
62
  Requires-Dist: tqdm (>=4.0.0,<5.0.0)
63
63
  Requires-Dist: typing-extensions (>=4,<5)
64
64
  Requires-Dist: websocket-client (>=1,<2) ; extra == "qlik" or extra == "all"
@@ -1,24 +1,25 @@
1
- CHANGELOG.md,sha256=zKmrqoaMd1E5ht626viLJ8zXTZdkalHhJyFSOhvx23Y,11267
1
+ CHANGELOG.md,sha256=JT2Xz-gVL-ASKBhU8Hxo07ks_as2hr8MpMjD9APvET8,11835
2
2
  Dockerfile,sha256=HcX5z8OpeSvkScQsN-Y7CNMUig_UB6vTMDl7uqzuLGE,303
3
+ DockerfileUsage.md,sha256=2hkJQF-5JuuzfPZ7IOxgM6QgIQW7l-9oRMFVwyXC4gE,998
3
4
  LICENCE,sha256=sL-IGa4hweyya1HgzMskrRdybbIa2cktzxb5qmUgDg8,8254
4
5
  README.md,sha256=uF6PXm9ocPITlKVSh9afTakHmpLx3TvawLf-CbMP3wM,3578
5
6
  castor_extractor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
7
  castor_extractor/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
8
  castor_extractor/commands/extract_bigquery.py,sha256=dU4OiYO1V0n32orvZnMh1_xtFKF_VxHNXcVsH3otY-g,1269
8
9
  castor_extractor/commands/extract_databricks.py,sha256=SVKyoa-BBUQAM6HRHf1Wdg9-tpICic2yyvXQwHcNBhA,1264
9
- castor_extractor/commands/extract_domo.py,sha256=lwJ7XeYOeLMF2plf5PK3cL56N9n2yjcDsyRM6UFwKTM,1208
10
- castor_extractor/commands/extract_looker.py,sha256=gwjIQPOHrXevgU_o2l8vDHHQT8Sb-mGdwcceb6wJJbg,1483
11
- castor_extractor/commands/extract_metabase_api.py,sha256=VPyEKO2VFXzk_OsbQnDhObE9siuBfoegechCZYPZi2k,778
12
- castor_extractor/commands/extract_metabase_db.py,sha256=l0IYcl930HRzEyPKqvv0p3aLnMybfvIHBSWEECLaTh4,1420
13
- castor_extractor/commands/extract_mode.py,sha256=-y8ML72sRVpBEjo9hB1WZyUPznqxnNn0iS8dfJu_ALg,953
10
+ castor_extractor/commands/extract_domo.py,sha256=jvAawUsUTHrwCn_koK6StmQr4n_b5GyvJi6uu6WS0SM,1061
11
+ castor_extractor/commands/extract_looker.py,sha256=pmz2_ZiC9R0_I64WLfNRcfitTSoWTAoeo2rgZ2lRE-Q,1208
12
+ castor_extractor/commands/extract_metabase_api.py,sha256=5Oqf70wb0M_9QiDVElzZThhedXFy7MmzMVcg7gMhYs4,790
13
+ castor_extractor/commands/extract_metabase_db.py,sha256=oexaEkWpkayV3NnXv00tJkwSix-fiufQd4Ln5qSN2EQ,1259
14
+ castor_extractor/commands/extract_mode.py,sha256=Q4iO-VAKMg4zFPejhAO-foZibL5Ht3jsnhWKwJ0oqUU,823
14
15
  castor_extractor/commands/extract_mysql.py,sha256=7AH5qMzeLTsENCOeJwtesrWg8Vo8MCEq8fx2YT74Mcw,1034
15
16
  castor_extractor/commands/extract_postgres.py,sha256=pX0RnCPi4nw6QQ6wiAuZ_Xt3ZbDuMUG9aQKuqFgJtAU,1154
16
- castor_extractor/commands/extract_powerbi.py,sha256=e6MXDNOafdp0w4ZtOnE5z5o_CxvaodUbbQFk__pDiM4,875
17
- castor_extractor/commands/extract_qlik.py,sha256=mSeyGOprTyBExes-lzp___7tgBS1KeyTVpwKAqMpkiw,989
17
+ castor_extractor/commands/extract_powerbi.py,sha256=f0G5w61KXExJ6Sw39_mJIwqQNpLorE5-LKmZXlUqvKI,783
18
+ castor_extractor/commands/extract_qlik.py,sha256=VBe_xFKh_nR0QSFFIncAaC8yDqBeMa6VunBAga7AeGg,891
18
19
  castor_extractor/commands/extract_redshift.py,sha256=bdLp7d7ImZoKCkWc3f3NXF1imIzMVT43_KPI-x4UVac,1155
19
- castor_extractor/commands/extract_salesforce.py,sha256=s2o799ePjQFYsVwZbrGEflzOIwJKtxUMb9pcF4-K90Y,1400
20
- castor_extractor/commands/extract_salesforce_reporting.py,sha256=rmAo--dl_m2x7TtJ29w1PfsKt9tQDZocTdvwTqj-fnI,1146
21
- castor_extractor/commands/extract_sigma.py,sha256=agwfKj55C81-kect3K6xSJVBv3TDuPT6fGWSTytkQ2o,703
20
+ castor_extractor/commands/extract_salesforce.py,sha256=3j3YTmMkPAwocR-B1ozJQai0UIZPtpmAyWj-hHvdWn4,1226
21
+ castor_extractor/commands/extract_salesforce_reporting.py,sha256=FdANTNiLkIPdm80XMYxWReHjdycLsIa61pyeCD-sUDk,962
22
+ castor_extractor/commands/extract_sigma.py,sha256=sxewHcZ1Doq35V2qnpX_zCKKXkrb1_9bYjUMg7BOW-k,643
22
23
  castor_extractor/commands/extract_snowflake.py,sha256=vYiruxRoo--GeMemOGsSE1w9kcKTh_y4E165HtMVzkM,1982
23
24
  castor_extractor/commands/extract_sqlserver.py,sha256=lwhbcNChaXHZgMgSOch3faVr7WJw-sDU6GHl3lzBt_0,1141
24
25
  castor_extractor/commands/extract_tableau.py,sha256=u-6UCd-kfXwyhNWYxZusqtgTTYkf4gAJS1vRIYWsAVU,1415
@@ -44,7 +45,9 @@ castor_extractor/uploader/env_test.py,sha256=ClCWWtwd2N-5ClIDUxVMeKkWfhhOTxpppsX
44
45
  castor_extractor/uploader/upload.py,sha256=W1TGqO8_PtFdR661qNlh6v-LOIRvoJoda65-5OujFXs,3239
45
46
  castor_extractor/uploader/upload_test.py,sha256=7fwstdQe7FjuwGilsCdFpEQr1qLoR2WTRUzyy93fISw,402
46
47
  castor_extractor/uploader/utils.py,sha256=Tx_i875L2vJ8btOLV3-L0UMEFiyhH8E5n0XXRyLjO0Y,793
47
- castor_extractor/utils/__init__.py,sha256=bmzAOc-PKsVreMJtF7DGpPQeHrVqxWel_BblRftt6Ag,1186
48
+ castor_extractor/utils/__init__.py,sha256=H7VtWoAqT1OWxhvTaylVG_4BrAMI_YD09WyI6vv6PYE,1327
49
+ castor_extractor/utils/argument_parser.py,sha256=S4EcIh3wNDjs3fOrQnttCcPsAmG8m_Txl7xvEh0Q37s,283
50
+ castor_extractor/utils/argument_parser_test.py,sha256=CvqXxX71V6nzKrsdGpUoU4EB_2XDtw7NSvz0DjpZt-s,634
48
51
  castor_extractor/utils/client/__init__.py,sha256=CRE-xJKm6fVV9dB8ljzB5YoOxX4I1sCD1KSgqs3Y8_Y,161
49
52
  castor_extractor/utils/client/abstract.py,sha256=aA5Qcb9TwWDSMq8WpXbGkOB20hehwX2VTpqQAwV76wk,2048
50
53
  castor_extractor/utils/client/api.py,sha256=AGDj2JH__Q_x7RQdodoVazGvjGQJ9TzNqs-XEX6Hrms,1840
@@ -53,7 +56,7 @@ castor_extractor/utils/client/postgres.py,sha256=n6ulaT222WWPY0_6qAZ0MHF0m91HtI9
53
56
  castor_extractor/utils/client/query.py,sha256=O6D5EjD1KmBlwa786Uw4D4kzxx97_HH50xIIeSWt0B8,205
54
57
  castor_extractor/utils/client/uri.py,sha256=jmP9hY-6PRqdc3-vAOdtll_U6q9VCqSqmBAN6QRs3ZI,150
55
58
  castor_extractor/utils/client/uri_test.py,sha256=1XKF6qSseCeD4G4ckaNO07JXfGbt7XUVinOZdpEYrDQ,259
56
- castor_extractor/utils/collection.py,sha256=L4KLCjpgYBEwC7lSPFWBkiUzeLOTv5e-X6c-nibdnmQ,1555
59
+ castor_extractor/utils/collection.py,sha256=9jMkDNrI-B0qSzMK_MeCIGVBt4K4GiH5uLFg2lvHvro,1752
57
60
  castor_extractor/utils/collection_test.py,sha256=I9xLnBUPiAGj7UDqEd0G6pcgqjcNHJ5DYXbmTXVhBM8,1713
58
61
  castor_extractor/utils/constants.py,sha256=qBQprS9U66mS-RIBXiLujdTSV3WvGv40Bc0khP4Abdk,39
59
62
  castor_extractor/utils/dbt/__init__.py,sha256=LHQROlMqYWCc7tcmhdjXtROFpJqUvCg9jPC8avHgD4I,107
@@ -83,12 +86,14 @@ castor_extractor/utils/pager/pager_test.py,sha256=QPBVShSXhkiYZUfnAMs43xnys6CD8p
83
86
  castor_extractor/utils/retry.py,sha256=OsUS3qysHCkgWge8BgBwyuvoWcJ6pR_RQmQDcHlors4,3410
84
87
  castor_extractor/utils/retry_test.py,sha256=nsMttlmyKygVcffX3Hay8U2S1BspkGPiCmzIXPpLKyk,2230
85
88
  castor_extractor/utils/safe.py,sha256=jpfIimwdBSVUvU2DPFrhqpKC_DSYwxQqd08MlIkSODY,1967
89
+ castor_extractor/utils/safe_request.py,sha256=Awpl1mvOMAK7k2fSprLyFyPUyU_f2VN1xP_M57lSsF0,1596
90
+ castor_extractor/utils/safe_request_test.py,sha256=d7T2I5EH6flZrM6aWwsRxLgJrxA0juMH73CyrSt4wYI,2052
86
91
  castor_extractor/utils/safe_test.py,sha256=IHN1Z761tYMFslYC-2HAfkXmFPh4LYSqNLs4QZwykjk,2160
87
- castor_extractor/utils/salesforce/__init__.py,sha256=VGD4vd1Se79z2PAaVCvCSL3yhgWlhQFaVDLZ5aERug0,132
92
+ castor_extractor/utils/salesforce/__init__.py,sha256=fZ2U6t6AFFAIC-DLXvFHBgpBDjTvX0tFgZ8zJoehPAc,88
88
93
  castor_extractor/utils/salesforce/client.py,sha256=KgqvncwDESb9pVkf4yeI8cRygB0n3QwSWsAUuYBSUWM,2861
89
94
  castor_extractor/utils/salesforce/client_test.py,sha256=s6UTogjC36jrJOnYA-gFuyTQsvROCt9y_eoD2O41xCg,682
90
- castor_extractor/utils/salesforce/constants.py,sha256=5sph6dbTCp0mAGWP24WTpC1wsIqeG8yI8-BsKrmV_wA,335
91
- castor_extractor/utils/salesforce/credentials.py,sha256=Wwb-_BlbFBJUl3dhXz72IIqcCfj1F3Zj3JoYr3FYk0A,2045
95
+ castor_extractor/utils/salesforce/constants.py,sha256=7yPmUeyn4IHQiHLDutXE0L_OBd41E5080vFxqA_s4Dc,58
96
+ castor_extractor/utils/salesforce/credentials.py,sha256=Fp-7yaidGpeuaXad1ng6dr1jSOI9Bl2KMVZXPyTBVjM,1148
92
97
  castor_extractor/utils/salesforce/credentials_test.py,sha256=FQRyNk2Jsh6KtYiW20oL43CVnGjXLcAjdFATkE7jK0s,586
93
98
  castor_extractor/utils/store.py,sha256=D_pVaPsu1MKAJC0K47O_vYTs-Afl6oejravAJdvjmGc,2040
94
99
  castor_extractor/utils/string.py,sha256=aW6bbjqEGnh9kT5KZBnMlV6fhdgOJ0ENCkCTDon1xA0,2377
@@ -100,43 +105,42 @@ castor_extractor/utils/validation.py,sha256=NNMkdyvMzConslnyCM3gmciEtPPvefW0vAT2
100
105
  castor_extractor/utils/validation_test.py,sha256=aSetitOCkH_K-Wto9ISOVGso5jGfTUOBLm3AZnvavO8,1181
101
106
  castor_extractor/utils/write.py,sha256=CbLMz-mkUFduwogERwe69GXXVO65HEDirVm-kDJkRxg,2135
102
107
  castor_extractor/visualization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
103
- castor_extractor/visualization/domo/__init__.py,sha256=_mAYVfoVLizfLGF_f6ZiwBhdPpvoJY_diySf33dt3Jo,127
108
+ castor_extractor/visualization/domo/__init__.py,sha256=1axOCPm4RpdIyUt9LQEvlMvbOPllW8rk63h6EjVgJ0Y,111
104
109
  castor_extractor/visualization/domo/assets.py,sha256=bK1urFR2tnlWkVkkhR32mAKMoKbESNlop-CNGx-65PY,206
105
- castor_extractor/visualization/domo/client/__init__.py,sha256=UDszV3IXNC9Wp_j55NZ-6ey2INo0TYtAg2QNIJOjglE,88
106
- castor_extractor/visualization/domo/client/client.py,sha256=8bQgK6TFJcEvSH19ZzVNlsyz86jgIypOAheOCXLORVU,10203
107
- castor_extractor/visualization/domo/client/client_test.py,sha256=pEIL8AALixq9a7sckW-TVqaz1k4oKUtfGUjGpTPOJi0,1790
108
- castor_extractor/visualization/domo/client/credentials.py,sha256=CksQ9W9X6IGjTlYN0okwGAmURMRJKAjctxODAvAJUAo,1148
110
+ castor_extractor/visualization/domo/client/__init__.py,sha256=Do0fU4B8Hhlhahcv734gnJl_ryCztfTBDea7XNCKfB8,72
111
+ castor_extractor/visualization/domo/client/client.py,sha256=IloBGQ0F882Wt-4mzbyZI10tvI8o_96HXhTB5HDTB3E,9475
112
+ castor_extractor/visualization/domo/client/credentials.py,sha256=_dcoJCQa5dKz2EG-sFJzL663Mvx99phGFsPsEVbgKQI,890
109
113
  castor_extractor/visualization/domo/client/endpoints.py,sha256=6UI5psMYaIa1Pq_Gulb4cNna7NZ16xMotScX7yg5TRQ,2367
110
114
  castor_extractor/visualization/domo/client/pagination.py,sha256=ukVkHVzoH4mfZ29H9YcnC2YrdVolP10wv25J6Q3ehRw,821
111
115
  castor_extractor/visualization/domo/client/pagination_test.py,sha256=nV4yZWfus13QFCr-tlBUgwva21VqfpF6P-0ks_Awwis,581
112
- castor_extractor/visualization/domo/constants.py,sha256=AriJZPrCY5Z3HRUANrMu-4U0b7hQK_jRDcxiB-hbrQ4,233
113
- castor_extractor/visualization/domo/extract.py,sha256=GWWRfPEMt4SgzBGFaTcoOabsoOqLRFIEFAtgXwb8LDI,2567
114
- castor_extractor/visualization/looker/__init__.py,sha256=Xu5bJ3743kaP8szMMp2NXCgvM1EdOQgtic4utUlO9Cc,145
115
- castor_extractor/visualization/looker/api/__init__.py,sha256=rN03VMucxIqc0yfd17dIe3ZNFpcg5CA09epn1fKJg90,99
116
- castor_extractor/visualization/looker/api/client.py,sha256=tfV-zx5FAtPCtu_NFIxfSFiQ1AtxxIeAj1sHT5Vug3I,9790
117
- castor_extractor/visualization/looker/api/client_test.py,sha256=wsi20-neBXHaahDqf4nwCp8Ew5fRFCmVHG3OqrePKFs,1868
116
+ castor_extractor/visualization/domo/extract.py,sha256=W_HRz7GGShlU4JVAR017q96wM8fgR8dhUzA-o8icWkc,1846
117
+ castor_extractor/visualization/looker/__init__.py,sha256=mem0020YeP4_5zDnqRXOW3gWfiU1_vl_oKj0E8qA88g,194
118
+ castor_extractor/visualization/looker/api/__init__.py,sha256=HDLsLy3kDWHIplAzLl1_u_bvGlgY6cuplf8myJTdfTg,169
119
+ castor_extractor/visualization/looker/api/client.py,sha256=1iXFpwSL39K5Nimh6pFFg-PJ45nGrrdWjEUMH7cp8r8,9896
120
+ castor_extractor/visualization/looker/api/client_test.py,sha256=a80DpBOorFumXEA3D_qHuRZJqR51-DUtbz65XSLuSHc,1977
118
121
  castor_extractor/visualization/looker/api/constants.py,sha256=pZpq09tqcGi2Vh8orXxn9eil8ewfPUOLKfVuqgV2W-A,4126
119
- castor_extractor/visualization/looker/api/sdk.py,sha256=RiCb-3BAL59iGqLfPEO9490cM05LRv-xGoo-AM-Z4No,2251
122
+ castor_extractor/visualization/looker/api/credentials.py,sha256=-C6M93N2di0XEkvhBLf_Axhu8viY9y5v8wT2vJaEGlo,983
123
+ castor_extractor/visualization/looker/api/extraction_parameters.py,sha256=M5Z2gV9vN-wJfGWq5n7HXzXRJr2Ex-Ed9qIv6_xm2M8,1224
124
+ castor_extractor/visualization/looker/api/sdk.py,sha256=KEhVCpQ__K9yTxSoIDG5y1FFuAhmeHo65pvxh7g90Ts,1600
120
125
  castor_extractor/visualization/looker/api/sdk_test.py,sha256=NHtKZTflPhqzBFHs1TyAQaubgxfzLLwYKFT8rEqR55I,1742
121
126
  castor_extractor/visualization/looker/api/utils.py,sha256=TJqq9UBVFtS33VB1zHzT6kU8f9MOyqXsUcr57ZurJy4,588
122
127
  castor_extractor/visualization/looker/assets.py,sha256=K08nV6MMIpfF9r91TmCO7_62smHzGRv3gR4aIOootMQ,827
123
- castor_extractor/visualization/looker/constant.py,sha256=C3IQWs6pMHSumDVSJH-XcZe1I9z0d1zTEJljfwZllQc,840
124
- castor_extractor/visualization/looker/env.py,sha256=vPqirdeGKm3as2T-tBTjbpulQe8W7-3UE2j-Z57wFXk,1174
125
- castor_extractor/visualization/looker/extract.py,sha256=Y7ZsiUO3uaAkBX0inhjMcEXX4nyBTo9ewthtLfbQhzU,5132
128
+ castor_extractor/visualization/looker/constant.py,sha256=UgfOdu6Xz3stXTeh3pzWus6I3tiPK51NL8EWi0C3G2c,129
129
+ castor_extractor/visualization/looker/constants.py,sha256=522UNbOxx-VDJn4iPUVCpSKCQwrvEOjugsuS1yzyecI,361
130
+ castor_extractor/visualization/looker/extract.py,sha256=Rt_XJIiqfNcBt6hSZMyJc32h4ZeRPRWvrRNrX5Fx13M,5090
126
131
  castor_extractor/visualization/looker/fields.py,sha256=WmiSehmczWTufCLg4r2Ozq2grUpzxDNvIAHyGuOoGs4,636
127
132
  castor_extractor/visualization/looker/fields_test.py,sha256=7Cwq8Qky6aTZg8nCHp1gmPJtd9pGNB4QeMIRRWdHo5w,782
128
133
  castor_extractor/visualization/looker/multithreading.py,sha256=6CrMOy9kMBfhHnZI7XrpNNyBiYYCO3CE4AuIjQVlLH0,2610
129
- castor_extractor/visualization/looker/parameters.py,sha256=Nk2hfrg3L9twU-51Q7Wdp9uaxy8M2_juEebWoLfIMPc,2427
130
- castor_extractor/visualization/metabase/__init__.py,sha256=hSIoVgPzhQh-9H8XRUzga4EZSOYejGdH-qY_hBNGbyw,125
134
+ castor_extractor/visualization/metabase/__init__.py,sha256=3E36cmkMyEgBB6Ot5rWk-N75i0G-7k24QTlc-Iol4pM,193
131
135
  castor_extractor/visualization/metabase/assets.py,sha256=47fMax7QjFKyjEuH2twsjd-l9EM4RJutAZb4GbASdkU,2836
132
- castor_extractor/visualization/metabase/client/__init__.py,sha256=ZMn272PqMoHyWkK0fBuXw9YEnc-OeszNn_BDlMc_FSI,52
133
- castor_extractor/visualization/metabase/client/api/__init__.py,sha256=bWs7daLw2NA9qESCN6anhI_zCjfVmajfKDHFPvjGBz0,30
134
- castor_extractor/visualization/metabase/client/api/client.py,sha256=PT68gbp9TesJkRdnpfjvxNQxLK7nTGrm8CnXh5Z1lzQ,6266
136
+ castor_extractor/visualization/metabase/client/__init__.py,sha256=KBvaPMofBRV3m_sZAnKNCrJGr-Z88EbpdzEzWPQ_uBk,99
137
+ castor_extractor/visualization/metabase/client/api/__init__.py,sha256=BYSPWHY4KbT-LvenNI0pRonxolzZ5HSl6v3-PbJr-7M,78
138
+ castor_extractor/visualization/metabase/client/api/client.py,sha256=sQIROc8lKEEUs496Qhi_Uvk9YV1Is4klqmn6Etvudbs,5935
135
139
  castor_extractor/visualization/metabase/client/api/client_test.py,sha256=7Lb5yvrvHQmCIOnFzS2D00oR2Zps1SVxGIAukzRVeKg,559
136
- castor_extractor/visualization/metabase/client/api/credentials.py,sha256=hVj3Gxa99Al_p_rg6xHuWwDkfjddIvy4ZCnwAyx5vh8,1348
137
- castor_extractor/visualization/metabase/client/db/__init__.py,sha256=xmqEI59hvioLxE8LXcH4_njCrBy8_3QjIrZNb6bW6Rs,29
138
- castor_extractor/visualization/metabase/client/db/client.py,sha256=csd7bD7Kxh9rHCcT12Ss9SrAygAjf-Ik66ATBxXMs6M,4041
139
- castor_extractor/visualization/metabase/client/db/credentials.py,sha256=oJ33ECQ8-658bzue0wq-9QggVOeOXMAQMt-Wzj5EJi4,2421
140
+ castor_extractor/visualization/metabase/client/api/credentials.py,sha256=pghxuUJcdaNa6OJGDD6u5SeHGOzZdaozLgiZAMYZXek,530
141
+ castor_extractor/visualization/metabase/client/db/__init__.py,sha256=nawDhJ-JGlpM6VMzZZRjf066QXk9kWzZr6l9n6OHTZ0,76
142
+ castor_extractor/visualization/metabase/client/db/client.py,sha256=s38mubBaun4LfYWXqk_fyObWTk9f69AorDrXyW4HNiw,3369
143
+ castor_extractor/visualization/metabase/client/db/credentials.py,sha256=PTA2voPOvU68RjCnoCqK_5IARlSHO3xLHHYvbks9mIA,757
140
144
  castor_extractor/visualization/metabase/client/db/queries/.sqlfluff,sha256=sOQQOpAa9QMj9cBlulfmt-DZ_kQzMpzSAEnh10QGSB0,76
141
145
  castor_extractor/visualization/metabase/client/db/queries/base_url.sql,sha256=p2EL9kdt-hw_yh3aeCE91AXEB4RrYAbG2QrBBNqQjDE,79
142
146
  castor_extractor/visualization/metabase/client/db/queries/card.sql,sha256=U4-ZrZP5XS7Kssd3CFlpGrABbHAMK09Bh_yeT3z7Yk8,419
@@ -149,63 +153,62 @@ castor_extractor/visualization/metabase/client/db/queries/user.sql,sha256=3aNAqx
149
153
  castor_extractor/visualization/metabase/client/decryption.py,sha256=q1LyFlHUx1xUGFOjvzJJMe0L8MXPIYLleY7ECysLPsI,1076
150
154
  castor_extractor/visualization/metabase/client/decryption_test.py,sha256=qZAIksj1gj5MKjapDPVWz3BrkzZ3Mhd1V0EPzG2vb0w,590
151
155
  castor_extractor/visualization/metabase/client/shared.py,sha256=0uh-jwdELjZDFo5ZDyHPa7EeNCMTCMgz2k-pPQq99VI,389
152
- castor_extractor/visualization/metabase/errors.py,sha256=QLGm7qBQP-BY1lKlUf_ulPTjQ8uWrKvYj8t0_I6D124,1006
153
- castor_extractor/visualization/metabase/extract.py,sha256=iIxBLo7dbFBUrXNPE80gTnxkHP0pPVmzVxOD2Q3Ebyg,1777
156
+ castor_extractor/visualization/metabase/errors.py,sha256=A6uykA5IO-TwcnyoJsqzNFjPHIokmSRawL1Nkiv6750,1074
157
+ castor_extractor/visualization/metabase/extract.py,sha256=IK6Ri5AstlGr_2VgvemZcwnWv4G__IrZbrdkaHmbCKA,1760
154
158
  castor_extractor/visualization/metabase/types.py,sha256=2dBZCUs5_x_y2rWbUVo6IGDWbgRZQm-c-tNetbkBzg4,45
155
- castor_extractor/visualization/mode/__init__.py,sha256=0xitUMLcklQKzeKyWtp_wMrnFXC2iJDSNipuuKiEU6Y,117
159
+ castor_extractor/visualization/mode/__init__.py,sha256=AoXzz7dGzyjDm0mjUNmkCiT9CpkA-t_z_YEXwpxpOwI,149
156
160
  castor_extractor/visualization/mode/assets.py,sha256=Gc8Z2oi5Jn8yyh9tj6OqYYYi2-gJ4zgos6XWLxirAzM,1574
157
- castor_extractor/visualization/mode/client/__init__.py,sha256=MF64bwUCd4sm3dvcxZnkb4ujHtxT_KeuXdD0nVieEt4,27
158
- castor_extractor/visualization/mode/client/client.py,sha256=bYKs4CgP5GzPGNPjnrBwLvWprpY9iRWzVX0RyAPSycA,7826
161
+ castor_extractor/visualization/mode/client/__init__.py,sha256=iuxNaKR2KpBukDSVqpfgMoCVh5ilB3wiMvESROioxAw,68
162
+ castor_extractor/visualization/mode/client/client.py,sha256=CLuPCLFs0jgcJnBJ_BHfjjv5RLUdc5pqq15vQ3QcK74,7615
159
163
  castor_extractor/visualization/mode/client/client_test.json,sha256=oGmzg7fTXQa67xvsvFKmogcNpj8hfMbzmlY7iP9oa9g,2087
160
- castor_extractor/visualization/mode/client/client_test.py,sha256=GEDApDWDcOQySTX2tfUqMdw7YMap_dblSl6zz-G1XDQ,1424
164
+ castor_extractor/visualization/mode/client/client_test.py,sha256=zljcREpnIm3ZQtj2Nmza1PlAuQiXZlz0-HgtLfxomCo,1462
161
165
  castor_extractor/visualization/mode/client/constants.py,sha256=_Si5AF6VnpoSfnNNgb5afV1mby1E-_1GGE2WLSR_fRI,453
162
- castor_extractor/visualization/mode/client/credentials.py,sha256=VEwPY-dYrSyyCdggf-K8GSKJ_ntAgh4jRmgyhi_RZ8A,1650
166
+ castor_extractor/visualization/mode/client/credentials.py,sha256=fE12wiTeDvyKzDJ3XwXLk7bOW00uyESJpvIVmA9Xekk,617
163
167
  castor_extractor/visualization/mode/errors.py,sha256=SKpFT2AiLOuWx2VRLyO7jbAiKcGDFXXrsebpNEKtr0E,1495
164
- castor_extractor/visualization/mode/extract.py,sha256=ZmIOmVZ8_fo4qXe15G5Sis_IzZv1ToJkC_qrETJcjrM,1559
165
- castor_extractor/visualization/powerbi/__init__.py,sha256=XSr_fNSsR-EPuGOFo7Ai1r7SttiN7bzD3jyYRFXUWgQ,106
168
+ castor_extractor/visualization/mode/extract.py,sha256=g_X7k8L8MldFPbuwOrnyNMF3BEH1r-IAAgNmi3KLF-U,1623
169
+ castor_extractor/visualization/powerbi/__init__.py,sha256=VylJP6kw4yd2zGj31V-U9UXdhnPS9MK2Fz7Sd9KTkKI,119
166
170
  castor_extractor/visualization/powerbi/assets.py,sha256=SASUjxtoOMag3NAlZfhpCy0sLap7WfENEMaEZuBrw6o,801
167
- castor_extractor/visualization/powerbi/client/__init__.py,sha256=hU8LE1gV9RttTGJiwVpEa9xDLR4IMkUdshQGthg4zzE,62
171
+ castor_extractor/visualization/powerbi/client/__init__.py,sha256=ewaEKS_shQlBbCpf-12J-bx3aUIpxbFZRJUL4eNOOno,97
168
172
  castor_extractor/visualization/powerbi/client/constants.py,sha256=gpcWE3Ov2xvZAZCqOsvzLtd3cWmfZBeQWvLnnt7-gac,2356
169
- castor_extractor/visualization/powerbi/client/credentials.py,sha256=iiYaCa2FM1PBHv4YA0Z1LgdX9gnaQhvHGD0LQb7Tcxw,465
170
- castor_extractor/visualization/powerbi/client/credentials_test.py,sha256=23ZlLCvsPB_fmqntnzULkv0mMRE8NCzBXtWS6wupJn4,787
171
- castor_extractor/visualization/powerbi/client/rest.py,sha256=_MhJYa9dKla4bMv01GZLFdAMrr6gwHdSWuc_D63gMF0,9949
172
- castor_extractor/visualization/powerbi/client/rest_test.py,sha256=yAfsksL-4SZ6gxRjAWGqIGUAX5Gz44j56r-jRlPGDro,8514
173
+ castor_extractor/visualization/powerbi/client/credentials.py,sha256=z2p3KbA095LFV8XCGV6xLdHuPgOy5sQwCIAjkPgl5n8,772
174
+ castor_extractor/visualization/powerbi/client/credentials_test.py,sha256=Zp7upzTUoGSArg-ujP0d9dGx31OMubIuA3S8X5Flv9Y,1016
175
+ castor_extractor/visualization/powerbi/client/rest.py,sha256=oBPc7n58We2TAcL7IuXPybbe1hFYMXG6iQC3x9b7SRc,9963
176
+ castor_extractor/visualization/powerbi/client/rest_test.py,sha256=WMd8042r0nbUZECCVVC9JpJuNica2qlQBBbM8QuYfcQ,8528
173
177
  castor_extractor/visualization/powerbi/client/utils.py,sha256=0RcoWcKOdvIGH4f3lYDvufmiMo4tr_ABFlITSrvXjTs,541
174
178
  castor_extractor/visualization/powerbi/client/utils_test.py,sha256=ULHL2JLrcv0xjW2r7QF_ce2OaGeeSzajkMDywJ8ZdVA,719
175
- castor_extractor/visualization/powerbi/extract.py,sha256=0rTvI5CiWTpoJx6bGdpShdl4eMBWjuWbRpKvisuLPbw,1328
176
- castor_extractor/visualization/qlik/__init__.py,sha256=78EYR5fCiEG69Woctc_k3S7AY6P4ObkuZBROalC0iFQ,143
179
+ castor_extractor/visualization/powerbi/extract.py,sha256=OPF2QxP44iruQWARmpAx1HSDj7NLadPApIWVl1yRVZI,1101
180
+ castor_extractor/visualization/qlik/__init__.py,sha256=u6lIfm_WOykBwt6SlaB7C0Dtx37XBliUbM5oWv26gC8,177
177
181
  castor_extractor/visualization/qlik/assets.py,sha256=cG3Cqrj2s4inAqfW6dOaxRape2RPiCeGSYjKsRJRLLo,1657
178
- castor_extractor/visualization/qlik/client/__init__.py,sha256=Q8JRKGWWZB0X0g1iqF-cUEvIHHA3CMqgpz19UCkfp5k,94
182
+ castor_extractor/visualization/qlik/client/__init__.py,sha256=5O5N9Jrt3d99agFEJ28lKWs2KkDaXK-lZ07IUtLj56M,130
179
183
  castor_extractor/visualization/qlik/client/constants.py,sha256=HM7_czk2v87bf3HCAIaNVhaSREI8-9ygaOmK69HquZQ,786
180
- castor_extractor/visualization/qlik/client/engine/__init__.py,sha256=0QCTW_N6RmqBq6pr-YTkgQN6UsOETZ6HHeF_2BGa_E4,36
181
- castor_extractor/visualization/qlik/client/engine/client.py,sha256=bC1-FfU09mSGY8RzVPMxsBQD63hT7pc1HsRjxf1yzCs,2537
184
+ castor_extractor/visualization/qlik/client/engine/__init__.py,sha256=UhqIEpQy9TO0sXz1qS9vMZjGGml5iKvASKGYct9cNKw,77
185
+ castor_extractor/visualization/qlik/client/engine/client.py,sha256=hibqb7Ve6qP-wIkv5oIlcP8bgbgeZhAH3ZTOFINtlVA,2569
182
186
  castor_extractor/visualization/qlik/client/engine/constants.py,sha256=euPZnUpr8p3M7BAA3IPWmcwEoXb2POPC8CxTjt8xd70,707
187
+ castor_extractor/visualization/qlik/client/engine/credentials.py,sha256=JXDc1x0rw_fqIP7Gj2PS_qWjkNKJgsMsjCgCjORA5bM,646
183
188
  castor_extractor/visualization/qlik/client/engine/error.py,sha256=xdVMOsz5iaUK343-X5vkhxSrVmdeWom7DF0sDT-CtNQ,1229
184
189
  castor_extractor/visualization/qlik/client/engine/error_test.py,sha256=YpyK3nWvOFpYC9JlPsbECkdBlCnZPTojUbimX5ZT1e8,1005
185
190
  castor_extractor/visualization/qlik/client/engine/json_rpc.py,sha256=xu6AB7BnGIY2Thj3Hkm09ua6h3_7in8I7Eg4ZdTNbno,1411
186
191
  castor_extractor/visualization/qlik/client/engine/json_rpc_test.py,sha256=WobE7aOnGwixS021xBqFDGWmUhW0u8m7nX0kFs8nyC8,1304
187
192
  castor_extractor/visualization/qlik/client/engine/websocket.py,sha256=KVgymI51s7_FPWEEDcalbAJa7sOrjjtDFAusl-lduGs,2032
188
- castor_extractor/visualization/qlik/client/master.py,sha256=eEv9RuFfssId6xpqBk04lIHuh_LBpG6uqx_5aMsUtJM,3261
189
- castor_extractor/visualization/qlik/client/rest.py,sha256=EkHEs3_Vrmy0Ex5b9M_klmfn6P6i1ESAf_8pWH2gte8,5966
190
- castor_extractor/visualization/qlik/client/rest_test.py,sha256=Z2gBTokUVv-JapBtrY2nZDJzBtOusRq6_lJutVvzqG8,1684
191
- castor_extractor/visualization/qlik/constants.py,sha256=Pbd1SH3_VI_yEhoDx4PIXBUup-MqXUFjxDkDRr2V4J8,95
192
- castor_extractor/visualization/qlik/extract.py,sha256=1ulrirDzoKEdsWxztR6MHcUAE8CiEMx75esdUE7PAmY,2397
193
+ castor_extractor/visualization/qlik/client/master.py,sha256=MQI62W9zG5wsIE2RZ9p-xuOF2kN1H90JU7H3qXh7CYo,3146
194
+ castor_extractor/visualization/qlik/client/rest.py,sha256=HCAzWkTNiscu_6i-9EAC65-uPqWNORevx4bMKKI-wPs,6015
195
+ castor_extractor/visualization/qlik/client/rest_test.py,sha256=yfiUht6BcpBYS2uGdaKCH-tYe0fQ-joM4MbitKwOf24,1799
196
+ castor_extractor/visualization/qlik/extract.py,sha256=2ACqmWheVdkIXmDtmhdunf8oyNPvTb_2LaMIF9SBZvU,2172
193
197
  castor_extractor/visualization/salesforce_reporting/__init__.py,sha256=MvArD0GKNIpCDvLIYcpKrjMjFLhMyDETK6i3k0Fb6Tk,124
194
198
  castor_extractor/visualization/salesforce_reporting/assets.py,sha256=2J-iAmJGGDufOcJUgE47M3-dEcjYXcVyVUNcmHrj79w,271
195
199
  castor_extractor/visualization/salesforce_reporting/client/__init__.py,sha256=DIA6f_vNJZqT89qVYxg98Le7QeDn2y0Qew03V3J9t9o,44
196
200
  castor_extractor/visualization/salesforce_reporting/client/rest.py,sha256=hzaXWLcYt0aAHXK46DbsLmzocjRY1llwrNj8_3TObKs,1849
197
201
  castor_extractor/visualization/salesforce_reporting/client/soql.py,sha256=DHTi058UEaZKZnxJVmsCouPfA9Lgr3gFY6vY7NiqyMM,1584
198
- castor_extractor/visualization/salesforce_reporting/extract.py,sha256=5QwZwP27uXrFJSf00El7Ku592-9fhmCtTdiUGpNkHZM,1678
199
- castor_extractor/visualization/sigma/__init__.py,sha256=m98AEysUsVHQAWT6m5nvrtLMs22SDQH9G78-IcUwBoY,130
202
+ castor_extractor/visualization/salesforce_reporting/extract.py,sha256=RMhlf7NeYiAO_8hkFk4-JxTghNbC0vtX3P2M80qt9U8,1339
203
+ castor_extractor/visualization/sigma/__init__.py,sha256=GINql4yJLtjfOJgjHaWNpE13cMtnKNytiFRomwav27Q,114
200
204
  castor_extractor/visualization/sigma/assets.py,sha256=JZ1Cpxnml8P3mIJoTUM57hvylB18ErECQXaP5FF63O4,268
201
- castor_extractor/visualization/sigma/client/__init__.py,sha256=sFqsbcwilIxu75njtSbnAIsNlPdRgB39SAInNUf-nbQ,90
202
- castor_extractor/visualization/sigma/client/client.py,sha256=x3f2LMErj_muZ8cLFuVdJbjFyOFt8zVpE-zxT7Ce72Y,7172
205
+ castor_extractor/visualization/sigma/client/__init__.py,sha256=YQv06FBBQHvBMFg_tN0nUcmUp2NCL2s-eFTXG8rXaBg,74
206
+ castor_extractor/visualization/sigma/client/client.py,sha256=FzMPsBiGEy_FG1sbEEe5zIe5-8RjF6UBeGbQd_cY0-c,7143
203
207
  castor_extractor/visualization/sigma/client/client_test.py,sha256=BdxJsmTyhslup4vePbkiaoTTaJ9RDY7UfK4OhBpu1Z4,1592
204
- castor_extractor/visualization/sigma/client/credentials.py,sha256=k3mtaXrBHQdBRk5J2rzFU0YUuO89uX-FjYU1WLqfmjU,797
208
+ castor_extractor/visualization/sigma/client/credentials.py,sha256=vXFBUeU9XpfmCGAdm8b2dC0tLQ6ITQnGOZcYxKFn_2c,486
205
209
  castor_extractor/visualization/sigma/client/endpoints.py,sha256=7yNDL0p9wZDE7CcVOj9Z1eP2tdJE1CUT9vbfSEV2kOY,1157
206
210
  castor_extractor/visualization/sigma/client/pagination.py,sha256=EZGMaONTzZ15VINUAtH0sOmJae0JlDjOQPKBXK_V8sg,667
207
- castor_extractor/visualization/sigma/constants.py,sha256=6oQKTKNQkHP_9GWvSOKeFaXd3pKJLhn9Mfod4nvOLEs,144
208
- castor_extractor/visualization/sigma/extract.py,sha256=OgjUsc1o6lPPaO5XHgCrgQelBrqbdemxKggF4JBPBUI,2678
211
+ castor_extractor/visualization/sigma/extract.py,sha256=pnArK5-F6DZcO0f3wp3_km_Od0f18Qmw9yTmynJ-2TU,2278
209
212
  castor_extractor/visualization/tableau/__init__.py,sha256=hDohrWjkorrX01JMc154aa9vi3ZqBKmA1lkfQtMFfYE,114
210
213
  castor_extractor/visualization/tableau/assets.py,sha256=mfBUzcBCLyiU9gnTB_6rvtiB5yXSDU99nezhGC__HQo,1270
211
214
  castor_extractor/visualization/tableau/client/__init__.py,sha256=FQX1MdxS8Opn3Oyq8eby7suk3ANbLlpzzCPQ3zqvk0I,78
@@ -245,7 +248,7 @@ castor_extractor/visualization/tableau_revamp/__init__.py,sha256=a3DGjQhaz17gBqW
245
248
  castor_extractor/visualization/tableau_revamp/assets.py,sha256=owlwaI2E4UKk1YhkaHgaAXx6gu3Op6EqZ7bjp0tHI6s,351
246
249
  castor_extractor/visualization/tableau_revamp/client/__init__.py,sha256=wmS9uLtUiqNYVloi0-DgD8d2qzu3RVZEAtWiaDp6G_M,90
247
250
  castor_extractor/visualization/tableau_revamp/client/client.py,sha256=RSoHDfz79ma0YJRGpiCihnwLGmoxLzphYrxRVyvByHI,9742
248
- castor_extractor/visualization/tableau_revamp/client/credentials.py,sha256=fHG32egq6ll2U4BNazalMof_plzfCMQjrN9WOs6kezk,3014
251
+ castor_extractor/visualization/tableau_revamp/client/credentials.py,sha256=qA-EaX-4rbQRsn8v4zWh5Kh784ndHLjJaoZwnkQgCyo,1905
249
252
  castor_extractor/visualization/tableau_revamp/client/errors.py,sha256=dTe1shqmWmAXpDpCz-E24m8dGYjt6rvIGV9qQb4jnvI,150
250
253
  castor_extractor/visualization/tableau_revamp/client/gql_queries.py,sha256=-V3ToD5Gi7nmfVB2OxTOZw8dcOiF7_ciSWjjW2UdvvI,2270
251
254
  castor_extractor/visualization/tableau_revamp/client/tsc_fields.py,sha256=WsDliPCo-XsQ7wN-j0gpW9bdxCHvgH-aePywiltzfbU,688
@@ -277,7 +280,7 @@ castor_extractor/warehouse/bigquery/queries/view_ddl.sql,sha256=obCm-IN9V8_YSZTw
277
280
  castor_extractor/warehouse/bigquery/query.py,sha256=hrFfjd5jW2oQnZ6ozlkn-gDe6sCIzu5zSX19T9W6fIk,4162
278
281
  castor_extractor/warehouse/bigquery/types.py,sha256=LZVWSmE57lOemNbB5hBRyYmDk9bFAU4nbRaJWALl6N8,140
279
282
  castor_extractor/warehouse/databricks/__init__.py,sha256=YG3YSIJgCFRjjI8eExy9T7qGnfnjWhMFh8c15KTs_BA,184
280
- castor_extractor/warehouse/databricks/client.py,sha256=pnYb6nl9U33nH6UukYP5piWGYF-m1SP2TYiWiUozM_4,20552
283
+ castor_extractor/warehouse/databricks/client.py,sha256=ohqsCyLdUJCJGTBK-IBHCV2BUujPG2VsOkc8qAapaPk,20636
281
284
  castor_extractor/warehouse/databricks/client_test.py,sha256=KNp4Hi_CC6GwiW2QDJQQwqALfUebuT9D_qL6FuP_8tY,5246
282
285
  castor_extractor/warehouse/databricks/credentials.py,sha256=iphbVynVTQXMEbJy4QaT5fer-GpOi7QtbAlg8R7-Lj4,598
283
286
  castor_extractor/warehouse/databricks/extract.py,sha256=VYygE06f7ngYWVlRa48O6drLIZF-_4IBJdyXTYfxZQU,7395
@@ -315,7 +318,7 @@ castor_extractor/warehouse/redshift/client.py,sha256=My7003HGBhTpS6X5NgYcKwntR7h
315
318
  castor_extractor/warehouse/redshift/client_test.py,sha256=74lZfna71qs80EKAuitJ8_ZjAGtpYHf5tChySinVPoQ,1023
316
319
  castor_extractor/warehouse/redshift/extract.py,sha256=XnAnBSapzXYUWVQKMhVaLlloA-uXEqseOhSt9flVsdw,2331
317
320
  castor_extractor/warehouse/redshift/queries/.sqlfluff,sha256=W4pFQiY8KMtXwn3WguYQJA8cj78VR7K-iokPoZoy5aM,30
318
- castor_extractor/warehouse/redshift/queries/column.sql,sha256=VLmt8yfILajepv5ZEOyinA4101eZKHr1Mew4f2DqDk0,7044
321
+ castor_extractor/warehouse/redshift/queries/column.sql,sha256=ZXdurmaJRD2fejDksU5eh37Q4srmnVrEjSzsrtg_il8,6840
319
322
  castor_extractor/warehouse/redshift/queries/database.sql,sha256=_C0knW159YDfReGuWLjIdvxHzefo1Xg2xw2dJKJzNk8,299
320
323
  castor_extractor/warehouse/redshift/queries/group.sql,sha256=8p0wlqllnwOTiAgiV237DvFYHGOEcYwaHdyqVQg3F6E,101
321
324
  castor_extractor/warehouse/redshift/queries/query.sql,sha256=yZNGnUdebvvDx0J0KMSJ2hNgkK4gPduyOfPM_7-DIfo,3465
@@ -328,8 +331,8 @@ castor_extractor/warehouse/redshift/query.py,sha256=0C81rkt2cpkWrJIxxwALDyqr-49v
328
331
  castor_extractor/warehouse/salesforce/__init__.py,sha256=NR4aNea5jeE1xYqeZ_29deeN84CkN0_D_Z7CLQdJvFY,137
329
332
  castor_extractor/warehouse/salesforce/client.py,sha256=ETnZ3n-GFFH0XohDB2ft74wI1HMspvTefR3k7ne-pmI,3891
330
333
  castor_extractor/warehouse/salesforce/constants.py,sha256=GusduVBCPvwpk_Im6F3bDvXeNQ7hRnCMdIAjIg65RnE,52
331
- castor_extractor/warehouse/salesforce/extract.py,sha256=IbhkCli8bSn7tjhRNlaD_HhfmZmv-5E5ajZfEUh68Hs,3438
332
- castor_extractor/warehouse/salesforce/format.py,sha256=f5mMJyPsVU1ZSLe5WGCUOpj2SyW7_DFfzNVNu_m2aV0,3126
334
+ castor_extractor/warehouse/salesforce/extract.py,sha256=GaxkGWhdksDT_rlT24KX8DMpWnhKlhDMAUvBPGalli0,3454
335
+ castor_extractor/warehouse/salesforce/format.py,sha256=GsWrMEPCMSjP8XuMpDmC5SEMrSp0_xmbCCYQ8PfQebg,3265
333
336
  castor_extractor/warehouse/salesforce/format_test.py,sha256=HBlAYBoCOHaq_QOFudZlpcZb5TyZWV9v-cxK4tklg50,2253
334
337
  castor_extractor/warehouse/salesforce/soql.py,sha256=pAEaJE8ZUcyN3ptBsZGzNcGRhCcU81X6RMlnF1HRMw4,1063
335
338
  castor_extractor/warehouse/snowflake/__init__.py,sha256=TEGXTyxWp4Tr9gIHb-UFVTRKj6YWmrRtqHruiKSZGiY,174
@@ -339,7 +342,7 @@ castor_extractor/warehouse/snowflake/credentials.py,sha256=wbUdbx9jVSHzg2kNDhMFu
339
342
  castor_extractor/warehouse/snowflake/credentials_test.py,sha256=Lkc-DHXOvr50KrqAW4nt_x0IA0Mu_CsBVu6ATnzQB6I,673
340
343
  castor_extractor/warehouse/snowflake/extract.py,sha256=fcze0VBe9OOAFSr25T9L6CY506Vm_xDEvvy8NWuLW1s,2956
341
344
  castor_extractor/warehouse/snowflake/queries/.sqlfluff,sha256=vttrwcr64JVIuvc7WIg9C54cbOkjg_VjXNR7YnTGOPE,31
342
- castor_extractor/warehouse/snowflake/queries/column.sql,sha256=pAW2UNnut0a483OY2rjOXCdCtQg0g254g61Bt51CIB4,1803
345
+ castor_extractor/warehouse/snowflake/queries/column.sql,sha256=Wy-arvS_3Dh0HFrzdpRmBsI58mMlN_5U097s5kMNluQ,1781
343
346
  castor_extractor/warehouse/snowflake/queries/column_lineage.sql,sha256=YKBiZ6zySSNcXLDXwm31EjGIIkkkZc0-S6hI1SRM80o,1179
344
347
  castor_extractor/warehouse/snowflake/queries/database.sql,sha256=ifZXoKUXtsrGOxml6AcNhA4yybIyatH5va7bcp-lgCU,483
345
348
  castor_extractor/warehouse/snowflake/queries/function.sql,sha256=8LRh0ybhd-RldJ8UZspWUm3yv52evq11O2uqIO4KqeQ,372
@@ -365,15 +368,15 @@ castor_extractor/warehouse/sqlserver/query.py,sha256=j_d5-HMnzBouwGfywVZMRSSwbXz
365
368
  castor_extractor/warehouse/synapse/__init__.py,sha256=-VyWS6O9gptZ-FTDnUVDi87r_PUA59dPXPjLG1lwzpY,36
366
369
  castor_extractor/warehouse/synapse/extract.py,sha256=Tvo6BOXsw2T5Suf4b-aCwJf4GzssijjbpVhulBjazAs,538
367
370
  castor_extractor/warehouse/synapse/queries/.sqlfluff,sha256=7eDQrhRQHKUc5zmmNCNG55acRNPMX4mzxylOLf2pM_g,26
368
- castor_extractor/warehouse/synapse/queries/column.sql,sha256=7ZMheQK0iX2VwjNpOlazalkkWM42EvzbdPhz1N7BHlM,1392
371
+ castor_extractor/warehouse/synapse/queries/column.sql,sha256=lNcFoIW3Y0PFOqoOzJEXmPvZvfAsY0AP63Mu2LuPzPo,1351
369
372
  castor_extractor/warehouse/synapse/queries/database.sql,sha256=TwDKFsFda3LXTUPjAm79M80ZMZj0yYM9Ay7RwFOLh8I,138
370
373
  castor_extractor/warehouse/synapse/queries/query.sql,sha256=LKEA3cEdFpVkw-MduM8p_fO2IzshPGcPXRmn06Zqk0Q,1110
371
374
  castor_extractor/warehouse/synapse/queries/schema.sql,sha256=aX9xNrBD_ydwl-znGSFJV4BChIb_5zEXsEMnmM26BY8,250
372
375
  castor_extractor/warehouse/synapse/queries/table.sql,sha256=mCE8bR1Vb7j7SwZW2gafcXidQ2fo1HwxcybA8wP2Kfs,1049
373
376
  castor_extractor/warehouse/synapse/queries/user.sql,sha256=sTb_SS7Zj3AXW1SggKPLNMCd0qoTpL7XI_BJRMaEpBg,67
374
377
  castor_extractor/warehouse/synapse/queries/view_ddl.sql,sha256=3EVbp5_yTgdByHFIPLHmnoOnqqLE77SrjAwFDvu4e54,249
375
- castor_extractor-0.17.4.dist-info/LICENCE,sha256=sL-IGa4hweyya1HgzMskrRdybbIa2cktzxb5qmUgDg8,8254
376
- castor_extractor-0.17.4.dist-info/METADATA,sha256=sEitPBWyBHFOf2L7awhHWNo-BFGB-F5SDKXNwyVlMok,6985
377
- castor_extractor-0.17.4.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
378
- castor_extractor-0.17.4.dist-info/entry_points.txt,sha256=SbyPk58Gh-FRztfCNnUZQ6w7SatzNJFZ6GIJLNsy7tI,1427
379
- castor_extractor-0.17.4.dist-info/RECORD,,
378
+ castor_extractor-0.18.5.dist-info/LICENCE,sha256=sL-IGa4hweyya1HgzMskrRdybbIa2cktzxb5qmUgDg8,8254
379
+ castor_extractor-0.18.5.dist-info/METADATA,sha256=MCiHMiLGVUz69hRClDJHsMECllqppMC4yZkg-22ETNM,7209
380
+ castor_extractor-0.18.5.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
381
+ castor_extractor-0.18.5.dist-info/entry_points.txt,sha256=SbyPk58Gh-FRztfCNnUZQ6w7SatzNJFZ6GIJLNsy7tI,1427
382
+ castor_extractor-0.18.5.dist-info/RECORD,,
@@ -1,60 +0,0 @@
1
- from unittest.mock import patch
2
-
3
- import pytest
4
- import requests
5
-
6
- from .client import DomoClient, DomoCredentials
7
- from .endpoints import EndpointFactory
8
-
9
-
10
- class FakeResponse:
11
- """
12
- Helper class to fake few requests Response capabilities in the test below
13
- """
14
-
15
- def __init__(self, content: dict, status_code: int = 200):
16
- self.content = content
17
- self.status_code = status_code
18
-
19
- def json(self) -> dict:
20
- return self.content
21
-
22
-
23
- @patch.object(DomoClient, "_get")
24
- def test_client___get_element_with_error_status(mock_get):
25
- # init
26
- creds = DomoCredentials("bim", "bam", "boom", "lol")
27
- client = DomoClient(creds)
28
- any_endpoint = EndpointFactory("truc").datasets
29
-
30
- # case no error
31
- content = {"happy": "path"}
32
- mock_get.return_value = FakeResponse(content=content)
33
- assert client._get_element(any_endpoint) == content
34
-
35
- # case error not ignored, no response -> raised
36
- error = requests.exceptions.ConnectionError
37
- mock_get.side_effect = error
38
- with pytest.raises(error):
39
- client._get_element(any_endpoint)
40
-
41
- # case error not ignored, with response -> raised
42
- error = requests.exceptions.ConnectionError
43
- status_code = 403
44
- response = FakeResponse(content={}, status_code=status_code)
45
- mock_get.side_effect = error(response=response)
46
- with pytest.raises(error):
47
- client._get_element(any_endpoint)
48
-
49
- # case error is ignored -> not raised
50
- element = client._get_element(
51
- any_endpoint, ignore_error_codes=(status_code,)
52
- )
53
- assert element == dict()
54
-
55
- # case another error ignored -> raised
56
- with pytest.raises(error):
57
- another_status_code = status_code + 4
58
- client._get_element(
59
- any_endpoint, ignore_error_codes=(another_status_code,)
60
- )
@@ -1,6 +0,0 @@
1
- # environment variable names
2
- API_TOKEN = "CASTOR_DOMO_API_TOKEN" # noqa: S105
3
- BASE_URL = "CASTOR_DOMO_BASE_URL"
4
- CLIENT_ID = "CASTOR_DOMO_CLIENT_ID"
5
- CLOUD_ID = "CLOUD_ID"
6
- DEVELOPER_TOKEN = "CASTOR_DOMO_DEVELOPER_TOKEN" # noqa: S105
@@ -1,48 +0,0 @@
1
- import os
2
-
3
- from .constant import (
4
- DEFAULT_LOOKER_PAGE_SIZE,
5
- DEFAULT_LOOKER_THREAD_POOL_SIZE,
6
- DEFAULT_LOOKER_TIMEOUT_SECOND,
7
- KEY_LOOKER_PAGE_SIZE,
8
- KEY_LOOKER_THREAD_POOL_SIZE,
9
- KEY_LOOKER_TIMEOUT_SECOND,
10
- )
11
-
12
-
13
- def _int_env(key_env_name: str, default_value: int) -> int:
14
- value = os.environ.get(key_env_name, default_value)
15
- try:
16
- return int(value)
17
- except ValueError:
18
- return default_value
19
-
20
-
21
- def page_size() -> int:
22
- """
23
- Either returns the page size parameter from env or from default value
24
- """
25
- return _int_env(
26
- key_env_name=KEY_LOOKER_PAGE_SIZE,
27
- default_value=DEFAULT_LOOKER_PAGE_SIZE,
28
- )
29
-
30
-
31
- def timeout_second() -> int:
32
- """
33
- Either returns the timeout second parameter from env or from default value
34
- """
35
- return _int_env(
36
- key_env_name=KEY_LOOKER_TIMEOUT_SECOND,
37
- default_value=DEFAULT_LOOKER_TIMEOUT_SECOND,
38
- )
39
-
40
-
41
- def thread_pool_size() -> int:
42
- """
43
- Either returns the thread pool size from env or from default value
44
- """
45
- return _int_env(
46
- key_env_name=KEY_LOOKER_THREAD_POOL_SIZE,
47
- default_value=DEFAULT_LOOKER_THREAD_POOL_SIZE,
48
- )
@@ -1,78 +0,0 @@
1
- from typing import NamedTuple, Optional
2
-
3
- from ...utils import OUTPUT_DIR, from_env, validate_baseurl
4
- from .constant import (
5
- BASE_URL,
6
- CLIENT_ID,
7
- CLIENT_SECRET,
8
- LOG_TO_STDOUT,
9
- SEARCH_PER_FOLDER,
10
- )
11
- from .env import thread_pool_size
12
-
13
-
14
- def _valid_thread_pool_size(**kwargs):
15
- """
16
- Checks that the thread pool size is between 1 and 200 inclusive.
17
- https://www.googlecloudcommunity.com/gc/Technical-Tips-Tricks/Is-there-a-limit-to-the-number-of-API-requests-you-can-send-at/ta-p/592612
18
- """
19
- size = kwargs.get("thread_pool_size") or thread_pool_size()
20
- if not 1 <= size <= 200:
21
- raise ValueError("Thread pool size must be between 1 and 200 inclusive")
22
- return size
23
-
24
-
25
- def _bool_env_variable(key: str) -> bool:
26
- parameter = from_env(key, allow_missing=True)
27
- return str(parameter).lower() == "true"
28
-
29
-
30
- class Parameters(NamedTuple):
31
- """Parameters for Looker extraction"""
32
-
33
- base_url: str
34
- client_id: str
35
- client_secret: str
36
- is_safe_mode: bool
37
- log_to_stdout: bool
38
- output_directory: str
39
- search_per_folder: bool
40
- thread_pool_size: int
41
- timeout: Optional[int]
42
-
43
-
44
- def get_parameters(**kwargs) -> Parameters:
45
- """
46
- Returns parameters for Looker extraction whether they come from script
47
- argument, env variable or default value.
48
- """
49
- output_directory = kwargs.get("output_directory") or from_env(OUTPUT_DIR)
50
-
51
- base_url = validate_baseurl(kwargs.get("base_url") or from_env(BASE_URL))
52
- client_id = kwargs.get("client_id") or from_env(CLIENT_ID)
53
- client_secret = kwargs.get("client_secret") or from_env(CLIENT_SECRET)
54
-
55
- thread_pool_size_ = _valid_thread_pool_size(**kwargs)
56
-
57
- # timeout can be set with env variable however we don't use from_env because it has a default value
58
- timeout = kwargs.get("timeout")
59
-
60
- is_safe_mode = kwargs.get("safe_mode", False)
61
- search_per_folder = kwargs.get("search_per_folder") or _bool_env_variable(
62
- SEARCH_PER_FOLDER,
63
- )
64
- log_to_stdout = kwargs.get("log_to_stdout") or _bool_env_variable(
65
- LOG_TO_STDOUT
66
- )
67
-
68
- return Parameters(
69
- base_url=base_url,
70
- client_id=client_id,
71
- client_secret=client_secret,
72
- is_safe_mode=is_safe_mode,
73
- log_to_stdout=log_to_stdout,
74
- output_directory=output_directory,
75
- search_per_folder=search_per_folder,
76
- thread_pool_size=thread_pool_size_,
77
- timeout=timeout,
78
- )