castor-extractor 0.16.1__py3-none-any.whl → 0.16.4__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 (41) hide show
  1. CHANGELOG.md +12 -0
  2. castor_extractor/commands/extract_databricks.py +3 -0
  3. castor_extractor/commands/extract_salesforce.py +43 -0
  4. castor_extractor/commands/extract_salesforce_reporting.py +6 -6
  5. castor_extractor/utils/client/api.py +36 -27
  6. castor_extractor/utils/salesforce/__init__.py +3 -0
  7. castor_extractor/utils/salesforce/client.py +84 -0
  8. castor_extractor/utils/salesforce/client_test.py +21 -0
  9. castor_extractor/utils/salesforce/constants.py +13 -0
  10. castor_extractor/utils/salesforce/credentials.py +65 -0
  11. castor_extractor/{visualization/salesforce_reporting/client → utils/salesforce}/credentials_test.py +3 -2
  12. castor_extractor/visualization/domo/client/client.py +1 -1
  13. castor_extractor/visualization/powerbi/client/constants.py +3 -3
  14. castor_extractor/visualization/powerbi/client/rest.py +14 -8
  15. castor_extractor/visualization/powerbi/client/rest_test.py +61 -27
  16. castor_extractor/visualization/salesforce_reporting/__init__.py +1 -2
  17. castor_extractor/visualization/salesforce_reporting/client/__init__.py +1 -2
  18. castor_extractor/visualization/salesforce_reporting/client/rest.py +7 -90
  19. castor_extractor/visualization/salesforce_reporting/extract.py +10 -8
  20. castor_extractor/visualization/tableau/assets.py +5 -0
  21. castor_extractor/visualization/tableau/client/client.py +10 -0
  22. castor_extractor/visualization/tableau/gql_fields.py +30 -9
  23. castor_extractor/warehouse/databricks/client.py +20 -3
  24. castor_extractor/warehouse/databricks/client_test.py +14 -0
  25. castor_extractor/warehouse/databricks/credentials.py +1 -4
  26. castor_extractor/warehouse/databricks/extract.py +3 -2
  27. castor_extractor/warehouse/databricks/format.py +5 -4
  28. castor_extractor/warehouse/salesforce/__init__.py +6 -0
  29. castor_extractor/warehouse/salesforce/client.py +112 -0
  30. castor_extractor/warehouse/salesforce/constants.py +2 -0
  31. castor_extractor/warehouse/salesforce/extract.py +111 -0
  32. castor_extractor/warehouse/salesforce/format.py +67 -0
  33. castor_extractor/warehouse/salesforce/format_test.py +32 -0
  34. castor_extractor/warehouse/salesforce/soql.py +45 -0
  35. castor_extractor-0.16.4.dist-info/LICENCE +86 -0
  36. {castor_extractor-0.16.1.dist-info → castor_extractor-0.16.4.dist-info}/METADATA +2 -3
  37. {castor_extractor-0.16.1.dist-info → castor_extractor-0.16.4.dist-info}/RECORD +39 -27
  38. {castor_extractor-0.16.1.dist-info → castor_extractor-0.16.4.dist-info}/WHEEL +1 -1
  39. {castor_extractor-0.16.1.dist-info → castor_extractor-0.16.4.dist-info}/entry_points.txt +2 -1
  40. castor_extractor/visualization/salesforce_reporting/client/constants.py +0 -2
  41. castor_extractor/visualization/salesforce_reporting/client/credentials.py +0 -33
@@ -0,0 +1,67 @@
1
+ from typing import Any, Dict, List
2
+
3
+ from .constants import SCHEMA_NAME
4
+
5
+
6
+ def _clean(raw: str) -> str:
7
+ return raw.strip('"')
8
+
9
+
10
+ def _field_description(field: Dict[str, Any]) -> str:
11
+ context: Dict[str, str] = {}
12
+
13
+ field_definition: Dict[str, str] = field.get("FieldDefinition") or {}
14
+ if description := field_definition.get("Description"):
15
+ context["Description"] = _clean(description)
16
+ if help_text := field.get("InlineHelpText"):
17
+ context["Help Text"] = _clean(help_text)
18
+ if compliance_group := field_definition.get("ComplianceGroup"):
19
+ context["Compliance Categorization"] = _clean(compliance_group)
20
+ if security_level := field_definition.get("SecurityClassification"):
21
+ context["Data Sensitivity Level"] = _clean(security_level)
22
+
23
+ return "\n".join([f"- {k}: {v}" for k, v in context.items()])
24
+
25
+
26
+ def _to_column_payload(field: dict, position: int, table_name: str) -> dict:
27
+ field_name = field["QualifiedApiName"]
28
+ return {
29
+ "id": f"{table_name}.{field_name}",
30
+ "table_id": table_name,
31
+ "column_name": field_name,
32
+ "description": _field_description(field),
33
+ "data_type": field.get("DataType"),
34
+ "ordinal_position": position,
35
+ }
36
+
37
+
38
+ def _to_table_payload(table: dict) -> dict:
39
+ return {
40
+ "id": table["QualifiedApiName"],
41
+ "schema_id": SCHEMA_NAME,
42
+ "table_name": table["QualifiedApiName"],
43
+ "description": "",
44
+ "tags": [],
45
+ "type": "TABLE",
46
+ }
47
+
48
+
49
+ class SalesforceFormatter:
50
+ """
51
+ Helper functions that format the response in the format to be exported as
52
+ csv.
53
+ """
54
+
55
+ @staticmethod
56
+ def tables(sobjects: List[dict]) -> List[dict]:
57
+ """formats the raw list of sobjects to tables"""
58
+ return [_to_table_payload(s) for s in sobjects]
59
+
60
+ @staticmethod
61
+ def columns(sobject_fields: Dict[str, List[dict]]) -> List[dict]:
62
+ """formats the raw list of sobject fields to columns"""
63
+ return [
64
+ _to_column_payload(field, idx, table_name)
65
+ for table_name, fields in sobject_fields.items()
66
+ for idx, field in enumerate(fields)
67
+ ]
@@ -0,0 +1,32 @@
1
+ from .format import _field_description
2
+
3
+
4
+ def test__field_description():
5
+
6
+ field = {}
7
+ assert _field_description(field) == ""
8
+
9
+ definition = {}
10
+ field = {"FieldDefinition": definition}
11
+ assert _field_description(field) == ""
12
+
13
+ definition.update({"Description": "foo"})
14
+ assert "foo" in _field_description(field)
15
+
16
+ field.update({"InlineHelpText": "bar"})
17
+ assert "bar" in _field_description(field)
18
+
19
+ definition.update({"ComplianceGroup": "bim"})
20
+ assert "bim" in _field_description(field)
21
+
22
+ definition.update({"SecurityClassification": "bam"})
23
+ description = _field_description(field)
24
+
25
+ assert "bam" in description
26
+ expected = (
27
+ "- Description: foo\n"
28
+ "- Help Text: bar\n"
29
+ "- Compliance Categorization: bim\n"
30
+ "- Data Sensitivity Level: bam"
31
+ )
32
+ assert description == expected
@@ -0,0 +1,45 @@
1
+ SOBJECTS_QUERY_TPL = """
2
+ SELECT
3
+ DeploymentStatus,
4
+ DeveloperName,
5
+ DurableId,
6
+ ExternalSharingModel,
7
+ InternalSharingModel,
8
+ Label,
9
+ PluralLabel,
10
+ QualifiedApiName
11
+ FROM EntityDefinition
12
+ WHERE DurableId > '{start_durable_id}'
13
+ ORDER BY DurableId
14
+ LIMIT {limit}
15
+ """
16
+
17
+
18
+ SOBJECT_FIELDS_QUERY_TPL = """
19
+ SELECT
20
+ DataType,
21
+ DeveloperName,
22
+ Digits,
23
+ FieldDefinition.BusinessOwnerId,
24
+ FieldDefinition.ComplianceGroup,
25
+ FieldDefinition.DataType,
26
+ FieldDefinition.Description,
27
+ FieldDefinition.IsIndexed,
28
+ FieldDefinition.LastModifiedBy.Username,
29
+ FieldDefinition.LastModifiedDate,
30
+ FieldDefinition.SecurityClassification,
31
+ InlineHelpText,
32
+ IsComponent,
33
+ IsCompound,
34
+ IsNillable,
35
+ IsUnique,
36
+ Label,
37
+ Length,
38
+ Precision,
39
+ QualifiedApiName,
40
+ ReferenceTo,
41
+ RelationshipName,
42
+ Scale
43
+ FROM EntityParticle
44
+ WHERE EntityDefinitionId='{entity_definition_id}'
45
+ """
@@ -0,0 +1,86 @@
1
+ # End-User License Agreement (EULA) of "Castor Extractor"
2
+
3
+ This End-User License Agreement ("EULA") is a legal agreement between you and Castor. Our EULA was created by EULA Template (https://www.eulatemplate.com) for "Castor Extractor".
4
+
5
+ This EULA agreement governs your acquisition and use of our "Castor Extractor" software ("Software") directly from Castor or indirectly through a Castor authorized reseller or distributor (a "Reseller").
6
+
7
+ Please read this EULA agreement carefully before completing the installation process and using the "Castor Extractor" software. It provides a license to use the "Castor Extractor" software and contains warranty information and liability disclaimers.
8
+
9
+ If you register for a free trial of the "Castor Extractor" software, this EULA agreement will also govern that trial. By clicking "accept" or installing and/or using the "Castor Extractor" software, you are confirming your acceptance of the Software and agreeing to become bound by the terms of this EULA agreement.
10
+
11
+ If you are entering into this EULA agreement on behalf of a company or other legal entity, you represent that you have the authority to bind such entity and its affiliates to these terms and conditions. If you do not have such authority or if you do not agree with the terms and conditions of this EULA agreement, do not install or use the Software, and you must not accept this EULA agreement.
12
+
13
+ This EULA agreement shall apply only to the Software supplied by Castor herewith regardless of whether other software is referred to or described herein. The terms also apply to any Castor updates, supplements, Internet-based services, and support services for the Software, unless other terms accompany those items on delivery. If so, those terms apply.
14
+
15
+ ## License Grant
16
+
17
+ Castor hereby grants you a personal, non-transferable, non-exclusive licence to use the "Castor Extractor" software on your devices in accordance with the terms of this EULA agreement.
18
+
19
+ You are permitted to load the "Castor Extractor" software (for example a PC, laptop, mobile or tablet) under your control. You are responsible for ensuring your device meets the minimum requirements of the "Castor Extractor" software.
20
+
21
+ You are not permitted to:
22
+
23
+ - Edit, alter, modify, adapt, translate or otherwise change the whole or any part of the Software nor permit the whole or any part of the Software to be combined with or become incorporated in any other software, nor decompile, disassemble or reverse engineer the Software or attempt to do any such things
24
+ - Reproduce, copy, distribute, resell or otherwise use the Software for any commercial purpose
25
+ - Allow any third party to use the Software on behalf of or for the benefit of any third party
26
+ - Use the Software in any way which breaches any applicable local, national or international law
27
+ - use the Software for any purpose that Castor considers is a breach of this EULA agreement
28
+
29
+ ## Intellectual Property and Ownership
30
+
31
+ Castor shall at all times retain ownership of the Software as originally downloaded by you and all subsequent downloads of the Software by you. The Software (and the copyright, and other intellectual property rights of whatever nature in the Software, including any modifications made thereto) are and shall remain the property of Castor.
32
+
33
+ Castor reserves the right to grant licences to use the Software to third parties.
34
+
35
+ ## Termination
36
+
37
+ This EULA agreement is effective from the date you first use the Software and shall continue until terminated. You may terminate it at any time upon written notice to Castor.
38
+
39
+ It will also terminate immediately if you fail to comply with any term of this EULA agreement. Upon such termination, the licenses granted by this EULA agreement will immediately terminate and you agree to stop all access and use of the Software. The provisions that by their nature continue and survive will survive any termination of this EULA agreement.
40
+
41
+ ## Governing Law
42
+
43
+ This EULA agreement, and any dispute arising out of or in connection with this EULA agreement, shall be governed by and construed in accordance with the laws of France.
44
+ # End-User License Agreement (EULA) of "Castor Extractor"
45
+
46
+ This End-User License Agreement ("EULA") is a legal agreement between you and Castor. Our EULA was created by EULA Template (https://www.eulatemplate.com) for "Castor Extractor".
47
+
48
+ This EULA agreement governs your acquisition and use of our "Castor Extractor" software ("Software") directly from Castor or indirectly through a Castor authorized reseller or distributor (a "Reseller").
49
+
50
+ Please read this EULA agreement carefully before completing the installation process and using the "Castor Extractor" software. It provides a license to use the "Castor Extractor" software and contains warranty information and liability disclaimers.
51
+
52
+ If you register for a free trial of the "Castor Extractor" software, this EULA agreement will also govern that trial. By clicking "accept" or installing and/or using the "Castor Extractor" software, you are confirming your acceptance of the Software and agreeing to become bound by the terms of this EULA agreement.
53
+
54
+ If you are entering into this EULA agreement on behalf of a company or other legal entity, you represent that you have the authority to bind such entity and its affiliates to these terms and conditions. If you do not have such authority or if you do not agree with the terms and conditions of this EULA agreement, do not install or use the Software, and you must not accept this EULA agreement.
55
+
56
+ This EULA agreement shall apply only to the Software supplied by Castor herewith regardless of whether other software is referred to or described herein. The terms also apply to any Castor updates, supplements, Internet-based services, and support services for the Software, unless other terms accompany those items on delivery. If so, those terms apply.
57
+
58
+ ## License Grant
59
+
60
+ Castor hereby grants you a personal, non-transferable, non-exclusive licence to use the "Castor Extractor" software on your devices in accordance with the terms of this EULA agreement.
61
+
62
+ You are permitted to load the "Castor Extractor" software (for example a PC, laptop, mobile or tablet) under your control. You are responsible for ensuring your device meets the minimum requirements of the "Castor Extractor" software.
63
+
64
+ You are not permitted to:
65
+
66
+ - Edit, alter, modify, adapt, translate or otherwise change the whole or any part of the Software nor permit the whole or any part of the Software to be combined with or become incorporated in any other software, nor decompile, disassemble or reverse engineer the Software or attempt to do any such things
67
+ - Reproduce, copy, distribute, resell or otherwise use the Software for any commercial purpose
68
+ - Allow any third party to use the Software on behalf of or for the benefit of any third party
69
+ - Use the Software in any way which breaches any applicable local, national or international law
70
+ - use the Software for any purpose that Castor considers is a breach of this EULA agreement
71
+
72
+ ## Intellectual Property and Ownership
73
+
74
+ Castor shall at all times retain ownership of the Software as originally downloaded by you and all subsequent downloads of the Software by you. The Software (and the copyright, and other intellectual property rights of whatever nature in the Software, including any modifications made thereto) are and shall remain the property of Castor.
75
+
76
+ Castor reserves the right to grant licences to use the Software to third parties.
77
+
78
+ ## Termination
79
+
80
+ This EULA agreement is effective from the date you first use the Software and shall continue until terminated. You may terminate it at any time upon written notice to Castor.
81
+
82
+ It will also terminate immediately if you fail to comply with any term of this EULA agreement. Upon such termination, the licenses granted by this EULA agreement will immediately terminate and you agree to stop all access and use of the Software. The provisions that by their nature continue and survive will survive any termination of this EULA agreement.
83
+
84
+ ## Governing Law
85
+
86
+ This EULA agreement, and any dispute arising out of or in connection with this EULA agreement, shall be governed by and construed in accordance with the laws of France.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: castor-extractor
3
- Version: 0.16.1
3
+ Version: 0.16.4
4
4
  Summary: Extract your metadata assets.
5
5
  Home-page: https://www.castordoc.com/
6
6
  License: EULA
@@ -27,10 +27,9 @@ Provides-Extra: redshift
27
27
  Provides-Extra: snowflake
28
28
  Provides-Extra: sqlserver
29
29
  Provides-Extra: tableau
30
- Requires-Dist: click (>=8.1,<8.2)
31
30
  Requires-Dist: cryptography (>=41.0.5) ; extra == "snowflake"
32
31
  Requires-Dist: google-api-core (>=2.1.1,<3.0.0)
33
- Requires-Dist: google-auth (>=1.6.3,<3.0.0)
32
+ Requires-Dist: google-auth (>=2,<3)
34
33
  Requires-Dist: google-cloud-core (>=2.1.0,<3.0.0)
35
34
  Requires-Dist: google-cloud-storage (>=2,<3)
36
35
  Requires-Dist: google-resumable-media (>=2.0.3,<3.0.0)
@@ -1,11 +1,11 @@
1
- CHANGELOG.md,sha256=t1xfX_GaaTJcrNGAJtvhbOZ-4fAeRdFKRH8eKil6xWM,9837
1
+ CHANGELOG.md,sha256=6ApRuFb6ZxwvpMFyBRJAU6L7teZ01KK2tD0pXFvsYdw,10026
2
2
  Dockerfile,sha256=HcX5z8OpeSvkScQsN-Y7CNMUig_UB6vTMDl7uqzuLGE,303
3
3
  LICENCE,sha256=sL-IGa4hweyya1HgzMskrRdybbIa2cktzxb5qmUgDg8,8254
4
4
  README.md,sha256=uF6PXm9ocPITlKVSh9afTakHmpLx3TvawLf-CbMP3wM,3578
5
5
  castor_extractor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  castor_extractor/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  castor_extractor/commands/extract_bigquery.py,sha256=dU4OiYO1V0n32orvZnMh1_xtFKF_VxHNXcVsH3otY-g,1269
8
- castor_extractor/commands/extract_databricks.py,sha256=gun8VK7bKMv5T198Z0wDihY83J2Y7xzKFEoxtXJ5O6s,1170
8
+ castor_extractor/commands/extract_databricks.py,sha256=SVKyoa-BBUQAM6HRHf1Wdg9-tpICic2yyvXQwHcNBhA,1264
9
9
  castor_extractor/commands/extract_domo.py,sha256=lwJ7XeYOeLMF2plf5PK3cL56N9n2yjcDsyRM6UFwKTM,1208
10
10
  castor_extractor/commands/extract_looker.py,sha256=gwjIQPOHrXevgU_o2l8vDHHQT8Sb-mGdwcceb6wJJbg,1483
11
11
  castor_extractor/commands/extract_metabase_api.py,sha256=VPyEKO2VFXzk_OsbQnDhObE9siuBfoegechCZYPZi2k,778
@@ -16,7 +16,8 @@ castor_extractor/commands/extract_postgres.py,sha256=pX0RnCPi4nw6QQ6wiAuZ_Xt3ZbD
16
16
  castor_extractor/commands/extract_powerbi.py,sha256=e6MXDNOafdp0w4ZtOnE5z5o_CxvaodUbbQFk__pDiM4,875
17
17
  castor_extractor/commands/extract_qlik.py,sha256=mSeyGOprTyBExes-lzp___7tgBS1KeyTVpwKAqMpkiw,989
18
18
  castor_extractor/commands/extract_redshift.py,sha256=bdLp7d7ImZoKCkWc3f3NXF1imIzMVT43_KPI-x4UVac,1155
19
- castor_extractor/commands/extract_salesforce_reporting.py,sha256=Nzb0cn9HlPxvZDQNTFk7r3rBpVpGO9a2WhwbPpKGa2M,1160
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
20
21
  castor_extractor/commands/extract_sigma.py,sha256=agwfKj55C81-kect3K6xSJVBv3TDuPT6fGWSTytkQ2o,703
21
22
  castor_extractor/commands/extract_snowflake.py,sha256=vYiruxRoo--GeMemOGsSE1w9kcKTh_y4E165HtMVzkM,1982
22
23
  castor_extractor/commands/extract_sqlserver.py,sha256=lwhbcNChaXHZgMgSOch3faVr7WJw-sDU6GHl3lzBt_0,1141
@@ -46,7 +47,7 @@ castor_extractor/uploader/utils.py,sha256=NCe0tkB28BVhqzOaDhDjaSfODjjcPWB17X6chn
46
47
  castor_extractor/utils/__init__.py,sha256=cZbvEJ4G2IcJR2BzHwi3oOwDLqJsBx0J9gD71lWE1BQ,1149
47
48
  castor_extractor/utils/client/__init__.py,sha256=CRE-xJKm6fVV9dB8ljzB5YoOxX4I1sCD1KSgqs3Y8_Y,161
48
49
  castor_extractor/utils/client/abstract.py,sha256=aA5Qcb9TwWDSMq8WpXbGkOB20hehwX2VTpqQAwV76wk,2048
49
- castor_extractor/utils/client/api.py,sha256=rRTp7brx-Wv-ky604kITdmLXcNQNZYpyedjaDicXM7Y,1324
50
+ castor_extractor/utils/client/api.py,sha256=tHa7eC11sS_eOCXhlnvUa2haRfOLENmjKgjB09Ijt0s,1664
50
51
  castor_extractor/utils/client/api_test.py,sha256=NSMdXg1FLc37erqHp2FZsIsogWVv6lFSs7rDXHikr-E,542
51
52
  castor_extractor/utils/client/postgres.py,sha256=n6ulaT222WWPY0_6qAZ0MHF0m91HtI9mMqL71nyygo0,866
52
53
  castor_extractor/utils/client/query.py,sha256=O6D5EjD1KmBlwa786Uw4D4kzxx97_HH50xIIeSWt0B8,205
@@ -82,6 +83,12 @@ castor_extractor/utils/retry.py,sha256=vYdJMiM-Nr82H1MuD7_KZdqbFz98ffQGqJ4Owbr6m
82
83
  castor_extractor/utils/retry_test.py,sha256=nsMttlmyKygVcffX3Hay8U2S1BspkGPiCmzIXPpLKyk,2230
83
84
  castor_extractor/utils/safe.py,sha256=jpfIimwdBSVUvU2DPFrhqpKC_DSYwxQqd08MlIkSODY,1967
84
85
  castor_extractor/utils/safe_test.py,sha256=IHN1Z761tYMFslYC-2HAfkXmFPh4LYSqNLs4QZwykjk,2160
86
+ castor_extractor/utils/salesforce/__init__.py,sha256=VGD4vd1Se79z2PAaVCvCSL3yhgWlhQFaVDLZ5aERug0,132
87
+ castor_extractor/utils/salesforce/client.py,sha256=Mt9yykAPROFgme5eDqoZQv4u85hxcUoG-tmKFPwLibo,2856
88
+ castor_extractor/utils/salesforce/client_test.py,sha256=s6UTogjC36jrJOnYA-gFuyTQsvROCt9y_eoD2O41xCg,682
89
+ castor_extractor/utils/salesforce/constants.py,sha256=5sph6dbTCp0mAGWP24WTpC1wsIqeG8yI8-BsKrmV_wA,335
90
+ castor_extractor/utils/salesforce/credentials.py,sha256=Wwb-_BlbFBJUl3dhXz72IIqcCfj1F3Zj3JoYr3FYk0A,2045
91
+ castor_extractor/utils/salesforce/credentials_test.py,sha256=FQRyNk2Jsh6KtYiW20oL43CVnGjXLcAjdFATkE7jK0s,586
85
92
  castor_extractor/utils/store.py,sha256=D_pVaPsu1MKAJC0K47O_vYTs-Afl6oejravAJdvjmGc,2040
86
93
  castor_extractor/utils/string.py,sha256=aW6bbjqEGnh9kT5KZBnMlV6fhdgOJ0ENCkCTDon1xA0,2377
87
94
  castor_extractor/utils/string_test.py,sha256=OmRVCJUXMcCTwY-QJDhUViYpxkvQQgNRJLCaXY0iUnk,2535
@@ -95,7 +102,7 @@ castor_extractor/visualization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
95
102
  castor_extractor/visualization/domo/__init__.py,sha256=_mAYVfoVLizfLGF_f6ZiwBhdPpvoJY_diySf33dt3Jo,127
96
103
  castor_extractor/visualization/domo/assets.py,sha256=bK1urFR2tnlWkVkkhR32mAKMoKbESNlop-CNGx-65PY,206
97
104
  castor_extractor/visualization/domo/client/__init__.py,sha256=UDszV3IXNC9Wp_j55NZ-6ey2INo0TYtAg2QNIJOjglE,88
98
- castor_extractor/visualization/domo/client/client.py,sha256=iGQdsfOYEOvlfzYmraZuLqGZkJtmS33HLa4Cx9tehaw,11075
105
+ castor_extractor/visualization/domo/client/client.py,sha256=ZJJh0ZWuh1X4_uW6FEcZUUAxgRRVFh9vWUtS5aJly4Q,11075
99
106
  castor_extractor/visualization/domo/client/client_test.py,sha256=qGGmpJHnm-o2Ybko5J31nSM9xev5YS0yXjVNM9E92b4,2378
100
107
  castor_extractor/visualization/domo/client/credentials.py,sha256=CksQ9W9X6IGjTlYN0okwGAmURMRJKAjctxODAvAJUAo,1148
101
108
  castor_extractor/visualization/domo/client/endpoints.py,sha256=_D_gq99d77am4KHeRCkITM_XyYuAOscHagC7t3adscY,2019
@@ -157,11 +164,11 @@ castor_extractor/visualization/mode/extract.py,sha256=ZmIOmVZ8_fo4qXe15G5Sis_IzZ
157
164
  castor_extractor/visualization/powerbi/__init__.py,sha256=XSr_fNSsR-EPuGOFo7Ai1r7SttiN7bzD3jyYRFXUWgQ,106
158
165
  castor_extractor/visualization/powerbi/assets.py,sha256=SASUjxtoOMag3NAlZfhpCy0sLap7WfENEMaEZuBrw6o,801
159
166
  castor_extractor/visualization/powerbi/client/__init__.py,sha256=hU8LE1gV9RttTGJiwVpEa9xDLR4IMkUdshQGthg4zzE,62
160
- castor_extractor/visualization/powerbi/client/constants.py,sha256=Cx4pbgyAFc7t_aRQyWj7q-qfkltJl-JgKdMzeKmC9AI,2356
167
+ castor_extractor/visualization/powerbi/client/constants.py,sha256=gpcWE3Ov2xvZAZCqOsvzLtd3cWmfZBeQWvLnnt7-gac,2356
161
168
  castor_extractor/visualization/powerbi/client/credentials.py,sha256=iiYaCa2FM1PBHv4YA0Z1LgdX9gnaQhvHGD0LQb7Tcxw,465
162
169
  castor_extractor/visualization/powerbi/client/credentials_test.py,sha256=23ZlLCvsPB_fmqntnzULkv0mMRE8NCzBXtWS6wupJn4,787
163
- castor_extractor/visualization/powerbi/client/rest.py,sha256=0gwqqmmzX76MzNRGfmcNkXw_jxVRAdMTViQExTBQy2Y,9644
164
- castor_extractor/visualization/powerbi/client/rest_test.py,sha256=r5rS_1FMwHCDWbYdco11-zvDJ5jYk9l8-VVJcpCtbwM,7343
170
+ castor_extractor/visualization/powerbi/client/rest.py,sha256=_MhJYa9dKla4bMv01GZLFdAMrr6gwHdSWuc_D63gMF0,9949
171
+ castor_extractor/visualization/powerbi/client/rest_test.py,sha256=yAfsksL-4SZ6gxRjAWGqIGUAX5Gz44j56r-jRlPGDro,8514
165
172
  castor_extractor/visualization/powerbi/client/utils.py,sha256=0RcoWcKOdvIGH4f3lYDvufmiMo4tr_ABFlITSrvXjTs,541
166
173
  castor_extractor/visualization/powerbi/client/utils_test.py,sha256=ULHL2JLrcv0xjW2r7QF_ce2OaGeeSzajkMDywJ8ZdVA,719
167
174
  castor_extractor/visualization/powerbi/extract.py,sha256=0rTvI5CiWTpoJx6bGdpShdl4eMBWjuWbRpKvisuLPbw,1328
@@ -182,15 +189,12 @@ castor_extractor/visualization/qlik/client/rest.py,sha256=EkHEs3_Vrmy0Ex5b9M_klm
182
189
  castor_extractor/visualization/qlik/client/rest_test.py,sha256=Z2gBTokUVv-JapBtrY2nZDJzBtOusRq6_lJutVvzqG8,1684
183
190
  castor_extractor/visualization/qlik/constants.py,sha256=Pbd1SH3_VI_yEhoDx4PIXBUup-MqXUFjxDkDRr2V4J8,95
184
191
  castor_extractor/visualization/qlik/extract.py,sha256=1ulrirDzoKEdsWxztR6MHcUAE8CiEMx75esdUE7PAmY,2397
185
- castor_extractor/visualization/salesforce_reporting/__init__.py,sha256=8Y_gnyPj-oYaz9Wz1fTf6jmDhofPnNPHlGoKd47KaeM,169
192
+ castor_extractor/visualization/salesforce_reporting/__init__.py,sha256=MvArD0GKNIpCDvLIYcpKrjMjFLhMyDETK6i3k0Fb6Tk,124
186
193
  castor_extractor/visualization/salesforce_reporting/assets.py,sha256=2J-iAmJGGDufOcJUgE47M3-dEcjYXcVyVUNcmHrj79w,271
187
- castor_extractor/visualization/salesforce_reporting/client/__init__.py,sha256=RNQTeNLxVVR6MScvHfRekhOPsQjHKH1y4WogemVu4tc,82
188
- castor_extractor/visualization/salesforce_reporting/client/constants.py,sha256=7yPmUeyn4IHQiHLDutXE0L_OBd41E5080vFxqA_s4Dc,58
189
- castor_extractor/visualization/salesforce_reporting/client/credentials.py,sha256=gJapeUKs8gZSY_YdzX-j0Iv4vcaBzCTAlXMecO8Kk5k,875
190
- castor_extractor/visualization/salesforce_reporting/client/credentials_test.py,sha256=2qIYZ8QuuarHz5EZ9bU0sGEOvoDLnN0eiwsvnbtgXXY,567
191
- castor_extractor/visualization/salesforce_reporting/client/rest.py,sha256=_3wa5-bxKGwaNEwh-KLke3O6lbFWzOUAe1bL8n9hH04,4429
194
+ castor_extractor/visualization/salesforce_reporting/client/__init__.py,sha256=DIA6f_vNJZqT89qVYxg98Le7QeDn2y0Qew03V3J9t9o,44
195
+ castor_extractor/visualization/salesforce_reporting/client/rest.py,sha256=hzaXWLcYt0aAHXK46DbsLmzocjRY1llwrNj8_3TObKs,1849
192
196
  castor_extractor/visualization/salesforce_reporting/client/soql.py,sha256=DHTi058UEaZKZnxJVmsCouPfA9Lgr3gFY6vY7NiqyMM,1584
193
- castor_extractor/visualization/salesforce_reporting/extract.py,sha256=6cUMNrCz46DUS7xyF6eqKRKGP5VB0y_qwqhvVYfKSPE,1639
197
+ castor_extractor/visualization/salesforce_reporting/extract.py,sha256=5QwZwP27uXrFJSf00El7Ku592-9fhmCtTdiUGpNkHZM,1678
194
198
  castor_extractor/visualization/sigma/__init__.py,sha256=m98AEysUsVHQAWT6m5nvrtLMs22SDQH9G78-IcUwBoY,130
195
199
  castor_extractor/visualization/sigma/assets.py,sha256=JZ1Cpxnml8P3mIJoTUM57hvylB18ErECQXaP5FF63O4,268
196
200
  castor_extractor/visualization/sigma/client/__init__.py,sha256=sFqsbcwilIxu75njtSbnAIsNlPdRgB39SAInNUf-nbQ,90
@@ -202,9 +206,9 @@ castor_extractor/visualization/sigma/client/pagination.py,sha256=EZGMaONTzZ15VIN
202
206
  castor_extractor/visualization/sigma/constants.py,sha256=6oQKTKNQkHP_9GWvSOKeFaXd3pKJLhn9Mfod4nvOLEs,144
203
207
  castor_extractor/visualization/sigma/extract.py,sha256=OgjUsc1o6lPPaO5XHgCrgQelBrqbdemxKggF4JBPBUI,2678
204
208
  castor_extractor/visualization/tableau/__init__.py,sha256=hDohrWjkorrX01JMc154aa9vi3ZqBKmA1lkfQtMFfYE,114
205
- castor_extractor/visualization/tableau/assets.py,sha256=QcHrRGBbZtVGXfgvmKeouFdAA0XN0sGCZ6X4MT3FEBc,1111
209
+ castor_extractor/visualization/tableau/assets.py,sha256=mfBUzcBCLyiU9gnTB_6rvtiB5yXSDU99nezhGC__HQo,1270
206
210
  castor_extractor/visualization/tableau/client/__init__.py,sha256=FQX1MdxS8Opn3Oyq8eby7suk3ANbLlpzzCPQ3zqvk0I,78
207
- castor_extractor/visualization/tableau/client/client.py,sha256=_R15GemmBKmn9kYmgH5_BvHAg6hutlVdr006hv4XoW8,7131
211
+ castor_extractor/visualization/tableau/client/client.py,sha256=YqLumujwaX3XkIGSTQMlpxqg7z3_7rm2Qof1HfSbUcY,7381
208
212
  castor_extractor/visualization/tableau/client/client_utils.py,sha256=taTCeK41nbwXTZeWCBbFxfCSlNnEq4Qfaxlle7yJVic,2094
209
213
  castor_extractor/visualization/tableau/client/credentials.py,sha256=szq2tM6sOZqtdyHZgPCNUAddETrwTZaDizLqp-aVBEw,3386
210
214
  castor_extractor/visualization/tableau/client/project.py,sha256=uLlZ5-eZI_4VxBmEB5d1gWy_X_w6uVt2EKoiX9cJ0UA,812
@@ -212,7 +216,7 @@ castor_extractor/visualization/tableau/client/safe_mode.py,sha256=MF_PTfR3oAA255
212
216
  castor_extractor/visualization/tableau/constants.py,sha256=O2CqeviFz122BumNHoJ1N-e1lzyqIHF9OYnGQttg4hg,126
213
217
  castor_extractor/visualization/tableau/errors.py,sha256=WWvmnp5pdxFJqanPKeDRADZc0URSPxkJqxDI6bwoifQ,91
214
218
  castor_extractor/visualization/tableau/extract.py,sha256=tCa5g1_RyhS7OeeEMhLJReMIYfQCF1cwHt8KbZoHFyI,3040
215
- castor_extractor/visualization/tableau/gql_fields.py,sha256=leyE_z723sZzFX_tt1O6YZr_coffxH76QI_3bb9qdNo,5041
219
+ castor_extractor/visualization/tableau/gql_fields.py,sha256=6Esb54CVd4j0Gw-kdCT4eVjwpPlnRF_GC4oxuNJpuas,5532
216
220
  castor_extractor/visualization/tableau/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
217
221
  castor_extractor/visualization/tableau/tests/unit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
218
222
  castor_extractor/visualization/tableau/tests/unit/assets/graphql/metadata/metadata_1_get.json,sha256=4iMvJ_VakDa67xN2ROraAccaz_DDxX6Y5Y1XnTU5F5Y,446
@@ -262,11 +266,11 @@ castor_extractor/warehouse/bigquery/queries/view_ddl.sql,sha256=obCm-IN9V8_YSZTw
262
266
  castor_extractor/warehouse/bigquery/query.py,sha256=hrFfjd5jW2oQnZ6ozlkn-gDe6sCIzu5zSX19T9W6fIk,4162
263
267
  castor_extractor/warehouse/bigquery/types.py,sha256=LZVWSmE57lOemNbB5hBRyYmDk9bFAU4nbRaJWALl6N8,140
264
268
  castor_extractor/warehouse/databricks/__init__.py,sha256=bTvDxjGQGM2J3hOnVhfNmFP1y8DK0tySiD_EXe5_xWE,200
265
- castor_extractor/warehouse/databricks/client.py,sha256=iojSVTARx5JmGy2Tm8D2H5wHO5hqGigVG9Ql2vHNdz8,7375
266
- castor_extractor/warehouse/databricks/client_test.py,sha256=rsqHWmVOgvqQ3VmYKJrpWpcGATD_C9FD1sG4CJsin2E,2201
267
- castor_extractor/warehouse/databricks/credentials.py,sha256=sMpOAKhBklcmTpcr3mi3o8qLud__8PTZbQUT3K_TRY8,678
268
- castor_extractor/warehouse/databricks/extract.py,sha256=eyt9LihZ9GfHEh8Z2c9PXAHqK6hibPsEIUOKGYfMwg8,5708
269
- castor_extractor/warehouse/databricks/format.py,sha256=tCBCApW5iZMBx04p-oCUs36d4JqNqJsBDHe6f-A7eiU,4925
269
+ castor_extractor/warehouse/databricks/client.py,sha256=FIqHjlGN5EN2dvcZD2941zPAomOye91JmkgPlxGDk0g,8078
270
+ castor_extractor/warehouse/databricks/client_test.py,sha256=ctOQnUXosuuFjWGJKgkxjUcV4vQUBWt2BQ_f0Tyzqe4,2717
271
+ castor_extractor/warehouse/databricks/credentials.py,sha256=PpGv5_GP320UQjV_gvaxSpOw58AmqSznmjGhGfe6bdU,655
272
+ castor_extractor/warehouse/databricks/extract.py,sha256=-vJhAIxSu1lD_xGl-GXZYTmc5BGu0aXM3l-U0UghREM,5773
273
+ castor_extractor/warehouse/databricks/format.py,sha256=LiPGCTPzL3gQQMMl1v6DvpcTk7BWxZFq03jnHdoYnuU,4968
270
274
  castor_extractor/warehouse/databricks/format_test.py,sha256=iPmdJof43fBYL1Sa_fBrCWDQHCHgm7IWCZag1kWkj9E,1970
271
275
  castor_extractor/warehouse/databricks/types.py,sha256=T2SyLy9pY_olLtstdC77moPxIiikVsuQLMxh92YMJQo,78
272
276
  castor_extractor/warehouse/mysql/__init__.py,sha256=2KFDogo9GNbApHqw3Vm5t_uNmIRjdp76nmP_WQQMfQY,116
@@ -307,6 +311,13 @@ castor_extractor/warehouse/redshift/queries/table_freshness.sql,sha256=l61_ysmTE
307
311
  castor_extractor/warehouse/redshift/queries/user.sql,sha256=sEXveJAuNvZacvpI6WfwsX6VavoMb2VqYA32f6Dt-_Y,170
308
312
  castor_extractor/warehouse/redshift/queries/view_ddl.sql,sha256=Pkyh_QT6d4rhTeyiVcqw6O8CRl7NEhk2p7eM5YIn5kg,719
309
313
  castor_extractor/warehouse/redshift/query.py,sha256=0C81rkt2cpkWrJIxxwALDyqr-49vlqQM04y_N6wwStc,540
314
+ castor_extractor/warehouse/salesforce/__init__.py,sha256=NR4aNea5jeE1xYqeZ_29deeN84CkN0_D_Z7CLQdJvFY,137
315
+ castor_extractor/warehouse/salesforce/client.py,sha256=_XiQJJJfELKGmzuBv8Mr_C0FJ-oLg71KbvpehrGvJ_k,3842
316
+ castor_extractor/warehouse/salesforce/constants.py,sha256=GusduVBCPvwpk_Im6F3bDvXeNQ7hRnCMdIAjIg65RnE,52
317
+ castor_extractor/warehouse/salesforce/extract.py,sha256=ZTb58t7mqhavNvErrnw8M0L4Uu3qJpQEIldymurbgl0,3417
318
+ castor_extractor/warehouse/salesforce/format.py,sha256=_BSj_G6C-kPwRubxSx1WuHg-_nYVQVNgAANqNfXL5RM,2154
319
+ castor_extractor/warehouse/salesforce/format_test.py,sha256=6hy0USZH7-PDQt3oZ9_3Nwlr3eHLkqNEchqIM3bIDrU,858
320
+ castor_extractor/warehouse/salesforce/soql.py,sha256=81lAtPpq7ccmi6o1zkwqLKC1esOfSsfNObdizkfgiSM,1089
310
321
  castor_extractor/warehouse/snowflake/__init__.py,sha256=TEGXTyxWp4Tr9gIHb-UFVTRKj6YWmrRtqHruiKSZGiY,174
311
322
  castor_extractor/warehouse/snowflake/client.py,sha256=XT0QLVNff_586SDuMe40iu8FCwPDh2uBV5aKc1Ql914,5555
312
323
  castor_extractor/warehouse/snowflake/client_test.py,sha256=ihWtOOAQfh8pu5JTr_EWfqefKOVIaJXznACURzaU1Qs,1432
@@ -346,7 +357,8 @@ castor_extractor/warehouse/synapse/queries/schema.sql,sha256=aX9xNrBD_ydwl-znGSF
346
357
  castor_extractor/warehouse/synapse/queries/table.sql,sha256=mCE8bR1Vb7j7SwZW2gafcXidQ2fo1HwxcybA8wP2Kfs,1049
347
358
  castor_extractor/warehouse/synapse/queries/user.sql,sha256=sTb_SS7Zj3AXW1SggKPLNMCd0qoTpL7XI_BJRMaEpBg,67
348
359
  castor_extractor/warehouse/synapse/queries/view_ddl.sql,sha256=3EVbp5_yTgdByHFIPLHmnoOnqqLE77SrjAwFDvu4e54,249
349
- castor_extractor-0.16.1.dist-info/METADATA,sha256=tjFndsdmxa0NO7qy3Ddcz1pFZGnDsfPmTQ3x3o-UEeA,6412
350
- castor_extractor-0.16.1.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
351
- castor_extractor-0.16.1.dist-info/entry_points.txt,sha256=EQUCoNjSHevxmY5ZathX_fLZPcuBHng23rj0SSUrLtI,1345
352
- castor_extractor-0.16.1.dist-info/RECORD,,
360
+ castor_extractor-0.16.4.dist-info/LICENCE,sha256=sL-IGa4hweyya1HgzMskrRdybbIa2cktzxb5qmUgDg8,8254
361
+ castor_extractor-0.16.4.dist-info/METADATA,sha256=-D39Tmu_LFDHRe3HrZ542JjZxl0puzZr0n8wMkW52P0,6370
362
+ castor_extractor-0.16.4.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
363
+ castor_extractor-0.16.4.dist-info/entry_points.txt,sha256=SbyPk58Gh-FRztfCNnUZQ6w7SatzNJFZ6GIJLNsy7tI,1427
364
+ castor_extractor-0.16.4.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 1.8.1
2
+ Generator: poetry-core 1.9.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -11,7 +11,8 @@ castor-extract-postgres=castor_extractor.commands.extract_postgres:main
11
11
  castor-extract-powerbi=castor_extractor.commands.extract_powerbi:main
12
12
  castor-extract-qlik=castor_extractor.commands.extract_qlik:main
13
13
  castor-extract-redshift=castor_extractor.commands.extract_redshift:main
14
- castor-extract-salesforce-viz=castor_extractor.commands.extract_salesforce_viz:main
14
+ castor-extract-salesforce=castor_extractor.commands.extract_salesforce:main
15
+ castor-extract-salesforce-viz=castor_extractor.commands.extract_salesforce_reporting:main
15
16
  castor-extract-sigma=castor_extractor.commands.extract_sigma:main
16
17
  castor-extract-snowflake=castor_extractor.commands.extract_snowflake:main
17
18
  castor-extract-sqlserver=castor_extractor.commands.extract_sqlserver:main
@@ -1,2 +0,0 @@
1
- DEFAULT_API_VERSION = 59.0
2
- DEFAULT_PAGINATION_LIMIT = 100
@@ -1,33 +0,0 @@
1
- from typing import Dict
2
-
3
-
4
- class SalesforceCredentials:
5
- """
6
- Class to handle Salesforce rest API permissions
7
- """
8
-
9
- def __init__(
10
- self,
11
- *,
12
- username: str,
13
- password: str,
14
- security_token: str,
15
- consumer_key: str,
16
- consumer_secret: str,
17
- ):
18
- self.username = username
19
- self.password = password + security_token
20
- self.consumer_key = consumer_key
21
- self.consumer_secret = consumer_secret
22
-
23
- def token_request_payload(self) -> Dict[str, str]:
24
- """
25
- Params to post to the API in order to retrieve the authentication token
26
- """
27
- return {
28
- "grant_type": "password",
29
- "client_id": self.consumer_key,
30
- "client_secret": self.consumer_secret,
31
- "username": self.username,
32
- "password": self.password,
33
- }