Files.com 1.6.488__tar.gz → 1.6.490__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 (322) hide show
  1. {files_com-1.6.488/files_com.egg-info → files_com-1.6.490}/PKG-INFO +1 -1
  2. files_com-1.6.490/_VERSION +1 -0
  3. {files_com-1.6.488 → files_com-1.6.490/files_com.egg-info}/PKG-INFO +1 -1
  4. {files_com-1.6.488 → files_com-1.6.490}/files_com.egg-info/SOURCES.txt +1 -0
  5. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/__init__.py +1 -1
  6. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/file.py +1 -2
  7. {files_com-1.6.488 → files_com-1.6.490}/pyproject.toml +1 -1
  8. files_com-1.6.490/tests/test_file_upload.py +103 -0
  9. {files_com-1.6.488 → files_com-1.6.490}/tests/test_stream_download.py +18 -0
  10. files_com-1.6.488/_VERSION +0 -1
  11. {files_com-1.6.488 → files_com-1.6.490}/LICENSE +0 -0
  12. {files_com-1.6.488 → files_com-1.6.490}/README.md +0 -0
  13. {files_com-1.6.488 → files_com-1.6.490}/files_com.egg-info/dependency_links.txt +0 -0
  14. {files_com-1.6.488 → files_com-1.6.490}/files_com.egg-info/requires.txt +0 -0
  15. {files_com-1.6.488 → files_com-1.6.490}/files_com.egg-info/top_level.txt +0 -0
  16. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/api.py +0 -0
  17. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/api_client.py +0 -0
  18. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/error.py +0 -0
  19. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/list_obj.py +0 -0
  20. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/__init__.py +0 -0
  21. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/account_line_item.py +0 -0
  22. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/action.py +0 -0
  23. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/action_log.py +0 -0
  24. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/action_notification_export.py +0 -0
  25. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/action_notification_export_result.py +0 -0
  26. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/agent_node.py +0 -0
  27. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/agent_node_connection.py +0 -0
  28. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/agent_node_instance.py +0 -0
  29. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/agent_push_update.py +0 -0
  30. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/ai_assistant_personality.py +0 -0
  31. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/ai_task.py +0 -0
  32. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/api_key.py +0 -0
  33. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/api_request_log.py +0 -0
  34. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/app.py +0 -0
  35. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/as2_incoming_message.py +0 -0
  36. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/as2_outgoing_message.py +0 -0
  37. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/as2_partner.py +0 -0
  38. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/as2_station.py +0 -0
  39. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/auto.py +0 -0
  40. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/automation.py +0 -0
  41. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/automation_authoring_schema.py +0 -0
  42. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/automation_execution_node.py +0 -0
  43. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/automation_log.py +0 -0
  44. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/automation_run.py +0 -0
  45. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/bandwidth_snapshot.py +0 -0
  46. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/behavior.py +0 -0
  47. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/bundle.py +0 -0
  48. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/bundle_action.py +0 -0
  49. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/bundle_download.py +0 -0
  50. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/bundle_notification.py +0 -0
  51. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/bundle_path.py +0 -0
  52. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/bundle_recipient.py +0 -0
  53. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/bundle_registration.py +0 -0
  54. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/chat_message.py +0 -0
  55. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/chat_session.py +0 -0
  56. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/child_site_management_policy.py +0 -0
  57. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/clickwrap.py +0 -0
  58. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/custom_domain.py +0 -0
  59. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/desktop_configuration_profile.py +0 -0
  60. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/direct_connection_info.py +0 -0
  61. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/dns_record.py +0 -0
  62. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/email_incoming_message.py +0 -0
  63. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/email_log.py +0 -0
  64. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/errors.py +0 -0
  65. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/event_channel.py +0 -0
  66. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/event_delivery_attempt.py +0 -0
  67. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/event_record.py +0 -0
  68. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/event_subscription.py +0 -0
  69. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/event_target.py +0 -0
  70. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/exavault_api_request_log.py +0 -0
  71. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/expectation.py +0 -0
  72. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/expectation_evaluation.py +0 -0
  73. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/expectation_incident.py +0 -0
  74. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/external_event.py +0 -0
  75. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/file_action.py +0 -0
  76. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/file_comment.py +0 -0
  77. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/file_comment_reaction.py +0 -0
  78. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/file_migration.py +0 -0
  79. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/file_migration_log.py +0 -0
  80. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/file_upload_part.py +0 -0
  81. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/folder.py +0 -0
  82. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/form_field.py +0 -0
  83. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/form_field_set.py +0 -0
  84. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/ftp_action_log.py +0 -0
  85. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/gpg_key.py +0 -0
  86. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/group.py +0 -0
  87. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/group_user.py +0 -0
  88. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/history.py +0 -0
  89. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/history_export.py +0 -0
  90. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/history_export_result.py +0 -0
  91. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/holiday_calendar.py +0 -0
  92. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/holiday_region.py +0 -0
  93. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/image.py +0 -0
  94. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/inbound_s3_log.py +0 -0
  95. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/inbox_recipient.py +0 -0
  96. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/inbox_registration.py +0 -0
  97. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/inbox_upload.py +0 -0
  98. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/integration_centric_profile.py +0 -0
  99. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/invoice.py +0 -0
  100. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/invoice_line_item.py +0 -0
  101. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/ip_address.py +0 -0
  102. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/key_lifecycle_rule.py +0 -0
  103. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/lock.py +0 -0
  104. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/metadata_category.py +0 -0
  105. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/notification.py +0 -0
  106. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/outbound_connection_log.py +0 -0
  107. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/partner.py +0 -0
  108. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/partner_channel.py +0 -0
  109. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/partner_channel_template.py +0 -0
  110. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/partner_connection.py +0 -0
  111. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/partner_site.py +0 -0
  112. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/partner_site_request.py +0 -0
  113. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/payment.py +0 -0
  114. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/payment_line_item.py +0 -0
  115. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/pending_work_event.py +0 -0
  116. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/permission.py +0 -0
  117. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/preview.py +0 -0
  118. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/public_hosting_request_log.py +0 -0
  119. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/public_ip_address.py +0 -0
  120. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/public_key.py +0 -0
  121. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/remote_bandwidth_snapshot.py +0 -0
  122. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/remote_mount_backend.py +0 -0
  123. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/remote_server.py +0 -0
  124. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/remote_server_configuration_file.py +0 -0
  125. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/remote_server_credential.py +0 -0
  126. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/request.py +0 -0
  127. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/restore.py +0 -0
  128. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/schedule.py +0 -0
  129. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/scheduled_export.py +0 -0
  130. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/scim_log.py +0 -0
  131. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/secret.py +0 -0
  132. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/session.py +0 -0
  133. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/settings_change.py +0 -0
  134. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/sftp_action_log.py +0 -0
  135. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/sftp_host_key.py +0 -0
  136. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/share_group.py +0 -0
  137. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/share_group_member.py +0 -0
  138. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/siem_http_destination.py +0 -0
  139. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/siem_http_destination_event.py +0 -0
  140. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/site.py +0 -0
  141. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/site_subdomain_redirect.py +0 -0
  142. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/snapshot.py +0 -0
  143. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/sso_event.py +0 -0
  144. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/sso_strategy.py +0 -0
  145. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/status.py +0 -0
  146. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/style.py +0 -0
  147. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/sync.py +0 -0
  148. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/sync_log.py +0 -0
  149. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/sync_run.py +0 -0
  150. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/sync_run_live_transfer.py +0 -0
  151. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/usage_by_top_level_dir.py +0 -0
  152. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/usage_daily_snapshot.py +0 -0
  153. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/usage_snapshot.py +0 -0
  154. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/user.py +0 -0
  155. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/user_additional_email_recipient.py +0 -0
  156. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/user_cipher_use.py +0 -0
  157. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/user_lifecycle_rule.py +0 -0
  158. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/user_request.py +0 -0
  159. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/user_security_event.py +0 -0
  160. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/user_sftp_client_use.py +0 -0
  161. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/web_dav_action_log.py +0 -0
  162. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/webhook_test.py +0 -0
  163. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/workspace.py +0 -0
  164. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/models/zip_list_entry.py +0 -0
  165. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/path_comparison.json +0 -0
  166. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/path_util.py +0 -0
  167. {files_com-1.6.488 → files_com-1.6.490}/files_sdk/util.py +0 -0
  168. {files_com-1.6.488 → files_com-1.6.490}/setup.cfg +0 -0
  169. {files_com-1.6.488 → files_com-1.6.490}/tests/test_account_line_item.py +0 -0
  170. {files_com-1.6.488 → files_com-1.6.490}/tests/test_action.py +0 -0
  171. {files_com-1.6.488 → files_com-1.6.490}/tests/test_action_log.py +0 -0
  172. {files_com-1.6.488 → files_com-1.6.490}/tests/test_action_notification_export.py +0 -0
  173. {files_com-1.6.488 → files_com-1.6.490}/tests/test_action_notification_export_result.py +0 -0
  174. {files_com-1.6.488 → files_com-1.6.490}/tests/test_agent_node.py +0 -0
  175. {files_com-1.6.488 → files_com-1.6.490}/tests/test_agent_node_connection.py +0 -0
  176. {files_com-1.6.488 → files_com-1.6.490}/tests/test_agent_node_instance.py +0 -0
  177. {files_com-1.6.488 → files_com-1.6.490}/tests/test_agent_push_update.py +0 -0
  178. {files_com-1.6.488 → files_com-1.6.490}/tests/test_ai_assistant_personality.py +0 -0
  179. {files_com-1.6.488 → files_com-1.6.490}/tests/test_ai_task.py +0 -0
  180. {files_com-1.6.488 → files_com-1.6.490}/tests/test_api_errors.py +0 -0
  181. {files_com-1.6.488 → files_com-1.6.490}/tests/test_api_key.py +0 -0
  182. {files_com-1.6.488 → files_com-1.6.490}/tests/test_api_request_log.py +0 -0
  183. {files_com-1.6.488 → files_com-1.6.490}/tests/test_app.py +0 -0
  184. {files_com-1.6.488 → files_com-1.6.490}/tests/test_as2_incoming_message.py +0 -0
  185. {files_com-1.6.488 → files_com-1.6.490}/tests/test_as2_outgoing_message.py +0 -0
  186. {files_com-1.6.488 → files_com-1.6.490}/tests/test_as2_partner.py +0 -0
  187. {files_com-1.6.488 → files_com-1.6.490}/tests/test_as2_station.py +0 -0
  188. {files_com-1.6.488 → files_com-1.6.490}/tests/test_auto.py +0 -0
  189. {files_com-1.6.488 → files_com-1.6.490}/tests/test_automation.py +0 -0
  190. {files_com-1.6.488 → files_com-1.6.490}/tests/test_automation_authoring_schema.py +0 -0
  191. {files_com-1.6.488 → files_com-1.6.490}/tests/test_automation_execution_node.py +0 -0
  192. {files_com-1.6.488 → files_com-1.6.490}/tests/test_automation_log.py +0 -0
  193. {files_com-1.6.488 → files_com-1.6.490}/tests/test_automation_run.py +0 -0
  194. {files_com-1.6.488 → files_com-1.6.490}/tests/test_bandwidth_snapshot.py +0 -0
  195. {files_com-1.6.488 → files_com-1.6.490}/tests/test_behavior.py +0 -0
  196. {files_com-1.6.488 → files_com-1.6.490}/tests/test_bundle.py +0 -0
  197. {files_com-1.6.488 → files_com-1.6.490}/tests/test_bundle_action.py +0 -0
  198. {files_com-1.6.488 → files_com-1.6.490}/tests/test_bundle_download.py +0 -0
  199. {files_com-1.6.488 → files_com-1.6.490}/tests/test_bundle_notification.py +0 -0
  200. {files_com-1.6.488 → files_com-1.6.490}/tests/test_bundle_path.py +0 -0
  201. {files_com-1.6.488 → files_com-1.6.490}/tests/test_bundle_recipient.py +0 -0
  202. {files_com-1.6.488 → files_com-1.6.490}/tests/test_bundle_registration.py +0 -0
  203. {files_com-1.6.488 → files_com-1.6.490}/tests/test_chat_message.py +0 -0
  204. {files_com-1.6.488 → files_com-1.6.490}/tests/test_chat_session.py +0 -0
  205. {files_com-1.6.488 → files_com-1.6.490}/tests/test_child_site_management_policy.py +0 -0
  206. {files_com-1.6.488 → files_com-1.6.490}/tests/test_clickwrap.py +0 -0
  207. {files_com-1.6.488 → files_com-1.6.490}/tests/test_connection_adapter.py +0 -0
  208. {files_com-1.6.488 → files_com-1.6.490}/tests/test_custom_domain.py +0 -0
  209. {files_com-1.6.488 → files_com-1.6.490}/tests/test_decimal_contract.py +0 -0
  210. {files_com-1.6.488 → files_com-1.6.490}/tests/test_desktop_configuration_profile.py +0 -0
  211. {files_com-1.6.488 → files_com-1.6.490}/tests/test_direct_connection_info.py +0 -0
  212. {files_com-1.6.488 → files_com-1.6.490}/tests/test_dns_record.py +0 -0
  213. {files_com-1.6.488 → files_com-1.6.490}/tests/test_email_incoming_message.py +0 -0
  214. {files_com-1.6.488 → files_com-1.6.490}/tests/test_email_log.py +0 -0
  215. {files_com-1.6.488 → files_com-1.6.490}/tests/test_errors.py +0 -0
  216. {files_com-1.6.488 → files_com-1.6.490}/tests/test_event_channel.py +0 -0
  217. {files_com-1.6.488 → files_com-1.6.490}/tests/test_event_delivery_attempt.py +0 -0
  218. {files_com-1.6.488 → files_com-1.6.490}/tests/test_event_record.py +0 -0
  219. {files_com-1.6.488 → files_com-1.6.490}/tests/test_event_subscription.py +0 -0
  220. {files_com-1.6.488 → files_com-1.6.490}/tests/test_event_target.py +0 -0
  221. {files_com-1.6.488 → files_com-1.6.490}/tests/test_exavault_api_request_log.py +0 -0
  222. {files_com-1.6.488 → files_com-1.6.490}/tests/test_expectation.py +0 -0
  223. {files_com-1.6.488 → files_com-1.6.490}/tests/test_expectation_evaluation.py +0 -0
  224. {files_com-1.6.488 → files_com-1.6.490}/tests/test_expectation_incident.py +0 -0
  225. {files_com-1.6.488 → files_com-1.6.490}/tests/test_external_event.py +0 -0
  226. {files_com-1.6.488 → files_com-1.6.490}/tests/test_file.py +0 -0
  227. {files_com-1.6.488 → files_com-1.6.490}/tests/test_file_action.py +0 -0
  228. {files_com-1.6.488 → files_com-1.6.490}/tests/test_file_comment.py +0 -0
  229. {files_com-1.6.488 → files_com-1.6.490}/tests/test_file_comment_reaction.py +0 -0
  230. {files_com-1.6.488 → files_com-1.6.490}/tests/test_file_migration.py +0 -0
  231. {files_com-1.6.488 → files_com-1.6.490}/tests/test_file_migration_log.py +0 -0
  232. {files_com-1.6.488 → files_com-1.6.490}/tests/test_file_underscore_destinations.py +0 -0
  233. {files_com-1.6.488 → files_com-1.6.490}/tests/test_file_upload_part.py +0 -0
  234. {files_com-1.6.488 → files_com-1.6.490}/tests/test_folder.py +0 -0
  235. {files_com-1.6.488 → files_com-1.6.490}/tests/test_form_field.py +0 -0
  236. {files_com-1.6.488 → files_com-1.6.490}/tests/test_form_field_set.py +0 -0
  237. {files_com-1.6.488 → files_com-1.6.490}/tests/test_ftp_action_log.py +0 -0
  238. {files_com-1.6.488 → files_com-1.6.490}/tests/test_gpg_key.py +0 -0
  239. {files_com-1.6.488 → files_com-1.6.490}/tests/test_group.py +0 -0
  240. {files_com-1.6.488 → files_com-1.6.490}/tests/test_group_user.py +0 -0
  241. {files_com-1.6.488 → files_com-1.6.490}/tests/test_history.py +0 -0
  242. {files_com-1.6.488 → files_com-1.6.490}/tests/test_history_export.py +0 -0
  243. {files_com-1.6.488 → files_com-1.6.490}/tests/test_history_export_result.py +0 -0
  244. {files_com-1.6.488 → files_com-1.6.490}/tests/test_holiday_calendar.py +0 -0
  245. {files_com-1.6.488 → files_com-1.6.490}/tests/test_holiday_region.py +0 -0
  246. {files_com-1.6.488 → files_com-1.6.490}/tests/test_image.py +0 -0
  247. {files_com-1.6.488 → files_com-1.6.490}/tests/test_inbound_s3_log.py +0 -0
  248. {files_com-1.6.488 → files_com-1.6.490}/tests/test_inbox_recipient.py +0 -0
  249. {files_com-1.6.488 → files_com-1.6.490}/tests/test_inbox_registration.py +0 -0
  250. {files_com-1.6.488 → files_com-1.6.490}/tests/test_inbox_upload.py +0 -0
  251. {files_com-1.6.488 → files_com-1.6.490}/tests/test_integration_centric_profile.py +0 -0
  252. {files_com-1.6.488 → files_com-1.6.490}/tests/test_invoice.py +0 -0
  253. {files_com-1.6.488 → files_com-1.6.490}/tests/test_invoice_line_item.py +0 -0
  254. {files_com-1.6.488 → files_com-1.6.490}/tests/test_ip_address.py +0 -0
  255. {files_com-1.6.488 → files_com-1.6.490}/tests/test_key_lifecycle_rule.py +0 -0
  256. {files_com-1.6.488 → files_com-1.6.490}/tests/test_lock.py +0 -0
  257. {files_com-1.6.488 → files_com-1.6.490}/tests/test_metadata_category.py +0 -0
  258. {files_com-1.6.488 → files_com-1.6.490}/tests/test_notification.py +0 -0
  259. {files_com-1.6.488 → files_com-1.6.490}/tests/test_outbound_connection_log.py +0 -0
  260. {files_com-1.6.488 → files_com-1.6.490}/tests/test_partner.py +0 -0
  261. {files_com-1.6.488 → files_com-1.6.490}/tests/test_partner_channel.py +0 -0
  262. {files_com-1.6.488 → files_com-1.6.490}/tests/test_partner_channel_template.py +0 -0
  263. {files_com-1.6.488 → files_com-1.6.490}/tests/test_partner_connection.py +0 -0
  264. {files_com-1.6.488 → files_com-1.6.490}/tests/test_partner_site.py +0 -0
  265. {files_com-1.6.488 → files_com-1.6.490}/tests/test_partner_site_request.py +0 -0
  266. {files_com-1.6.488 → files_com-1.6.490}/tests/test_path_parameter_encoding.py +0 -0
  267. {files_com-1.6.488 → files_com-1.6.490}/tests/test_path_util.py +0 -0
  268. {files_com-1.6.488 → files_com-1.6.490}/tests/test_payment.py +0 -0
  269. {files_com-1.6.488 → files_com-1.6.490}/tests/test_payment_line_item.py +0 -0
  270. {files_com-1.6.488 → files_com-1.6.490}/tests/test_pending_work_event.py +0 -0
  271. {files_com-1.6.488 → files_com-1.6.490}/tests/test_permission.py +0 -0
  272. {files_com-1.6.488 → files_com-1.6.490}/tests/test_preview.py +0 -0
  273. {files_com-1.6.488 → files_com-1.6.490}/tests/test_public_hosting_request_log.py +0 -0
  274. {files_com-1.6.488 → files_com-1.6.490}/tests/test_public_ip_address.py +0 -0
  275. {files_com-1.6.488 → files_com-1.6.490}/tests/test_public_key.py +0 -0
  276. {files_com-1.6.488 → files_com-1.6.490}/tests/test_redirect_auth.py +0 -0
  277. {files_com-1.6.488 → files_com-1.6.490}/tests/test_remote_bandwidth_snapshot.py +0 -0
  278. {files_com-1.6.488 → files_com-1.6.490}/tests/test_remote_mount_backend.py +0 -0
  279. {files_com-1.6.488 → files_com-1.6.490}/tests/test_remote_server.py +0 -0
  280. {files_com-1.6.488 → files_com-1.6.490}/tests/test_remote_server_configuration_file.py +0 -0
  281. {files_com-1.6.488 → files_com-1.6.490}/tests/test_remote_server_credential.py +0 -0
  282. {files_com-1.6.488 → files_com-1.6.490}/tests/test_request.py +0 -0
  283. {files_com-1.6.488 → files_com-1.6.490}/tests/test_restore.py +0 -0
  284. {files_com-1.6.488 → files_com-1.6.490}/tests/test_schedule.py +0 -0
  285. {files_com-1.6.488 → files_com-1.6.490}/tests/test_scheduled_export.py +0 -0
  286. {files_com-1.6.488 → files_com-1.6.490}/tests/test_scim_log.py +0 -0
  287. {files_com-1.6.488 → files_com-1.6.490}/tests/test_secret.py +0 -0
  288. {files_com-1.6.488 → files_com-1.6.490}/tests/test_session.py +0 -0
  289. {files_com-1.6.488 → files_com-1.6.490}/tests/test_settings_change.py +0 -0
  290. {files_com-1.6.488 → files_com-1.6.490}/tests/test_sftp_action_log.py +0 -0
  291. {files_com-1.6.488 → files_com-1.6.490}/tests/test_sftp_host_key.py +0 -0
  292. {files_com-1.6.488 → files_com-1.6.490}/tests/test_share_group.py +0 -0
  293. {files_com-1.6.488 → files_com-1.6.490}/tests/test_share_group_member.py +0 -0
  294. {files_com-1.6.488 → files_com-1.6.490}/tests/test_siem_http_destination.py +0 -0
  295. {files_com-1.6.488 → files_com-1.6.490}/tests/test_siem_http_destination_event.py +0 -0
  296. {files_com-1.6.488 → files_com-1.6.490}/tests/test_site.py +0 -0
  297. {files_com-1.6.488 → files_com-1.6.490}/tests/test_site_subdomain_redirect.py +0 -0
  298. {files_com-1.6.488 → files_com-1.6.490}/tests/test_snapshot.py +0 -0
  299. {files_com-1.6.488 → files_com-1.6.490}/tests/test_sso_event.py +0 -0
  300. {files_com-1.6.488 → files_com-1.6.490}/tests/test_sso_strategy.py +0 -0
  301. {files_com-1.6.488 → files_com-1.6.490}/tests/test_status.py +0 -0
  302. {files_com-1.6.488 → files_com-1.6.490}/tests/test_style.py +0 -0
  303. {files_com-1.6.488 → files_com-1.6.490}/tests/test_sync.py +0 -0
  304. {files_com-1.6.488 → files_com-1.6.490}/tests/test_sync_log.py +0 -0
  305. {files_com-1.6.488 → files_com-1.6.490}/tests/test_sync_run.py +0 -0
  306. {files_com-1.6.488 → files_com-1.6.490}/tests/test_sync_run_live_transfer.py +0 -0
  307. {files_com-1.6.488 → files_com-1.6.490}/tests/test_transfer_privacy.py +0 -0
  308. {files_com-1.6.488 → files_com-1.6.490}/tests/test_usage_by_top_level_dir.py +0 -0
  309. {files_com-1.6.488 → files_com-1.6.490}/tests/test_usage_daily_snapshot.py +0 -0
  310. {files_com-1.6.488 → files_com-1.6.490}/tests/test_usage_snapshot.py +0 -0
  311. {files_com-1.6.488 → files_com-1.6.490}/tests/test_user.py +0 -0
  312. {files_com-1.6.488 → files_com-1.6.490}/tests/test_user_additional_email_recipient.py +0 -0
  313. {files_com-1.6.488 → files_com-1.6.490}/tests/test_user_cipher_use.py +0 -0
  314. {files_com-1.6.488 → files_com-1.6.490}/tests/test_user_lifecycle_rule.py +0 -0
  315. {files_com-1.6.488 → files_com-1.6.490}/tests/test_user_request.py +0 -0
  316. {files_com-1.6.488 → files_com-1.6.490}/tests/test_user_security_event.py +0 -0
  317. {files_com-1.6.488 → files_com-1.6.490}/tests/test_user_sftp_client_use.py +0 -0
  318. {files_com-1.6.488 → files_com-1.6.490}/tests/test_web_dav_action_log.py +0 -0
  319. {files_com-1.6.488 → files_com-1.6.490}/tests/test_webhook_test.py +0 -0
  320. {files_com-1.6.488 → files_com-1.6.490}/tests/test_workspace.py +0 -0
  321. {files_com-1.6.488 → files_com-1.6.490}/tests/test_workspace_id.py +0 -0
  322. {files_com-1.6.488 → files_com-1.6.490}/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.488
3
+ Version: 1.6.490
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.490
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: files_com
3
- Version: 1.6.488
3
+ Version: 1.6.490
4
4
  Summary: Python bindings for the Files.com API
5
5
  License: MIT
6
6
  Requires-Python: >=3.5
@@ -226,6 +226,7 @@ tests/test_file_comment_reaction.py
226
226
  tests/test_file_migration.py
227
227
  tests/test_file_migration_log.py
228
228
  tests/test_file_underscore_destinations.py
229
+ tests/test_file_upload.py
229
230
  tests/test_file_upload_part.py
230
231
  tests/test_folder.py
231
232
  tests/test_form_field.py
@@ -320,7 +320,7 @@ source_ip = None
320
320
  workspace_id = None
321
321
  base_url = "https://app.files.com"
322
322
  base_path = "api/rest/v1"
323
- version = "1.6.488"
323
+ version = "1.6.490"
324
324
 
325
325
  __version__ = version
326
326
 
@@ -132,8 +132,7 @@ class File:
132
132
  self.mode = "r"
133
133
  self.upload = None
134
134
  self.etags = None
135
- self.io_obj = io.StringIO()
136
- self.io_obj.close
135
+ self.io_obj.close()
137
136
  self.closed = True
138
137
 
139
138
  def fileno(self):
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "files_com"
7
- version = "1.6.488"
7
+ version = "1.6.490"
8
8
  description = "Python bindings for the Files.com API"
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
@@ -0,0 +1,103 @@
1
+ import json
2
+ import threading
3
+ import unittest
4
+ from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
5
+ from unittest.mock import patch
6
+
7
+ import files_sdk
8
+ from files_sdk.error import APIError
9
+
10
+ PAYLOAD = b"\x00\xff\r\n" * 2048
11
+
12
+
13
+ class UploadHandler(BaseHTTPRequestHandler):
14
+ def do_PUT(self):
15
+ self.server.uploads.append(self.rfile.read(int(self.headers["Content-Length"])))
16
+ self.send_response(200)
17
+ self.send_header("ETag", '"part-etag"')
18
+ self.send_header("Content-Length", "0")
19
+ self.end_headers()
20
+
21
+ def do_POST(self):
22
+ body = json.loads(self.rfile.read(int(self.headers["Content-Length"])))
23
+ if "/file_actions/begin_upload/" in self.path:
24
+ self.respond(200, [{
25
+ "upload_uri": "http://127.0.0.1:{}/upload".format(self.server.server_port),
26
+ "http_method": "PUT",
27
+ "partsize": 1024 * 1024,
28
+ "ref": "upload-ref",
29
+ "part_number": 1,
30
+ }])
31
+ elif self.server.fail_finalization:
32
+ self.respond(503, {"error": "Finalization failed", "type": "service-unavailable"})
33
+ else:
34
+ self.server.finalizations.append((body, self.headers["X-FilesAPI-Key"]))
35
+ self.respond(200, {"path": body["path"], "size": body["size"], "type": "file"})
36
+
37
+ def respond(self, status, data):
38
+ encoded = json.dumps(data).encode()
39
+ self.send_response(status)
40
+ self.send_header("Content-Type", "application/json")
41
+ self.send_header("Content-Length", str(len(encoded)))
42
+ self.end_headers()
43
+ self.wfile.write(encoded)
44
+
45
+ def log_message(self, *args):
46
+ pass
47
+
48
+
49
+ class TestFileUpload(unittest.TestCase):
50
+ def setUp(self):
51
+ self.server = ThreadingHTTPServer(("127.0.0.1", 0), UploadHandler)
52
+ self.server.uploads = []
53
+ self.server.finalizations = []
54
+ self.server.fail_finalization = False
55
+ self.thread = threading.Thread(target=self.server.serve_forever)
56
+ self.thread.start()
57
+ self.addCleanup(self.thread.join)
58
+ self.addCleanup(self.server.server_close)
59
+ self.addCleanup(self.server.shutdown)
60
+ base_url = "http://127.0.0.1:{}".format(self.server.server_port)
61
+ for name, value in {"base_url": base_url, "max_network_retries": 1}.items():
62
+ patcher = patch.object(files_sdk, name, value)
63
+ patcher.start()
64
+ self.addCleanup(patcher.stop)
65
+
66
+ def open_with_payload(self):
67
+ f = files_sdk.file.open("remote.bin", "wb", {"api_key": "optionsKey"})
68
+ f.write(PAYLOAD)
69
+ return f
70
+
71
+ def test_close_finalizes_once_and_releases_the_write_buffer(self):
72
+ f = self.open_with_payload()
73
+ write_buffer = f.io_obj
74
+
75
+ f.close()
76
+ f.close()
77
+
78
+ self.assertEqual(self.server.uploads, [PAYLOAD])
79
+ self.assertEqual(len(self.server.finalizations), 1)
80
+ finalization, api_key = self.server.finalizations[0]
81
+ self.assertEqual(finalization["action"], "end")
82
+ self.assertEqual(finalization["ref"], "upload-ref")
83
+ self.assertEqual(finalization["etags"], [{"etag": "part-etag", "part": 1}])
84
+ self.assertEqual(finalization["size"], len(PAYLOAD))
85
+ self.assertEqual(api_key, "optionsKey")
86
+ self.assertEqual(f.size, len(PAYLOAD))
87
+ self.assertTrue(f.closed)
88
+ self.assertTrue(write_buffer.closed)
89
+ self.assertTrue(f.io_obj.closed)
90
+
91
+ def test_failed_finalization_leaves_the_file_open_with_its_data(self):
92
+ self.server.fail_finalization = True
93
+ f = self.open_with_payload()
94
+
95
+ with self.assertRaises(APIError):
96
+ f.close()
97
+
98
+ self.assertFalse(f.closed)
99
+ self.assertEqual(f.io_obj.getvalue(), PAYLOAD)
100
+
101
+
102
+ if __name__ == "__main__":
103
+ unittest.main()
@@ -68,6 +68,24 @@ class TestStreamDownload(unittest.TestCase):
68
68
  ApiClient().stream_download(self.url + "/incomplete-body", output)
69
69
  self.assertEqual(output.getvalue(), b"\x00\xff" * 4096)
70
70
 
71
+ def test_file_close_releases_its_read_buffer(self):
72
+ with self.subTest("explicit close after a complete read"):
73
+ f = files_sdk.file.open("remote.bin", "rb")
74
+ f.download_uri = self.url + "/stream"
75
+ self.assertEqual(f.read(), b"\x00\xff" * 4096 * 3)
76
+ f.close()
77
+ self.assertTrue(f.closed)
78
+ self.assertTrue(f.io_obj.closed)
79
+
80
+ with self.subTest("context exit after an interrupted read"):
81
+ f = files_sdk.file.open("remote.bin", "rb")
82
+ f.download_uri = self.url + "/incomplete-body"
83
+ with self.assertRaises(files_sdk.error.APIConnectionError):
84
+ with f:
85
+ f.read()
86
+ self.assertTrue(f.closed)
87
+ self.assertTrue(f.io_obj.closed)
88
+
71
89
 
72
90
  if __name__ == "__main__":
73
91
  unittest.main()
@@ -1 +0,0 @@
1
- 1.6.488
File without changes
File without changes
File without changes