tableauserverclient 0.36__py3-none-any.whl → 0.38__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.
- tableauserverclient/__init__.py +6 -0
- tableauserverclient/bin/_version.py +3 -3
- tableauserverclient/helpers/strings.py +25 -1
- tableauserverclient/models/__init__.py +6 -1
- tableauserverclient/models/connection_item.py +3 -3
- tableauserverclient/models/datasource_item.py +218 -23
- tableauserverclient/models/extract_item.py +82 -0
- tableauserverclient/models/flow_item.py +2 -2
- tableauserverclient/models/group_item.py +11 -0
- tableauserverclient/models/interval_item.py +40 -0
- tableauserverclient/models/job_item.py +1 -0
- tableauserverclient/models/location_item.py +53 -0
- tableauserverclient/models/project_item.py +138 -27
- tableauserverclient/models/schedule_item.py +57 -0
- tableauserverclient/models/site_item.py +28 -0
- tableauserverclient/models/table_item.py +7 -3
- tableauserverclient/models/tableau_types.py +13 -1
- tableauserverclient/models/user_item.py +101 -1
- tableauserverclient/models/view_item.py +79 -5
- tableauserverclient/models/workbook_item.py +151 -1
- tableauserverclient/server/__init__.py +2 -0
- tableauserverclient/server/endpoint/databases_endpoint.py +101 -18
- tableauserverclient/server/endpoint/datasources_endpoint.py +562 -7
- tableauserverclient/server/endpoint/dqw_endpoint.py +16 -6
- tableauserverclient/server/endpoint/endpoint.py +39 -0
- tableauserverclient/server/endpoint/exceptions.py +4 -0
- tableauserverclient/server/endpoint/fileuploads_endpoint.py +1 -1
- tableauserverclient/server/endpoint/groupsets_endpoint.py +2 -2
- tableauserverclient/server/endpoint/jobs_endpoint.py +1 -1
- tableauserverclient/server/endpoint/schedules_endpoint.py +132 -2
- tableauserverclient/server/endpoint/sites_endpoint.py +18 -1
- tableauserverclient/server/endpoint/tables_endpoint.py +140 -17
- tableauserverclient/server/endpoint/users_endpoint.py +22 -5
- tableauserverclient/server/endpoint/views_endpoint.py +5 -1
- tableauserverclient/server/endpoint/workbooks_endpoint.py +24 -10
- tableauserverclient/server/query.py +36 -0
- tableauserverclient/server/request_factory.py +16 -5
- tableauserverclient/server/request_options.py +162 -2
- tableauserverclient/server/server.py +42 -0
- {tableauserverclient-0.36.dist-info → tableauserverclient-0.38.dist-info}/METADATA +3 -2
- {tableauserverclient-0.36.dist-info → tableauserverclient-0.38.dist-info}/RECORD +45 -43
- {tableauserverclient-0.36.dist-info → tableauserverclient-0.38.dist-info}/WHEEL +1 -1
- {tableauserverclient-0.36.dist-info → tableauserverclient-0.38.dist-info/licenses}/LICENSE +0 -0
- {tableauserverclient-0.36.dist-info → tableauserverclient-0.38.dist-info/licenses}/LICENSE.versioneer +0 -0
- {tableauserverclient-0.36.dist-info → tableauserverclient-0.38.dist-info}/top_level.txt +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import Union
|
|
2
|
+
from typing import TYPE_CHECKING, Optional, Union
|
|
3
3
|
from collections.abc import Iterable
|
|
4
4
|
|
|
5
|
+
from tableauserverclient.models.permissions_item import PermissionsRule
|
|
5
6
|
from tableauserverclient.server.endpoint.default_permissions_endpoint import _DefaultPermissionsEndpoint
|
|
6
7
|
from tableauserverclient.server.endpoint.dqw_endpoint import _DataQualityWarningEndpoint
|
|
7
8
|
from tableauserverclient.server.endpoint.endpoint import api, Endpoint
|
|
@@ -13,6 +14,10 @@ from tableauserverclient.models import DatabaseItem, TableItem, PaginationItem,
|
|
|
13
14
|
|
|
14
15
|
from tableauserverclient.helpers.logging import logger
|
|
15
16
|
|
|
17
|
+
if TYPE_CHECKING:
|
|
18
|
+
from tableauserverclient.models.dqw_item import DQWItem
|
|
19
|
+
from tableauserverclient.server.request_options import RequestOptions
|
|
20
|
+
|
|
16
21
|
|
|
17
22
|
class Databases(Endpoint, TaggingMixin):
|
|
18
23
|
def __init__(self, parent_srv):
|
|
@@ -23,11 +28,29 @@ class Databases(Endpoint, TaggingMixin):
|
|
|
23
28
|
self._data_quality_warnings = _DataQualityWarningEndpoint(parent_srv, Resource.Database)
|
|
24
29
|
|
|
25
30
|
@property
|
|
26
|
-
def baseurl(self):
|
|
31
|
+
def baseurl(self) -> str:
|
|
27
32
|
return f"{self.parent_srv.baseurl}/sites/{self.parent_srv.site_id}/databases"
|
|
28
33
|
|
|
29
34
|
@api(version="3.5")
|
|
30
|
-
def get(self, req_options=None):
|
|
35
|
+
def get(self, req_options: Optional["RequestOptions"] = None) -> tuple[list[DatabaseItem], PaginationItem]:
|
|
36
|
+
"""
|
|
37
|
+
Get information about all databases on the site. Endpoint is paginated,
|
|
38
|
+
and will return a default of 100 items per page. Use the `req_options`
|
|
39
|
+
parameter to customize the request.
|
|
40
|
+
|
|
41
|
+
REST API: https://help.tableau.com/current/api/rest_api/en-us/REST/rest_api_ref_metadata.htm#query_databases
|
|
42
|
+
|
|
43
|
+
Parameters
|
|
44
|
+
----------
|
|
45
|
+
req_options : RequestOptions, optional
|
|
46
|
+
Options to customize the request. If not provided, defaults to None.
|
|
47
|
+
|
|
48
|
+
Returns
|
|
49
|
+
-------
|
|
50
|
+
tuple[list[DatabaseItem], PaginationItem]
|
|
51
|
+
A tuple containing a list of DatabaseItem objects and a
|
|
52
|
+
PaginationItem object.
|
|
53
|
+
"""
|
|
31
54
|
logger.info("Querying all databases on site")
|
|
32
55
|
url = self.baseurl
|
|
33
56
|
server_response = self.get_request(url, req_options)
|
|
@@ -37,7 +60,27 @@ class Databases(Endpoint, TaggingMixin):
|
|
|
37
60
|
|
|
38
61
|
# Get 1 database
|
|
39
62
|
@api(version="3.5")
|
|
40
|
-
def get_by_id(self, database_id):
|
|
63
|
+
def get_by_id(self, database_id: str) -> DatabaseItem:
|
|
64
|
+
"""
|
|
65
|
+
Get information about a single database asset on the site.
|
|
66
|
+
|
|
67
|
+
REST API: https://help.tableau.com/current/api/rest_api/en-us/REST/rest_api_ref_metadata.htm#query_database
|
|
68
|
+
|
|
69
|
+
Parameters
|
|
70
|
+
----------
|
|
71
|
+
database_id : str
|
|
72
|
+
The ID of the database to retrieve.
|
|
73
|
+
|
|
74
|
+
Returns
|
|
75
|
+
-------
|
|
76
|
+
DatabaseItem
|
|
77
|
+
A DatabaseItem object representing the database.
|
|
78
|
+
|
|
79
|
+
Raises
|
|
80
|
+
------
|
|
81
|
+
ValueError
|
|
82
|
+
If the database ID is undefined.
|
|
83
|
+
"""
|
|
41
84
|
if not database_id:
|
|
42
85
|
error = "database ID undefined."
|
|
43
86
|
raise ValueError(error)
|
|
@@ -47,7 +90,24 @@ class Databases(Endpoint, TaggingMixin):
|
|
|
47
90
|
return DatabaseItem.from_response(server_response.content, self.parent_srv.namespace)[0]
|
|
48
91
|
|
|
49
92
|
@api(version="3.5")
|
|
50
|
-
def delete(self, database_id):
|
|
93
|
+
def delete(self, database_id: str) -> None:
|
|
94
|
+
"""
|
|
95
|
+
Deletes a single database asset from the server.
|
|
96
|
+
|
|
97
|
+
Parameters
|
|
98
|
+
----------
|
|
99
|
+
database_id : str
|
|
100
|
+
The ID of the database to delete.
|
|
101
|
+
|
|
102
|
+
Returns
|
|
103
|
+
-------
|
|
104
|
+
None
|
|
105
|
+
|
|
106
|
+
Raises
|
|
107
|
+
------
|
|
108
|
+
ValueError
|
|
109
|
+
If the database ID is undefined.
|
|
110
|
+
"""
|
|
51
111
|
if not database_id:
|
|
52
112
|
error = "Database ID undefined."
|
|
53
113
|
raise ValueError(error)
|
|
@@ -56,7 +116,28 @@ class Databases(Endpoint, TaggingMixin):
|
|
|
56
116
|
logger.info(f"Deleted single database (ID: {database_id})")
|
|
57
117
|
|
|
58
118
|
@api(version="3.5")
|
|
59
|
-
def update(self, database_item):
|
|
119
|
+
def update(self, database_item: DatabaseItem) -> DatabaseItem:
|
|
120
|
+
"""
|
|
121
|
+
Update the database description, certify the database, set permissions,
|
|
122
|
+
or assign a User as the database contact.
|
|
123
|
+
|
|
124
|
+
REST API: https://help.tableau.com/current/api/rest_api/en-us/REST/rest_api_ref_metadata.htm#update_database
|
|
125
|
+
|
|
126
|
+
Parameters
|
|
127
|
+
----------
|
|
128
|
+
database_item : DatabaseItem
|
|
129
|
+
The DatabaseItem object to update.
|
|
130
|
+
|
|
131
|
+
Returns
|
|
132
|
+
-------
|
|
133
|
+
DatabaseItem
|
|
134
|
+
The updated DatabaseItem object.
|
|
135
|
+
|
|
136
|
+
Raises
|
|
137
|
+
------
|
|
138
|
+
MissingRequiredFieldError
|
|
139
|
+
If the database item is missing an ID.
|
|
140
|
+
"""
|
|
60
141
|
if not database_item.id:
|
|
61
142
|
error = "Database item missing ID."
|
|
62
143
|
raise MissingRequiredFieldError(error)
|
|
@@ -88,43 +169,45 @@ class Databases(Endpoint, TaggingMixin):
|
|
|
88
169
|
return tables
|
|
89
170
|
|
|
90
171
|
@api(version="3.5")
|
|
91
|
-
def populate_permissions(self, item):
|
|
172
|
+
def populate_permissions(self, item: DatabaseItem) -> None:
|
|
92
173
|
self._permissions.populate(item)
|
|
93
174
|
|
|
94
175
|
@api(version="3.5")
|
|
95
|
-
def update_permissions(self, item, rules):
|
|
176
|
+
def update_permissions(self, item: DatabaseItem, rules: list[PermissionsRule]) -> list[PermissionsRule]:
|
|
96
177
|
return self._permissions.update(item, rules)
|
|
97
178
|
|
|
98
179
|
@api(version="3.5")
|
|
99
|
-
def delete_permission(self, item, rules):
|
|
180
|
+
def delete_permission(self, item: DatabaseItem, rules: list[PermissionsRule]) -> None:
|
|
100
181
|
self._permissions.delete(item, rules)
|
|
101
182
|
|
|
102
183
|
@api(version="3.5")
|
|
103
|
-
def populate_table_default_permissions(self, item):
|
|
184
|
+
def populate_table_default_permissions(self, item: DatabaseItem):
|
|
104
185
|
self._default_permissions.populate_default_permissions(item, Resource.Table)
|
|
105
186
|
|
|
106
187
|
@api(version="3.5")
|
|
107
|
-
def update_table_default_permissions(
|
|
108
|
-
|
|
188
|
+
def update_table_default_permissions(
|
|
189
|
+
self, item: DatabaseItem, rules: list[PermissionsRule]
|
|
190
|
+
) -> list[PermissionsRule]:
|
|
191
|
+
return self._default_permissions.update_default_permissions(item, rules, Resource.Table)
|
|
109
192
|
|
|
110
193
|
@api(version="3.5")
|
|
111
|
-
def delete_table_default_permissions(self, item):
|
|
112
|
-
self._default_permissions.delete_default_permission(item, Resource.Table)
|
|
194
|
+
def delete_table_default_permissions(self, rule: PermissionsRule, item: DatabaseItem) -> None:
|
|
195
|
+
self._default_permissions.delete_default_permission(item, rule, Resource.Table)
|
|
113
196
|
|
|
114
197
|
@api(version="3.5")
|
|
115
|
-
def populate_dqw(self, item):
|
|
198
|
+
def populate_dqw(self, item: DatabaseItem) -> None:
|
|
116
199
|
self._data_quality_warnings.populate(item)
|
|
117
200
|
|
|
118
201
|
@api(version="3.5")
|
|
119
|
-
def update_dqw(self, item, warning):
|
|
202
|
+
def update_dqw(self, item: DatabaseItem, warning: "DQWItem") -> list["DQWItem"]:
|
|
120
203
|
return self._data_quality_warnings.update(item, warning)
|
|
121
204
|
|
|
122
205
|
@api(version="3.5")
|
|
123
|
-
def add_dqw(self, item, warning):
|
|
206
|
+
def add_dqw(self, item: DatabaseItem, warning: "DQWItem") -> list["DQWItem"]:
|
|
124
207
|
return self._data_quality_warnings.add(item, warning)
|
|
125
208
|
|
|
126
209
|
@api(version="3.5")
|
|
127
|
-
def delete_dqw(self, item):
|
|
210
|
+
def delete_dqw(self, item: DatabaseItem) -> None:
|
|
128
211
|
self._data_quality_warnings.clear(item)
|
|
129
212
|
|
|
130
213
|
@api(version="3.9")
|