Files.com 1.6.288__tar.gz → 1.6.289__tar.gz

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.
Files changed (254) hide show
  1. {files_com-1.6.288/files_com.egg-info → files_com-1.6.289}/PKG-INFO +1 -1
  2. files_com-1.6.289/_VERSION +1 -0
  3. {files_com-1.6.288 → files_com-1.6.289/files_com.egg-info}/PKG-INFO +1 -1
  4. {files_com-1.6.288 → files_com-1.6.289}/files_com.egg-info/SOURCES.txt +1 -0
  5. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/__init__.py +1 -1
  6. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/api_client.py +13 -3
  7. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/account_line_item.py +30 -4
  8. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/action.py +4 -2
  9. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/action_log.py +4 -2
  10. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/action_notification_export.py +4 -2
  11. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/action_notification_export_result.py +4 -2
  12. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/agent_push_update.py +4 -2
  13. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/api_key.py +4 -2
  14. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/api_request_log.py +4 -2
  15. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/app.py +4 -2
  16. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/as2_incoming_message.py +4 -2
  17. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/as2_outgoing_message.py +4 -2
  18. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/as2_partner.py +4 -2
  19. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/as2_station.py +4 -2
  20. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/auto.py +4 -2
  21. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/automation.py +4 -2
  22. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/automation_log.py +4 -2
  23. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/automation_run.py +5 -3
  24. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/bandwidth_snapshot.py +4 -2
  25. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/behavior.py +4 -2
  26. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/bundle.py +4 -2
  27. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/bundle_action.py +4 -2
  28. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/bundle_download.py +4 -2
  29. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/bundle_notification.py +4 -2
  30. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/bundle_path.py +4 -2
  31. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/bundle_recipient.py +4 -2
  32. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/bundle_registration.py +4 -2
  33. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/child_site_management_policy.py +4 -2
  34. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/clickwrap.py +4 -2
  35. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/dns_record.py +4 -2
  36. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/email_incoming_message.py +4 -2
  37. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/email_log.py +4 -2
  38. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/errors.py +4 -2
  39. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/exavault_api_request_log.py +4 -2
  40. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/external_event.py +4 -2
  41. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/file.py +4 -2
  42. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/file_action.py +4 -2
  43. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/file_comment.py +4 -2
  44. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/file_comment_reaction.py +4 -2
  45. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/file_migration.py +4 -2
  46. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/file_migration_log.py +4 -2
  47. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/file_upload_part.py +4 -2
  48. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/folder.py +4 -2
  49. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/form_field.py +4 -2
  50. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/form_field_set.py +4 -2
  51. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/ftp_action_log.py +4 -2
  52. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/gpg_key.py +4 -2
  53. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/group.py +4 -2
  54. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/group_user.py +4 -2
  55. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/history.py +4 -2
  56. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/history_export.py +4 -2
  57. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/history_export_result.py +4 -2
  58. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/holiday_region.py +4 -2
  59. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/image.py +4 -2
  60. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/inbound_s3_log.py +4 -2
  61. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/inbox_recipient.py +4 -2
  62. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/inbox_registration.py +4 -2
  63. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/inbox_upload.py +4 -2
  64. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/invoice.py +24 -4
  65. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/invoice_line_item.py +28 -3
  66. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/ip_address.py +4 -2
  67. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/key_lifecycle_rule.py +4 -2
  68. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/lock.py +4 -2
  69. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/message.py +4 -2
  70. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/message_comment.py +4 -2
  71. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/message_comment_reaction.py +4 -2
  72. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/message_reaction.py +4 -2
  73. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/notification.py +4 -2
  74. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/outbound_connection_log.py +4 -2
  75. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/partner.py +4 -2
  76. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/partner_site.py +4 -2
  77. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/partner_site_request.py +4 -2
  78. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/payment.py +24 -4
  79. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/payment_line_item.py +28 -3
  80. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/permission.py +4 -2
  81. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/preview.py +4 -2
  82. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/priority.py +4 -2
  83. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/project.py +4 -2
  84. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/public_hosting_request_log.py +4 -2
  85. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/public_ip_address.py +4 -2
  86. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/public_key.py +4 -2
  87. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/remote_bandwidth_snapshot.py +4 -2
  88. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/remote_mount_backend.py +33 -4
  89. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/remote_server.py +4 -2
  90. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/remote_server_configuration_file.py +4 -2
  91. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/remote_server_credential.py +4 -2
  92. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/request.py +4 -2
  93. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/restore.py +4 -2
  94. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/scim_log.py +4 -2
  95. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/session.py +4 -2
  96. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/settings_change.py +4 -2
  97. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/sftp_action_log.py +4 -2
  98. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/sftp_host_key.py +4 -2
  99. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/share_group.py +4 -2
  100. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/share_group_member.py +4 -2
  101. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/siem_http_destination.py +4 -2
  102. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/site.py +19 -3
  103. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/snapshot.py +4 -2
  104. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/sso_strategy.py +4 -2
  105. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/status.py +4 -2
  106. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/style.py +4 -2
  107. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/sync.py +4 -2
  108. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/sync_log.py +4 -2
  109. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/sync_run.py +4 -2
  110. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/usage_by_top_level_dir.py +4 -2
  111. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/usage_daily_snapshot.py +4 -2
  112. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/usage_snapshot.py +4 -2
  113. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/user.py +4 -2
  114. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/user_cipher_use.py +4 -2
  115. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/user_lifecycle_rule.py +4 -2
  116. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/user_request.py +4 -2
  117. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/user_sftp_client_use.py +4 -2
  118. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/web_dav_action_log.py +4 -2
  119. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/webhook_test.py +4 -2
  120. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/workspace.py +4 -2
  121. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/zip_list_entry.py +4 -2
  122. {files_com-1.6.288 → files_com-1.6.289}/pyproject.toml +1 -1
  123. files_com-1.6.289/tests/test_decimal_contract.py +80 -0
  124. files_com-1.6.288/_VERSION +0 -1
  125. {files_com-1.6.288 → files_com-1.6.289}/LICENSE +0 -0
  126. {files_com-1.6.288 → files_com-1.6.289}/README.md +0 -0
  127. {files_com-1.6.288 → files_com-1.6.289}/files_com.egg-info/dependency_links.txt +0 -0
  128. {files_com-1.6.288 → files_com-1.6.289}/files_com.egg-info/requires.txt +0 -0
  129. {files_com-1.6.288 → files_com-1.6.289}/files_com.egg-info/top_level.txt +0 -0
  130. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/api.py +0 -0
  131. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/error.py +0 -0
  132. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/list_obj.py +0 -0
  133. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/models/__init__.py +0 -0
  134. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/path_util.py +0 -0
  135. {files_com-1.6.288 → files_com-1.6.289}/files_sdk/util.py +0 -0
  136. {files_com-1.6.288 → files_com-1.6.289}/setup.cfg +0 -0
  137. {files_com-1.6.288 → files_com-1.6.289}/tests/test_account_line_item.py +0 -0
  138. {files_com-1.6.288 → files_com-1.6.289}/tests/test_action.py +0 -0
  139. {files_com-1.6.288 → files_com-1.6.289}/tests/test_action_log.py +0 -0
  140. {files_com-1.6.288 → files_com-1.6.289}/tests/test_action_notification_export.py +0 -0
  141. {files_com-1.6.288 → files_com-1.6.289}/tests/test_action_notification_export_result.py +0 -0
  142. {files_com-1.6.288 → files_com-1.6.289}/tests/test_agent_push_update.py +0 -0
  143. {files_com-1.6.288 → files_com-1.6.289}/tests/test_api_errors.py +0 -0
  144. {files_com-1.6.288 → files_com-1.6.289}/tests/test_api_key.py +0 -0
  145. {files_com-1.6.288 → files_com-1.6.289}/tests/test_api_request_log.py +0 -0
  146. {files_com-1.6.288 → files_com-1.6.289}/tests/test_app.py +0 -0
  147. {files_com-1.6.288 → files_com-1.6.289}/tests/test_as2_incoming_message.py +0 -0
  148. {files_com-1.6.288 → files_com-1.6.289}/tests/test_as2_outgoing_message.py +0 -0
  149. {files_com-1.6.288 → files_com-1.6.289}/tests/test_as2_partner.py +0 -0
  150. {files_com-1.6.288 → files_com-1.6.289}/tests/test_as2_station.py +0 -0
  151. {files_com-1.6.288 → files_com-1.6.289}/tests/test_auto.py +0 -0
  152. {files_com-1.6.288 → files_com-1.6.289}/tests/test_automation.py +0 -0
  153. {files_com-1.6.288 → files_com-1.6.289}/tests/test_automation_log.py +0 -0
  154. {files_com-1.6.288 → files_com-1.6.289}/tests/test_automation_run.py +0 -0
  155. {files_com-1.6.288 → files_com-1.6.289}/tests/test_bandwidth_snapshot.py +0 -0
  156. {files_com-1.6.288 → files_com-1.6.289}/tests/test_behavior.py +0 -0
  157. {files_com-1.6.288 → files_com-1.6.289}/tests/test_bundle.py +0 -0
  158. {files_com-1.6.288 → files_com-1.6.289}/tests/test_bundle_action.py +0 -0
  159. {files_com-1.6.288 → files_com-1.6.289}/tests/test_bundle_download.py +0 -0
  160. {files_com-1.6.288 → files_com-1.6.289}/tests/test_bundle_notification.py +0 -0
  161. {files_com-1.6.288 → files_com-1.6.289}/tests/test_bundle_path.py +0 -0
  162. {files_com-1.6.288 → files_com-1.6.289}/tests/test_bundle_recipient.py +0 -0
  163. {files_com-1.6.288 → files_com-1.6.289}/tests/test_bundle_registration.py +0 -0
  164. {files_com-1.6.288 → files_com-1.6.289}/tests/test_child_site_management_policy.py +0 -0
  165. {files_com-1.6.288 → files_com-1.6.289}/tests/test_clickwrap.py +0 -0
  166. {files_com-1.6.288 → files_com-1.6.289}/tests/test_connection_adapter.py +0 -0
  167. {files_com-1.6.288 → files_com-1.6.289}/tests/test_dns_record.py +0 -0
  168. {files_com-1.6.288 → files_com-1.6.289}/tests/test_email_incoming_message.py +0 -0
  169. {files_com-1.6.288 → files_com-1.6.289}/tests/test_email_log.py +0 -0
  170. {files_com-1.6.288 → files_com-1.6.289}/tests/test_errors.py +0 -0
  171. {files_com-1.6.288 → files_com-1.6.289}/tests/test_exavault_api_request_log.py +0 -0
  172. {files_com-1.6.288 → files_com-1.6.289}/tests/test_external_event.py +0 -0
  173. {files_com-1.6.288 → files_com-1.6.289}/tests/test_file.py +0 -0
  174. {files_com-1.6.288 → files_com-1.6.289}/tests/test_file_action.py +0 -0
  175. {files_com-1.6.288 → files_com-1.6.289}/tests/test_file_comment.py +0 -0
  176. {files_com-1.6.288 → files_com-1.6.289}/tests/test_file_comment_reaction.py +0 -0
  177. {files_com-1.6.288 → files_com-1.6.289}/tests/test_file_migration.py +0 -0
  178. {files_com-1.6.288 → files_com-1.6.289}/tests/test_file_migration_log.py +0 -0
  179. {files_com-1.6.288 → files_com-1.6.289}/tests/test_file_upload_part.py +0 -0
  180. {files_com-1.6.288 → files_com-1.6.289}/tests/test_folder.py +0 -0
  181. {files_com-1.6.288 → files_com-1.6.289}/tests/test_form_field.py +0 -0
  182. {files_com-1.6.288 → files_com-1.6.289}/tests/test_form_field_set.py +0 -0
  183. {files_com-1.6.288 → files_com-1.6.289}/tests/test_ftp_action_log.py +0 -0
  184. {files_com-1.6.288 → files_com-1.6.289}/tests/test_gpg_key.py +0 -0
  185. {files_com-1.6.288 → files_com-1.6.289}/tests/test_group.py +0 -0
  186. {files_com-1.6.288 → files_com-1.6.289}/tests/test_group_user.py +0 -0
  187. {files_com-1.6.288 → files_com-1.6.289}/tests/test_history.py +0 -0
  188. {files_com-1.6.288 → files_com-1.6.289}/tests/test_history_export.py +0 -0
  189. {files_com-1.6.288 → files_com-1.6.289}/tests/test_history_export_result.py +0 -0
  190. {files_com-1.6.288 → files_com-1.6.289}/tests/test_holiday_region.py +0 -0
  191. {files_com-1.6.288 → files_com-1.6.289}/tests/test_image.py +0 -0
  192. {files_com-1.6.288 → files_com-1.6.289}/tests/test_inbound_s3_log.py +0 -0
  193. {files_com-1.6.288 → files_com-1.6.289}/tests/test_inbox_recipient.py +0 -0
  194. {files_com-1.6.288 → files_com-1.6.289}/tests/test_inbox_registration.py +0 -0
  195. {files_com-1.6.288 → files_com-1.6.289}/tests/test_inbox_upload.py +0 -0
  196. {files_com-1.6.288 → files_com-1.6.289}/tests/test_invoice.py +0 -0
  197. {files_com-1.6.288 → files_com-1.6.289}/tests/test_invoice_line_item.py +0 -0
  198. {files_com-1.6.288 → files_com-1.6.289}/tests/test_ip_address.py +0 -0
  199. {files_com-1.6.288 → files_com-1.6.289}/tests/test_key_lifecycle_rule.py +0 -0
  200. {files_com-1.6.288 → files_com-1.6.289}/tests/test_lock.py +0 -0
  201. {files_com-1.6.288 → files_com-1.6.289}/tests/test_message.py +0 -0
  202. {files_com-1.6.288 → files_com-1.6.289}/tests/test_message_comment.py +0 -0
  203. {files_com-1.6.288 → files_com-1.6.289}/tests/test_message_comment_reaction.py +0 -0
  204. {files_com-1.6.288 → files_com-1.6.289}/tests/test_message_reaction.py +0 -0
  205. {files_com-1.6.288 → files_com-1.6.289}/tests/test_notification.py +0 -0
  206. {files_com-1.6.288 → files_com-1.6.289}/tests/test_outbound_connection_log.py +0 -0
  207. {files_com-1.6.288 → files_com-1.6.289}/tests/test_partner.py +0 -0
  208. {files_com-1.6.288 → files_com-1.6.289}/tests/test_partner_site.py +0 -0
  209. {files_com-1.6.288 → files_com-1.6.289}/tests/test_partner_site_request.py +0 -0
  210. {files_com-1.6.288 → files_com-1.6.289}/tests/test_path_util.py +0 -0
  211. {files_com-1.6.288 → files_com-1.6.289}/tests/test_payment.py +0 -0
  212. {files_com-1.6.288 → files_com-1.6.289}/tests/test_payment_line_item.py +0 -0
  213. {files_com-1.6.288 → files_com-1.6.289}/tests/test_permission.py +0 -0
  214. {files_com-1.6.288 → files_com-1.6.289}/tests/test_preview.py +0 -0
  215. {files_com-1.6.288 → files_com-1.6.289}/tests/test_priority.py +0 -0
  216. {files_com-1.6.288 → files_com-1.6.289}/tests/test_project.py +0 -0
  217. {files_com-1.6.288 → files_com-1.6.289}/tests/test_public_hosting_request_log.py +0 -0
  218. {files_com-1.6.288 → files_com-1.6.289}/tests/test_public_ip_address.py +0 -0
  219. {files_com-1.6.288 → files_com-1.6.289}/tests/test_public_key.py +0 -0
  220. {files_com-1.6.288 → files_com-1.6.289}/tests/test_remote_bandwidth_snapshot.py +0 -0
  221. {files_com-1.6.288 → files_com-1.6.289}/tests/test_remote_mount_backend.py +0 -0
  222. {files_com-1.6.288 → files_com-1.6.289}/tests/test_remote_server.py +0 -0
  223. {files_com-1.6.288 → files_com-1.6.289}/tests/test_remote_server_configuration_file.py +0 -0
  224. {files_com-1.6.288 → files_com-1.6.289}/tests/test_remote_server_credential.py +0 -0
  225. {files_com-1.6.288 → files_com-1.6.289}/tests/test_request.py +0 -0
  226. {files_com-1.6.288 → files_com-1.6.289}/tests/test_restore.py +0 -0
  227. {files_com-1.6.288 → files_com-1.6.289}/tests/test_scim_log.py +0 -0
  228. {files_com-1.6.288 → files_com-1.6.289}/tests/test_session.py +0 -0
  229. {files_com-1.6.288 → files_com-1.6.289}/tests/test_settings_change.py +0 -0
  230. {files_com-1.6.288 → files_com-1.6.289}/tests/test_sftp_action_log.py +0 -0
  231. {files_com-1.6.288 → files_com-1.6.289}/tests/test_sftp_host_key.py +0 -0
  232. {files_com-1.6.288 → files_com-1.6.289}/tests/test_share_group.py +0 -0
  233. {files_com-1.6.288 → files_com-1.6.289}/tests/test_share_group_member.py +0 -0
  234. {files_com-1.6.288 → files_com-1.6.289}/tests/test_siem_http_destination.py +0 -0
  235. {files_com-1.6.288 → files_com-1.6.289}/tests/test_site.py +0 -0
  236. {files_com-1.6.288 → files_com-1.6.289}/tests/test_snapshot.py +0 -0
  237. {files_com-1.6.288 → files_com-1.6.289}/tests/test_sso_strategy.py +0 -0
  238. {files_com-1.6.288 → files_com-1.6.289}/tests/test_status.py +0 -0
  239. {files_com-1.6.288 → files_com-1.6.289}/tests/test_style.py +0 -0
  240. {files_com-1.6.288 → files_com-1.6.289}/tests/test_sync.py +0 -0
  241. {files_com-1.6.288 → files_com-1.6.289}/tests/test_sync_log.py +0 -0
  242. {files_com-1.6.288 → files_com-1.6.289}/tests/test_sync_run.py +0 -0
  243. {files_com-1.6.288 → files_com-1.6.289}/tests/test_usage_by_top_level_dir.py +0 -0
  244. {files_com-1.6.288 → files_com-1.6.289}/tests/test_usage_daily_snapshot.py +0 -0
  245. {files_com-1.6.288 → files_com-1.6.289}/tests/test_usage_snapshot.py +0 -0
  246. {files_com-1.6.288 → files_com-1.6.289}/tests/test_user.py +0 -0
  247. {files_com-1.6.288 → files_com-1.6.289}/tests/test_user_cipher_use.py +0 -0
  248. {files_com-1.6.288 → files_com-1.6.289}/tests/test_user_lifecycle_rule.py +0 -0
  249. {files_com-1.6.288 → files_com-1.6.289}/tests/test_user_request.py +0 -0
  250. {files_com-1.6.288 → files_com-1.6.289}/tests/test_user_sftp_client_use.py +0 -0
  251. {files_com-1.6.288 → files_com-1.6.289}/tests/test_web_dav_action_log.py +0 -0
  252. {files_com-1.6.288 → files_com-1.6.289}/tests/test_webhook_test.py +0 -0
  253. {files_com-1.6.288 → files_com-1.6.289}/tests/test_workspace.py +0 -0
  254. {files_com-1.6.288 → files_com-1.6.289}/tests/test_zip_list_entry.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: files_com
3
- Version: 1.6.288
3
+ Version: 1.6.289
4
4
  Summary: Python bindings for the Files.com API
5
5
  License: MIT
6
6
  Requires-Python: >=3.5
@@ -0,0 +1 @@
1
+ 1.6.289
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: files_com
3
- Version: 1.6.288
3
+ Version: 1.6.289
4
4
  Summary: Python bindings for the Files.com API
5
5
  License: MIT
6
6
  Requires-Python: >=3.5
@@ -161,6 +161,7 @@ tests/test_bundle_registration.py
161
161
  tests/test_child_site_management_policy.py
162
162
  tests/test_clickwrap.py
163
163
  tests/test_connection_adapter.py
164
+ tests/test_decimal_contract.py
164
165
  tests/test_dns_record.py
165
166
  tests/test_email_incoming_message.py
166
167
  tests/test_email_log.py
@@ -249,7 +249,7 @@ session_id = None
249
249
  source_ip = None
250
250
  base_url = "https://app.files.com"
251
251
  base_path = "api/rest/v1"
252
- version = "1.6.288"
252
+ version = "1.6.289"
253
253
 
254
254
  __version__ = version
255
255
 
@@ -3,6 +3,7 @@ import random
3
3
  import requests
4
4
  import time
5
5
  from urllib.parse import urljoin
6
+ from decimal import Decimal
6
7
 
7
8
  import files_sdk
8
9
  from files_sdk.error import (
@@ -75,6 +76,15 @@ class ApiClient:
75
76
  **self.request_headers(api_key, session_id, language),
76
77
  }
77
78
 
79
+ def _serialize_value(value):
80
+ if isinstance(value, Decimal):
81
+ return str(value)
82
+ if isinstance(value, dict):
83
+ return {k: _serialize_value(v) for k, v in value.items()}
84
+ if isinstance(value, list):
85
+ return [_serialize_value(v) for v in value]
86
+ return value
87
+
78
88
  data = None
79
89
  query_params = None
80
90
  if params:
@@ -84,12 +94,12 @@ class ApiClient:
84
94
  for k, v in params.items():
85
95
  if isinstance(v, dict):
86
96
  for k2, v2 in v.items():
87
- _params[f"{k}[{k2}]"] = v2
97
+ _params[f"{k}[{k2}]"] = _serialize_value(v2)
88
98
  else:
89
- _params[k] = v
99
+ _params[k] = _serialize_value(v)
90
100
  query_params = _params
91
101
  else:
92
- data = params
102
+ data = _serialize_value(params)
93
103
  query_params = None
94
104
 
95
105
  req = requests.Request(
@@ -1,4 +1,5 @@
1
1
  import builtins # noqa: F401
2
+ from decimal import Decimal
2
3
  from files_sdk.api import Api # noqa: F401
3
4
  from files_sdk.error import ( # noqa: F401
4
5
  InvalidParameterError,
@@ -8,10 +9,15 @@ from files_sdk.error import ( # noqa: F401
8
9
 
9
10
 
10
11
  class AccountLineItem:
12
+ __decimal_fields = {
13
+ "amount",
14
+ "balance",
15
+ }
16
+ __decimal_array_fields = {}
11
17
  default_attributes = {
12
18
  "id": None, # int64 - Line item Id
13
- "amount": None, # double - Line item amount
14
- "balance": None, # double - Line item balance
19
+ "amount": None, # decimal - Line item amount
20
+ "balance": None, # decimal - Line item balance
15
21
  "created_at": None, # date-time - Line item created at
16
22
  "currency": None, # string - Line item currency
17
23
  "download_uri": None, # string - Line item download uri
@@ -37,14 +43,34 @@ class AccountLineItem:
37
43
  attribute,
38
44
  default_value,
39
45
  ) in AccountLineItem.default_attributes.items():
40
- setattr(self, attribute, attributes.get(attribute, default_value))
46
+ value = attributes.get(attribute, default_value)
47
+ if (
48
+ attribute in AccountLineItem.__decimal_fields
49
+ and value is not None
50
+ ):
51
+ value = Decimal(str(value))
52
+ if (
53
+ attribute in AccountLineItem.__decimal_array_fields
54
+ and value is not None
55
+ ):
56
+ value = [Decimal(str(v)) for v in (value or [])]
57
+ setattr(self, attribute, value)
41
58
 
42
59
  def get_attributes(self):
43
- return {
60
+ attrs = {
44
61
  k: getattr(self, k, None)
45
62
  for k in AccountLineItem.default_attributes
46
63
  if getattr(self, k, None) is not None
47
64
  }
65
+ for k in list(attrs.keys()):
66
+ if k in AccountLineItem.__decimal_fields and attrs[k] is not None:
67
+ attrs[k] = str(attrs[k])
68
+ if (
69
+ k in AccountLineItem.__decimal_array_fields
70
+ and attrs[k] is not None
71
+ ):
72
+ attrs[k] = [str(v) for v in (attrs[k] or [])]
73
+ return attrs
48
74
 
49
75
 
50
76
  def new(*args, **kwargs):
@@ -35,14 +35,16 @@ class Action:
35
35
 
36
36
  def set_attributes(self, attributes):
37
37
  for attribute, default_value in Action.default_attributes.items():
38
- setattr(self, attribute, attributes.get(attribute, default_value))
38
+ value = attributes.get(attribute, default_value)
39
+ setattr(self, attribute, value)
39
40
 
40
41
  def get_attributes(self):
41
- return {
42
+ attrs = {
42
43
  k: getattr(self, k, None)
43
44
  for k in Action.default_attributes
44
45
  if getattr(self, k, None) is not None
45
46
  }
47
+ return attrs
46
48
 
47
49
 
48
50
  def new(*args, **kwargs):
@@ -36,14 +36,16 @@ class ActionLog:
36
36
 
37
37
  def set_attributes(self, attributes):
38
38
  for attribute, default_value in ActionLog.default_attributes.items():
39
- setattr(self, attribute, attributes.get(attribute, default_value))
39
+ value = attributes.get(attribute, default_value)
40
+ setattr(self, attribute, value)
40
41
 
41
42
  def get_attributes(self):
42
- return {
43
+ attrs = {
43
44
  k: getattr(self, k, None)
44
45
  for k in ActionLog.default_attributes
45
46
  if getattr(self, k, None) is not None
46
47
  }
48
+ return attrs
47
49
 
48
50
 
49
51
  # Parameters:
@@ -38,14 +38,16 @@ class ActionNotificationExport:
38
38
  attribute,
39
39
  default_value,
40
40
  ) in ActionNotificationExport.default_attributes.items():
41
- setattr(self, attribute, attributes.get(attribute, default_value))
41
+ value = attributes.get(attribute, default_value)
42
+ setattr(self, attribute, value)
42
43
 
43
44
  def get_attributes(self):
44
- return {
45
+ attrs = {
45
46
  k: getattr(self, k, None)
46
47
  for k in ActionNotificationExport.default_attributes
47
48
  if getattr(self, k, None) is not None
48
49
  }
50
+ return attrs
49
51
 
50
52
  def save(self):
51
53
  if hasattr(self, "id") and self.id:
@@ -35,14 +35,16 @@ class ActionNotificationExportResult:
35
35
  attribute,
36
36
  default_value,
37
37
  ) in ActionNotificationExportResult.default_attributes.items():
38
- setattr(self, attribute, attributes.get(attribute, default_value))
38
+ value = attributes.get(attribute, default_value)
39
+ setattr(self, attribute, value)
39
40
 
40
41
  def get_attributes(self):
41
- return {
42
+ attrs = {
42
43
  k: getattr(self, k, None)
43
44
  for k in ActionNotificationExportResult.default_attributes
44
45
  if getattr(self, k, None) is not None
45
46
  }
47
+ return attrs
46
48
 
47
49
 
48
50
  # Parameters:
@@ -30,14 +30,16 @@ class AgentPushUpdate:
30
30
  attribute,
31
31
  default_value,
32
32
  ) in AgentPushUpdate.default_attributes.items():
33
- setattr(self, attribute, attributes.get(attribute, default_value))
33
+ value = attributes.get(attribute, default_value)
34
+ setattr(self, attribute, value)
34
35
 
35
36
  def get_attributes(self):
36
- return {
37
+ attrs = {
37
38
  k: getattr(self, k, None)
38
39
  for k in AgentPushUpdate.default_attributes
39
40
  if getattr(self, k, None) is not None
40
41
  }
42
+ return attrs
41
43
 
42
44
 
43
45
  def new(*args, **kwargs):
@@ -40,14 +40,16 @@ class ApiKey:
40
40
 
41
41
  def set_attributes(self, attributes):
42
42
  for attribute, default_value in ApiKey.default_attributes.items():
43
- setattr(self, attribute, attributes.get(attribute, default_value))
43
+ value = attributes.get(attribute, default_value)
44
+ setattr(self, attribute, value)
44
45
 
45
46
  def get_attributes(self):
46
- return {
47
+ attrs = {
47
48
  k: getattr(self, k, None)
48
49
  for k in ApiKey.default_attributes
49
50
  if getattr(self, k, None) is not None
50
51
  }
52
+ return attrs
51
53
 
52
54
  # Parameters:
53
55
  # description - string - User-supplied description of API key.
@@ -46,14 +46,16 @@ class ApiRequestLog:
46
46
  attribute,
47
47
  default_value,
48
48
  ) in ApiRequestLog.default_attributes.items():
49
- setattr(self, attribute, attributes.get(attribute, default_value))
49
+ value = attributes.get(attribute, default_value)
50
+ setattr(self, attribute, value)
50
51
 
51
52
  def get_attributes(self):
52
- return {
53
+ attrs = {
53
54
  k: getattr(self, k, None)
54
55
  for k in ApiRequestLog.default_attributes
55
56
  if getattr(self, k, None) is not None
56
57
  }
58
+ return attrs
57
59
 
58
60
 
59
61
  # Parameters:
@@ -43,14 +43,16 @@ class App:
43
43
 
44
44
  def set_attributes(self, attributes):
45
45
  for attribute, default_value in App.default_attributes.items():
46
- setattr(self, attribute, attributes.get(attribute, default_value))
46
+ value = attributes.get(attribute, default_value)
47
+ setattr(self, attribute, value)
47
48
 
48
49
  def get_attributes(self):
49
- return {
50
+ attrs = {
50
51
  k: getattr(self, k, None)
51
52
  for k in App.default_attributes
52
53
  if getattr(self, k, None) is not None
53
54
  }
55
+ return attrs
54
56
 
55
57
 
56
58
  # Parameters:
@@ -60,14 +60,16 @@ class As2IncomingMessage:
60
60
  attribute,
61
61
  default_value,
62
62
  ) in As2IncomingMessage.default_attributes.items():
63
- setattr(self, attribute, attributes.get(attribute, default_value))
63
+ value = attributes.get(attribute, default_value)
64
+ setattr(self, attribute, value)
64
65
 
65
66
  def get_attributes(self):
66
- return {
67
+ attrs = {
67
68
  k: getattr(self, k, None)
68
69
  for k in As2IncomingMessage.default_attributes
69
70
  if getattr(self, k, None) is not None
70
71
  }
72
+ return attrs
71
73
 
72
74
 
73
75
  # Parameters:
@@ -56,14 +56,16 @@ class As2OutgoingMessage:
56
56
  attribute,
57
57
  default_value,
58
58
  ) in As2OutgoingMessage.default_attributes.items():
59
- setattr(self, attribute, attributes.get(attribute, default_value))
59
+ value = attributes.get(attribute, default_value)
60
+ setattr(self, attribute, value)
60
61
 
61
62
  def get_attributes(self):
62
- return {
63
+ attrs = {
63
64
  k: getattr(self, k, None)
64
65
  for k in As2OutgoingMessage.default_attributes
65
66
  if getattr(self, k, None) is not None
66
67
  }
68
+ return attrs
67
69
 
68
70
 
69
71
  # Parameters:
@@ -43,14 +43,16 @@ class As2Partner:
43
43
 
44
44
  def set_attributes(self, attributes):
45
45
  for attribute, default_value in As2Partner.default_attributes.items():
46
- setattr(self, attribute, attributes.get(attribute, default_value))
46
+ value = attributes.get(attribute, default_value)
47
+ setattr(self, attribute, value)
47
48
 
48
49
  def get_attributes(self):
49
- return {
50
+ attrs = {
50
51
  k: getattr(self, k, None)
51
52
  for k in As2Partner.default_attributes
52
53
  if getattr(self, k, None) is not None
53
54
  }
55
+ return attrs
54
56
 
55
57
  # Parameters:
56
58
  # enable_dedicated_ips - boolean - If `true`, we will use your site's dedicated IPs for all outbound connections to this AS2 Partner.
@@ -39,14 +39,16 @@ class As2Station:
39
39
 
40
40
  def set_attributes(self, attributes):
41
41
  for attribute, default_value in As2Station.default_attributes.items():
42
- setattr(self, attribute, attributes.get(attribute, default_value))
42
+ value = attributes.get(attribute, default_value)
43
+ setattr(self, attribute, value)
43
44
 
44
45
  def get_attributes(self):
45
- return {
46
+ attrs = {
46
47
  k: getattr(self, k, None)
47
48
  for k in As2Station.default_attributes
48
49
  if getattr(self, k, None) is not None
49
50
  }
51
+ return attrs
50
52
 
51
53
  # Parameters:
52
54
  # name - string - The station's formal AS2 name.
@@ -22,14 +22,16 @@ class Auto:
22
22
 
23
23
  def set_attributes(self, attributes):
24
24
  for attribute, default_value in Auto.default_attributes.items():
25
- setattr(self, attribute, attributes.get(attribute, default_value))
25
+ value = attributes.get(attribute, default_value)
26
+ setattr(self, attribute, value)
26
27
 
27
28
  def get_attributes(self):
28
- return {
29
+ attrs = {
29
30
  k: getattr(self, k, None)
30
31
  for k in Auto.default_attributes
31
32
  if getattr(self, k, None) is not None
32
33
  }
34
+ return attrs
33
35
 
34
36
 
35
37
  def new(*args, **kwargs):
@@ -63,14 +63,16 @@ class Automation:
63
63
 
64
64
  def set_attributes(self, attributes):
65
65
  for attribute, default_value in Automation.default_attributes.items():
66
- setattr(self, attribute, attributes.get(attribute, default_value))
66
+ value = attributes.get(attribute, default_value)
67
+ setattr(self, attribute, value)
67
68
 
68
69
  def get_attributes(self):
69
- return {
70
+ attrs = {
70
71
  k: getattr(self, k, None)
71
72
  for k in Automation.default_attributes
72
73
  if getattr(self, k, None) is not None
73
74
  }
75
+ return attrs
74
76
 
75
77
  # Manually Run Automation
76
78
  def manual_run(self, params=None):
@@ -35,14 +35,16 @@ class AutomationLog:
35
35
  attribute,
36
36
  default_value,
37
37
  ) in AutomationLog.default_attributes.items():
38
- setattr(self, attribute, attributes.get(attribute, default_value))
38
+ value = attributes.get(attribute, default_value)
39
+ setattr(self, attribute, value)
39
40
 
40
41
  def get_attributes(self):
41
- return {
42
+ attrs = {
42
43
  k: getattr(self, k, None)
43
44
  for k in AutomationLog.default_attributes
44
45
  if getattr(self, k, None) is not None
45
46
  }
47
+ return attrs
46
48
 
47
49
 
48
50
  # Parameters:
@@ -39,14 +39,16 @@ class AutomationRun:
39
39
  attribute,
40
40
  default_value,
41
41
  ) in AutomationRun.default_attributes.items():
42
- setattr(self, attribute, attributes.get(attribute, default_value))
42
+ value = attributes.get(attribute, default_value)
43
+ setattr(self, attribute, value)
43
44
 
44
45
  def get_attributes(self):
45
- return {
46
+ attrs = {
46
47
  k: getattr(self, k, None)
47
48
  for k in AutomationRun.default_attributes
48
49
  if getattr(self, k, None) is not None
49
50
  }
51
+ return attrs
50
52
 
51
53
 
52
54
  # Parameters:
@@ -54,7 +56,7 @@ class AutomationRun:
54
56
  # cursor - string - Used for pagination. When a list request has more records available, cursors are provided in the response headers `X-Files-Cursor-Next` and `X-Files-Cursor-Prev`. Send one of those cursor value here to resume an existing list from the next available record. Note: many of our SDKs have iterator methods that will automatically handle cursor-based pagination.
55
57
  # per_page - int64 - Number of records to show per page. (Max: 10,000, 1,000 or less is recommended).
56
58
  # sort_by - object - If set, sort records by the specified field in either `asc` or `desc` direction. Valid fields are `automation_id`, `created_at` or `status`.
57
- # filter - object - If set, return records where the specified field is equal to the supplied value. Valid fields are `status`, `workspace_id` or `automation_id`. Valid field combinations are `[ automation_id, status ]`, `[ workspace_id, automation_id ]` or `[ workspace_id, automation_id, status ]`.
59
+ # filter - object - If set, return records where the specified field is equal to the supplied value. Valid fields are `status`, `workspace_id` or `automation_id`. Valid field combinations are `[ workspace_id, status ]`, `[ automation_id, status ]`, `[ workspace_id, automation_id ]` or `[ workspace_id, automation_id, status ]`.
58
60
  # automation_id (required) - int64 - ID of the associated Automation.
59
61
  def list(params=None, options=None):
60
62
  if not isinstance(params, dict):
@@ -34,14 +34,16 @@ class BandwidthSnapshot:
34
34
  attribute,
35
35
  default_value,
36
36
  ) in BandwidthSnapshot.default_attributes.items():
37
- setattr(self, attribute, attributes.get(attribute, default_value))
37
+ value = attributes.get(attribute, default_value)
38
+ setattr(self, attribute, value)
38
39
 
39
40
  def get_attributes(self):
40
- return {
41
+ attrs = {
41
42
  k: getattr(self, k, None)
42
43
  for k in BandwidthSnapshot.default_attributes
43
44
  if getattr(self, k, None) is not None
44
45
  }
46
+ return attrs
45
47
 
46
48
 
47
49
  # Parameters:
@@ -33,14 +33,16 @@ class Behavior:
33
33
 
34
34
  def set_attributes(self, attributes):
35
35
  for attribute, default_value in Behavior.default_attributes.items():
36
- setattr(self, attribute, attributes.get(attribute, default_value))
36
+ value = attributes.get(attribute, default_value)
37
+ setattr(self, attribute, value)
37
38
 
38
39
  def get_attributes(self):
39
- return {
40
+ attrs = {
40
41
  k: getattr(self, k, None)
41
42
  for k in Behavior.default_attributes
42
43
  if getattr(self, k, None) is not None
43
44
  }
45
+ return attrs
44
46
 
45
47
  # Parameters:
46
48
  # value - object - This field stores a hash of data specific to the type of behavior. See The Behavior Types section for example values for each type of behavior.
@@ -69,14 +69,16 @@ class Bundle:
69
69
 
70
70
  def set_attributes(self, attributes):
71
71
  for attribute, default_value in Bundle.default_attributes.items():
72
- setattr(self, attribute, attributes.get(attribute, default_value))
72
+ value = attributes.get(attribute, default_value)
73
+ setattr(self, attribute, value)
73
74
 
74
75
  def get_attributes(self):
75
- return {
76
+ attrs = {
76
77
  k: getattr(self, k, None)
77
78
  for k in Bundle.default_attributes
78
79
  if getattr(self, k, None) is not None
79
80
  }
81
+ return attrs
80
82
 
81
83
  # Send email(s) with a link to bundle
82
84
  #
@@ -35,14 +35,16 @@ class BundleAction:
35
35
  attribute,
36
36
  default_value,
37
37
  ) in BundleAction.default_attributes.items():
38
- setattr(self, attribute, attributes.get(attribute, default_value))
38
+ value = attributes.get(attribute, default_value)
39
+ setattr(self, attribute, value)
39
40
 
40
41
  def get_attributes(self):
41
- return {
42
+ attrs = {
42
43
  k: getattr(self, k, None)
43
44
  for k in BundleAction.default_attributes
44
45
  if getattr(self, k, None) is not None
45
46
  }
47
+ return attrs
46
48
 
47
49
 
48
50
  # Parameters:
@@ -29,14 +29,16 @@ class BundleDownload:
29
29
  attribute,
30
30
  default_value,
31
31
  ) in BundleDownload.default_attributes.items():
32
- setattr(self, attribute, attributes.get(attribute, default_value))
32
+ value = attributes.get(attribute, default_value)
33
+ setattr(self, attribute, value)
33
34
 
34
35
  def get_attributes(self):
35
- return {
36
+ attrs = {
36
37
  k: getattr(self, k, None)
37
38
  for k in BundleDownload.default_attributes
38
39
  if getattr(self, k, None) is not None
39
40
  }
41
+ return attrs
40
42
 
41
43
 
42
44
  # Parameters:
@@ -31,14 +31,16 @@ class BundleNotification:
31
31
  attribute,
32
32
  default_value,
33
33
  ) in BundleNotification.default_attributes.items():
34
- setattr(self, attribute, attributes.get(attribute, default_value))
34
+ value = attributes.get(attribute, default_value)
35
+ setattr(self, attribute, value)
35
36
 
36
37
  def get_attributes(self):
37
- return {
38
+ attrs = {
38
39
  k: getattr(self, k, None)
39
40
  for k in BundleNotification.default_attributes
40
41
  if getattr(self, k, None) is not None
41
42
  }
43
+ return attrs
42
44
 
43
45
  # Parameters:
44
46
  # notify_on_registration - boolean - Triggers bundle notification when a registration action occurs for it.
@@ -23,14 +23,16 @@ class BundlePath:
23
23
 
24
24
  def set_attributes(self, attributes):
25
25
  for attribute, default_value in BundlePath.default_attributes.items():
26
- setattr(self, attribute, attributes.get(attribute, default_value))
26
+ value = attributes.get(attribute, default_value)
27
+ setattr(self, attribute, value)
27
28
 
28
29
  def get_attributes(self):
29
- return {
30
+ attrs = {
30
31
  k: getattr(self, k, None)
31
32
  for k in BundlePath.default_attributes
32
33
  if getattr(self, k, None) is not None
33
34
  }
35
+ return attrs
34
36
 
35
37
 
36
38
  def new(*args, **kwargs):
@@ -33,14 +33,16 @@ class BundleRecipient:
33
33
  attribute,
34
34
  default_value,
35
35
  ) in BundleRecipient.default_attributes.items():
36
- setattr(self, attribute, attributes.get(attribute, default_value))
36
+ value = attributes.get(attribute, default_value)
37
+ setattr(self, attribute, value)
37
38
 
38
39
  def get_attributes(self):
39
- return {
40
+ attrs = {
40
41
  k: getattr(self, k, None)
41
42
  for k in BundleRecipient.default_attributes
42
43
  if getattr(self, k, None) is not None
43
44
  }
45
+ return attrs
44
46
 
45
47
  def save(self):
46
48
  if hasattr(self, "id") and self.id:
@@ -38,14 +38,16 @@ class BundleRegistration:
38
38
  attribute,
39
39
  default_value,
40
40
  ) in BundleRegistration.default_attributes.items():
41
- setattr(self, attribute, attributes.get(attribute, default_value))
41
+ value = attributes.get(attribute, default_value)
42
+ setattr(self, attribute, value)
42
43
 
43
44
  def get_attributes(self):
44
- return {
45
+ attrs = {
45
46
  k: getattr(self, k, None)
46
47
  for k in BundleRegistration.default_attributes
47
48
  if getattr(self, k, None) is not None
48
49
  }
50
+ return attrs
49
51
 
50
52
 
51
53
  # Parameters: