flywheel-sdk 20.1.0__py2.py3-none-any.whl → 20.2.0rc0__py2.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.
- flywheel/__init__.py +3 -0
- flywheel/api/__init__.py +1 -0
- flywheel/api/analyses_api.py +1446 -346
- flywheel/api/container_type_api.py +135 -0
- flywheel/api/dataexplorer_api.py +90 -0
- flywheel/api/files_api.py +437 -0
- flywheel/api/reports_api.py +102 -0
- flywheel/api_client.py +1 -1
- flywheel/configuration.py +2 -2
- flywheel/finder.py +5 -2
- flywheel/flywheel.py +335 -7
- flywheel/models/__init__.py +3 -1
- flywheel/models/features.py +16 -16
- flywheel/models/file_container_type.py +33 -0
- flywheel/models/file_list_output.py +54 -1
- flywheel/models/file_node.py +54 -1
- flywheel/models/file_output.py +57 -4
- flywheel/models/file_upsert_output.py +54 -1
- flywheel/models/fixed_input.py +28 -1
- flywheel/models/info_container_type.py +34 -0
- flywheel/models/mixins.py +14 -2
- flywheel/models/origin_type.py +1 -0
- flywheel/models/project_copy_input.py +28 -1
- {flywheel_sdk-20.1.0.dist-info → flywheel_sdk-20.2.0rc0.dist-info}/METADATA +1 -2
- {flywheel_sdk-20.1.0.dist-info → flywheel_sdk-20.2.0rc0.dist-info}/RECORD +28 -25
- {flywheel_sdk-20.1.0.dist-info → flywheel_sdk-20.2.0rc0.dist-info}/WHEEL +1 -1
- {flywheel_sdk-20.1.0.dist-info → flywheel_sdk-20.2.0rc0.dist-info}/LICENSE.txt +0 -0
- {flywheel_sdk-20.1.0.dist-info → flywheel_sdk-20.2.0rc0.dist-info}/top_level.txt +0 -0
flywheel/api/reports_api.py
CHANGED
|
@@ -360,6 +360,108 @@ class ReportsApi(object):
|
|
|
360
360
|
_request_out=params.get('_request_out'),
|
|
361
361
|
collection_formats=collection_formats)
|
|
362
362
|
|
|
363
|
+
def get_daily_usage_range_report(self, **kwargs): # noqa: E501
|
|
364
|
+
"""Get a daily usage report for a given range of dates.
|
|
365
|
+
|
|
366
|
+
This method makes a synchronous HTTP request by default.
|
|
367
|
+
|
|
368
|
+
:param datetime start_date: An ISO formatted timestamp for the start time of the report
|
|
369
|
+
:param datetime end_date: An ISO formatted timestamp for the end time of the report
|
|
370
|
+
:param str group: Limit the report to the given group id
|
|
371
|
+
:param str project: Limit the report to the given project id
|
|
372
|
+
:param bool async_: Perform the request asynchronously
|
|
373
|
+
:return: list[DailyReportUsage]
|
|
374
|
+
"""
|
|
375
|
+
ignore_simplified_return_value = kwargs.pop('_ignore_simplified_return_value', False)
|
|
376
|
+
kwargs['_return_http_data_only'] = True
|
|
377
|
+
|
|
378
|
+
if kwargs.get('async_'):
|
|
379
|
+
return self.get_daily_usage_range_report_with_http_info(**kwargs) # noqa: E501
|
|
380
|
+
else:
|
|
381
|
+
(data) = self.get_daily_usage_range_report_with_http_info(**kwargs) # noqa: E501
|
|
382
|
+
if (
|
|
383
|
+
data
|
|
384
|
+
and hasattr(data, 'return_value')
|
|
385
|
+
and not ignore_simplified_return_value
|
|
386
|
+
):
|
|
387
|
+
return data.return_value()
|
|
388
|
+
return data
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
def get_daily_usage_range_report_with_http_info(self, **kwargs): # noqa: E501
|
|
392
|
+
"""Get a daily usage report for a given range of dates.
|
|
393
|
+
|
|
394
|
+
This method makes a synchronous HTTP request by default.
|
|
395
|
+
|
|
396
|
+
:param datetime start_date: An ISO formatted timestamp for the start time of the report
|
|
397
|
+
:param datetime end_date: An ISO formatted timestamp for the end time of the report
|
|
398
|
+
:param str group: Limit the report to the given group id
|
|
399
|
+
:param str project: Limit the report to the given project id
|
|
400
|
+
:param bool async_: Perform the request asynchronously
|
|
401
|
+
:return: list[DailyReportUsage]
|
|
402
|
+
"""
|
|
403
|
+
|
|
404
|
+
all_params = ['start_date','end_date','group','project',] # noqa: E501
|
|
405
|
+
all_params.append('async_')
|
|
406
|
+
all_params.append('_return_http_data_only')
|
|
407
|
+
all_params.append('_preload_content')
|
|
408
|
+
all_params.append('_request_timeout')
|
|
409
|
+
all_params.append('_request_out')
|
|
410
|
+
|
|
411
|
+
params = locals()
|
|
412
|
+
for key, val in six.iteritems(params['kwargs']):
|
|
413
|
+
if key not in all_params:
|
|
414
|
+
raise TypeError(
|
|
415
|
+
"Got an unexpected keyword argument '%s'"
|
|
416
|
+
" to method get_daily_usage_range_report" % key
|
|
417
|
+
)
|
|
418
|
+
params[key] = val
|
|
419
|
+
del params['kwargs']
|
|
420
|
+
|
|
421
|
+
collection_formats = {}
|
|
422
|
+
|
|
423
|
+
path_params = {}
|
|
424
|
+
|
|
425
|
+
query_params = []
|
|
426
|
+
if 'start_date' in params:
|
|
427
|
+
query_params.append(('start_date', params['start_date'])) # noqa: E501
|
|
428
|
+
if 'end_date' in params:
|
|
429
|
+
query_params.append(('end_date', params['end_date'])) # noqa: E501
|
|
430
|
+
if 'group' in params:
|
|
431
|
+
query_params.append(('group', params['group'])) # noqa: E501
|
|
432
|
+
if 'project' in params:
|
|
433
|
+
query_params.append(('project', params['project'])) # noqa: E501
|
|
434
|
+
|
|
435
|
+
header_params = {}
|
|
436
|
+
|
|
437
|
+
form_params = []
|
|
438
|
+
local_var_files = {}
|
|
439
|
+
|
|
440
|
+
body_params = None
|
|
441
|
+
# HTTP header `Accept`
|
|
442
|
+
header_params['Accept'] = self.api_client.select_header_accept(
|
|
443
|
+
['application/json']) # noqa: E501
|
|
444
|
+
|
|
445
|
+
# Authentication setting
|
|
446
|
+
auth_settings = ['ApiKey'] # noqa: E501
|
|
447
|
+
|
|
448
|
+
return self.api_client.call_api(
|
|
449
|
+
'/report/daily-usage-range', 'GET',
|
|
450
|
+
path_params,
|
|
451
|
+
query_params,
|
|
452
|
+
header_params,
|
|
453
|
+
body=body_params,
|
|
454
|
+
post_params=form_params,
|
|
455
|
+
files=local_var_files,
|
|
456
|
+
response_type='list[DailyReportUsage]', # noqa: E501
|
|
457
|
+
auth_settings=auth_settings,
|
|
458
|
+
async_=params.get('async_'),
|
|
459
|
+
_return_http_data_only=params.get('_return_http_data_only'),
|
|
460
|
+
_preload_content=params.get('_preload_content', True),
|
|
461
|
+
_request_timeout=params.get('_request_timeout'),
|
|
462
|
+
_request_out=params.get('_request_out'),
|
|
463
|
+
collection_formats=collection_formats)
|
|
464
|
+
|
|
363
465
|
def get_daily_usage_report(self, **kwargs): # noqa: E501
|
|
364
466
|
"""Get a daily usage report for the given month.
|
|
365
467
|
|
flywheel/api_client.py
CHANGED
|
@@ -84,7 +84,7 @@ class ApiClient(object):
|
|
|
84
84
|
self.default_query_params = []
|
|
85
85
|
self.cookie = cookie
|
|
86
86
|
# Set default User-Agent.
|
|
87
|
-
self.user_agent = 'Swagger-Codegen/20.
|
|
87
|
+
self.user_agent = 'Swagger-Codegen/20.2.0-rc0/python'
|
|
88
88
|
self.last_response = None
|
|
89
89
|
self._version_check_fn = None
|
|
90
90
|
self._context = context
|
flywheel/configuration.py
CHANGED
|
@@ -252,6 +252,6 @@ class Configuration(six.with_metaclass(TypeWithDefault, object)):
|
|
|
252
252
|
return "Python SDK Debug Report:\n"\
|
|
253
253
|
"OS: {env}\n"\
|
|
254
254
|
"Python Version: {pyversion}\n"\
|
|
255
|
-
"Version of the API: 20.
|
|
256
|
-
"SDK Package Version: 20.
|
|
255
|
+
"Version of the API: 20.2.0-rc0\n"\
|
|
256
|
+
"SDK Package Version: 20.2.0-rc0".\
|
|
257
257
|
format(env=sys.platform, pyversion=sys.version)
|
flywheel/finder.py
CHANGED
|
@@ -97,8 +97,11 @@ class Finder(object):
|
|
|
97
97
|
|
|
98
98
|
for item in results:
|
|
99
99
|
yield item
|
|
100
|
-
|
|
101
|
-
|
|
100
|
+
|
|
101
|
+
if "file_id" in results[-1]:
|
|
102
|
+
kwargs["after_id"] = results[-1].file_id
|
|
103
|
+
else:
|
|
104
|
+
kwargs["after_id"] = results[-1].id
|
|
102
105
|
else:
|
|
103
106
|
if "limit" not in kwargs:
|
|
104
107
|
kwargs["limit"] = 1000
|
flywheel/flywheel.py
CHANGED
|
@@ -40,7 +40,7 @@ from flywheel.view_builder import ViewBuilder
|
|
|
40
40
|
from flywheel.finder import Finder
|
|
41
41
|
import flywheel.api
|
|
42
42
|
|
|
43
|
-
SDK_VERSION = "20.
|
|
43
|
+
SDK_VERSION = "20.2.0-rc0"
|
|
44
44
|
|
|
45
45
|
def config_from_api_key(api_key):
|
|
46
46
|
parts = api_key.split(':')
|
|
@@ -143,6 +143,7 @@ class Flywheel:
|
|
|
143
143
|
self.change_log_api = flywheel.api.ChangeLogApi(self.api_client)
|
|
144
144
|
self.collections_api = flywheel.api.CollectionsApi(self.api_client)
|
|
145
145
|
self.config_api = flywheel.api.ConfigApi(self.api_client)
|
|
146
|
+
self.container_type_api = flywheel.api.ContainerTypeApi(self.api_client)
|
|
146
147
|
self.containers_api = flywheel.api.ContainersApi(self.api_client)
|
|
147
148
|
self.data_view_executions_api = flywheel.api.DataViewExecutionsApi(self.api_client)
|
|
148
149
|
self.dataexplorer_api = flywheel.api.DataexplorerApi(self.api_client)
|
|
@@ -927,6 +928,21 @@ class Flywheel:
|
|
|
927
928
|
return self.analyses_api.delete_analysis(analysis_id, **kwargs)
|
|
928
929
|
|
|
929
930
|
|
|
931
|
+
def delete_analysis_file(self, cid, filename, **kwargs): # noqa: E501
|
|
932
|
+
"""Delete a file
|
|
933
|
+
|
|
934
|
+
A user with read-write or higher permissions on the container may delete files that were uploaded by users or were the output of jobs. (Specifically, files whose `origin.type` is either `job` or `user`.) <br/> A user with admin permissions on the container may delete any file.
|
|
935
|
+
|
|
936
|
+
:param str cid: (required)
|
|
937
|
+
:param str filename: (required)
|
|
938
|
+
:param ContainerDeleteReason delete_reason: A reason for deletion when audit-trail is enabled
|
|
939
|
+
:param bool force: Force deletion of the file even if some checks fail. Deprecated, will be removed in a future release.
|
|
940
|
+
:param bool async_: Perform the request asynchronously
|
|
941
|
+
:return: DeletedResult
|
|
942
|
+
"""
|
|
943
|
+
return self.analyses_api.delete_analysis_file(cid, filename, **kwargs)
|
|
944
|
+
|
|
945
|
+
|
|
930
946
|
def delete_analysis_note(self, container_id, note_id, **kwargs): # noqa: E501
|
|
931
947
|
"""Remove a note from a(n) analysis
|
|
932
948
|
|
|
@@ -953,6 +969,72 @@ class Flywheel:
|
|
|
953
969
|
return self.analyses_api.delete_analysis_tag(container_id, value, **kwargs)
|
|
954
970
|
|
|
955
971
|
|
|
972
|
+
def download_file_from_analysis(self, analysis_id, file_name, dest_file, **kwargs): # noqa: E501
|
|
973
|
+
"""Download a file.
|
|
974
|
+
|
|
975
|
+
Files can be downloaded directly from this endpoint with a valid \"Authorization\" header or via a ticket id. To generate a ticket: - Make a request with an empty \"ticket\" parameter and a valid \"Authorization\" header. The server will respond with a generated ticket id. - Make another request with the received ticket id in the \"ticket\" parameter. A valid \"Authorization\" header is no longer required. When \"view\" is true, [RFC7233](https://tools.ietf.org/html/rfc7233) range request headers are supported. When virus_scan feature is enabled the quarantined files only can be downloaded using signed urls otherwise it will return with a HTTP 400 response.
|
|
976
|
+
|
|
977
|
+
:param str analysis_id: 24-character hex ID (required)
|
|
978
|
+
:param str file_name: output file name (required)
|
|
979
|
+
:param bool info: If the file is a zipfile, return a json response of zipfile member information
|
|
980
|
+
:param str member: The filename of a zipfile member to download rather than the entire file
|
|
981
|
+
:param bool view: If true, the proper \"Content-Type\" header based on the file's mimetype is set on response If false, the \"Content-Type\" header is set to \"application/octet-stream\"
|
|
982
|
+
:param int version: version of the file to download
|
|
983
|
+
:param str hash: file hash for comparison
|
|
984
|
+
:param str range: byte ranges to return
|
|
985
|
+
:param list[str] x_accept_feature: redirect header
|
|
986
|
+
:param str dest_file: Destination file path
|
|
987
|
+
:param bool async_: Perform the request asynchronously
|
|
988
|
+
:return: union[DownloadTicketStub,ZipfileInfo]
|
|
989
|
+
"""
|
|
990
|
+
return self.analyses_api.download_file_from_analysis(analysis_id, file_name, dest_file, **kwargs)
|
|
991
|
+
|
|
992
|
+
|
|
993
|
+
def get_analysis_file_zip_info(self, analysis_id, file_name, **kwargs): # noqa: E501
|
|
994
|
+
"""Retrieve the zip info of a child file by name.
|
|
995
|
+
|
|
996
|
+
Does not work on files whose names contain a forward slash.
|
|
997
|
+
|
|
998
|
+
:param str analysis_id: 24-character hex ID (required)
|
|
999
|
+
:param str file_name: output file name (required)
|
|
1000
|
+
:param str ticket: The generated ticket id for the download, or present but empty to generate a ticket id
|
|
1001
|
+
:param bool info: If the file is a zipfile, return a json response of zipfile member information
|
|
1002
|
+
:param str member: The filename of a zipfile member to download rather than the entire file
|
|
1003
|
+
:param bool view: If true, the proper \"Content-Type\" header based on the file's mimetype is set on response If false, the \"Content-Type\" header is set to \"application/octet-stream\"
|
|
1004
|
+
:param int version: version of the file to download
|
|
1005
|
+
:param str hash: file hash for comparison
|
|
1006
|
+
:param str range: byte ranges to return
|
|
1007
|
+
:param list[str] x_accept_feature: redirect header
|
|
1008
|
+
:param bool async_: Perform the request asynchronously
|
|
1009
|
+
:return: FileZipInfo
|
|
1010
|
+
"""
|
|
1011
|
+
return self.analyses_api.get_analysis_file_zip_info(analysis_id, file_name, **kwargs)
|
|
1012
|
+
|
|
1013
|
+
|
|
1014
|
+
def get_analysis_download_url(self, analysis_id, file_name, **kwargs): # noqa: E501
|
|
1015
|
+
"""Get a signed URL to download a named child file.
|
|
1016
|
+
|
|
1017
|
+
:param str analysis_id: 24-character hex ID (required)
|
|
1018
|
+
:param str file_name: output file name (required)
|
|
1019
|
+
:param str ticket: The generated ticket id for the download, or present but empty to generate a ticket id
|
|
1020
|
+
:param bool info: If the file is a zipfile, return a json response of zipfile member information
|
|
1021
|
+
:param str member: The filename of a zipfile member to download rather than the entire file
|
|
1022
|
+
:param bool view: If true, the proper \"Content-Type\" header based on the file's mimetype is set on response If false, the \"Content-Type\" header is set to \"application/octet-stream\"
|
|
1023
|
+
:param int version: version of the file to download
|
|
1024
|
+
:param str hash: file hash for comparison
|
|
1025
|
+
:param str range: byte ranges to return
|
|
1026
|
+
:param list[str] x_accept_feature: redirect header
|
|
1027
|
+
:param bool async_: Perform the request asynchronously
|
|
1028
|
+
:return: union[DownloadTicketStub,ZipfileInfo]
|
|
1029
|
+
"""
|
|
1030
|
+
req_info = {}
|
|
1031
|
+
kwargs['_request_out'] = req_info
|
|
1032
|
+
kwargs['ticket'] = ''
|
|
1033
|
+
data = self.analyses_api.get_analysis_download_ticket(analysis_id, file_name, **kwargs)
|
|
1034
|
+
if data is not None:
|
|
1035
|
+
data = req_info['url'] + '?ticket=' + data.ticket
|
|
1036
|
+
return data
|
|
1037
|
+
|
|
956
1038
|
def download_input_from_analysis(self, analysis_id, filename, dest_file, **kwargs): # noqa: E501
|
|
957
1039
|
"""Download analysis inputs with filter.
|
|
958
1040
|
|
|
@@ -1014,9 +1096,9 @@ class Flywheel:
|
|
|
1014
1096
|
return data
|
|
1015
1097
|
|
|
1016
1098
|
def download_output_from_analysis(self, analysis_id, filename, dest_file, **kwargs): # noqa: E501
|
|
1017
|
-
"""
|
|
1099
|
+
"""Download output file from analysis
|
|
1018
1100
|
|
|
1019
|
-
|
|
1101
|
+
Download output file from analysis
|
|
1020
1102
|
|
|
1021
1103
|
:param str analysis_id: Container ID (required)
|
|
1022
1104
|
:param str filename: output file name (required)
|
|
@@ -1123,9 +1205,9 @@ class Flywheel:
|
|
|
1123
1205
|
|
|
1124
1206
|
|
|
1125
1207
|
def get_analysis_file_info(self, container_id, filename, **kwargs): # noqa: E501
|
|
1126
|
-
"""Get
|
|
1208
|
+
"""Get metadata for an input file of an analysis.
|
|
1127
1209
|
|
|
1128
|
-
Get
|
|
1210
|
+
Get metadata for an input file of an analysis.
|
|
1129
1211
|
|
|
1130
1212
|
:param str container_id: Container Id (required)
|
|
1131
1213
|
:param str filename: (required)
|
|
@@ -1135,6 +1217,19 @@ class Flywheel:
|
|
|
1135
1217
|
return self.analyses_api.get_analysis_file_info(container_id, filename, **kwargs)
|
|
1136
1218
|
|
|
1137
1219
|
|
|
1220
|
+
def get_analysis_input_files(self, container_id, filename, **kwargs): # noqa: E501
|
|
1221
|
+
"""Get metadata for input file(s) for an analysis.
|
|
1222
|
+
|
|
1223
|
+
Get metadata for input file(s) for an analysis. There may be more than one since input filenames are not guaranteed to be unique.
|
|
1224
|
+
|
|
1225
|
+
:param str container_id: Container Id (required)
|
|
1226
|
+
:param str filename: (required)
|
|
1227
|
+
:param bool async_: Perform the request asynchronously
|
|
1228
|
+
:return: list[FileOutput]
|
|
1229
|
+
"""
|
|
1230
|
+
return self.analyses_api.get_analysis_input_files(container_id, filename, **kwargs)
|
|
1231
|
+
|
|
1232
|
+
|
|
1138
1233
|
def get_analysis_note(self, container_id, note_id, **kwargs): # noqa: E501
|
|
1139
1234
|
"""Get a note of a(n) analysis.
|
|
1140
1235
|
|
|
@@ -1148,6 +1243,20 @@ class Flywheel:
|
|
|
1148
1243
|
return self.analyses_api.get_analysis_note(container_id, note_id, **kwargs)
|
|
1149
1244
|
|
|
1150
1245
|
|
|
1246
|
+
def get_analysis_output_file(self, cid, filename, **kwargs): # noqa: E501
|
|
1247
|
+
"""Get metadata for an output file of an analysis.
|
|
1248
|
+
|
|
1249
|
+
Get metadata for an output file of an analysis.
|
|
1250
|
+
|
|
1251
|
+
:param str cid: Container Id (required)
|
|
1252
|
+
:param str filename: (required)
|
|
1253
|
+
:param FileContainerType ctype:
|
|
1254
|
+
:param bool async_: Perform the request asynchronously
|
|
1255
|
+
:return: FileOutput
|
|
1256
|
+
"""
|
|
1257
|
+
return self.analyses_api.get_analysis_output_file(cid, filename, **kwargs)
|
|
1258
|
+
|
|
1259
|
+
|
|
1151
1260
|
def get_analysis_tag(self, container_id, value, **kwargs): # noqa: E501
|
|
1152
1261
|
"""Get the value of a tag, by name.
|
|
1153
1262
|
|
|
@@ -1174,6 +1283,48 @@ class Flywheel:
|
|
|
1174
1283
|
return self.analyses_api.modify_analysis(analysis_id, body, **kwargs)
|
|
1175
1284
|
|
|
1176
1285
|
|
|
1286
|
+
def modify_analysis_file(self, cid, filename, body, **kwargs): # noqa: E501
|
|
1287
|
+
"""Modify a file's attributes
|
|
1288
|
+
|
|
1289
|
+
Note: If modifying a file's modality, the current classification will be cleared (except for items in the \"Custom\" list)
|
|
1290
|
+
|
|
1291
|
+
:param str cid: (required)
|
|
1292
|
+
:param str filename: (required)
|
|
1293
|
+
:param FileModifyInput body: (required)
|
|
1294
|
+
:param bool async_: Perform the request asynchronously
|
|
1295
|
+
:return: ModifiedResult
|
|
1296
|
+
"""
|
|
1297
|
+
return self.analyses_api.modify_analysis_file(cid, filename, body, **kwargs)
|
|
1298
|
+
|
|
1299
|
+
|
|
1300
|
+
def modify_analysis_file_classification(self, cid, filename, body, **kwargs): # noqa: E501
|
|
1301
|
+
"""Update classification for a particular file.
|
|
1302
|
+
|
|
1303
|
+
If replacing a file's classification, the modality can optionally be modified as well.
|
|
1304
|
+
|
|
1305
|
+
:param str cid: (required)
|
|
1306
|
+
:param str filename: (required)
|
|
1307
|
+
:param FileClassificationDelta body: (required)
|
|
1308
|
+
:param bool async_: Perform the request asynchronously
|
|
1309
|
+
:return: ModifiedResult
|
|
1310
|
+
"""
|
|
1311
|
+
return self.analyses_api.modify_analysis_file_classification(cid, filename, body, **kwargs)
|
|
1312
|
+
|
|
1313
|
+
|
|
1314
|
+
def modify_analysis_file_info(self, cid, filename, body, **kwargs): # noqa: E501
|
|
1315
|
+
"""Update info for a particular file.
|
|
1316
|
+
|
|
1317
|
+
Modify and return the file 'info' field
|
|
1318
|
+
|
|
1319
|
+
:param str cid: (required)
|
|
1320
|
+
:param str filename: (required)
|
|
1321
|
+
:param Info body: (required)
|
|
1322
|
+
:param bool async_: Perform the request asynchronously
|
|
1323
|
+
:return: ModifiedResult
|
|
1324
|
+
"""
|
|
1325
|
+
return self.analyses_api.modify_analysis_file_info(cid, filename, body, **kwargs)
|
|
1326
|
+
|
|
1327
|
+
|
|
1177
1328
|
def modify_analysis_info(self, container_id, body, **kwargs): # noqa: E501
|
|
1178
1329
|
"""Update or replace info for a(n) analysis.
|
|
1179
1330
|
|
|
@@ -1978,6 +2129,19 @@ class Flywheel:
|
|
|
1978
2129
|
return self.config_api.get_version(**kwargs)
|
|
1979
2130
|
|
|
1980
2131
|
|
|
2132
|
+
def cleanup_info(self, container_type, path, **kwargs): # noqa: E501
|
|
2133
|
+
"""Remove a custom field from all applicable containers
|
|
2134
|
+
|
|
2135
|
+
Clean up a custom field from all containers of a type.
|
|
2136
|
+
|
|
2137
|
+
:param InfoContainerType container_type: (required)
|
|
2138
|
+
:param str path: The dot-separated custom field name to delete (required)
|
|
2139
|
+
:param bool async_: Perform the request asynchronously
|
|
2140
|
+
:return: ModifiedResult
|
|
2141
|
+
"""
|
|
2142
|
+
return self.container_type_api.cleanup_info(container_type, path, **kwargs)
|
|
2143
|
+
|
|
2144
|
+
|
|
1981
2145
|
def add_container_analysis(self, cid, body, **kwargs): # noqa: E501
|
|
1982
2146
|
"""Create an analysis and upload files.
|
|
1983
2147
|
|
|
@@ -2715,6 +2879,16 @@ class Flywheel:
|
|
|
2715
2879
|
return self.dataexplorer_api.get_all_saved_searches(**kwargs)
|
|
2716
2880
|
|
|
2717
2881
|
|
|
2882
|
+
def get_mapped_fields(self, **kwargs): # noqa: E501
|
|
2883
|
+
"""Get fields mapped for search
|
|
2884
|
+
|
|
2885
|
+
:param str path: Dot-separated subfield to drill down to
|
|
2886
|
+
:param bool async_: Perform the request asynchronously
|
|
2887
|
+
:return: object
|
|
2888
|
+
"""
|
|
2889
|
+
return self.dataexplorer_api.get_mapped_fields(**kwargs)
|
|
2890
|
+
|
|
2891
|
+
|
|
2718
2892
|
def get_saved_search(self, sid, **kwargs): # noqa: E501
|
|
2719
2893
|
"""Return a saved search query
|
|
2720
2894
|
|
|
@@ -3150,6 +3324,19 @@ class Flywheel:
|
|
|
3150
3324
|
return self.files_api.get_file(file_id, **kwargs)
|
|
3151
3325
|
|
|
3152
3326
|
|
|
3327
|
+
def get_file_info(self, file_id, **kwargs): # noqa: E501
|
|
3328
|
+
"""Get Info
|
|
3329
|
+
|
|
3330
|
+
Get info dict for any file version. Returns: dict of key/value pairs
|
|
3331
|
+
|
|
3332
|
+
:param str file_id: (required)
|
|
3333
|
+
:param int version:
|
|
3334
|
+
:param bool async_: Perform the request asynchronously
|
|
3335
|
+
:return: object
|
|
3336
|
+
"""
|
|
3337
|
+
return self.files_api.get_file_info(file_id, **kwargs)
|
|
3338
|
+
|
|
3339
|
+
|
|
3153
3340
|
def get_file_tags(self, file_id, **kwargs): # noqa: E501
|
|
3154
3341
|
"""Return a file tags, from any version
|
|
3155
3342
|
|
|
@@ -3189,6 +3376,32 @@ class Flywheel:
|
|
|
3189
3376
|
return self.files_api.get_file_zip_info(file_id, **kwargs)
|
|
3190
3377
|
|
|
3191
3378
|
|
|
3379
|
+
def modify_file_classification(self, file_id, body, **kwargs): # noqa: E501
|
|
3380
|
+
"""Modify Classification
|
|
3381
|
+
|
|
3382
|
+
Modify classification of most recent file version
|
|
3383
|
+
|
|
3384
|
+
:param str file_id: (required)
|
|
3385
|
+
:param FileClassificationDelta body: (required)
|
|
3386
|
+
:param bool async_: Perform the request asynchronously
|
|
3387
|
+
:return: ModifiedResult
|
|
3388
|
+
"""
|
|
3389
|
+
return self.files_api.modify_file_classification(file_id, body, **kwargs)
|
|
3390
|
+
|
|
3391
|
+
|
|
3392
|
+
def modify_file_info(self, file_id, **kwargs): # noqa: E501
|
|
3393
|
+
"""Modify Info
|
|
3394
|
+
|
|
3395
|
+
Add info to most recent file version, adding items or replacing some existing ones. Parameters: info (dict) -- key/value pairs to add Returns: dict added
|
|
3396
|
+
|
|
3397
|
+
:param str file_id: (required)
|
|
3398
|
+
:param object body:
|
|
3399
|
+
:param bool async_: Perform the request asynchronously
|
|
3400
|
+
:return: ModifiedResult
|
|
3401
|
+
"""
|
|
3402
|
+
return self.files_api.modify_file_info(file_id, **kwargs)
|
|
3403
|
+
|
|
3404
|
+
|
|
3192
3405
|
def move_file(self, file_id, body, **kwargs): # noqa: E501
|
|
3193
3406
|
"""Move and/or rename a file
|
|
3194
3407
|
|
|
@@ -3202,6 +3415,19 @@ class Flywheel:
|
|
|
3202
3415
|
return self.files_api.move_file(file_id, body, **kwargs)
|
|
3203
3416
|
|
|
3204
3417
|
|
|
3418
|
+
def replace_file_info(self, file_id, **kwargs): # noqa: E501
|
|
3419
|
+
"""Replace Info
|
|
3420
|
+
|
|
3421
|
+
Add info to most recent file version, replacing all existing values. Parameters: info (dict) -- all key/value pairs to populate info Returns: dict added
|
|
3422
|
+
|
|
3423
|
+
:param str file_id: (required)
|
|
3424
|
+
:param object body:
|
|
3425
|
+
:param bool async_: Perform the request asynchronously
|
|
3426
|
+
:return: object
|
|
3427
|
+
"""
|
|
3428
|
+
return self.files_api.replace_file_info(file_id, **kwargs)
|
|
3429
|
+
|
|
3430
|
+
|
|
3205
3431
|
def restore_file(self, file_id, version, evaluate_gear_rules, **kwargs): # noqa: E501
|
|
3206
3432
|
"""Restore a File
|
|
3207
3433
|
|
|
@@ -5211,6 +5437,19 @@ class Flywheel:
|
|
|
5211
5437
|
return self.reports_api.get_access_log_types(**kwargs)
|
|
5212
5438
|
|
|
5213
5439
|
|
|
5440
|
+
def get_daily_usage_range_report(self, **kwargs): # noqa: E501
|
|
5441
|
+
"""Get a daily usage report for a given range of dates.
|
|
5442
|
+
|
|
5443
|
+
:param datetime start_date: An ISO formatted timestamp for the start time of the report
|
|
5444
|
+
:param datetime end_date: An ISO formatted timestamp for the end time of the report
|
|
5445
|
+
:param str group: Limit the report to the given group id
|
|
5446
|
+
:param str project: Limit the report to the given project id
|
|
5447
|
+
:param bool async_: Perform the request asynchronously
|
|
5448
|
+
:return: list[DailyReportUsage]
|
|
5449
|
+
"""
|
|
5450
|
+
return self.reports_api.get_daily_usage_range_report(**kwargs)
|
|
5451
|
+
|
|
5452
|
+
|
|
5214
5453
|
def get_daily_usage_report(self, **kwargs): # noqa: E501
|
|
5215
5454
|
"""Get a daily usage report for the given month.
|
|
5216
5455
|
|
|
@@ -7915,6 +8154,29 @@ class Flywheel:
|
|
|
7915
8154
|
body = { 'delete': body }
|
|
7916
8155
|
return self.acquisitions_api.modify_acquisition_info(cid, body, **kwargs)
|
|
7917
8156
|
|
|
8157
|
+
def download_file_from_analysis_as_data(self, analysis_id, file_name, **kwargs):
|
|
8158
|
+
"""Download a file.
|
|
8159
|
+
|
|
8160
|
+
Files can be downloaded directly from this endpoint with a valid \"Authorization\" header or via a ticket id. To generate a ticket: - Make a request with an empty \"ticket\" parameter and a valid \"Authorization\" header. The server will respond with a generated ticket id. - Make another request with the received ticket id in the \"ticket\" parameter. A valid \"Authorization\" header is no longer required. When \"view\" is true, [RFC7233](https://tools.ietf.org/html/rfc7233) range request headers are supported. When virus_scan feature is enabled the quarantined files only can be downloaded using signed urls otherwise it will return with a HTTP 400 response.
|
|
8161
|
+
|
|
8162
|
+
:param str analysis_id: 24-character hex ID (required)
|
|
8163
|
+
:param str file_name: output file name (required)
|
|
8164
|
+
:param bool info: If the file is a zipfile, return a json response of zipfile member information
|
|
8165
|
+
:param str member: The filename of a zipfile member to download rather than the entire file
|
|
8166
|
+
:param bool view: If true, the proper \"Content-Type\" header based on the file's mimetype is set on response If false, the \"Content-Type\" header is set to \"application/octet-stream\"
|
|
8167
|
+
:param int version: version of the file to download
|
|
8168
|
+
:param str hash: file hash for comparison
|
|
8169
|
+
:param str range: byte ranges to return
|
|
8170
|
+
:param list[str] x_accept_feature: redirect header
|
|
8171
|
+
:return: The binary file data
|
|
8172
|
+
"""
|
|
8173
|
+
kwargs['_return_http_data_only'] = True
|
|
8174
|
+
kwargs['_preload_content'] = False
|
|
8175
|
+
(resp) = self.analyses_api.download_file_from_analysis_with_http_info(analysis_id, file_name, **kwargs)
|
|
8176
|
+
if resp:
|
|
8177
|
+
return resp.content
|
|
8178
|
+
return None
|
|
8179
|
+
|
|
7918
8180
|
def download_input_from_analysis_as_data(self, analysis_id, filename, **kwargs):
|
|
7919
8181
|
"""Download analysis inputs with filter.
|
|
7920
8182
|
|
|
@@ -7937,9 +8199,9 @@ class Flywheel:
|
|
|
7937
8199
|
return None
|
|
7938
8200
|
|
|
7939
8201
|
def download_output_from_analysis_as_data(self, analysis_id, filename, **kwargs):
|
|
7940
|
-
"""
|
|
8202
|
+
"""Download output file from analysis
|
|
7941
8203
|
|
|
7942
|
-
|
|
8204
|
+
Download output file from analysis
|
|
7943
8205
|
|
|
7944
8206
|
:param str analysis_id: Container ID (required)
|
|
7945
8207
|
:param str filename: output file name (required)
|
|
@@ -7957,6 +8219,72 @@ class Flywheel:
|
|
|
7957
8219
|
return resp.content
|
|
7958
8220
|
return None
|
|
7959
8221
|
|
|
8222
|
+
def set_analysis_file_classification(self, cid, filename, body, **kwargs):
|
|
8223
|
+
"""Update classification with the provided fields.
|
|
8224
|
+
|
|
8225
|
+
:param str cid: (required)
|
|
8226
|
+
:param str filename: (required)
|
|
8227
|
+
:param FileClassificationDelta body: (required)
|
|
8228
|
+
:return: ModifiedResult
|
|
8229
|
+
"""
|
|
8230
|
+
body = { 'add': body }
|
|
8231
|
+
return self.analyses_api.modify_analysis_file_classification(cid, filename, body, **kwargs)
|
|
8232
|
+
|
|
8233
|
+
def replace_analysis_file_classification(self, cid, filename, body, **kwargs):
|
|
8234
|
+
"""Entirely replace classification with the provided fields.
|
|
8235
|
+
|
|
8236
|
+
:param str cid: (required)
|
|
8237
|
+
:param str filename: (required)
|
|
8238
|
+
:param FileClassificationDelta body: (required)
|
|
8239
|
+
:return: ModifiedResult
|
|
8240
|
+
"""
|
|
8241
|
+
body = { 'replace': body }
|
|
8242
|
+
return self.analyses_api.modify_analysis_file_classification(cid, filename, body, **kwargs)
|
|
8243
|
+
|
|
8244
|
+
def delete_analysis_file_classification_fields(self, cid, filename, body, **kwargs):
|
|
8245
|
+
"""Delete the specified fields from + name + .
|
|
8246
|
+
|
|
8247
|
+
:param str cid: (required)
|
|
8248
|
+
:param str filename: (required)
|
|
8249
|
+
:param FileClassificationDelta body: (required)
|
|
8250
|
+
:return: ModifiedResult
|
|
8251
|
+
"""
|
|
8252
|
+
body = { 'delete': body }
|
|
8253
|
+
return self.analyses_api.modify_analysis_file_classification(cid, filename, body, **kwargs)
|
|
8254
|
+
|
|
8255
|
+
def set_analysis_file_info(self, cid, filename, body, **kwargs):
|
|
8256
|
+
"""Update info with the provided fields.
|
|
8257
|
+
|
|
8258
|
+
:param str cid: (required)
|
|
8259
|
+
:param str filename: (required)
|
|
8260
|
+
:param Info body: (required)
|
|
8261
|
+
:return: ModifiedResult
|
|
8262
|
+
"""
|
|
8263
|
+
body = { 'set': body }
|
|
8264
|
+
return self.analyses_api.modify_analysis_file_info(cid, filename, body, **kwargs)
|
|
8265
|
+
|
|
8266
|
+
def replace_analysis_file_info(self, cid, filename, body, **kwargs):
|
|
8267
|
+
"""Entirely replace info with the provided fields.
|
|
8268
|
+
|
|
8269
|
+
:param str cid: (required)
|
|
8270
|
+
:param str filename: (required)
|
|
8271
|
+
:param Info body: (required)
|
|
8272
|
+
:return: ModifiedResult
|
|
8273
|
+
"""
|
|
8274
|
+
body = { 'replace': body }
|
|
8275
|
+
return self.analyses_api.modify_analysis_file_info(cid, filename, body, **kwargs)
|
|
8276
|
+
|
|
8277
|
+
def delete_analysis_file_info_fields(self, cid, filename, body, **kwargs):
|
|
8278
|
+
"""Delete the specified fields from + name + .
|
|
8279
|
+
|
|
8280
|
+
:param str cid: (required)
|
|
8281
|
+
:param str filename: (required)
|
|
8282
|
+
:param Info body: (required)
|
|
8283
|
+
:return: ModifiedResult
|
|
8284
|
+
"""
|
|
8285
|
+
body = { 'delete': body }
|
|
8286
|
+
return self.analyses_api.modify_analysis_file_info(cid, filename, body, **kwargs)
|
|
8287
|
+
|
|
7960
8288
|
def set_analysis_info(self, container_id, body, **kwargs):
|
|
7961
8289
|
"""Update info with the provided fields.
|
|
7962
8290
|
|
flywheel/models/__init__.py
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
Flywheel: API for data import, automated curation, image processing, machine learning workflows, and secure collaboration. # noqa: E501
|
|
8
8
|
|
|
9
|
-
OpenAPI spec version: 20.
|
|
9
|
+
OpenAPI spec version: 20.2.0-rc0
|
|
10
10
|
|
|
11
11
|
Generated by: https://github.com/swagger-api/swagger-codegen.git
|
|
12
12
|
"""
|
|
@@ -207,6 +207,7 @@ from flywheel.models.field_change import FieldChange
|
|
|
207
207
|
from flywheel.models.field_change_log_document import FieldChangeLogDocument
|
|
208
208
|
from flywheel.models.file import File
|
|
209
209
|
from flywheel.models.file_classification_delta import FileClassificationDelta
|
|
210
|
+
from flywheel.models.file_container_type import FileContainerType
|
|
210
211
|
from flywheel.models.file_entry import FileEntry
|
|
211
212
|
from flywheel.models.file_export_templates import FileExportTemplates
|
|
212
213
|
from flywheel.models.file_format import FileFormat
|
|
@@ -299,6 +300,7 @@ from flywheel.models.header_feature import HeaderFeature
|
|
|
299
300
|
from flywheel.models.hierarchy_export_templates import HierarchyExportTemplates
|
|
300
301
|
from flywheel.models.info import Info
|
|
301
302
|
from flywheel.models.info_add_remove import InfoAddRemove
|
|
303
|
+
from flywheel.models.info_container_type import InfoContainerType
|
|
302
304
|
from flywheel.models.info_replace import InfoReplace
|
|
303
305
|
from flywheel.models.info_update_input import InfoUpdateInput
|
|
304
306
|
from flywheel.models.ingress_provider import IngressProvider
|