1- from distutils . version import LooseVersion as Version
1+ import requests
22import urllib3
3- from defusedxml .ElementTree import fromstring
43
4+ from defusedxml .ElementTree import fromstring
5+ from distutils .version import LooseVersion as Version
56from .endpoint import (
67 Sites ,
78 Views ,
3536from .exceptions import NotSignedInError
3637from ..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" ,
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
5156class 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