castor-extractor 0.23.2__py3-none-any.whl → 0.24.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of castor-extractor might be problematic. Click here for more details.
- CHANGELOG.md +8 -0
- README.md +8 -6
- castor_extractor/commands/extract_snowflake.py +6 -0
- castor_extractor/knowledge/confluence/client/client.py +0 -13
- castor_extractor/knowledge/confluence/client/endpoints.py +1 -1
- castor_extractor/warehouse/snowflake/client.py +17 -7
- castor_extractor/warehouse/snowflake/credentials.py +1 -0
- castor_extractor/warehouse/snowflake/extract.py +7 -0
- {castor_extractor-0.23.2.dist-info → castor_extractor-0.24.0.dist-info}/METADATA +17 -7
- {castor_extractor-0.23.2.dist-info → castor_extractor-0.24.0.dist-info}/RECORD +13 -48
- castor_extractor/visualization/tableau/__init__.py +0 -3
- castor_extractor/visualization/tableau/assets.py +0 -49
- castor_extractor/visualization/tableau/client/__init__.py +0 -2
- castor_extractor/visualization/tableau/client/client.py +0 -229
- castor_extractor/visualization/tableau/client/client_utils.py +0 -75
- castor_extractor/visualization/tableau/client/credentials.py +0 -104
- castor_extractor/visualization/tableau/client/project.py +0 -28
- castor_extractor/visualization/tableau/client/safe_mode.py +0 -70
- castor_extractor/visualization/tableau/constants.py +0 -9
- castor_extractor/visualization/tableau/errors.py +0 -5
- castor_extractor/visualization/tableau/extract.py +0 -121
- castor_extractor/visualization/tableau/gql_fields.py +0 -249
- castor_extractor/visualization/tableau/tests/__init__.py +0 -0
- castor_extractor/visualization/tableau/tests/unit/__init__.py +0 -0
- castor_extractor/visualization/tableau/tests/unit/assets/graphql/metadata/metadata_1_get.json +0 -15
- castor_extractor/visualization/tableau/tests/unit/assets/graphql/metadata/metadata_2_get.json +0 -15
- castor_extractor/visualization/tableau/tests/unit/assets/rest_api/auth.xml +0 -7
- castor_extractor/visualization/tableau/tests/unit/assets/rest_api/project_get.xml +0 -9
- castor_extractor/visualization/tableau/tests/unit/assets/rest_api/user_get.xml +0 -8
- castor_extractor/visualization/tableau/tests/unit/assets/rest_api/view_get_usage.xml +0 -24
- castor_extractor/visualization/tableau/tests/unit/assets/rest_api/workbook_get.xml +0 -19
- castor_extractor/visualization/tableau/tests/unit/graphql/__init__.py +0 -0
- castor_extractor/visualization/tableau/tests/unit/graphql/paginated_object_test.py +0 -63
- castor_extractor/visualization/tableau/tests/unit/rest_api/__init__.py +0 -0
- castor_extractor/visualization/tableau/tests/unit/rest_api/auth_test.py +0 -39
- castor_extractor/visualization/tableau/tests/unit/rest_api/credentials_test.py +0 -13
- castor_extractor/visualization/tableau/tests/unit/rest_api/projects_test.py +0 -59
- castor_extractor/visualization/tableau/tests/unit/rest_api/usages_test.py +0 -49
- castor_extractor/visualization/tableau/tests/unit/rest_api/users_test.py +0 -52
- castor_extractor/visualization/tableau/tests/unit/rest_api/workbooks_test.py +0 -60
- castor_extractor/visualization/tableau/tests/unit/utils/__init__.py +0 -1
- castor_extractor/visualization/tableau/tests/unit/utils/env_key.py +0 -6
- castor_extractor/visualization/tableau/tsc_fields.py +0 -46
- castor_extractor/visualization/tableau/types.py +0 -11
- castor_extractor/visualization/tableau/usage.py +0 -14
- {castor_extractor-0.23.2.dist-info → castor_extractor-0.24.0.dist-info}/LICENCE +0 -0
- {castor_extractor-0.23.2.dist-info → castor_extractor-0.24.0.dist-info}/WHEEL +0 -0
- {castor_extractor-0.23.2.dist-info → castor_extractor-0.24.0.dist-info}/entry_points.txt +0 -0
CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.24.0 - 2025-03-10
|
|
4
|
+
|
|
5
|
+
* Remove legacy Tableau Connector
|
|
6
|
+
|
|
7
|
+
## 0.23.3 - 2025-02-19
|
|
8
|
+
|
|
9
|
+
* Snowflake : add --insecure-mode option to turn off OCSP checking
|
|
10
|
+
|
|
3
11
|
## 0.23.2 - 2025-02-17
|
|
4
12
|
|
|
5
13
|
* support page_size in Tableau extraction command
|
README.md
CHANGED
|
@@ -34,14 +34,14 @@ It also embeds utilities to help you push your metadata to Castor:
|
|
|
34
34
|
|
|
35
35
|
## Installation
|
|
36
36
|
|
|
37
|
-
Requirements: **python3.
|
|
37
|
+
Requirements: **python3.9+**
|
|
38
38
|
<img src="https://upload.wikimedia.org/wikipedia/commons/c/c3/Python-logo-notext.svg" width=20 />
|
|
39
39
|
|
|
40
40
|
### Create castor-env
|
|
41
41
|
|
|
42
42
|
We advise to create a dedicated [Python environment](https://docs.python.org/3/library/venv.html).
|
|
43
43
|
|
|
44
|
-
Here's an example using `Pyenv
|
|
44
|
+
Here's an example using `Pyenv`:
|
|
45
45
|
|
|
46
46
|
- Install Pyenv
|
|
47
47
|
|
|
@@ -58,22 +58,24 @@ eval "$(pyenv init --path)"
|
|
|
58
58
|
eval "$(pyenv virtualenv-init -)"
|
|
59
59
|
```
|
|
60
60
|
|
|
61
|
-
- [optional] Install python 3.
|
|
61
|
+
- [optional] Install python 3.9+ if needed
|
|
62
62
|
|
|
63
63
|
```bash
|
|
64
64
|
pyenv versions # check your local python installations
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
# install Python if none of the installed versions satisfy requirements 3.9+
|
|
67
|
+
# in this example, we will install Python 3.11.9
|
|
68
|
+
pyenv install -v 3.11.9
|
|
67
69
|
```
|
|
68
70
|
|
|
69
71
|
- Create your virtual env
|
|
70
72
|
|
|
71
73
|
```bash
|
|
72
|
-
pyenv virtualenv 3.
|
|
74
|
+
pyenv virtualenv 3.11.9 castor-env # create a dedicated env
|
|
73
75
|
pyenv shell castor-env # activate the environment
|
|
74
76
|
|
|
75
77
|
# optional checks
|
|
76
|
-
python --version # should be `3.
|
|
78
|
+
python --version # should be `3.11.9`
|
|
77
79
|
pyenv version # should be `castor-env`
|
|
78
80
|
```
|
|
79
81
|
|
|
@@ -40,6 +40,11 @@ def main():
|
|
|
40
40
|
action="store_true",
|
|
41
41
|
help="Optional: will fetch transients tables if added",
|
|
42
42
|
)
|
|
43
|
+
parser.add_argument(
|
|
44
|
+
"--insecure-mode",
|
|
45
|
+
action="store_true",
|
|
46
|
+
help="Optional: turns off OCSP checking",
|
|
47
|
+
)
|
|
43
48
|
|
|
44
49
|
parser.add_argument("-o", "--output", help="Directory to write to")
|
|
45
50
|
|
|
@@ -65,4 +70,5 @@ def main():
|
|
|
65
70
|
output_directory=args.output,
|
|
66
71
|
skip_existing=args.skip_existing,
|
|
67
72
|
fetch_transient=args.fetch_transient,
|
|
73
|
+
insecure_mode=args.insecure_mode,
|
|
68
74
|
)
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
from collections.abc import Iterator
|
|
2
2
|
from functools import partial
|
|
3
|
-
from http import HTTPStatus
|
|
4
|
-
from typing import Optional
|
|
5
3
|
|
|
6
4
|
from ....utils import (
|
|
7
5
|
APIClient,
|
|
8
6
|
BasicAuth,
|
|
9
|
-
RequestSafeMode,
|
|
10
7
|
fetch_all_pages,
|
|
11
8
|
)
|
|
12
9
|
from ..assets import (
|
|
@@ -21,19 +18,11 @@ _HEADERS = {
|
|
|
21
18
|
"Content-Type": "application/json",
|
|
22
19
|
}
|
|
23
20
|
|
|
24
|
-
_MAX_ERROR_IGNORED_COUNT = 10
|
|
25
|
-
_IGNORED_ERROR_CODES = (HTTPStatus.BAD_GATEWAY,)
|
|
26
|
-
_SAFE_MODE = RequestSafeMode(
|
|
27
|
-
max_errors=_MAX_ERROR_IGNORED_COUNT,
|
|
28
|
-
status_codes=_IGNORED_ERROR_CODES,
|
|
29
|
-
)
|
|
30
|
-
|
|
31
21
|
|
|
32
22
|
class ConfluenceClient(APIClient):
|
|
33
23
|
def __init__(
|
|
34
24
|
self,
|
|
35
25
|
credentials: ConfluenceCredentials,
|
|
36
|
-
safe_mode: Optional[RequestSafeMode] = None,
|
|
37
26
|
):
|
|
38
27
|
self.account_id = credentials.account_id
|
|
39
28
|
auth = BasicAuth(
|
|
@@ -43,14 +32,12 @@ class ConfluenceClient(APIClient):
|
|
|
43
32
|
auth=auth,
|
|
44
33
|
host=credentials.base_url,
|
|
45
34
|
headers=_HEADERS,
|
|
46
|
-
safe_mode=safe_mode or _SAFE_MODE,
|
|
47
35
|
)
|
|
48
36
|
|
|
49
37
|
def pages(self):
|
|
50
38
|
request = partial(
|
|
51
39
|
self._get,
|
|
52
40
|
endpoint=ConfluenceEndpointFactory.pages(),
|
|
53
|
-
params={"body-format": "atlas_doc_format"},
|
|
54
41
|
)
|
|
55
42
|
yield from fetch_all_pages(request, ConfluencePagination)
|
|
56
43
|
|
|
@@ -14,7 +14,7 @@ class ConfluenceEndpointFactory:
|
|
|
14
14
|
Endpoint to fetch all pages.
|
|
15
15
|
More: https://developer.atlassian.com/cloud/confluence/rest/v2/api-group-page/#api-pages-get
|
|
16
16
|
"""
|
|
17
|
-
return f"{cls.API}{cls.PAGES}"
|
|
17
|
+
return f"{cls.API}{cls.PAGES}?body-format=atlas_doc_format"
|
|
18
18
|
|
|
19
19
|
@classmethod
|
|
20
20
|
def users(cls) -> str:
|
|
@@ -112,6 +112,7 @@ class SnowflakeClient(SqlalchemyClient):
|
|
|
112
112
|
role: Optional[str] = None,
|
|
113
113
|
):
|
|
114
114
|
self.private_key = _private_key(credentials.get("private_key"))
|
|
115
|
+
self.insecure_mode = credentials.get("insecure_mode", False)
|
|
115
116
|
super().__init__(credentials)
|
|
116
117
|
self._role = role
|
|
117
118
|
self._warehouse = warehouse
|
|
@@ -121,13 +122,22 @@ class SnowflakeClient(SqlalchemyClient):
|
|
|
121
122
|
return "Snowflake"
|
|
122
123
|
|
|
123
124
|
def _engine_options(self, credentials: dict) -> dict:
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
125
|
+
"""
|
|
126
|
+
Sets the engine options.
|
|
127
|
+
* `insecure_mode` = True turns off OCSP checking.
|
|
128
|
+
See https://community.snowflake.com/s/article/How-to-turn-off-OCSP-checking-in-Snowflake-client-drivers
|
|
129
|
+
* `private_key` = Snowflake private key for key pair authentication.
|
|
130
|
+
See https://docs.snowflake.com/en/user-guide/key-pair-auth
|
|
131
|
+
"""
|
|
132
|
+
connection_args: dict = dict()
|
|
133
|
+
|
|
134
|
+
if self.insecure_mode:
|
|
135
|
+
connection_args["insecure_mode"] = True
|
|
136
|
+
|
|
137
|
+
if self.private_key:
|
|
138
|
+
connection_args["private_key"] = self.private_key
|
|
139
|
+
|
|
140
|
+
return {"connect_args": connection_args}
|
|
131
141
|
|
|
132
142
|
def _build_uri(self, credentials: dict) -> str:
|
|
133
143
|
if self.private_key:
|
|
@@ -17,6 +17,7 @@ class SnowflakeCredentials:
|
|
|
17
17
|
account: str
|
|
18
18
|
user: str
|
|
19
19
|
|
|
20
|
+
insecure_mode: Optional[bool] = field(default=False)
|
|
20
21
|
password: Optional[str] = field(metadata={"sensitive": True}, default=None)
|
|
21
22
|
private_key: Optional[str] = field(
|
|
22
23
|
metadata={"sensitive": True}, default=None
|
|
@@ -38,6 +38,7 @@ SNOWFLAKE_ACCOUNT = "CASTOR_SNOWFLAKE_ACCOUNT"
|
|
|
38
38
|
SNOWFLAKE_USER = "CASTOR_SNOWFLAKE_USER"
|
|
39
39
|
SNOWFLAKE_PASSWORD = "CASTOR_SNOWFLAKE_PASSWORD" # noqa: S105
|
|
40
40
|
SNOWFLAKE_PRIVATE_KEY = "CASTOR_SNOWFLAKE_PRIVATE_KEY"
|
|
41
|
+
SNOWFLAKE_INSECURE_MODE = "CASTOR_SNOWFLAKE_INSECURE_MODE"
|
|
41
42
|
|
|
42
43
|
|
|
43
44
|
def _credentials(params: dict) -> dict:
|
|
@@ -46,9 +47,15 @@ def _credentials(params: dict) -> dict:
|
|
|
46
47
|
private_key = params.get("private_key") or from_env(
|
|
47
48
|
SNOWFLAKE_PRIVATE_KEY, True
|
|
48
49
|
)
|
|
50
|
+
insecure_mode = (
|
|
51
|
+
params.get("insecure_mode")
|
|
52
|
+
or from_env(SNOWFLAKE_INSECURE_MODE, allow_missing=True)
|
|
53
|
+
or False
|
|
54
|
+
)
|
|
49
55
|
common = {
|
|
50
56
|
"account": params.get("account") or from_env(SNOWFLAKE_ACCOUNT),
|
|
51
57
|
"user": params.get("user") or from_env(SNOWFLAKE_USER),
|
|
58
|
+
"insecure_mode": insecure_mode,
|
|
52
59
|
}
|
|
53
60
|
if password:
|
|
54
61
|
return {**common, "password": password}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: castor-extractor
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.24.0
|
|
4
4
|
Summary: Extract your metadata assets.
|
|
5
5
|
Home-page: https://www.castordoc.com/
|
|
6
6
|
License: EULA
|
|
@@ -100,14 +100,14 @@ It also embeds utilities to help you push your metadata to Castor:
|
|
|
100
100
|
|
|
101
101
|
## Installation
|
|
102
102
|
|
|
103
|
-
Requirements: **python3.
|
|
103
|
+
Requirements: **python3.9+**
|
|
104
104
|
<img src="https://upload.wikimedia.org/wikipedia/commons/c/c3/Python-logo-notext.svg" width=20 />
|
|
105
105
|
|
|
106
106
|
### Create castor-env
|
|
107
107
|
|
|
108
108
|
We advise to create a dedicated [Python environment](https://docs.python.org/3/library/venv.html).
|
|
109
109
|
|
|
110
|
-
Here's an example using `Pyenv
|
|
110
|
+
Here's an example using `Pyenv`:
|
|
111
111
|
|
|
112
112
|
- Install Pyenv
|
|
113
113
|
|
|
@@ -124,22 +124,24 @@ eval "$(pyenv init --path)"
|
|
|
124
124
|
eval "$(pyenv virtualenv-init -)"
|
|
125
125
|
```
|
|
126
126
|
|
|
127
|
-
- [optional] Install python 3.
|
|
127
|
+
- [optional] Install python 3.9+ if needed
|
|
128
128
|
|
|
129
129
|
```bash
|
|
130
130
|
pyenv versions # check your local python installations
|
|
131
131
|
|
|
132
|
-
|
|
132
|
+
# install Python if none of the installed versions satisfy requirements 3.9+
|
|
133
|
+
# in this example, we will install Python 3.11.9
|
|
134
|
+
pyenv install -v 3.11.9
|
|
133
135
|
```
|
|
134
136
|
|
|
135
137
|
- Create your virtual env
|
|
136
138
|
|
|
137
139
|
```bash
|
|
138
|
-
pyenv virtualenv 3.
|
|
140
|
+
pyenv virtualenv 3.11.9 castor-env # create a dedicated env
|
|
139
141
|
pyenv shell castor-env # activate the environment
|
|
140
142
|
|
|
141
143
|
# optional checks
|
|
142
|
-
python --version # should be `3.
|
|
144
|
+
python --version # should be `3.11.9`
|
|
143
145
|
pyenv version # should be `castor-env`
|
|
144
146
|
```
|
|
145
147
|
|
|
@@ -206,6 +208,14 @@ For any questions or bug report, contact us at [support@castordoc.com](mailto:su
|
|
|
206
208
|
|
|
207
209
|
# Changelog
|
|
208
210
|
|
|
211
|
+
## 0.24.0 - 2025-03-10
|
|
212
|
+
|
|
213
|
+
* Remove legacy Tableau Connector
|
|
214
|
+
|
|
215
|
+
## 0.23.3 - 2025-02-19
|
|
216
|
+
|
|
217
|
+
* Snowflake : add --insecure-mode option to turn off OCSP checking
|
|
218
|
+
|
|
209
219
|
## 0.23.2 - 2025-02-17
|
|
210
220
|
|
|
211
221
|
* support page_size in Tableau extraction command
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
CHANGELOG.md,sha256=
|
|
1
|
+
CHANGELOG.md,sha256=Ud6kiuDEyG_gu0YAVlp9-oXxriLibyma98FDrlajJJE,15756
|
|
2
2
|
Dockerfile,sha256=xQ05-CFfGShT3oUqaiumaldwA288dj9Yb_pxofQpufg,301
|
|
3
3
|
DockerfileUsage.md,sha256=2hkJQF-5JuuzfPZ7IOxgM6QgIQW7l-9oRMFVwyXC4gE,998
|
|
4
4
|
LICENCE,sha256=sL-IGa4hweyya1HgzMskrRdybbIa2cktzxb5qmUgDg8,8254
|
|
5
|
-
README.md,sha256=
|
|
5
|
+
README.md,sha256=j8oiToTvFY4eozLUJo4rs0LEqan-G3_eOSP98KFfxfM,3634
|
|
6
6
|
castor_extractor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
7
|
castor_extractor/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
8
|
castor_extractor/commands/extract_bigquery.py,sha256=dU4OiYO1V0n32orvZnMh1_xtFKF_VxHNXcVsH3otY-g,1269
|
|
@@ -22,7 +22,7 @@ castor_extractor/commands/extract_redshift.py,sha256=zRBg2D_ft4GLdPSdmetRcgQVAA8
|
|
|
22
22
|
castor_extractor/commands/extract_salesforce.py,sha256=3j3YTmMkPAwocR-B1ozJQai0UIZPtpmAyWj-hHvdWn4,1226
|
|
23
23
|
castor_extractor/commands/extract_salesforce_reporting.py,sha256=FdANTNiLkIPdm80XMYxWReHjdycLsIa61pyeCD-sUDk,962
|
|
24
24
|
castor_extractor/commands/extract_sigma.py,sha256=sxewHcZ1Doq35V2qnpX_zCKKXkrb1_9bYjUMg7BOW-k,643
|
|
25
|
-
castor_extractor/commands/extract_snowflake.py,sha256=
|
|
25
|
+
castor_extractor/commands/extract_snowflake.py,sha256=GwlrRxwEBjHqGs_3bs5vM9fzmv61_iwvBr1KcIgFgWM,2161
|
|
26
26
|
castor_extractor/commands/extract_sqlserver.py,sha256=lwhbcNChaXHZgMgSOch3faVr7WJw-sDU6GHl3lzBt_0,1141
|
|
27
27
|
castor_extractor/commands/extract_tableau.py,sha256=DGQaXS-61rV-uzBtqfvqtyQzjLtrLTzE1ViTXPG1eck,1379
|
|
28
28
|
castor_extractor/commands/extract_thoughtspot.py,sha256=caAYJlH-vK7u5IUB6OKXxcaWfLgc7d_XqnFDWK6YNS4,639
|
|
@@ -43,9 +43,9 @@ castor_extractor/knowledge/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJ
|
|
|
43
43
|
castor_extractor/knowledge/confluence/__init__.py,sha256=pRT615pMDlB7Ifs09erVn2EdpZHgkvX5selemWU3VPE,129
|
|
44
44
|
castor_extractor/knowledge/confluence/assets.py,sha256=zv2G2LB8H0fKDbVJ4kHrAjbqehXI_K-wgd_ghSXGFvs,144
|
|
45
45
|
castor_extractor/knowledge/confluence/client/__init__.py,sha256=ALAzo0JEhxFzH2FnIO6HmtkAGS2_bGY8KXXMcTGV3aE,84
|
|
46
|
-
castor_extractor/knowledge/confluence/client/client.py,sha256=
|
|
46
|
+
castor_extractor/knowledge/confluence/client/client.py,sha256=F8A_ckZ4ojJC8BnAXeAIHUC2oOQMBWnTfqQwJbAyTns,1689
|
|
47
47
|
castor_extractor/knowledge/confluence/client/credentials.py,sha256=tqUMw-SVoAi4o6I6OeGk4MeDiIPU3-ihhaomXv4CQ64,419
|
|
48
|
-
castor_extractor/knowledge/confluence/client/endpoints.py,sha256=
|
|
48
|
+
castor_extractor/knowledge/confluence/client/endpoints.py,sha256=eWMKtjDUPGoKR8Nqq18JTIoEq913GNo1Klm9RduIOHM,765
|
|
49
49
|
castor_extractor/knowledge/confluence/client/pagination.py,sha256=ty4meiMEujDVSiQyOJTibd-ReYyDyGezdFuk7EAGtMA,862
|
|
50
50
|
castor_extractor/knowledge/confluence/extract.py,sha256=6pA68CmYNC50qCJ7NgZMW0jD4ev0a_ltI5kSyBqSC0U,1565
|
|
51
51
|
castor_extractor/knowledge/notion/__init__.py,sha256=ZDmh0eNSxHf1zVPm0aYlKPci-vzOXhAgdsWjS2hdjh4,117
|
|
@@ -257,41 +257,6 @@ castor_extractor/visualization/sigma/client/credentials.py,sha256=XddAuQSmCKpxJ7
|
|
|
257
257
|
castor_extractor/visualization/sigma/client/endpoints.py,sha256=DBFphbgoH78_MZUGM_bKBAq28Nl7LWSZ6VRsbxrxtDg,1162
|
|
258
258
|
castor_extractor/visualization/sigma/client/pagination.py,sha256=kNEhNq08tTGbypyMjxs0w4uvDtQc_iaWpOZweaa_FsU,690
|
|
259
259
|
castor_extractor/visualization/sigma/extract.py,sha256=XIT1qsj6g6dgBWP8HPfj_medZexu48EaY9tUwi14gzM,2298
|
|
260
|
-
castor_extractor/visualization/tableau/__init__.py,sha256=hDohrWjkorrX01JMc154aa9vi3ZqBKmA1lkfQtMFfYE,114
|
|
261
|
-
castor_extractor/visualization/tableau/assets.py,sha256=jid6bPym-h5uMP5NwNVSpsYEn2KOr24tzSjtVuH5o-k,1247
|
|
262
|
-
castor_extractor/visualization/tableau/client/__init__.py,sha256=FQX1MdxS8Opn3Oyq8eby7suk3ANbLlpzzCPQ3zqvk0I,78
|
|
263
|
-
castor_extractor/visualization/tableau/client/client.py,sha256=0adwnNumC37BmtWsqhRsj8XHkvo-Zc0Eymp5QAuPSP0,7357
|
|
264
|
-
castor_extractor/visualization/tableau/client/client_utils.py,sha256=s5jQhCozc1AMldTx-obi7K1Kxm2vS9cYolhc0fGBAB4,2115
|
|
265
|
-
castor_extractor/visualization/tableau/client/credentials.py,sha256=kvj8B9fB5DlcVczKEtB3CYO2a82vvwsG4KEjjUBx3tM,3380
|
|
266
|
-
castor_extractor/visualization/tableau/client/project.py,sha256=uLlZ5-eZI_4VxBmEB5d1gWy_X_w6uVt2EKoiX9cJ0UA,812
|
|
267
|
-
castor_extractor/visualization/tableau/client/safe_mode.py,sha256=jNmEQFcpoJfOWkFEsEk8Gimj7wIeXH3_OXiulwhKD1s,2015
|
|
268
|
-
castor_extractor/visualization/tableau/constants.py,sha256=O2CqeviFz122BumNHoJ1N-e1lzyqIHF9OYnGQttg4hg,126
|
|
269
|
-
castor_extractor/visualization/tableau/errors.py,sha256=WWvmnp5pdxFJqanPKeDRADZc0URSPxkJqxDI6bwoifQ,91
|
|
270
|
-
castor_extractor/visualization/tableau/extract.py,sha256=C32FmEhfFOMvEx1hCgbnOYn_LBiORQwqEt7JH73F1k8,3306
|
|
271
|
-
castor_extractor/visualization/tableau/gql_fields.py,sha256=nwG2VAOI1AX75i4sWirNsjEB82hBWeHF1Hce5b2Mz5A,5520
|
|
272
|
-
castor_extractor/visualization/tableau/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
273
|
-
castor_extractor/visualization/tableau/tests/unit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
274
|
-
castor_extractor/visualization/tableau/tests/unit/assets/graphql/metadata/metadata_1_get.json,sha256=4iMvJ_VakDa67xN2ROraAccaz_DDxX6Y5Y1XnTU5F5Y,446
|
|
275
|
-
castor_extractor/visualization/tableau/tests/unit/assets/graphql/metadata/metadata_2_get.json,sha256=ZpkJorxFmk9CJRjZReI3qGkoZFKa1GHD3JOxrDgdOrY,447
|
|
276
|
-
castor_extractor/visualization/tableau/tests/unit/assets/rest_api/auth.xml,sha256=gAuOdNzLhzqj9EdeCHMLq9tf9-BOe0kC4OjW1cMePeo,450
|
|
277
|
-
castor_extractor/visualization/tableau/tests/unit/assets/rest_api/project_get.xml,sha256=Eg2Pvp2VZ3O9rtUZzhak3fEODS007AFIc_konEQGRdg,1018
|
|
278
|
-
castor_extractor/visualization/tableau/tests/unit/assets/rest_api/user_get.xml,sha256=q0dT6jiSdTj-T50VD7hlv3cf-acSIK_OlQulKDyZ39U,679
|
|
279
|
-
castor_extractor/visualization/tableau/tests/unit/assets/rest_api/view_get_usage.xml,sha256=UHfPPPETt0rrXde6EjsNdrOGdbVqIyeQwDwRU0nP5fY,1415
|
|
280
|
-
castor_extractor/visualization/tableau/tests/unit/assets/rest_api/workbook_get.xml,sha256=MLyS2AbnPZxkAClCxOK6_DTVoiK4TQjzcw--lQ2Jug8,1325
|
|
281
|
-
castor_extractor/visualization/tableau/tests/unit/graphql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
282
|
-
castor_extractor/visualization/tableau/tests/unit/graphql/paginated_object_test.py,sha256=stFLqx8ifMBe75D62Bq6izn26kLgvxrmyBxGZH2wK4c,1922
|
|
283
|
-
castor_extractor/visualization/tableau/tests/unit/rest_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
284
|
-
castor_extractor/visualization/tableau/tests/unit/rest_api/auth_test.py,sha256=L3LfrD9DGISdg0YZL9Ma0ZE_ab2jWfRNLL_mqrh2vM4,1123
|
|
285
|
-
castor_extractor/visualization/tableau/tests/unit/rest_api/credentials_test.py,sha256=IXemuC0wO_BYuU-wm_O-NUfm92RnIJeu98sogA3pmf4,331
|
|
286
|
-
castor_extractor/visualization/tableau/tests/unit/rest_api/projects_test.py,sha256=ySm56VP4Iy7CZYHUEdrBow9_YKGBc7XwHbvzZRJEKUo,1779
|
|
287
|
-
castor_extractor/visualization/tableau/tests/unit/rest_api/usages_test.py,sha256=OdY9OehUEjSsHnOJ7lR906oEvIo5k2RV9y-Zvgy_XMs,1401
|
|
288
|
-
castor_extractor/visualization/tableau/tests/unit/rest_api/users_test.py,sha256=-D3mZtnsXQd5xUow8nYo5Ru2Rl9mXDdGGQZ5bVzAmJg,1499
|
|
289
|
-
castor_extractor/visualization/tableau/tests/unit/rest_api/workbooks_test.py,sha256=ga5MK2aN0BNw-Vo7g8OJk8ORmIgrIE8VIXG6p5CO748,1979
|
|
290
|
-
castor_extractor/visualization/tableau/tests/unit/utils/__init__.py,sha256=IzeQqv7EBwGIBh50y6TEsUVXXpqXLjaeBkZeAb0CisE,26
|
|
291
|
-
castor_extractor/visualization/tableau/tests/unit/utils/env_key.py,sha256=fBX8pG1zOJmoUwCTFtDMVinRVlnFDbMI3wBBRNVr_GM,203
|
|
292
|
-
castor_extractor/visualization/tableau/tsc_fields.py,sha256=zMlCMCop3ni69So5DjvxKWEG15Kwh-x8gaSwErSVRGY,937
|
|
293
|
-
castor_extractor/visualization/tableau/types.py,sha256=EvyTCsBs33Xp3RIJg5MXhbtEF_G2-T2CE-oVDjOBA_U,303
|
|
294
|
-
castor_extractor/visualization/tableau/usage.py,sha256=LlFwlbEr-EnYUJjKZha99CRCRrERJ350oAvzBQlp9_s,427
|
|
295
260
|
castor_extractor/visualization/tableau_revamp/__init__.py,sha256=a3DGjQhaz17gBqW-E84TAgupKbqLC40y5Ajo1yn-ot4,156
|
|
296
261
|
castor_extractor/visualization/tableau_revamp/assets.py,sha256=8sJsK6Qixao6xVmVaO1usvs16SjNub9sIx7o-adYV14,659
|
|
297
262
|
castor_extractor/visualization/tableau_revamp/client/__init__.py,sha256=wmS9uLtUiqNYVloi0-DgD8d2qzu3RVZEAtWiaDp6G_M,90
|
|
@@ -406,11 +371,11 @@ castor_extractor/warehouse/salesforce/format_test.py,sha256=puTL-Co84jE2SQzKFKGL
|
|
|
406
371
|
castor_extractor/warehouse/salesforce/pagination.py,sha256=m1S9JRNf6Oe-6dDghYUY5wwTzGzKW5H9pE60PCXMha0,920
|
|
407
372
|
castor_extractor/warehouse/salesforce/soql.py,sha256=XB8ohKwHFfC4Xger7Y84DXLW17IJDye_bZ3FL6DCcOI,1188
|
|
408
373
|
castor_extractor/warehouse/snowflake/__init__.py,sha256=TEGXTyxWp4Tr9gIHb-UFVTRKj6YWmrRtqHruiKSZGiY,174
|
|
409
|
-
castor_extractor/warehouse/snowflake/client.py,sha256=
|
|
374
|
+
castor_extractor/warehouse/snowflake/client.py,sha256=RB72bbl_k91wDU76yrggPK6oeEm96Uopc8gYSUUB9ZM,6093
|
|
410
375
|
castor_extractor/warehouse/snowflake/client_test.py,sha256=ihWtOOAQfh8pu5JTr_EWfqefKOVIaJXznACURzaU1Qs,1432
|
|
411
|
-
castor_extractor/warehouse/snowflake/credentials.py,sha256=
|
|
376
|
+
castor_extractor/warehouse/snowflake/credentials.py,sha256=u0sZ6xPtcZmmvnUsAejJk-YxGl8BTzX_BlRjRk92BYU,932
|
|
412
377
|
castor_extractor/warehouse/snowflake/credentials_test.py,sha256=Lkc-DHXOvr50KrqAW4nt_x0IA0Mu_CsBVu6ATnzQB6I,673
|
|
413
|
-
castor_extractor/warehouse/snowflake/extract.py,sha256=
|
|
378
|
+
castor_extractor/warehouse/snowflake/extract.py,sha256=3yc9kcVtt2c1uWJOJJgeZchV4VmRr9EeYM3W6gl8zQQ,3201
|
|
414
379
|
castor_extractor/warehouse/snowflake/queries/.sqlfluff,sha256=vttrwcr64JVIuvc7WIg9C54cbOkjg_VjXNR7YnTGOPE,31
|
|
415
380
|
castor_extractor/warehouse/snowflake/queries/column.sql,sha256=Wy-arvS_3Dh0HFrzdpRmBsI58mMlN_5U097s5kMNluQ,1781
|
|
416
381
|
castor_extractor/warehouse/snowflake/queries/column_lineage.sql,sha256=YKBiZ6zySSNcXLDXwm31EjGIIkkkZc0-S6hI1SRM80o,1179
|
|
@@ -436,8 +401,8 @@ castor_extractor/warehouse/sqlserver/queries/table.sql,sha256=kbBQP-TdG5px1IVgyx
|
|
|
436
401
|
castor_extractor/warehouse/sqlserver/queries/user.sql,sha256=gOrZsMVypusR2dc4vwVs4E1a-CliRsr_UjnD2EbXs-A,94
|
|
437
402
|
castor_extractor/warehouse/sqlserver/query.py,sha256=g0hPT-RmeGi2DyenAi3o72cTlQsLToXIFYojqc8E5fQ,533
|
|
438
403
|
castor_extractor/warehouse/synapse/queries/column.sql,sha256=lNcFoIW3Y0PFOqoOzJEXmPvZvfAsY0AP63Mu2LuPzPo,1351
|
|
439
|
-
castor_extractor-0.
|
|
440
|
-
castor_extractor-0.
|
|
441
|
-
castor_extractor-0.
|
|
442
|
-
castor_extractor-0.
|
|
443
|
-
castor_extractor-0.
|
|
404
|
+
castor_extractor-0.24.0.dist-info/LICENCE,sha256=sL-IGa4hweyya1HgzMskrRdybbIa2cktzxb5qmUgDg8,8254
|
|
405
|
+
castor_extractor-0.24.0.dist-info/METADATA,sha256=HWTKSDx_akRg3FK_dMP5mRxlLg9Oc55uGUYgt2NmYaQ,22828
|
|
406
|
+
castor_extractor-0.24.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
|
407
|
+
castor_extractor-0.24.0.dist-info/entry_points.txt,sha256=7aVSxc-_2dicp28Ow-S4y0p4wGoTm9zGmVptMvfLdw8,1649
|
|
408
|
+
castor_extractor-0.24.0.dist-info/RECORD,,
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
from enum import Enum
|
|
2
|
-
|
|
3
|
-
from ...types import ExternalAsset, classproperty
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class TableauAsset(ExternalAsset):
|
|
7
|
-
"""
|
|
8
|
-
Tableau assets
|
|
9
|
-
"""
|
|
10
|
-
|
|
11
|
-
CUSTOM_SQL_TABLE = "custom_sql_tables"
|
|
12
|
-
CUSTOM_SQL_QUERY = "custom_sql_queries"
|
|
13
|
-
DASHBOARD = "dashboards"
|
|
14
|
-
DASHBOARD_SHEET = "dashboards_sheets"
|
|
15
|
-
DATASOURCE = "datasources"
|
|
16
|
-
FIELD = "fields"
|
|
17
|
-
PROJECT = "projects"
|
|
18
|
-
PUBLISHED_DATASOURCE = "published_datasources"
|
|
19
|
-
SHEET = "sheets"
|
|
20
|
-
USAGE = "views"
|
|
21
|
-
USER = "users"
|
|
22
|
-
WORKBOOK = "workbooks"
|
|
23
|
-
WORKBOOK_TO_DATASOURCE = "workbooks_to_datasource"
|
|
24
|
-
|
|
25
|
-
@classproperty
|
|
26
|
-
def optional(cls) -> set["TableauAsset"]:
|
|
27
|
-
return {
|
|
28
|
-
TableauAsset.DASHBOARD,
|
|
29
|
-
TableauAsset.DASHBOARD_SHEET,
|
|
30
|
-
TableauAsset.FIELD,
|
|
31
|
-
TableauAsset.SHEET,
|
|
32
|
-
TableauAsset.PUBLISHED_DATASOURCE,
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
class TableauGraphqlAsset(Enum):
|
|
37
|
-
"""
|
|
38
|
-
Assets which can be fetched from Tableau
|
|
39
|
-
"""
|
|
40
|
-
|
|
41
|
-
BIN_FIELD = "binFields"
|
|
42
|
-
CALCULATED_FIELD = "calculatedFields"
|
|
43
|
-
COLUMN_FIELD = "columnFields"
|
|
44
|
-
CUSTOM_SQL = "customSQLTables"
|
|
45
|
-
DASHBOARD = "dashboards"
|
|
46
|
-
DATASOURCE = "datasources"
|
|
47
|
-
GROUP_FIELD = "groupFields"
|
|
48
|
-
SHEETS = "sheets"
|
|
49
|
-
WORKBOOK_TO_DATASOURCE = "workbooks"
|