Skip to content

Commit 511cd83

Browse files
committed
Jac/client version header (#1075)
* add client version/debug header
1 parent b41c2d1 commit 511cd83

File tree

2 files changed

+45
-43
lines changed

2 files changed

+45
-43
lines changed

tableauserverclient/__init__.py

Lines changed: 28 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,52 @@
1-
from ._version import get_versions
1+
from .namespace import NEW_NAMESPACE as DEFAULT_NAMESPACE
22
from .models import (
3+
BackgroundJobItem,
4+
ColumnItem,
35
ConnectionCredentials,
46
ConnectionItem,
7+
DQWItem,
8+
DailyInterval,
59
DataAlertItem,
10+
DatabaseItem,
611
DatasourceItem,
7-
DQWItem,
12+
FlowItem,
13+
FlowRunItem,
814
GroupItem,
15+
HourlyInterval,
16+
IntervalItem,
917
JobItem,
10-
BackgroundJobItem,
18+
MetricItem,
19+
MonthlyInterval,
1120
PaginationItem,
21+
Permission,
22+
PermissionsRule,
23+
PersonalAccessTokenAuth,
1224
ProjectItem,
25+
RevisionItem,
1326
ScheduleItem,
1427
SiteItem,
28+
SubscriptionItem,
29+
TableItem,
1530
TableauAuth,
16-
PersonalAccessTokenAuth,
31+
Target,
32+
TaskItem,
33+
UnpopulatedPropertyError,
1734
UserItem,
1835
ViewItem,
19-
WorkbookItem,
20-
UnpopulatedPropertyError,
21-
HourlyInterval,
22-
DailyInterval,
23-
WeeklyInterval,
24-
MonthlyInterval,
25-
IntervalItem,
26-
TaskItem,
27-
SubscriptionItem,
28-
Target,
29-
PermissionsRule,
30-
Permission,
31-
DatabaseItem,
32-
TableItem,
33-
ColumnItem,
34-
FlowItem,
3536
WebhookItem,
36-
PersonalAccessTokenAuth,
37-
FlowRunItem,
38-
RevisionItem,
39-
MetricItem,
40-
TableauItem,
41-
Resource,
42-
plural_type,
37+
WeeklyInterval,
38+
WorkbookItem,
4339
)
44-
from .namespace import NEW_NAMESPACE as DEFAULT_NAMESPACE
4540
from .server import (
46-
RequestOptions,
4741
CSVRequestOptions,
4842
ImageRequestOptions,
4943
PDFRequestOptions,
50-
Filter,
51-
Sort,
52-
Server,
53-
ServerResponseError,
44+
RequestOptions,
5445
MissingRequiredFieldError,
5546
NotSignedInError,
47+
ServerResponseError,
48+
Filter,
5649
Pager,
50+
Server,
51+
Sort,
5752
)
58-
from .helpers import *
59-
60-
__version__ = get_versions()["version"]
61-
__VERSION__ = __version__
62-
del get_versions

tableauserverclient/server/server.py

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
from distutils.version import LooseVersion as Version
1+
import requests
22
import urllib3
3-
from defusedxml.ElementTree import fromstring
43

4+
from defusedxml.ElementTree import fromstring
5+
from distutils.version import LooseVersion as Version
56
from .endpoint import (
67
Sites,
78
Views,
@@ -35,9 +36,10 @@
3536
from .exceptions import NotSignedInError
3637
from ..namespace import Namespace
3738

38-
import requests
39+
from .._version import get_versions
3940

40-
from distutils.version import LooseVersion as Version
41+
__TSC_VERSION__ = get_versions()["version"]
42+
del get_versions
4143

4244
_PRODUCT_TO_REST_VERSION = {
4345
"10.0": "2.3",
@@ -46,6 +48,9 @@
4648
"9.1": "2.0",
4749
"9.0": "2.0",
4850
}
51+
minimum_supported_server_version = "2.3"
52+
default_server_version = "2.3"
53+
client_version_header = "X-TableauServerClient-Version"
4954

5055

5156
class Server(object):
@@ -62,7 +67,7 @@ def __init__(self, server_address, use_server_version=False, http_options=None):
6267
self._session = requests.Session()
6368
self._http_options = dict()
6469

65-
self.version = "2.3"
70+
self.version = default_server_version
6671
self.auth = Auth(self)
6772
self.views = Views(self)
6873
self.users = Users(self)
@@ -89,8 +94,10 @@ def __init__(self, server_address, use_server_version=False, http_options=None):
8994
self.flow_runs = FlowRuns(self)
9095
self.metrics = Metrics(self)
9196

97+
# must set this before calling use_server_version, because that's a server call
9298
if http_options:
9399
self.add_http_options(http_options)
100+
self.add_http_version_header()
94101

95102
if use_server_version:
96103
self.use_server_version()
@@ -100,8 +107,13 @@ def add_http_options(self, options_dict):
100107
if options_dict.get("verify") == False:
101108
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
102109

110+
def add_http_version_header(self):
111+
if not self._http_options[client_version_header]:
112+
self._http_options.update({client_version_header: __TSC_VERSION__})
113+
103114
def clear_http_options(self):
104115
self._http_options = dict()
116+
self.add_http_version_header()
105117

106118
def _clear_auth(self):
107119
self._site_id = None

0 commit comments

Comments
 (0)