tableauserverclient 0.39__py3-none-any.whl → 0.40__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.
- _version.py +3 -3
- tableauserverclient/__init__.py +150 -0
- {bin → tableauserverclient/bin}/_version.py +3 -3
- tableauserverclient/config.py +27 -0
- tableauserverclient/datetime_helpers.py +45 -0
- tableauserverclient/exponential_backoff.py +30 -0
- tableauserverclient/filesys_helpers.py +63 -0
- tableauserverclient/namespace.py +37 -0
- tableauserverclient/py.typed +0 -0
- {tableauserverclient-0.39.dist-info → tableauserverclient-0.40.dist-info}/METADATA +1 -1
- tableauserverclient-0.40.dist-info/RECORD +114 -0
- tableauserverclient-0.40.dist-info/top_level.txt +1 -0
- tableauserverclient-0.39.dist-info/RECORD +0 -107
- tableauserverclient-0.39.dist-info/top_level.txt +0 -4
- {bin → tableauserverclient/bin}/__init__.py +0 -0
- {helpers → tableauserverclient/helpers}/__init__.py +0 -0
- {helpers → tableauserverclient/helpers}/headers.py +0 -0
- {helpers → tableauserverclient/helpers}/logging.py +0 -0
- {helpers → tableauserverclient/helpers}/strings.py +0 -0
- {models → tableauserverclient/models}/__init__.py +0 -0
- {models → tableauserverclient/models}/collection_item.py +0 -0
- {models → tableauserverclient/models}/column_item.py +0 -0
- {models → tableauserverclient/models}/connection_credentials.py +0 -0
- {models → tableauserverclient/models}/connection_item.py +0 -0
- {models → tableauserverclient/models}/custom_view_item.py +0 -0
- {models → tableauserverclient/models}/data_acceleration_report_item.py +0 -0
- {models → tableauserverclient/models}/data_alert_item.py +0 -0
- {models → tableauserverclient/models}/data_freshness_policy_item.py +0 -0
- {models → tableauserverclient/models}/database_item.py +0 -0
- {models → tableauserverclient/models}/datasource_item.py +0 -0
- {models → tableauserverclient/models}/dqw_item.py +0 -0
- {models → tableauserverclient/models}/exceptions.py +0 -0
- {models → tableauserverclient/models}/extensions_item.py +0 -0
- {models → tableauserverclient/models}/extract_item.py +0 -0
- {models → tableauserverclient/models}/favorites_item.py +0 -0
- {models → tableauserverclient/models}/fileupload_item.py +0 -0
- {models → tableauserverclient/models}/flow_item.py +0 -0
- {models → tableauserverclient/models}/flow_run_item.py +0 -0
- {models → tableauserverclient/models}/group_item.py +0 -0
- {models → tableauserverclient/models}/groupset_item.py +0 -0
- {models → tableauserverclient/models}/interval_item.py +0 -0
- {models → tableauserverclient/models}/job_item.py +0 -0
- {models → tableauserverclient/models}/linked_tasks_item.py +0 -0
- {models → tableauserverclient/models}/location_item.py +0 -0
- {models → tableauserverclient/models}/metric_item.py +0 -0
- {models → tableauserverclient/models}/oidc_item.py +0 -0
- {models → tableauserverclient/models}/pagination_item.py +0 -0
- {models → tableauserverclient/models}/permissions_item.py +0 -0
- {models → tableauserverclient/models}/project_item.py +0 -0
- {models → tableauserverclient/models}/property_decorators.py +0 -0
- {models → tableauserverclient/models}/reference_item.py +0 -0
- {models → tableauserverclient/models}/revision_item.py +0 -0
- {models → tableauserverclient/models}/schedule_item.py +0 -0
- {models → tableauserverclient/models}/server_info_item.py +0 -0
- {models → tableauserverclient/models}/site_item.py +0 -0
- {models → tableauserverclient/models}/subscription_item.py +0 -0
- {models → tableauserverclient/models}/table_item.py +0 -0
- {models → tableauserverclient/models}/tableau_auth.py +0 -0
- {models → tableauserverclient/models}/tableau_types.py +0 -0
- {models → tableauserverclient/models}/tag_item.py +0 -0
- {models → tableauserverclient/models}/target.py +0 -0
- {models → tableauserverclient/models}/task_item.py +0 -0
- {models → tableauserverclient/models}/user_item.py +0 -0
- {models → tableauserverclient/models}/view_item.py +0 -0
- {models → tableauserverclient/models}/virtual_connection_item.py +0 -0
- {models → tableauserverclient/models}/webhook_item.py +0 -0
- {models → tableauserverclient/models}/workbook_item.py +0 -0
- {server → tableauserverclient/server}/__init__.py +0 -0
- {server → tableauserverclient/server}/endpoint/__init__.py +0 -0
- {server → tableauserverclient/server}/endpoint/auth_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/custom_views_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/data_acceleration_report_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/data_alert_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/databases_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/datasources_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/default_permissions_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/dqw_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/exceptions.py +0 -0
- {server → tableauserverclient/server}/endpoint/extensions_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/favorites_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/fileuploads_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/flow_runs_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/flow_task_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/flows_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/groups_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/groupsets_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/jobs_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/linked_tasks_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/metadata_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/metrics_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/oidc_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/permissions_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/projects_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/resource_tagger.py +0 -0
- {server → tableauserverclient/server}/endpoint/schedules_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/server_info_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/sites_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/subscriptions_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/tables_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/tasks_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/users_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/views_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/virtual_connections_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/webhooks_endpoint.py +0 -0
- {server → tableauserverclient/server}/endpoint/workbooks_endpoint.py +0 -0
- {server → tableauserverclient/server}/exceptions.py +0 -0
- {server → tableauserverclient/server}/filter.py +0 -0
- {server → tableauserverclient/server}/pager.py +0 -0
- {server → tableauserverclient/server}/query.py +0 -0
- {server → tableauserverclient/server}/request_factory.py +0 -0
- {server → tableauserverclient/server}/request_options.py +0 -0
- {server → tableauserverclient/server}/server.py +0 -0
- {server → tableauserverclient/server}/sort.py +0 -0
- {tableauserverclient-0.39.dist-info → tableauserverclient-0.40.dist-info}/WHEEL +0 -0
- {tableauserverclient-0.39.dist-info → tableauserverclient-0.40.dist-info}/licenses/LICENSE +0 -0
_version.py
CHANGED
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2026-02-
|
|
11
|
+
"date": "2026-02-03T12:18:13-0800",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "0.
|
|
14
|
+
"full-revisionid": "d4b27f42d897883f8b8d0cb5b7edb558df2cbfb6",
|
|
15
|
+
"version": "0.40"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
from tableauserverclient.bin._version import get_versions
|
|
2
|
+
from tableauserverclient.namespace import NEW_NAMESPACE as DEFAULT_NAMESPACE
|
|
3
|
+
from tableauserverclient.models import (
|
|
4
|
+
BackgroundJobItem,
|
|
5
|
+
CollectionItem,
|
|
6
|
+
ColumnItem,
|
|
7
|
+
ConnectionCredentials,
|
|
8
|
+
ConnectionItem,
|
|
9
|
+
CustomViewItem,
|
|
10
|
+
DQWItem,
|
|
11
|
+
DailyInterval,
|
|
12
|
+
DataAlertItem,
|
|
13
|
+
DatabaseItem,
|
|
14
|
+
DataFreshnessPolicyItem,
|
|
15
|
+
DatasourceItem,
|
|
16
|
+
ExtensionsServer,
|
|
17
|
+
ExtensionsSiteSettings,
|
|
18
|
+
FavoriteItem,
|
|
19
|
+
FlowItem,
|
|
20
|
+
FlowRunItem,
|
|
21
|
+
FileuploadItem,
|
|
22
|
+
GroupItem,
|
|
23
|
+
GroupSetItem,
|
|
24
|
+
HourlyInterval,
|
|
25
|
+
IntervalItem,
|
|
26
|
+
JobItem,
|
|
27
|
+
JWTAuth,
|
|
28
|
+
LinkedTaskItem,
|
|
29
|
+
LinkedTaskStepItem,
|
|
30
|
+
LinkedTaskFlowRunItem,
|
|
31
|
+
LocationItem,
|
|
32
|
+
MetricItem,
|
|
33
|
+
MonthlyInterval,
|
|
34
|
+
PaginationItem,
|
|
35
|
+
Permission,
|
|
36
|
+
PermissionsRule,
|
|
37
|
+
PersonalAccessTokenAuth,
|
|
38
|
+
ProjectItem,
|
|
39
|
+
Resource,
|
|
40
|
+
RevisionItem,
|
|
41
|
+
SafeExtension,
|
|
42
|
+
ScheduleItem,
|
|
43
|
+
SiteAuthConfiguration,
|
|
44
|
+
SiteOIDCConfiguration,
|
|
45
|
+
SiteItem,
|
|
46
|
+
ServerInfoItem,
|
|
47
|
+
SubscriptionItem,
|
|
48
|
+
TableauItem,
|
|
49
|
+
TableItem,
|
|
50
|
+
TableauAuth,
|
|
51
|
+
Target,
|
|
52
|
+
TaskItem,
|
|
53
|
+
UserItem,
|
|
54
|
+
ViewItem,
|
|
55
|
+
VirtualConnectionItem,
|
|
56
|
+
WebhookItem,
|
|
57
|
+
WeeklyInterval,
|
|
58
|
+
WorkbookItem,
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
from tableauserverclient.server import (
|
|
62
|
+
CSVRequestOptions,
|
|
63
|
+
ExcelRequestOptions,
|
|
64
|
+
ImageRequestOptions,
|
|
65
|
+
PDFRequestOptions,
|
|
66
|
+
PPTXRequestOptions,
|
|
67
|
+
RequestOptions,
|
|
68
|
+
MissingRequiredFieldError,
|
|
69
|
+
FailedSignInError,
|
|
70
|
+
NotSignedInError,
|
|
71
|
+
ServerResponseError,
|
|
72
|
+
Filter,
|
|
73
|
+
Pager,
|
|
74
|
+
Server,
|
|
75
|
+
Sort,
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
__all__ = [
|
|
79
|
+
"BackgroundJobItem",
|
|
80
|
+
"CollectionItem",
|
|
81
|
+
"ColumnItem",
|
|
82
|
+
"ConnectionCredentials",
|
|
83
|
+
"ConnectionItem",
|
|
84
|
+
"CSVRequestOptions",
|
|
85
|
+
"CustomViewItem",
|
|
86
|
+
"DailyInterval",
|
|
87
|
+
"DataAlertItem",
|
|
88
|
+
"DatabaseItem",
|
|
89
|
+
"DataFreshnessPolicyItem",
|
|
90
|
+
"DatasourceItem",
|
|
91
|
+
"DEFAULT_NAMESPACE",
|
|
92
|
+
"DQWItem",
|
|
93
|
+
"ExcelRequestOptions",
|
|
94
|
+
"ExtensionsServer",
|
|
95
|
+
"ExtensionsSiteSettings",
|
|
96
|
+
"FailedSignInError",
|
|
97
|
+
"FavoriteItem",
|
|
98
|
+
"FileuploadItem",
|
|
99
|
+
"Filter",
|
|
100
|
+
"FlowItem",
|
|
101
|
+
"FlowRunItem",
|
|
102
|
+
"get_versions",
|
|
103
|
+
"GroupItem",
|
|
104
|
+
"GroupSetItem",
|
|
105
|
+
"HourlyInterval",
|
|
106
|
+
"ImageRequestOptions",
|
|
107
|
+
"IntervalItem",
|
|
108
|
+
"JobItem",
|
|
109
|
+
"JWTAuth",
|
|
110
|
+
"LinkedTaskFlowRunItem",
|
|
111
|
+
"LinkedTaskItem",
|
|
112
|
+
"LinkedTaskStepItem",
|
|
113
|
+
"LocationItem",
|
|
114
|
+
"MetricItem",
|
|
115
|
+
"MissingRequiredFieldError",
|
|
116
|
+
"MonthlyInterval",
|
|
117
|
+
"NotSignedInError",
|
|
118
|
+
"Pager",
|
|
119
|
+
"PaginationItem",
|
|
120
|
+
"PDFRequestOptions",
|
|
121
|
+
"PPTXRequestOptions",
|
|
122
|
+
"Permission",
|
|
123
|
+
"PermissionsRule",
|
|
124
|
+
"PersonalAccessTokenAuth",
|
|
125
|
+
"ProjectItem",
|
|
126
|
+
"RequestOptions",
|
|
127
|
+
"Resource",
|
|
128
|
+
"RevisionItem",
|
|
129
|
+
"SafeExtension",
|
|
130
|
+
"ScheduleItem",
|
|
131
|
+
"Server",
|
|
132
|
+
"ServerInfoItem",
|
|
133
|
+
"ServerResponseError",
|
|
134
|
+
"SiteItem",
|
|
135
|
+
"SiteAuthConfiguration",
|
|
136
|
+
"SiteOIDCConfiguration",
|
|
137
|
+
"Sort",
|
|
138
|
+
"SubscriptionItem",
|
|
139
|
+
"TableauAuth",
|
|
140
|
+
"TableauItem",
|
|
141
|
+
"TableItem",
|
|
142
|
+
"Target",
|
|
143
|
+
"TaskItem",
|
|
144
|
+
"UserItem",
|
|
145
|
+
"ViewItem",
|
|
146
|
+
"VirtualConnectionItem",
|
|
147
|
+
"WebhookItem",
|
|
148
|
+
"WeeklyInterval",
|
|
149
|
+
"WorkbookItem",
|
|
150
|
+
]
|
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2026-02-
|
|
11
|
+
"date": "2026-02-03T12:18:13-0800",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "0.
|
|
14
|
+
"full-revisionid": "d4b27f42d897883f8b8d0cb5b7edb558df2cbfb6",
|
|
15
|
+
"version": "0.40"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import os
|
|
2
|
+
|
|
3
|
+
ALLOWED_FILE_EXTENSIONS = ["tds", "tdsx", "tde", "hyper", "parquet"]
|
|
4
|
+
|
|
5
|
+
BYTES_PER_MB = 1024 * 1024
|
|
6
|
+
|
|
7
|
+
DELAY_SLEEP_SECONDS = 0.1
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Config:
|
|
11
|
+
# The maximum size of a file that can be published in a single request is 64MB
|
|
12
|
+
@property
|
|
13
|
+
def FILESIZE_LIMIT_MB(self):
|
|
14
|
+
return min(int(os.getenv("TSC_FILESIZE_LIMIT_MB", 64)), 64)
|
|
15
|
+
|
|
16
|
+
# For when a datasource is over 64MB, break it into 5MB(standard chunk size) chunks
|
|
17
|
+
@property
|
|
18
|
+
def CHUNK_SIZE_MB(self):
|
|
19
|
+
return int(os.getenv("TSC_CHUNK_SIZE_MB", 5 * 10)) # 5MB felt too slow, upped it to 50
|
|
20
|
+
|
|
21
|
+
# Default page size
|
|
22
|
+
@property
|
|
23
|
+
def PAGE_SIZE(self):
|
|
24
|
+
return int(os.getenv("TSC_PAGE_SIZE", 100))
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
config = Config()
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import datetime
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
ZERO = datetime.timedelta(0)
|
|
5
|
+
HOUR = datetime.timedelta(hours=1)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def timestamp():
|
|
9
|
+
return datetime.datetime.now().strftime("%H:%M:%S")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
# This class is a concrete implementation of the abstract base class tzinfo
|
|
13
|
+
# docs: https://docs.python.org/2.3/lib/datetime-tzinfo.html
|
|
14
|
+
class UTC(datetime.tzinfo):
|
|
15
|
+
"""UTC"""
|
|
16
|
+
|
|
17
|
+
def utcoffset(self, dt):
|
|
18
|
+
return ZERO
|
|
19
|
+
|
|
20
|
+
def tzname(self, dt):
|
|
21
|
+
return "UTC"
|
|
22
|
+
|
|
23
|
+
def dst(self, dt):
|
|
24
|
+
return ZERO
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
utc = UTC()
|
|
28
|
+
TABLEAU_DATE_FORMAT = "%Y-%m-%dT%H:%M:%SZ"
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def parse_datetime(date):
|
|
32
|
+
if date is None:
|
|
33
|
+
return None
|
|
34
|
+
|
|
35
|
+
try:
|
|
36
|
+
return datetime.datetime.strptime(date, TABLEAU_DATE_FORMAT).replace(tzinfo=utc)
|
|
37
|
+
except ValueError:
|
|
38
|
+
return None
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def format_datetime(date):
|
|
42
|
+
if date is None:
|
|
43
|
+
return None
|
|
44
|
+
|
|
45
|
+
return date.astimezone(tz=utc).strftime(TABLEAU_DATE_FORMAT)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import time
|
|
2
|
+
|
|
3
|
+
# Polling for server-side events (such as job completion) uses exponential backoff for the sleep intervals between polls
|
|
4
|
+
ASYNC_POLL_MIN_INTERVAL = 0.5
|
|
5
|
+
ASYNC_POLL_MAX_INTERVAL = 30
|
|
6
|
+
ASYNC_POLL_BACKOFF_FACTOR = 1.4
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class ExponentialBackoffTimer:
|
|
10
|
+
def __init__(self, *, timeout=None):
|
|
11
|
+
self.start_time = time.time()
|
|
12
|
+
self.timeout = timeout
|
|
13
|
+
self.current_sleep_interval = ASYNC_POLL_MIN_INTERVAL
|
|
14
|
+
|
|
15
|
+
def sleep(self):
|
|
16
|
+
max_sleep_time = ASYNC_POLL_MAX_INTERVAL
|
|
17
|
+
if self.timeout is not None:
|
|
18
|
+
elapsed = time.time() - self.start_time
|
|
19
|
+
if elapsed >= self.timeout:
|
|
20
|
+
raise TimeoutError(f"Timeout after {elapsed} seconds waiting for asynchronous event")
|
|
21
|
+
remaining_time = self.timeout - elapsed
|
|
22
|
+
# Usually, we would sleep for `ASYNC_POLL_MAX_INTERVAL`, but we don't want to sleep over the timeout
|
|
23
|
+
max_sleep_time = min(ASYNC_POLL_MAX_INTERVAL, remaining_time)
|
|
24
|
+
# We want to sleep at least for `ASYNC_POLL_MIN_INTERVAL`. This is important to ensure that, as we get
|
|
25
|
+
# closer to the timeout, we don't accidentally wake up multiple times and hit the server in rapid succession
|
|
26
|
+
# due to waking up to early from the `sleep`.
|
|
27
|
+
max_sleep_time = max(max_sleep_time, ASYNC_POLL_MIN_INTERVAL)
|
|
28
|
+
|
|
29
|
+
time.sleep(min(self.current_sleep_interval, max_sleep_time))
|
|
30
|
+
self.current_sleep_interval *= ASYNC_POLL_BACKOFF_FACTOR
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import os
|
|
2
|
+
|
|
3
|
+
ALLOWED_SPECIAL = (" ", ".", "_", "-")
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def to_filename(string_to_sanitize):
|
|
7
|
+
sanitized = (c for c in string_to_sanitize if c.isalnum() or c in ALLOWED_SPECIAL)
|
|
8
|
+
return "".join(sanitized)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def make_download_path(filepath, filename):
|
|
12
|
+
download_path = None
|
|
13
|
+
|
|
14
|
+
if filepath is None:
|
|
15
|
+
download_path = filename
|
|
16
|
+
|
|
17
|
+
elif os.path.isdir(filepath):
|
|
18
|
+
download_path = os.path.join(filepath, filename)
|
|
19
|
+
|
|
20
|
+
else:
|
|
21
|
+
download_path = filepath + os.path.splitext(filename)[1]
|
|
22
|
+
|
|
23
|
+
return download_path
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def get_file_object_size(file):
|
|
27
|
+
# Returns the size of a file object
|
|
28
|
+
file.seek(0, os.SEEK_END)
|
|
29
|
+
file_size = file.tell()
|
|
30
|
+
file.seek(0)
|
|
31
|
+
return file_size
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def get_file_type(file):
|
|
35
|
+
# Tableau workbooks (twb) and data sources (tds) are both stored as xml files.
|
|
36
|
+
# Packaged workbooks (twbx) and data sources (tdsx) are zip files
|
|
37
|
+
# containing original files accompanied with supporting local files.
|
|
38
|
+
|
|
39
|
+
# This reference lists magic file signatures: https://www.garykessler.net/library/file_sigs.html
|
|
40
|
+
MAGIC_BYTES = {
|
|
41
|
+
"zip": bytes.fromhex("504b0304"),
|
|
42
|
+
"tde": bytes.fromhex("20020162"),
|
|
43
|
+
"xml": bytes.fromhex("3c3f786d6c20"),
|
|
44
|
+
"hyper": bytes.fromhex("487970657208000001000000"),
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
# Peek first bytes of a file
|
|
48
|
+
first_bytes = file.read(32)
|
|
49
|
+
|
|
50
|
+
file_type = None
|
|
51
|
+
for ft, signature in MAGIC_BYTES.items():
|
|
52
|
+
if first_bytes.startswith(signature):
|
|
53
|
+
file_type = ft
|
|
54
|
+
break
|
|
55
|
+
|
|
56
|
+
# Return pointer back to start
|
|
57
|
+
file.seek(0)
|
|
58
|
+
|
|
59
|
+
if file_type is None:
|
|
60
|
+
error = "Unknown file type!"
|
|
61
|
+
raise ValueError(error)
|
|
62
|
+
|
|
63
|
+
return file_type
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import re
|
|
2
|
+
|
|
3
|
+
from defusedxml.ElementTree import fromstring
|
|
4
|
+
|
|
5
|
+
OLD_NAMESPACE = "http://tableausoftware.com/api"
|
|
6
|
+
NEW_NAMESPACE = "http://tableau.com/api"
|
|
7
|
+
NAMESPACE_RE = re.compile(r"\{(.*?)\}")
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class UnknownNamespaceError(Exception):
|
|
11
|
+
pass
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class Namespace:
|
|
15
|
+
def __init__(self):
|
|
16
|
+
self._namespace = {"t": NEW_NAMESPACE}
|
|
17
|
+
self._detected = False
|
|
18
|
+
|
|
19
|
+
def __call__(self):
|
|
20
|
+
return self._namespace
|
|
21
|
+
|
|
22
|
+
def detect(self, xml):
|
|
23
|
+
if self._detected:
|
|
24
|
+
return
|
|
25
|
+
|
|
26
|
+
if not xml.startswith(b"<?xml"):
|
|
27
|
+
return # Not an xml file, don't detect anything
|
|
28
|
+
|
|
29
|
+
root = fromstring(xml)
|
|
30
|
+
matches = NAMESPACE_RE.match(root.tag)
|
|
31
|
+
if matches:
|
|
32
|
+
detected_ns = matches.group(1)
|
|
33
|
+
if detected_ns in (OLD_NAMESPACE, NEW_NAMESPACE):
|
|
34
|
+
self._namespace = {"t": detected_ns}
|
|
35
|
+
self._detected = True
|
|
36
|
+
else:
|
|
37
|
+
raise UnknownNamespaceError(detected_ns)
|
|
File without changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tableauserverclient
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.40
|
|
4
4
|
Summary: A Python module for working with the Tableau Server REST API.
|
|
5
5
|
Author-email: Tableau <github@tableau.com>
|
|
6
6
|
Project-URL: repository, https://github.com/tableau/server-client-python
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
_version.py,sha256=Ar107OxOqwZ2wY6jnrdR0S_7IBYED_e3LfHht0loQi8,496
|
|
2
|
+
tableauserverclient/__init__.py,sha256=77xoTo7gV3vQTJ1LESSkM6ivCBt0hNTxBrLF24kE_1g,3098
|
|
3
|
+
tableauserverclient/config.py,sha256=LcWVmZjkYMh1cKCKZm3VZItgKOoSLz1ai4PnVgbAtDA,713
|
|
4
|
+
tableauserverclient/datetime_helpers.py,sha256=_-gWz5I2_KHT5AzW_boD8meH6loTTKdK-_62h1MA6ko,884
|
|
5
|
+
tableauserverclient/exponential_backoff.py,sha256=HtAfbbVnYtiOe2_ZzKqZmsml40EDZBaC3bttif5qeG8,1474
|
|
6
|
+
tableauserverclient/filesys_helpers.py,sha256=hosTm9fpc9B9_VCDcAuyHA0A-f-MWs9_2utyRweuZ5I,1667
|
|
7
|
+
tableauserverclient/namespace.py,sha256=Zh6QtxNmqPkjRMsefHHX-ycS4r-egnrJ4-hdHvldBHw,963
|
|
8
|
+
tableauserverclient/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
+
tableauserverclient/bin/__init__.py,sha256=T8WHy9zTlF9XZWoqqMbrxJ39Tw4YHo4x7zq9iSQRioQ,119
|
|
10
|
+
tableauserverclient/bin/_version.py,sha256=Ar107OxOqwZ2wY6jnrdR0S_7IBYED_e3LfHht0loQi8,496
|
|
11
|
+
tableauserverclient/helpers/__init__.py,sha256=llpqF9zV5dsP5hQt8dyop33Op5OzGmxW0BZibaSlCcM,23
|
|
12
|
+
tableauserverclient/helpers/headers.py,sha256=Pg-ZWSgV2Yp813BV1Tzo8F2Hn4P01zscla2RRM4yqNk,411
|
|
13
|
+
tableauserverclient/helpers/logging.py,sha256=5q_oR3wERHVXFXY6XDnLYML5-HdAPJTmqhH9IZg4VfY,113
|
|
14
|
+
tableauserverclient/helpers/strings.py,sha256=7MvaS9haJ5hpdv4NPQ11gRj94zIgbDmujFPD_GnZPJI,2013
|
|
15
|
+
tableauserverclient/models/__init__.py,sha256=m_hsDtY9aQwtd1rtg34QqmBVBF1wGh3SEArFjKMP1-8,4679
|
|
16
|
+
tableauserverclient/models/collection_item.py,sha256=nZISWKtjsuAHSBrw9_h1Xco0zHNf1x5uQ0UAH2MWxaQ,2162
|
|
17
|
+
tableauserverclient/models/column_item.py,sha256=yUFzXNcnUPVo2imrhEBS4fMVAR5j2ZzksOk5t9XYW5s,1964
|
|
18
|
+
tableauserverclient/models/connection_credentials.py,sha256=CQ8FkkHW9MeTw8uArNhrU5mowtryWUddgEgEliqh3ys,2066
|
|
19
|
+
tableauserverclient/models/connection_item.py,sha256=QO-20N7df-5V1rCnaZCQ6bxLRncctWvprq1aXSOF7YE,6553
|
|
20
|
+
tableauserverclient/models/custom_view_item.py,sha256=oIdYhyWLhJZUaSsp9QAAAka9AP7kO8LOaN97vPw95Qw,7967
|
|
21
|
+
tableauserverclient/models/data_acceleration_report_item.py,sha256=HFZROetfOWh-hMS48xBEHqYOViINHZR-EpcrP45_8AI,3386
|
|
22
|
+
tableauserverclient/models/data_alert_item.py,sha256=VZtRR-kqojq-mkrTgvay4WkPawj3-4jbSc0wBijmJhk,6444
|
|
23
|
+
tableauserverclient/models/data_freshness_policy_item.py,sha256=k_EfTuf9Av6kDEapmqiLbkzT8W4yEYS6V3EY0CRXPbM,7648
|
|
24
|
+
tableauserverclient/models/database_item.py,sha256=lWxmmMpPeVxzizVAsVkc6Ps2I-j-0KJAJZto8qShrYU,8223
|
|
25
|
+
tableauserverclient/models/datasource_item.py,sha256=ITVzWLHdY2xLhP1UCWJqE9j5ZijomxT83p5B_WE78I4,19735
|
|
26
|
+
tableauserverclient/models/dqw_item.py,sha256=87oTc7icrQst_DSaTqoVR965YEckg5dk6osa51BrCAk,3710
|
|
27
|
+
tableauserverclient/models/exceptions.py,sha256=pQu5DS4jNMT9A0wEBWv2vANAQU1vgNpFatVr8sGE4zk,105
|
|
28
|
+
tableauserverclient/models/extensions_item.py,sha256=nJj5Xl_B1j5KK6TQ8-g8tBaBH5tkCsR2Y0GTnuOcxWQ,6684
|
|
29
|
+
tableauserverclient/models/extract_item.py,sha256=2qDyNrAanbw1gK6qE2L7RwQFsIg_59unUx8rbLWrTmg,2691
|
|
30
|
+
tableauserverclient/models/favorites_item.py,sha256=IvImwOW8csz14HdrTVSDZ6mCubyuYjTLsI9yS3nD2jE,3947
|
|
31
|
+
tableauserverclient/models/fileupload_item.py,sha256=N5M0jtlFj_PFh3jlp2AbcYOwCwdnBCk_L64xe3Z4ves,742
|
|
32
|
+
tableauserverclient/models/flow_item.py,sha256=sFAgm-RSJOBaq2CTZvL9F0wD3MiO0r7tBXfqVR7JDic,8674
|
|
33
|
+
tableauserverclient/models/flow_run_item.py,sha256=nf_b6KRwNevwZRsPoMh8dLzdONUMWY2wipWEMdY9SN4,3113
|
|
34
|
+
tableauserverclient/models/group_item.py,sha256=7i-b4GvAC03GQtR8BweTDj5xcxEDvoer5EXuygvIYVU,5532
|
|
35
|
+
tableauserverclient/models/groupset_item.py,sha256=sNaXHbFLxC1sLiJgA_Dbm_d2nny2sRVN383Dltvy-kQ,2339
|
|
36
|
+
tableauserverclient/models/interval_item.py,sha256=q-SK-Coo3WhoLsNbzkC4K3qYCMfcNnrRzAmKmdIKuIY,11016
|
|
37
|
+
tableauserverclient/models/job_item.py,sha256=Q7tTKXEiW-5VJsLmnAq6auP0jvmbbImmqw_nx1kiXtM,11512
|
|
38
|
+
tableauserverclient/models/linked_tasks_item.py,sha256=TYkNvmJfKlZ30OST8w9GUobboFAH5ftFKjXdWWAtR24,3806
|
|
39
|
+
tableauserverclient/models/location_item.py,sha256=8pVxiSoySTAQOF9QDe0KiHMUp0aiFG-sZ2cB1u8oAEg,1287
|
|
40
|
+
tableauserverclient/models/metric_item.py,sha256=D3atzbr3jtQUsVsqYHfz-v3yRP3qruRN5jRsv_-yRQ0,5378
|
|
41
|
+
tableauserverclient/models/oidc_item.py,sha256=hKqX8QiIUtd6keXKT9l9LzhIMkaO2QkvXkp2VxzhkHQ,3753
|
|
42
|
+
tableauserverclient/models/pagination_item.py,sha256=55Ap_9pJxq8plWQO1Js3Jp6KFidN3TQsL5LM2-yZGDo,1424
|
|
43
|
+
tableauserverclient/models/permissions_item.py,sha256=Av_z2P8IbxH-FXWMhOPGZapPR6qQRrYfqo30nZjMBrM,6245
|
|
44
|
+
tableauserverclient/models/project_item.py,sha256=MFUJ9vDbsTdZXmWtmeWKitffZ7lFfP2eOZY-HSvSIbM,11729
|
|
45
|
+
tableauserverclient/models/property_decorators.py,sha256=Xp08wlfbHImLEgb9TrdbdFTlAGCO3RR68Sw5qvnBDJ4,4632
|
|
46
|
+
tableauserverclient/models/reference_item.py,sha256=8cFg61-Y2NQsDE5IAHGSYU5p3unVB2nHclOq8e8EFFs,940
|
|
47
|
+
tableauserverclient/models/revision_item.py,sha256=5ghmnwhUcCOWwZdApzgV_uM3sqdoG_gtsJwUQwfKITo,2773
|
|
48
|
+
tableauserverclient/models/schedule_item.py,sha256=553k5g1gbLiNs4_4NLbDhTKDgU4lqXfK6fBh35-tSxY,13770
|
|
49
|
+
tableauserverclient/models/server_info_item.py,sha256=55wTG_31o-WwqgBrbwpgMpq_by10iM6BXpmdAZ3TO90,2631
|
|
50
|
+
tableauserverclient/models/site_item.py,sha256=Wq5Ry_14RUgJEXDAcs87SFAaRsvVlUqQYbQ6CWe1l30,47296
|
|
51
|
+
tableauserverclient/models/subscription_item.py,sha256=ujaQQIo_ln3pnm0Th2IdcGCp_cl6WxvEMPgeZbwZtFc,4724
|
|
52
|
+
tableauserverclient/models/table_item.py,sha256=4CZ2R0asNz8iINn3FKKQzjpwt-5lBAvfm0fHKmz5gcw,4752
|
|
53
|
+
tableauserverclient/models/tableau_auth.py,sha256=F1AOyKCaxwS4q_1HbNC8nw2KBaYNexXescxZdHhNkjw,8394
|
|
54
|
+
tableauserverclient/models/tableau_types.py,sha256=bukzI490GWpebGv9ZiCuSqioqIZm9ao9Yr2GGrmM8_A,1420
|
|
55
|
+
tableauserverclient/models/tag_item.py,sha256=K2EVEy1EDdr0yLr4wBvGr-p9gIAFVsOCv80b-AFPFLk,588
|
|
56
|
+
tableauserverclient/models/target.py,sha256=dVc1SHwo9ZASR8250MhAPODXX_G5UqA4BnK8hykRE6E,263
|
|
57
|
+
tableauserverclient/models/task_item.py,sha256=l4t4COw2LfdlYmJpzUSgwGven_NSZj2r3PUJZkqvCus,4555
|
|
58
|
+
tableauserverclient/models/user_item.py,sha256=Nynycb3lM2q909P8bML6xOncr4P1yBhWO17lE_Nh9P8,19814
|
|
59
|
+
tableauserverclient/models/view_item.py,sha256=-JxiwRFqBo7DS3dvwk4rxRhc25WH-Pgf8rBaLyFQOzE,12451
|
|
60
|
+
tableauserverclient/models/virtual_connection_item.py,sha256=TvX7MId7WSg4IZE41XAMl1l3Ibu8kTUR1xr26Cqtyeo,3357
|
|
61
|
+
tableauserverclient/models/webhook_item.py,sha256=r37fHY3_uhDhxupHfMSvB4I2aUjy3qQ2FOLQjAcNUUk,3994
|
|
62
|
+
tableauserverclient/models/workbook_item.py,sha256=myU8Tesc5eGwmYEICQdk3aXtxERkHdC8FEk1zwO65Y4,22404
|
|
63
|
+
tableauserverclient/server/__init__.py,sha256=77E-3LseLd9gHeRgKPnpZTNMQySgYiwst33AsReol-k,1940
|
|
64
|
+
tableauserverclient/server/exceptions.py,sha256=l-O4lcoEeXJC7fLWUanIcZM_Mf8m54uK3NQuKNj3RCg,183
|
|
65
|
+
tableauserverclient/server/filter.py,sha256=Z7O6A175bBSmcponLs0Enh5R5Gp2puVRGfOMk-V395w,1096
|
|
66
|
+
tableauserverclient/server/pager.py,sha256=IESvCba7WZO3O9VBcKlJ6ricVDgro0gKuUQyJnOCUws,3497
|
|
67
|
+
tableauserverclient/server/query.py,sha256=dY_y20DOBOFwydIpLcWLK39s1lVmDPxhX5x6hVxeoL0,10529
|
|
68
|
+
tableauserverclient/server/request_factory.py,sha256=2A6mFp-eLi7wd18I1QySULvCx1B78EHyNu59Oj2dzsM,87792
|
|
69
|
+
tableauserverclient/server/request_options.py,sha256=xVMZYO_dXdDHWi4bYalA8w-n55z-qSuSNGRGwwEFUCU,20251
|
|
70
|
+
tableauserverclient/server/server.py,sha256=YC7rmMdw7asDMsvq2M5FGujl3FE2qP35M5DOwnNwHZ4,13463
|
|
71
|
+
tableauserverclient/server/sort.py,sha256=wjnlt7rlmLvQjM_XpgD8N8Hlg0zVvLOV7k_dAs1DmHY,628
|
|
72
|
+
tableauserverclient/server/endpoint/__init__.py,sha256=kHDGHsGU0QgJVBzMzerfR8vQ476ksC0QFQJfMDvQ_Vk,3277
|
|
73
|
+
tableauserverclient/server/endpoint/auth_endpoint.py,sha256=8N3_OUSwYm4KCvwDJHGmH9i2OqzH70PLP0-rT-sKYVo,7177
|
|
74
|
+
tableauserverclient/server/endpoint/custom_views_endpoint.py,sha256=se-CZ9BF8Cf_quT_3BbrO9lwK7E8hHbCoMYq-2IZMM8,14515
|
|
75
|
+
tableauserverclient/server/endpoint/data_acceleration_report_endpoint.py,sha256=he-MVqCvAQo8--icEKFoIV2KUP6Z1s_PJ2uZ8Xpj2f8,1130
|
|
76
|
+
tableauserverclient/server/endpoint/data_alert_endpoint.py,sha256=ZNotgG3hBpR7fo8eDTXx_gSppF2n25GQ3udwF3MKFLk,5203
|
|
77
|
+
tableauserverclient/server/endpoint/databases_endpoint.py,sha256=vojSCB6DQ665Z0X7h5TQg5wflU_WUtd4pgcjsda7JdU,8689
|
|
78
|
+
tableauserverclient/server/endpoint/datasources_endpoint.py,sha256=CQ6erQgiWIKgyfAPDtwFquXNy6MxdSIcjjhsbRrZN6I,44921
|
|
79
|
+
tableauserverclient/server/endpoint/default_permissions_endpoint.py,sha256=bZlhDqu6jFyC4vbrdC3Nn1cWRJWRz0mhxco9hRUouJA,4327
|
|
80
|
+
tableauserverclient/server/endpoint/dqw_endpoint.py,sha256=bfgA7sRGQajR67xcRS9mIF7yKlJmjjFyN-hBxwZ5wkU,2626
|
|
81
|
+
tableauserverclient/server/endpoint/endpoint.py,sha256=035rsaaUoQP0oYtaRhtIMHs9bwMeFCt2u-gn5asOK7o,15309
|
|
82
|
+
tableauserverclient/server/endpoint/exceptions.py,sha256=ifkRatvvqG5awY73BzwALlby3dYYKr_8leUOmpeZS0Y,2919
|
|
83
|
+
tableauserverclient/server/endpoint/extensions_endpoint.py,sha256=sInHr4sDMoXC7X-eHyOmP4bJfJbUypalfsUEKHK_F7Y,2992
|
|
84
|
+
tableauserverclient/server/endpoint/favorites_endpoint.py,sha256=ZMui0KQCSGRBlUrem519Y5_gBpngN7wtDWo_EvEUMEk,6340
|
|
85
|
+
tableauserverclient/server/endpoint/fileuploads_endpoint.py,sha256=e3qIw6lJJG4Y8RHG26psMjjETovpfrBzmFjeYeJll8s,2410
|
|
86
|
+
tableauserverclient/server/endpoint/flow_runs_endpoint.py,sha256=HIVuTi4pXIqog16K_3Zzu1LC96TR_pZlAjxRKoJrJ_g,4957
|
|
87
|
+
tableauserverclient/server/endpoint/flow_task_endpoint.py,sha256=z9qrWw9hrWXPHwRT9j0vx9PeW_kL_yphB5h9-inLj6M,1075
|
|
88
|
+
tableauserverclient/server/endpoint/flows_endpoint.py,sha256=GLODBEg31O-mZeqLV6kjaPGg0bLP93_kl6ok2GF_k4A,23738
|
|
89
|
+
tableauserverclient/server/endpoint/groups_endpoint.py,sha256=5ZhKJeKT3GoM2olqJYJggdiVYQ9BdcEJCIqkx-tZqxo,18745
|
|
90
|
+
tableauserverclient/server/endpoint/groupsets_endpoint.py,sha256=Kcrrd0NbduwIhAtGkG-EMf38qcCM74EnCybAs24TFnM,5577
|
|
91
|
+
tableauserverclient/server/endpoint/jobs_endpoint.py,sha256=rhR8tD89U5ha-g5QhLlGXurTF77mLQREnd7k208EHxA,10387
|
|
92
|
+
tableauserverclient/server/endpoint/linked_tasks_endpoint.py,sha256=tMZqVPWPZvYawaXLJGVV9scmWPu1rdCxz-eWZv1WbPk,2262
|
|
93
|
+
tableauserverclient/server/endpoint/metadata_endpoint.py,sha256=sg0Yehj2f0wlrJMkVjzNdNxNEhSeNbZIkio3eQamOVk,5228
|
|
94
|
+
tableauserverclient/server/endpoint/metrics_endpoint.py,sha256=p9F_tbUela1sb3i9n67Tr9zsPRmsjSAigC6EqLwZHqE,3175
|
|
95
|
+
tableauserverclient/server/endpoint/oidc_endpoint.py,sha256=OMOpOOcPO8C1z6FFRHf6CEVgJqWgaETRSWPiQdYg4wA,5969
|
|
96
|
+
tableauserverclient/server/endpoint/permissions_endpoint.py,sha256=tXX_KSanbxUeR-L4UdI_jphko8dD_fZsXVhQayQL3JA,3719
|
|
97
|
+
tableauserverclient/server/endpoint/projects_endpoint.py,sha256=cIeoCGUCiUl_MtpHDycI21n9DIjGfSvFeyGW1iDduwo,31114
|
|
98
|
+
tableauserverclient/server/endpoint/resource_tagger.py,sha256=eKekflXzLjx_zDOLgYkTIusRO8vsFus1LvLIf0LOwtQ,6661
|
|
99
|
+
tableauserverclient/server/endpoint/schedules_endpoint.py,sha256=C4evSP4P6_7cxTlk71IaswIxba7Bo2I5eVM-W5cfyGU,12716
|
|
100
|
+
tableauserverclient/server/endpoint/server_info_endpoint.py,sha256=9UcYP3td22S_Kwabu-RWc-Pn3lFrIERVlzVpl4ErP_I,2649
|
|
101
|
+
tableauserverclient/server/endpoint/sites_endpoint.py,sha256=Fh8ppL00IVI1YpXyOXCCc5fIc_r_TC1o8GCgYD_gOV4,14778
|
|
102
|
+
tableauserverclient/server/endpoint/subscriptions_endpoint.py,sha256=21oZ6Q14AL8p2ZHyfREpbnPU6Vj4Xh97o1K9hmKRJ-I,3187
|
|
103
|
+
tableauserverclient/server/endpoint/tables_endpoint.py,sha256=PcNqk66aJ_rsFSHOJ1FCB_G5GlvGFIzr66G5aO2aIRo,9742
|
|
104
|
+
tableauserverclient/server/endpoint/tasks_endpoint.py,sha256=5VHGe2NSgr40BKPPOm9nVrdZGrG3Sf0ri_CNqsv0CpQ,6304
|
|
105
|
+
tableauserverclient/server/endpoint/users_endpoint.py,sha256=How6_592NotSDF__pRSQ_IMkKWX-jjRKIHTVCsTXfgo,30054
|
|
106
|
+
tableauserverclient/server/endpoint/views_endpoint.py,sha256=p4rSEPS3Octgm9W7b1QHSaxVJW4F5KJHoYXTymYMo-o,18639
|
|
107
|
+
tableauserverclient/server/endpoint/virtual_connections_endpoint.py,sha256=K5R86aIm4hZeYw3OUOlKv-zTmsWa3np1iuV_h5iPvt0,8458
|
|
108
|
+
tableauserverclient/server/endpoint/webhooks_endpoint.py,sha256=nmEjKdbntwBg-0XAP2TluOv2v8usqxXg7sO8ogS5rDI,4923
|
|
109
|
+
tableauserverclient/server/endpoint/workbooks_endpoint.py,sha256=tN5AybuR8lZxwM6OFtJLJ0Cryo2d8thWHUONCT4OK7k,47116
|
|
110
|
+
tableauserverclient-0.40.dist-info/licenses/LICENSE,sha256=MMkY7MguOb4L-WCmmqrVcwg2iwSGaz-RfAMFvXRXwsQ,1074
|
|
111
|
+
tableauserverclient-0.40.dist-info/METADATA,sha256=jyP890hWytY2lSih7m-iQewIdfwkquwcXkUWEuYVfLs,3176
|
|
112
|
+
tableauserverclient-0.40.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
113
|
+
tableauserverclient-0.40.dist-info/top_level.txt,sha256=kBnL39G2RlGqxJSsShDBWG4WZ3NFcWJkv1EGiOfZh4Q,20
|
|
114
|
+
tableauserverclient-0.40.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
tableauserverclient
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
_version.py,sha256=Gj76mmCMMylBUJ_rBL4WMy9bM-2DediAdkn9393A6Tc,496
|
|
2
|
-
bin/__init__.py,sha256=T8WHy9zTlF9XZWoqqMbrxJ39Tw4YHo4x7zq9iSQRioQ,119
|
|
3
|
-
bin/_version.py,sha256=Gj76mmCMMylBUJ_rBL4WMy9bM-2DediAdkn9393A6Tc,496
|
|
4
|
-
helpers/__init__.py,sha256=llpqF9zV5dsP5hQt8dyop33Op5OzGmxW0BZibaSlCcM,23
|
|
5
|
-
helpers/headers.py,sha256=Pg-ZWSgV2Yp813BV1Tzo8F2Hn4P01zscla2RRM4yqNk,411
|
|
6
|
-
helpers/logging.py,sha256=5q_oR3wERHVXFXY6XDnLYML5-HdAPJTmqhH9IZg4VfY,113
|
|
7
|
-
helpers/strings.py,sha256=7MvaS9haJ5hpdv4NPQ11gRj94zIgbDmujFPD_GnZPJI,2013
|
|
8
|
-
models/__init__.py,sha256=m_hsDtY9aQwtd1rtg34QqmBVBF1wGh3SEArFjKMP1-8,4679
|
|
9
|
-
models/collection_item.py,sha256=nZISWKtjsuAHSBrw9_h1Xco0zHNf1x5uQ0UAH2MWxaQ,2162
|
|
10
|
-
models/column_item.py,sha256=yUFzXNcnUPVo2imrhEBS4fMVAR5j2ZzksOk5t9XYW5s,1964
|
|
11
|
-
models/connection_credentials.py,sha256=CQ8FkkHW9MeTw8uArNhrU5mowtryWUddgEgEliqh3ys,2066
|
|
12
|
-
models/connection_item.py,sha256=QO-20N7df-5V1rCnaZCQ6bxLRncctWvprq1aXSOF7YE,6553
|
|
13
|
-
models/custom_view_item.py,sha256=oIdYhyWLhJZUaSsp9QAAAka9AP7kO8LOaN97vPw95Qw,7967
|
|
14
|
-
models/data_acceleration_report_item.py,sha256=HFZROetfOWh-hMS48xBEHqYOViINHZR-EpcrP45_8AI,3386
|
|
15
|
-
models/data_alert_item.py,sha256=VZtRR-kqojq-mkrTgvay4WkPawj3-4jbSc0wBijmJhk,6444
|
|
16
|
-
models/data_freshness_policy_item.py,sha256=k_EfTuf9Av6kDEapmqiLbkzT8W4yEYS6V3EY0CRXPbM,7648
|
|
17
|
-
models/database_item.py,sha256=lWxmmMpPeVxzizVAsVkc6Ps2I-j-0KJAJZto8qShrYU,8223
|
|
18
|
-
models/datasource_item.py,sha256=ITVzWLHdY2xLhP1UCWJqE9j5ZijomxT83p5B_WE78I4,19735
|
|
19
|
-
models/dqw_item.py,sha256=87oTc7icrQst_DSaTqoVR965YEckg5dk6osa51BrCAk,3710
|
|
20
|
-
models/exceptions.py,sha256=pQu5DS4jNMT9A0wEBWv2vANAQU1vgNpFatVr8sGE4zk,105
|
|
21
|
-
models/extensions_item.py,sha256=nJj5Xl_B1j5KK6TQ8-g8tBaBH5tkCsR2Y0GTnuOcxWQ,6684
|
|
22
|
-
models/extract_item.py,sha256=2qDyNrAanbw1gK6qE2L7RwQFsIg_59unUx8rbLWrTmg,2691
|
|
23
|
-
models/favorites_item.py,sha256=IvImwOW8csz14HdrTVSDZ6mCubyuYjTLsI9yS3nD2jE,3947
|
|
24
|
-
models/fileupload_item.py,sha256=N5M0jtlFj_PFh3jlp2AbcYOwCwdnBCk_L64xe3Z4ves,742
|
|
25
|
-
models/flow_item.py,sha256=sFAgm-RSJOBaq2CTZvL9F0wD3MiO0r7tBXfqVR7JDic,8674
|
|
26
|
-
models/flow_run_item.py,sha256=nf_b6KRwNevwZRsPoMh8dLzdONUMWY2wipWEMdY9SN4,3113
|
|
27
|
-
models/group_item.py,sha256=7i-b4GvAC03GQtR8BweTDj5xcxEDvoer5EXuygvIYVU,5532
|
|
28
|
-
models/groupset_item.py,sha256=sNaXHbFLxC1sLiJgA_Dbm_d2nny2sRVN383Dltvy-kQ,2339
|
|
29
|
-
models/interval_item.py,sha256=q-SK-Coo3WhoLsNbzkC4K3qYCMfcNnrRzAmKmdIKuIY,11016
|
|
30
|
-
models/job_item.py,sha256=Q7tTKXEiW-5VJsLmnAq6auP0jvmbbImmqw_nx1kiXtM,11512
|
|
31
|
-
models/linked_tasks_item.py,sha256=TYkNvmJfKlZ30OST8w9GUobboFAH5ftFKjXdWWAtR24,3806
|
|
32
|
-
models/location_item.py,sha256=8pVxiSoySTAQOF9QDe0KiHMUp0aiFG-sZ2cB1u8oAEg,1287
|
|
33
|
-
models/metric_item.py,sha256=D3atzbr3jtQUsVsqYHfz-v3yRP3qruRN5jRsv_-yRQ0,5378
|
|
34
|
-
models/oidc_item.py,sha256=hKqX8QiIUtd6keXKT9l9LzhIMkaO2QkvXkp2VxzhkHQ,3753
|
|
35
|
-
models/pagination_item.py,sha256=55Ap_9pJxq8plWQO1Js3Jp6KFidN3TQsL5LM2-yZGDo,1424
|
|
36
|
-
models/permissions_item.py,sha256=Av_z2P8IbxH-FXWMhOPGZapPR6qQRrYfqo30nZjMBrM,6245
|
|
37
|
-
models/project_item.py,sha256=MFUJ9vDbsTdZXmWtmeWKitffZ7lFfP2eOZY-HSvSIbM,11729
|
|
38
|
-
models/property_decorators.py,sha256=Xp08wlfbHImLEgb9TrdbdFTlAGCO3RR68Sw5qvnBDJ4,4632
|
|
39
|
-
models/reference_item.py,sha256=8cFg61-Y2NQsDE5IAHGSYU5p3unVB2nHclOq8e8EFFs,940
|
|
40
|
-
models/revision_item.py,sha256=5ghmnwhUcCOWwZdApzgV_uM3sqdoG_gtsJwUQwfKITo,2773
|
|
41
|
-
models/schedule_item.py,sha256=553k5g1gbLiNs4_4NLbDhTKDgU4lqXfK6fBh35-tSxY,13770
|
|
42
|
-
models/server_info_item.py,sha256=55wTG_31o-WwqgBrbwpgMpq_by10iM6BXpmdAZ3TO90,2631
|
|
43
|
-
models/site_item.py,sha256=Wq5Ry_14RUgJEXDAcs87SFAaRsvVlUqQYbQ6CWe1l30,47296
|
|
44
|
-
models/subscription_item.py,sha256=ujaQQIo_ln3pnm0Th2IdcGCp_cl6WxvEMPgeZbwZtFc,4724
|
|
45
|
-
models/table_item.py,sha256=4CZ2R0asNz8iINn3FKKQzjpwt-5lBAvfm0fHKmz5gcw,4752
|
|
46
|
-
models/tableau_auth.py,sha256=F1AOyKCaxwS4q_1HbNC8nw2KBaYNexXescxZdHhNkjw,8394
|
|
47
|
-
models/tableau_types.py,sha256=bukzI490GWpebGv9ZiCuSqioqIZm9ao9Yr2GGrmM8_A,1420
|
|
48
|
-
models/tag_item.py,sha256=K2EVEy1EDdr0yLr4wBvGr-p9gIAFVsOCv80b-AFPFLk,588
|
|
49
|
-
models/target.py,sha256=dVc1SHwo9ZASR8250MhAPODXX_G5UqA4BnK8hykRE6E,263
|
|
50
|
-
models/task_item.py,sha256=l4t4COw2LfdlYmJpzUSgwGven_NSZj2r3PUJZkqvCus,4555
|
|
51
|
-
models/user_item.py,sha256=Nynycb3lM2q909P8bML6xOncr4P1yBhWO17lE_Nh9P8,19814
|
|
52
|
-
models/view_item.py,sha256=-JxiwRFqBo7DS3dvwk4rxRhc25WH-Pgf8rBaLyFQOzE,12451
|
|
53
|
-
models/virtual_connection_item.py,sha256=TvX7MId7WSg4IZE41XAMl1l3Ibu8kTUR1xr26Cqtyeo,3357
|
|
54
|
-
models/webhook_item.py,sha256=r37fHY3_uhDhxupHfMSvB4I2aUjy3qQ2FOLQjAcNUUk,3994
|
|
55
|
-
models/workbook_item.py,sha256=myU8Tesc5eGwmYEICQdk3aXtxERkHdC8FEk1zwO65Y4,22404
|
|
56
|
-
server/__init__.py,sha256=77E-3LseLd9gHeRgKPnpZTNMQySgYiwst33AsReol-k,1940
|
|
57
|
-
server/exceptions.py,sha256=l-O4lcoEeXJC7fLWUanIcZM_Mf8m54uK3NQuKNj3RCg,183
|
|
58
|
-
server/filter.py,sha256=Z7O6A175bBSmcponLs0Enh5R5Gp2puVRGfOMk-V395w,1096
|
|
59
|
-
server/pager.py,sha256=IESvCba7WZO3O9VBcKlJ6ricVDgro0gKuUQyJnOCUws,3497
|
|
60
|
-
server/query.py,sha256=dY_y20DOBOFwydIpLcWLK39s1lVmDPxhX5x6hVxeoL0,10529
|
|
61
|
-
server/request_factory.py,sha256=2A6mFp-eLi7wd18I1QySULvCx1B78EHyNu59Oj2dzsM,87792
|
|
62
|
-
server/request_options.py,sha256=xVMZYO_dXdDHWi4bYalA8w-n55z-qSuSNGRGwwEFUCU,20251
|
|
63
|
-
server/server.py,sha256=YC7rmMdw7asDMsvq2M5FGujl3FE2qP35M5DOwnNwHZ4,13463
|
|
64
|
-
server/sort.py,sha256=wjnlt7rlmLvQjM_XpgD8N8Hlg0zVvLOV7k_dAs1DmHY,628
|
|
65
|
-
server/endpoint/__init__.py,sha256=kHDGHsGU0QgJVBzMzerfR8vQ476ksC0QFQJfMDvQ_Vk,3277
|
|
66
|
-
server/endpoint/auth_endpoint.py,sha256=8N3_OUSwYm4KCvwDJHGmH9i2OqzH70PLP0-rT-sKYVo,7177
|
|
67
|
-
server/endpoint/custom_views_endpoint.py,sha256=se-CZ9BF8Cf_quT_3BbrO9lwK7E8hHbCoMYq-2IZMM8,14515
|
|
68
|
-
server/endpoint/data_acceleration_report_endpoint.py,sha256=he-MVqCvAQo8--icEKFoIV2KUP6Z1s_PJ2uZ8Xpj2f8,1130
|
|
69
|
-
server/endpoint/data_alert_endpoint.py,sha256=ZNotgG3hBpR7fo8eDTXx_gSppF2n25GQ3udwF3MKFLk,5203
|
|
70
|
-
server/endpoint/databases_endpoint.py,sha256=vojSCB6DQ665Z0X7h5TQg5wflU_WUtd4pgcjsda7JdU,8689
|
|
71
|
-
server/endpoint/datasources_endpoint.py,sha256=CQ6erQgiWIKgyfAPDtwFquXNy6MxdSIcjjhsbRrZN6I,44921
|
|
72
|
-
server/endpoint/default_permissions_endpoint.py,sha256=bZlhDqu6jFyC4vbrdC3Nn1cWRJWRz0mhxco9hRUouJA,4327
|
|
73
|
-
server/endpoint/dqw_endpoint.py,sha256=bfgA7sRGQajR67xcRS9mIF7yKlJmjjFyN-hBxwZ5wkU,2626
|
|
74
|
-
server/endpoint/endpoint.py,sha256=035rsaaUoQP0oYtaRhtIMHs9bwMeFCt2u-gn5asOK7o,15309
|
|
75
|
-
server/endpoint/exceptions.py,sha256=ifkRatvvqG5awY73BzwALlby3dYYKr_8leUOmpeZS0Y,2919
|
|
76
|
-
server/endpoint/extensions_endpoint.py,sha256=sInHr4sDMoXC7X-eHyOmP4bJfJbUypalfsUEKHK_F7Y,2992
|
|
77
|
-
server/endpoint/favorites_endpoint.py,sha256=ZMui0KQCSGRBlUrem519Y5_gBpngN7wtDWo_EvEUMEk,6340
|
|
78
|
-
server/endpoint/fileuploads_endpoint.py,sha256=e3qIw6lJJG4Y8RHG26psMjjETovpfrBzmFjeYeJll8s,2410
|
|
79
|
-
server/endpoint/flow_runs_endpoint.py,sha256=HIVuTi4pXIqog16K_3Zzu1LC96TR_pZlAjxRKoJrJ_g,4957
|
|
80
|
-
server/endpoint/flow_task_endpoint.py,sha256=z9qrWw9hrWXPHwRT9j0vx9PeW_kL_yphB5h9-inLj6M,1075
|
|
81
|
-
server/endpoint/flows_endpoint.py,sha256=GLODBEg31O-mZeqLV6kjaPGg0bLP93_kl6ok2GF_k4A,23738
|
|
82
|
-
server/endpoint/groups_endpoint.py,sha256=5ZhKJeKT3GoM2olqJYJggdiVYQ9BdcEJCIqkx-tZqxo,18745
|
|
83
|
-
server/endpoint/groupsets_endpoint.py,sha256=Kcrrd0NbduwIhAtGkG-EMf38qcCM74EnCybAs24TFnM,5577
|
|
84
|
-
server/endpoint/jobs_endpoint.py,sha256=rhR8tD89U5ha-g5QhLlGXurTF77mLQREnd7k208EHxA,10387
|
|
85
|
-
server/endpoint/linked_tasks_endpoint.py,sha256=tMZqVPWPZvYawaXLJGVV9scmWPu1rdCxz-eWZv1WbPk,2262
|
|
86
|
-
server/endpoint/metadata_endpoint.py,sha256=sg0Yehj2f0wlrJMkVjzNdNxNEhSeNbZIkio3eQamOVk,5228
|
|
87
|
-
server/endpoint/metrics_endpoint.py,sha256=p9F_tbUela1sb3i9n67Tr9zsPRmsjSAigC6EqLwZHqE,3175
|
|
88
|
-
server/endpoint/oidc_endpoint.py,sha256=OMOpOOcPO8C1z6FFRHf6CEVgJqWgaETRSWPiQdYg4wA,5969
|
|
89
|
-
server/endpoint/permissions_endpoint.py,sha256=tXX_KSanbxUeR-L4UdI_jphko8dD_fZsXVhQayQL3JA,3719
|
|
90
|
-
server/endpoint/projects_endpoint.py,sha256=cIeoCGUCiUl_MtpHDycI21n9DIjGfSvFeyGW1iDduwo,31114
|
|
91
|
-
server/endpoint/resource_tagger.py,sha256=eKekflXzLjx_zDOLgYkTIusRO8vsFus1LvLIf0LOwtQ,6661
|
|
92
|
-
server/endpoint/schedules_endpoint.py,sha256=C4evSP4P6_7cxTlk71IaswIxba7Bo2I5eVM-W5cfyGU,12716
|
|
93
|
-
server/endpoint/server_info_endpoint.py,sha256=9UcYP3td22S_Kwabu-RWc-Pn3lFrIERVlzVpl4ErP_I,2649
|
|
94
|
-
server/endpoint/sites_endpoint.py,sha256=Fh8ppL00IVI1YpXyOXCCc5fIc_r_TC1o8GCgYD_gOV4,14778
|
|
95
|
-
server/endpoint/subscriptions_endpoint.py,sha256=21oZ6Q14AL8p2ZHyfREpbnPU6Vj4Xh97o1K9hmKRJ-I,3187
|
|
96
|
-
server/endpoint/tables_endpoint.py,sha256=PcNqk66aJ_rsFSHOJ1FCB_G5GlvGFIzr66G5aO2aIRo,9742
|
|
97
|
-
server/endpoint/tasks_endpoint.py,sha256=5VHGe2NSgr40BKPPOm9nVrdZGrG3Sf0ri_CNqsv0CpQ,6304
|
|
98
|
-
server/endpoint/users_endpoint.py,sha256=How6_592NotSDF__pRSQ_IMkKWX-jjRKIHTVCsTXfgo,30054
|
|
99
|
-
server/endpoint/views_endpoint.py,sha256=p4rSEPS3Octgm9W7b1QHSaxVJW4F5KJHoYXTymYMo-o,18639
|
|
100
|
-
server/endpoint/virtual_connections_endpoint.py,sha256=K5R86aIm4hZeYw3OUOlKv-zTmsWa3np1iuV_h5iPvt0,8458
|
|
101
|
-
server/endpoint/webhooks_endpoint.py,sha256=nmEjKdbntwBg-0XAP2TluOv2v8usqxXg7sO8ogS5rDI,4923
|
|
102
|
-
server/endpoint/workbooks_endpoint.py,sha256=tN5AybuR8lZxwM6OFtJLJ0Cryo2d8thWHUONCT4OK7k,47116
|
|
103
|
-
tableauserverclient-0.39.dist-info/licenses/LICENSE,sha256=MMkY7MguOb4L-WCmmqrVcwg2iwSGaz-RfAMFvXRXwsQ,1074
|
|
104
|
-
tableauserverclient-0.39.dist-info/METADATA,sha256=nddyyUHFsllYnxKmsXLyE8_9ot7Cx3Cp36KPbejGbVc,3176
|
|
105
|
-
tableauserverclient-0.39.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
106
|
-
tableauserverclient-0.39.dist-info/top_level.txt,sha256=mYhy_-A6qRwugiu8LrbB_k66cJASefpXAZrD1u_5CZk,26
|
|
107
|
-
tableauserverclient-0.39.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|