flywheel-sdk 19.3.0rc1__py2.py3-none-any.whl → 19.4.0__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.
@@ -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: 19.3.0-rc1
9
+ OpenAPI spec version: 19.4.0
10
10
 
11
11
  Generated by: https://github.com/swagger-api/swagger-codegen.git
12
12
  """
@@ -237,6 +237,7 @@ from flywheel.models.file_version_output import FileVersionOutput
237
237
  from flywheel.models.file_via import FileVia
238
238
  from flywheel.models.file_zip_entry import FileZipEntry
239
239
  from flywheel.models.file_zip_info import FileZipInfo
240
+ from flywheel.models.filter import Filter
240
241
  from flywheel.models.filter_values import FilterValues
241
242
  from flywheel.models.fixed_file_version_input import FixedFileVersionInput
242
243
  from flywheel.models.fixed_input import FixedInput
@@ -33,7 +33,9 @@ class DailyReportUsage(object):
33
33
  'center_compute_ms': 'int',
34
34
  'group_compute_ms': 'int',
35
35
  'center_storage_bytes': 'int',
36
- 'group_storage_bytes': 'int'
36
+ 'center_storage_soft_deleted_bytes': 'int',
37
+ 'group_storage_bytes': 'int',
38
+ 'group_storage_soft_deleted_bytes': 'int'
37
39
  }
38
40
 
39
41
  attribute_map = {
@@ -49,7 +51,9 @@ class DailyReportUsage(object):
49
51
  'center_compute_ms': 'center_compute_ms',
50
52
  'group_compute_ms': 'group_compute_ms',
51
53
  'center_storage_bytes': 'center_storage_bytes',
52
- 'group_storage_bytes': 'group_storage_bytes'
54
+ 'center_storage_soft_deleted_bytes': 'center_storage_soft_deleted_bytes',
55
+ 'group_storage_bytes': 'group_storage_bytes',
56
+ 'group_storage_soft_deleted_bytes': 'group_storage_soft_deleted_bytes'
53
57
  }
54
58
 
55
59
  rattribute_map = {
@@ -65,10 +69,12 @@ class DailyReportUsage(object):
65
69
  'center_compute_ms': 'center_compute_ms',
66
70
  'group_compute_ms': 'group_compute_ms',
67
71
  'center_storage_bytes': 'center_storage_bytes',
68
- 'group_storage_bytes': 'group_storage_bytes'
72
+ 'center_storage_soft_deleted_bytes': 'center_storage_soft_deleted_bytes',
73
+ 'group_storage_bytes': 'group_storage_bytes',
74
+ 'group_storage_soft_deleted_bytes': 'group_storage_soft_deleted_bytes'
69
75
  }
70
76
 
71
- def __init__(self, year=None, month=None, day=None, project_label=None, group=None, project=None, session_count=0, center_job_count=0, group_job_count=0, center_compute_ms=0, group_compute_ms=0, center_storage_bytes=0, group_storage_bytes=0): # noqa: E501
77
+ def __init__(self, year=None, month=None, day=None, project_label=None, group=None, project=None, session_count=0, center_job_count=0, group_job_count=0, center_compute_ms=0, group_compute_ms=0, center_storage_bytes=0, center_storage_soft_deleted_bytes=0, group_storage_bytes=0, group_storage_soft_deleted_bytes=0): # noqa: E501
72
78
  """DailyReportUsage - a model defined in Swagger"""
73
79
  super(DailyReportUsage, self).__init__()
74
80
 
@@ -84,7 +90,9 @@ class DailyReportUsage(object):
84
90
  self._center_compute_ms = None
85
91
  self._group_compute_ms = None
86
92
  self._center_storage_bytes = None
93
+ self._center_storage_soft_deleted_bytes = None
87
94
  self._group_storage_bytes = None
95
+ self._group_storage_soft_deleted_bytes = None
88
96
  self.discriminator = None
89
97
  self.alt_discriminator = None
90
98
 
@@ -107,8 +115,12 @@ class DailyReportUsage(object):
107
115
  self.group_compute_ms = group_compute_ms
108
116
  if center_storage_bytes is not None:
109
117
  self.center_storage_bytes = center_storage_bytes
118
+ if center_storage_soft_deleted_bytes is not None:
119
+ self.center_storage_soft_deleted_bytes = center_storage_soft_deleted_bytes
110
120
  if group_storage_bytes is not None:
111
121
  self.group_storage_bytes = group_storage_bytes
122
+ if group_storage_soft_deleted_bytes is not None:
123
+ self.group_storage_soft_deleted_bytes = group_storage_soft_deleted_bytes
112
124
 
113
125
  @property
114
126
  def year(self):
@@ -384,6 +396,29 @@ class DailyReportUsage(object):
384
396
 
385
397
  self._center_storage_bytes = center_storage_bytes
386
398
 
399
+ @property
400
+ def center_storage_soft_deleted_bytes(self):
401
+ """Gets the center_storage_soft_deleted_bytes of this DailyReportUsage.
402
+
403
+ The total storage used by soft deleted files originating from devices or center-designated gears on this day (billable to the center)
404
+
405
+ :return: The center_storage_soft_deleted_bytes of this DailyReportUsage.
406
+ :rtype: int
407
+ """
408
+ return self._center_storage_soft_deleted_bytes
409
+
410
+ @center_storage_soft_deleted_bytes.setter
411
+ def center_storage_soft_deleted_bytes(self, center_storage_soft_deleted_bytes):
412
+ """Sets the center_storage_soft_deleted_bytes of this DailyReportUsage.
413
+
414
+ The total storage used by soft deleted files originating from devices or center-designated gears on this day (billable to the center)
415
+
416
+ :param center_storage_soft_deleted_bytes: The center_storage_soft_deleted_bytes of this DailyReportUsage. # noqa: E501
417
+ :type: int
418
+ """
419
+
420
+ self._center_storage_soft_deleted_bytes = center_storage_soft_deleted_bytes
421
+
387
422
  @property
388
423
  def group_storage_bytes(self):
389
424
  """Gets the group_storage_bytes of this DailyReportUsage.
@@ -407,6 +442,29 @@ class DailyReportUsage(object):
407
442
 
408
443
  self._group_storage_bytes = group_storage_bytes
409
444
 
445
+ @property
446
+ def group_storage_soft_deleted_bytes(self):
447
+ """Gets the group_storage_soft_deleted_bytes of this DailyReportUsage.
448
+
449
+ The total storage used by soft deleted files not originating from devices or non-center-designated (lab) gears on this day (billable to the group)
450
+
451
+ :return: The group_storage_soft_deleted_bytes of this DailyReportUsage.
452
+ :rtype: int
453
+ """
454
+ return self._group_storage_soft_deleted_bytes
455
+
456
+ @group_storage_soft_deleted_bytes.setter
457
+ def group_storage_soft_deleted_bytes(self, group_storage_soft_deleted_bytes):
458
+ """Sets the group_storage_soft_deleted_bytes of this DailyReportUsage.
459
+
460
+ The total storage used by soft deleted files not originating from devices or non-center-designated (lab) gears on this day (billable to the group)
461
+
462
+ :param group_storage_soft_deleted_bytes: The group_storage_soft_deleted_bytes of this DailyReportUsage. # noqa: E501
463
+ :type: int
464
+ """
465
+
466
+ self._group_storage_soft_deleted_bytes = group_storage_soft_deleted_bytes
467
+
410
468
 
411
469
  @staticmethod
412
470
  def positional_to_model(value):
@@ -81,7 +81,7 @@ class Features(object):
81
81
  'userpilot': 'bool',
82
82
  'validate_classification': 'bool',
83
83
  'virus_scan': 'bool',
84
- 'web_uploader_v2': 'bool'
84
+ 'legacy_dicom_uploader': 'bool'
85
85
  }
86
86
 
87
87
  attribute_map = {
@@ -145,7 +145,7 @@ class Features(object):
145
145
  'userpilot': 'userpilot',
146
146
  'validate_classification': 'validate_classification',
147
147
  'virus_scan': 'virus_scan',
148
- 'web_uploader_v2': 'web_uploader_v2'
148
+ 'legacy_dicom_uploader': 'legacy_dicom_uploader'
149
149
  }
150
150
 
151
151
  rattribute_map = {
@@ -209,10 +209,10 @@ class Features(object):
209
209
  'userpilot': 'userpilot',
210
210
  'validate_classification': 'validate_classification',
211
211
  'virus_scan': 'virus_scan',
212
- 'web_uploader_v2': 'web_uploader_v2'
212
+ 'legacy_dicom_uploader': 'legacy_dicom_uploader'
213
213
  }
214
214
 
215
- def __init__(self, api_enabled_gear_rules=True, auth0=None, audit_trail=False, azureml_integration=False, cold_job_logs=False, collections=False, copy_by_reference=True, core_api=True, crawler=False, data_views_non_21_cfr=True, default_viewer_apps=True, deid_log=False, deid_profile=False, dicom_web_uploader_non_21_cfr=True, dimse=False, elastic_search_primary=False, exchange=False, exchange_admin=False, external_routing=False, gear_access=True, google_analytics=True, healthcare_api=False, job_ask=True, job_prioritization=True, job_tickets=True, jupyter_integration=False, jupyterhub_external_storage=True, ldap_sync=False, multifactor_auth=False, multipart_signed_url=True, multiproject=False, ohif_multi_subject_view=False, ohif_react=False, ohif_react_beta=False, ohif_slice_order=None, ohif_v2_adhoc_indexing=True, ohif_v3=False, ohif_v3_beta=False, ohif_v3_default_app=False, ohif_v3_readonly=True, project_export=True, project_import=True, project_list_uses_stats=False, project_locking=False, reader_tasks=False, rts_sync=False, sentry_logging=None, session_templates_non_21_cfr=True, shared_projects=False, signed_url=False, study_task_status=False, tagging=False, tags_in_lists=True, task_manager_data_views=True, transform_search_fields=True, unsafe_login=False, url_access_apps=False, userpilot=None, validate_classification=False, virus_scan=False, web_uploader_v2=True): # noqa: E501
215
+ def __init__(self, api_enabled_gear_rules=True, auth0=None, audit_trail=False, azureml_integration=False, cold_job_logs=False, collections=False, copy_by_reference=True, core_api=True, crawler=False, data_views_non_21_cfr=True, default_viewer_apps=True, deid_log=False, deid_profile=False, dicom_web_uploader_non_21_cfr=True, dimse=False, elastic_search_primary=False, exchange=False, exchange_admin=False, external_routing=False, gear_access=True, google_analytics=True, healthcare_api=False, job_ask=True, job_prioritization=True, job_tickets=True, jupyter_integration=False, jupyterhub_external_storage=True, ldap_sync=False, multifactor_auth=False, multipart_signed_url=True, multiproject=False, ohif_multi_subject_view=False, ohif_react=False, ohif_react_beta=False, ohif_slice_order=None, ohif_v2_adhoc_indexing=True, ohif_v3=True, ohif_v3_beta=False, ohif_v3_default_app=False, ohif_v3_readonly=False, project_export=True, project_import=True, project_list_uses_stats=False, project_locking=False, reader_tasks=False, rts_sync=False, sentry_logging=None, session_templates_non_21_cfr=True, shared_projects=False, signed_url=False, study_task_status=False, tagging=False, tags_in_lists=True, task_manager_data_views=True, transform_search_fields=True, unsafe_login=False, url_access_apps=False, userpilot=None, validate_classification=False, virus_scan=False, legacy_dicom_uploader=False): # noqa: E501
216
216
  """Features - a model defined in Swagger"""
217
217
  super(Features, self).__init__()
218
218
 
@@ -276,7 +276,7 @@ class Features(object):
276
276
  self._userpilot = None
277
277
  self._validate_classification = None
278
278
  self._virus_scan = None
279
- self._web_uploader_v2 = None
279
+ self._legacy_dicom_uploader = None
280
280
  self.discriminator = None
281
281
  self.alt_discriminator = None
282
282
 
@@ -400,8 +400,8 @@ class Features(object):
400
400
  self.validate_classification = validate_classification
401
401
  if virus_scan is not None:
402
402
  self.virus_scan = virus_scan
403
- if web_uploader_v2 is not None:
404
- self.web_uploader_v2 = web_uploader_v2
403
+ if legacy_dicom_uploader is not None:
404
+ self.legacy_dicom_uploader = legacy_dicom_uploader
405
405
 
406
406
  @property
407
407
  def api_enabled_gear_rules(self):
@@ -1664,25 +1664,25 @@ class Features(object):
1664
1664
  self._virus_scan = virus_scan
1665
1665
 
1666
1666
  @property
1667
- def web_uploader_v2(self):
1668
- """Gets the web_uploader_v2 of this Features.
1667
+ def legacy_dicom_uploader(self):
1668
+ """Gets the legacy_dicom_uploader of this Features.
1669
1669
 
1670
1670
 
1671
- :return: The web_uploader_v2 of this Features.
1671
+ :return: The legacy_dicom_uploader of this Features.
1672
1672
  :rtype: bool
1673
1673
  """
1674
- return self._web_uploader_v2
1674
+ return self._legacy_dicom_uploader
1675
1675
 
1676
- @web_uploader_v2.setter
1677
- def web_uploader_v2(self, web_uploader_v2):
1678
- """Sets the web_uploader_v2 of this Features.
1676
+ @legacy_dicom_uploader.setter
1677
+ def legacy_dicom_uploader(self, legacy_dicom_uploader):
1678
+ """Sets the legacy_dicom_uploader of this Features.
1679
1679
 
1680
1680
 
1681
- :param web_uploader_v2: The web_uploader_v2 of this Features. # noqa: E501
1681
+ :param legacy_dicom_uploader: The legacy_dicom_uploader of this Features. # noqa: E501
1682
1682
  :type: bool
1683
1683
  """
1684
1684
 
1685
- self._web_uploader_v2 = web_uploader_v2
1685
+ self._legacy_dicom_uploader = legacy_dicom_uploader
1686
1686
 
1687
1687
 
1688
1688
  @staticmethod
@@ -0,0 +1,217 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Flywheel
5
+
6
+ No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) # noqa: E501
7
+
8
+ OpenAPI spec version: 0.0.1
9
+
10
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
11
+ """
12
+
13
+
14
+ ## NOTE: This file is auto generated by the swagger code generator program.
15
+ ## Do not edit the file manually.
16
+
17
+ import pprint
18
+ import re # noqa: F401
19
+ import six
20
+
21
+ class Filter(object):
22
+
23
+ swagger_types = {
24
+ 'attribute': 'str',
25
+ 'operator': 'str',
26
+ 'value': 'union[str,integer,list[Object]]'
27
+ }
28
+
29
+ attribute_map = {
30
+ 'attribute': 'attribute',
31
+ 'operator': 'operator',
32
+ 'value': 'value'
33
+ }
34
+
35
+ rattribute_map = {
36
+ 'attribute': 'attribute',
37
+ 'operator': 'operator',
38
+ 'value': 'value'
39
+ }
40
+
41
+ def __init__(self, attribute=None, operator=None, value=None): # noqa: E501
42
+ """Filter - a model defined in Swagger"""
43
+ super(Filter, self).__init__()
44
+
45
+ self._attribute = None
46
+ self._operator = None
47
+ self._value = None
48
+ self.discriminator = None
49
+ self.alt_discriminator = None
50
+
51
+ self.attribute = attribute
52
+ self.operator = operator
53
+ if value is not None:
54
+ self.value = value
55
+
56
+ @property
57
+ def attribute(self):
58
+ """Gets the attribute of this Filter.
59
+
60
+
61
+ :return: The attribute of this Filter.
62
+ :rtype: str
63
+ """
64
+ return self._attribute
65
+
66
+ @attribute.setter
67
+ def attribute(self, attribute):
68
+ """Sets the attribute of this Filter.
69
+
70
+
71
+ :param attribute: The attribute of this Filter. # noqa: E501
72
+ :type: str
73
+ """
74
+
75
+ self._attribute = attribute
76
+
77
+ @property
78
+ def operator(self):
79
+ """Gets the operator of this Filter.
80
+
81
+ Comparison operator to filter on. Can be one of: < (lt), <= (lte), = (eq), != (neq), >= (gte), > (gt), =~ (reg), =| (in), !=| (not_in)
82
+
83
+ :return: The operator of this Filter.
84
+ :rtype: str
85
+ """
86
+ return self._operator
87
+
88
+ @operator.setter
89
+ def operator(self, operator):
90
+ """Sets the operator of this Filter.
91
+
92
+ Comparison operator to filter on. Can be one of: < (lt), <= (lte), = (eq), != (neq), >= (gte), > (gt), =~ (reg), =| (in), !=| (not_in)
93
+
94
+ :param operator: The operator of this Filter. # noqa: E501
95
+ :type: str
96
+ """
97
+
98
+ self._operator = operator
99
+
100
+ @property
101
+ def value(self):
102
+ """Gets the value of this Filter.
103
+
104
+
105
+ :return: The value of this Filter.
106
+ :rtype: union[str,integer,list[Object]]
107
+ """
108
+ return self._value
109
+
110
+ @value.setter
111
+ def value(self, value):
112
+ """Sets the value of this Filter.
113
+
114
+
115
+ :param value: The value of this Filter. # noqa: E501
116
+ :type: union[str,integer,list[Object]]
117
+ """
118
+
119
+ self._value = value
120
+
121
+
122
+ @staticmethod
123
+ def positional_to_model(value):
124
+ """Converts a positional argument to a model value"""
125
+ return value
126
+
127
+ def return_value(self):
128
+ """Unwraps return value from model"""
129
+ return self
130
+
131
+ def to_dict(self):
132
+ """Returns the model properties as a dict"""
133
+ result = {}
134
+
135
+ for attr, _ in six.iteritems(self.swagger_types):
136
+ value = getattr(self, attr)
137
+ if isinstance(value, list):
138
+ result[attr] = list(map(
139
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
140
+ value
141
+ ))
142
+ elif hasattr(value, "to_dict"):
143
+ result[attr] = value.to_dict()
144
+ elif isinstance(value, dict):
145
+ result[attr] = dict(map(
146
+ lambda item: (item[0], item[1].to_dict())
147
+ if hasattr(item[1], "to_dict") else item,
148
+ value.items()
149
+ ))
150
+ else:
151
+ result[attr] = value
152
+
153
+ return result
154
+
155
+ def to_str(self):
156
+ """Returns the string representation of the model"""
157
+ return pprint.pformat(self.to_dict())
158
+
159
+ def __repr__(self):
160
+ """For `print` and `pprint`"""
161
+ return self.to_str()
162
+
163
+ def __eq__(self, other):
164
+ """Returns true if both objects are equal"""
165
+ if not isinstance(other, Filter):
166
+ return False
167
+
168
+ return self.__dict__ == other.__dict__
169
+
170
+ def __ne__(self, other):
171
+ """Returns true if both objects are not equal"""
172
+ return not self == other
173
+
174
+ # Container emulation
175
+ def __getitem__(self, key):
176
+ """Returns the value of key"""
177
+ key = self._map_key(key)
178
+ return getattr(self, key)
179
+
180
+ def __setitem__(self, key, value):
181
+ """Sets the value of key"""
182
+ key = self._map_key(key)
183
+ setattr(self, key, value)
184
+
185
+ def __contains__(self, key):
186
+ """Checks if the given value is a key in this object"""
187
+ key = self._map_key(key, raise_on_error=False)
188
+ return key is not None
189
+
190
+ def keys(self):
191
+ """Returns the list of json properties in the object"""
192
+ return self.__class__.rattribute_map.keys()
193
+
194
+ def values(self):
195
+ """Returns the list of values in the object"""
196
+ for key in self.__class__.attribute_map.keys():
197
+ yield getattr(self, key)
198
+
199
+ def items(self):
200
+ """Returns the list of json property to value mapping"""
201
+ for key, prop in self.__class__.rattribute_map.items():
202
+ yield key, getattr(self, prop)
203
+
204
+ def get(self, key, default=None):
205
+ """Get the value of the provided json property, or default"""
206
+ key = self._map_key(key, raise_on_error=False)
207
+ if key:
208
+ return getattr(self, key, default)
209
+ return default
210
+
211
+ def _map_key(self, key, raise_on_error=True):
212
+ result = self.__class__.rattribute_map.get(key)
213
+ if result is None:
214
+ if raise_on_error:
215
+ raise AttributeError('Invalid attribute name: {}'.format(key))
216
+ return None
217
+ return '_' + result
flywheel/models/mixins.py CHANGED
@@ -1,8 +1,9 @@
1
+ import warnings
2
+
1
3
  from .. import util
2
4
  from ..finder import Finder
3
5
  from .gear_mixin import GearMixin
4
6
 
5
-
6
7
  class ContextBase(object):
7
8
  def __init__(self):
8
9
  self._context = None
@@ -48,6 +49,9 @@ class ContainerBase(object):
48
49
  fname = fname.replace("file", file_group)
49
50
  fn = getattr(self.__context, fname, None)
50
51
  if fn:
52
+ if len(args) > 1 and isinstance(args[1], str):
53
+ if "/" in args[1]:
54
+ warnings.warn(f"Filename {args[1]} contains disallowed character '/', methods on this object will fail. Rename file with fw.move_file")
51
55
  return fn(*args, **kwargs)
52
56
  return None
53
57
 
@@ -129,14 +133,41 @@ class ContainerBase(object):
129
133
 
130
134
 
131
135
  class InfoMethods(object):
136
+
137
+ def _warn_if_keys_will_be_sanitized(self, key):
138
+ """Log warning message for offending characters"""
139
+ if "$" in key:
140
+ warnings.warn(f"Key {key} contains '$', which will be replaced with '-'.")
141
+ if "." in key:
142
+ warnings.warn(f"Key {key} contains '.', which will be replaced with '_'.")
143
+
144
+ def _check_list(self, values):
145
+ """Check list values"""
146
+ for val in values:
147
+ if isinstance(val, list):
148
+ self._check_list(val)
149
+ elif isinstance(val, dict):
150
+ self._validate_keys(val)
151
+
152
+ def _validate_keys(self, body):
153
+ """Recursively check for keys that contain offending characters"""
154
+ for key, values in body.items():
155
+ self._warn_if_keys_will_be_sanitized(key)
156
+ if isinstance(values, dict):
157
+ self._validate_keys(values)
158
+ elif isinstance(values, list):
159
+ self._check_list(values)
160
+
132
161
  def replace_info(self, info):
133
162
  """Fully replace this object's info with the provided value"""
163
+ self._validate_keys(info)
134
164
  return self._invoke_container_api("replace_{}_info", self.id, info)
135
165
 
136
166
  def update_info(self, *args, **kwargs):
137
167
  """Update the info with the passed in arguments"""
138
168
  # Could either pass a dictionary or kwargs values
139
169
  body = util.params_to_dict("update_info", args, kwargs)
170
+ self._validate_keys(body)
140
171
  return self._invoke_container_api("set_{}_info", self.id, body)
141
172
 
142
173
  def delete_info(self, *args):
@@ -663,7 +694,7 @@ class FileMixin(ContainerBase):
663
694
 
664
695
  def get_zip_info(self, **kwargs):
665
696
  """Get zip member information for this file"""
666
- return self.parent.get_file_zip_info(self.name, **kwargs)
697
+ return self._invoke_container_api("get_file_zip_info", self.file_id, **kwargs)
667
698
 
668
699
  def download_zip_member(self, member_path, dest_file, **kwargs):
669
700
  """Download file's zip member to the given path"""
@@ -32,8 +32,11 @@ class ReportUsage(object):
32
32
  'group_compute_ms': 'int',
33
33
  'total_compute_ms': 'int',
34
34
  'center_storage_byte_day': 'int',
35
+ 'center_storage_soft_deleted_byte_day': 'int',
35
36
  'group_storage_byte_day': 'int',
37
+ 'group_storage_soft_deleted_byte_day': 'int',
36
38
  'total_storage_byte_day': 'int',
39
+ 'total_storage_soft_deleted_byte_day': 'int',
37
40
  'days': 'int'
38
41
  }
39
42
 
@@ -49,8 +52,11 @@ class ReportUsage(object):
49
52
  'group_compute_ms': 'group_compute_ms',
50
53
  'total_compute_ms': 'total_compute_ms',
51
54
  'center_storage_byte_day': 'center_storage_byte_day',
55
+ 'center_storage_soft_deleted_byte_day': 'center_storage_soft_deleted_byte_day',
52
56
  'group_storage_byte_day': 'group_storage_byte_day',
57
+ 'group_storage_soft_deleted_byte_day': 'group_storage_soft_deleted_byte_day',
53
58
  'total_storage_byte_day': 'total_storage_byte_day',
59
+ 'total_storage_soft_deleted_byte_day': 'total_storage_soft_deleted_byte_day',
54
60
  'days': 'days'
55
61
  }
56
62
 
@@ -66,12 +72,15 @@ class ReportUsage(object):
66
72
  'group_compute_ms': 'group_compute_ms',
67
73
  'total_compute_ms': 'total_compute_ms',
68
74
  'center_storage_byte_day': 'center_storage_byte_day',
75
+ 'center_storage_soft_deleted_byte_day': 'center_storage_soft_deleted_byte_day',
69
76
  'group_storage_byte_day': 'group_storage_byte_day',
77
+ 'group_storage_soft_deleted_byte_day': 'group_storage_soft_deleted_byte_day',
70
78
  'total_storage_byte_day': 'total_storage_byte_day',
79
+ 'total_storage_soft_deleted_byte_day': 'total_storage_soft_deleted_byte_day',
71
80
  'days': 'days'
72
81
  }
73
82
 
74
- def __init__(self, project_label=None, group='', project=None, session_count=0, center_job_count=0, group_job_count=0, total_job_count=0, center_compute_ms=0, group_compute_ms=0, total_compute_ms=0, center_storage_byte_day=0, group_storage_byte_day=0, total_storage_byte_day=0, days=0): # noqa: E501
83
+ def __init__(self, project_label=None, group='', project=None, session_count=0, center_job_count=0, group_job_count=0, total_job_count=0, center_compute_ms=0, group_compute_ms=0, total_compute_ms=0, center_storage_byte_day=0, center_storage_soft_deleted_byte_day=0, group_storage_byte_day=0, group_storage_soft_deleted_byte_day=0, total_storage_byte_day=0, total_storage_soft_deleted_byte_day=0, days=0): # noqa: E501
75
84
  """ReportUsage - a model defined in Swagger"""
76
85
  super(ReportUsage, self).__init__()
77
86
 
@@ -86,8 +95,11 @@ class ReportUsage(object):
86
95
  self._group_compute_ms = None
87
96
  self._total_compute_ms = None
88
97
  self._center_storage_byte_day = None
98
+ self._center_storage_soft_deleted_byte_day = None
89
99
  self._group_storage_byte_day = None
100
+ self._group_storage_soft_deleted_byte_day = None
90
101
  self._total_storage_byte_day = None
102
+ self._total_storage_soft_deleted_byte_day = None
91
103
  self._days = None
92
104
  self.discriminator = None
93
105
  self.alt_discriminator = None
@@ -114,10 +126,16 @@ class ReportUsage(object):
114
126
  self.total_compute_ms = total_compute_ms
115
127
  if center_storage_byte_day is not None:
116
128
  self.center_storage_byte_day = center_storage_byte_day
129
+ if center_storage_soft_deleted_byte_day is not None:
130
+ self.center_storage_soft_deleted_byte_day = center_storage_soft_deleted_byte_day
117
131
  if group_storage_byte_day is not None:
118
132
  self.group_storage_byte_day = group_storage_byte_day
133
+ if group_storage_soft_deleted_byte_day is not None:
134
+ self.group_storage_soft_deleted_byte_day = group_storage_soft_deleted_byte_day
119
135
  if total_storage_byte_day is not None:
120
136
  self.total_storage_byte_day = total_storage_byte_day
137
+ if total_storage_soft_deleted_byte_day is not None:
138
+ self.total_storage_soft_deleted_byte_day = total_storage_soft_deleted_byte_day
121
139
  if days is not None:
122
140
  self.days = days
123
141
 
@@ -374,6 +392,29 @@ class ReportUsage(object):
374
392
 
375
393
  self._center_storage_byte_day = center_storage_byte_day
376
394
 
395
+ @property
396
+ def center_storage_soft_deleted_byte_day(self):
397
+ """Gets the center_storage_soft_deleted_byte_day of this ReportUsage.
398
+
399
+ The storage, in byte-days, used by soft deleted files originating from devices or center-designated gears in this project during the month (billable to the center)
400
+
401
+ :return: The center_storage_soft_deleted_byte_day of this ReportUsage.
402
+ :rtype: int
403
+ """
404
+ return self._center_storage_soft_deleted_byte_day
405
+
406
+ @center_storage_soft_deleted_byte_day.setter
407
+ def center_storage_soft_deleted_byte_day(self, center_storage_soft_deleted_byte_day):
408
+ """Sets the center_storage_soft_deleted_byte_day of this ReportUsage.
409
+
410
+ The storage, in byte-days, used by soft deleted files originating from devices or center-designated gears in this project during the month (billable to the center)
411
+
412
+ :param center_storage_soft_deleted_byte_day: The center_storage_soft_deleted_byte_day of this ReportUsage. # noqa: E501
413
+ :type: int
414
+ """
415
+
416
+ self._center_storage_soft_deleted_byte_day = center_storage_soft_deleted_byte_day
417
+
377
418
  @property
378
419
  def group_storage_byte_day(self):
379
420
  """Gets the group_storage_byte_day of this ReportUsage.
@@ -397,6 +438,29 @@ class ReportUsage(object):
397
438
 
398
439
  self._group_storage_byte_day = group_storage_byte_day
399
440
 
441
+ @property
442
+ def group_storage_soft_deleted_byte_day(self):
443
+ """Gets the group_storage_soft_deleted_byte_day of this ReportUsage.
444
+
445
+ The storage, in byte-days, used by soft deleted files not originating from devices or non-center-designated (lab) gears in this project during the month (billable to the group)
446
+
447
+ :return: The group_storage_soft_deleted_byte_day of this ReportUsage.
448
+ :rtype: int
449
+ """
450
+ return self._group_storage_soft_deleted_byte_day
451
+
452
+ @group_storage_soft_deleted_byte_day.setter
453
+ def group_storage_soft_deleted_byte_day(self, group_storage_soft_deleted_byte_day):
454
+ """Sets the group_storage_soft_deleted_byte_day of this ReportUsage.
455
+
456
+ The storage, in byte-days, used by soft deleted files not originating from devices or non-center-designated (lab) gears in this project during the month (billable to the group)
457
+
458
+ :param group_storage_soft_deleted_byte_day: The group_storage_soft_deleted_byte_day of this ReportUsage. # noqa: E501
459
+ :type: int
460
+ """
461
+
462
+ self._group_storage_soft_deleted_byte_day = group_storage_soft_deleted_byte_day
463
+
400
464
  @property
401
465
  def total_storage_byte_day(self):
402
466
  """Gets the total_storage_byte_day of this ReportUsage.
@@ -420,6 +484,29 @@ class ReportUsage(object):
420
484
 
421
485
  self._total_storage_byte_day = total_storage_byte_day
422
486
 
487
+ @property
488
+ def total_storage_soft_deleted_byte_day(self):
489
+ """Gets the total_storage_soft_deleted_byte_day of this ReportUsage.
490
+
491
+ The total storage, in byte-days, used by soft deleted files in this project during the month
492
+
493
+ :return: The total_storage_soft_deleted_byte_day of this ReportUsage.
494
+ :rtype: int
495
+ """
496
+ return self._total_storage_soft_deleted_byte_day
497
+
498
+ @total_storage_soft_deleted_byte_day.setter
499
+ def total_storage_soft_deleted_byte_day(self, total_storage_soft_deleted_byte_day):
500
+ """Sets the total_storage_soft_deleted_byte_day of this ReportUsage.
501
+
502
+ The total storage, in byte-days, used by soft deleted files in this project during the month
503
+
504
+ :param total_storage_soft_deleted_byte_day: The total_storage_soft_deleted_byte_day of this ReportUsage. # noqa: E501
505
+ :type: int
506
+ """
507
+
508
+ self._total_storage_soft_deleted_byte_day = total_storage_soft_deleted_byte_day
509
+
423
510
  @property
424
511
  def days(self):
425
512
  """Gets the days of this ReportUsage.