8000 Reword no_extract and update signature of added_in (#144) (#175) · SnarkyPapi/server-client-python@470d2ef · GitHub
[go: up one dir, main page]

Skip to content

Commit 470d2ef

Browse files
author
Russell Hay
authored
Reword no_extract and update signature of added_in (tableau#144) (tableau#175)
`parameter_added_in` got a facelift and now takes keyword arguments, where the value represents the version for that keyword. It looks a little cleaner and makes the checking code much simpler. Also renamed the `extract_only` to be `no_extract` because it means the opposite of `extract_only`, oops.
1 parent 8b5992d commit 470d2ef

File tree

5 files changed

+16
-24
lines changed

5 files changed

+16
-24
lines changed

tableauserverclient/server/endpoint/datasources_endpoint.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,14 +72,14 @@ def delete(self, datasource_id):
7272

7373
# Download 1 datasource by id
7474
@api(version="2.0")
75-
@parameter_added_in(version="2.5", parameters=['extract_only'])
76-
def download(self, datasource_id, filepath=None, extract_only=False):
75+
@parameter_added_in(no_extract='2.5')
76+
def download(self, datasource_id, filepath=None, no_extract=False):
7777
if not datasource_id:
7878
error = "Datasource ID undefined."
7979
raise ValueError(error)
8080
url = "{0}/{1}/content".format(self.baseurl, datasource_id)
8181

82-
if extract_only:
82+
if no_extract:
8383
url += "?includeExtract=False"
8484

8585
with closing(self.get_request(url, parameters={'stream': True})) as server_response:

tableauserverclient/server/endpoint/endpoint.py

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ def wrapper(self, *args, **kwargs):
109109
return _decorator
110110

111111

112-
def parameter_added_in(version, parameters):
112+
def parameter_added_in(**params):
113113
'''Annotate minimum versions for new parameters or request options on an endpoint.
114114
115115
The api decorator documents when an endpoint was added, this decorator annotates
@@ -128,27 +128,19 @@ def parameter_added_in(version, parameters):
128128
Example:
129129
>>> @api(version="2.0")
130130
>>> @parameter_added_in(no_extract='2.5')
131-
an exception
132-
133-
Example:
134-
>>> @api(version="2.0")
135-
>>> @parameter_added_in(version="2.5", parameters=['extract_only'])
136131
>>> def download(self, workbook_id, filepath=None, extract_only=False):
137132
>>> ...
138133
'''
139134
def _decorator(func):
140135
@wraps(func)
141136
def wrapper(self, *args, **kwargs):
142-
params = set(parameters)
143-
invalid_params = params & set(kwargs)
144-
145-
if invalid_params:
146-
import warnings
147-
server_version = Version(self.parent_srv.version or "0.0")
148-
minimum_supported = Version(version)
149-
if server_version < minimum_supported:
150-
error = "The parameter(s) {!r} are not available in {} and will be ignored. Added in {}".format(
151-
invalid_params, server_version, minimum_supported)
137+
import warnings
138+
server_ver = Version(self.parent_srv.version or "0.0")
139+
params_to_check = set(params) & set(kwargs)
140+
for p in params_to_check:
141+
min_ver = Version(str(params[p]))
142+
if server_ver < min_ver:
143+
error = "{!r} not available in {}, it will be ignored. Added in {}".format(p, server_ver, min_ver)
152144
warnings.warn(error)
153145
return func(self, *args, **kwargs)
154146
return wrapper

tableauserverclient/server/endpoint/workbooks_endpoint.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,14 +86,14 @@ def update_conn(self, workbook_item, connection_item):
8686

8787
# Download workbook contents with option of passing in filepath
8888
@api(version="2.0")
89-
@parameter_added_in(version="2.5", parameters=['extract_only'])
90-
def download(self, workbook_id, filepath=None, extract_only=False):
89+
@parameter_added_in(no_extract='2.5')
90+
def download(self, workbook_id, filepath=None, no_extract=False):
9191
if not workbook_id:
9292
error = "Workbook ID undefined."
9393
raise ValueError(error)
9494
url = "{0}/{1}/content".format(self.baseurl, workbook_id)
9595

96-
if extract_only:
96+
if no_extract:
9797
url += "?includeExtract=False"
9898

9999
with closing(self.get_request(url, parameters={"stream": True})) as server_response:

test/test_datasource.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ def test_download_extract_only(self):
184184
m.get(self.baseurl + '/9dbd2263-16b5-46e1-9c43-a76bb8ab65fb/content?includeExtract=False',
185185
headers={'Content-Disposition': 'name="tableau_datasource"; filename="Sample datasource.tds"'},
186186
complete_qs=True)
187-
file_path = self.server.datasources.download('9dbd2263-16b5-46e1-9c43-a76bb8ab65fb', extract_only=True)
187+
file_path = self.server.datasources.download('9dbd2263-16b5-46e1-9c43-a76bb8ab65fb', no_extract=True)
188188
self.assertTrue(os.path.exists(file_path))
189189
os.remove(file_path)
190190

test/test_workbook.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ def test_download_extract_only(self):
191191
headers={'Content-Disposition': 'name="tableau_workbook"; filename="RESTAPISample.twbx"'},
192192
complete_qs=True)
193193
# Technically this shouldn't download a twbx, but we are interested in the qs, not the file
194-
file_path = self.server.workbooks.download('1f951daf-4061-451a-9df1-69a8062664f2', extract_only=True)
194+
file_path = self.server.workbooks.download('1f951daf-4061-451a-9df1-69a8062664f2', no_extract=True)
195195
self.assertTrue(os.path.exists(file_path))
196196
os.remove(file_path)
197197

0 commit comments

Comments
 (0)
0