Files.com 2.0.4__tar.gz → 2.0.6__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 (182) hide show
  1. {files_com-2.0.4/files_com.egg-info → files_com-2.0.6}/PKG-INFO +9 -12
  2. {files_com-2.0.4 → files_com-2.0.6}/README.md +7 -10
  3. {files_com-2.0.4 → files_com-2.0.6/files_com.egg-info}/PKG-INFO +9 -12
  4. {files_com-2.0.4 → files_com-2.0.6}/files_com.egg-info/requires.txt +1 -1
  5. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/__init__.py +1 -1
  6. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/localfs.py +67 -6
  7. {files_com-2.0.4 → files_com-2.0.6}/pyproject.toml +2 -2
  8. {files_com-2.0.4 → files_com-2.0.6}/LICENSE +0 -0
  9. {files_com-2.0.4 → files_com-2.0.6}/MANIFEST.in +0 -0
  10. {files_com-2.0.4 → files_com-2.0.6}/files_com.egg-info/SOURCES.txt +0 -0
  11. {files_com-2.0.4 → files_com-2.0.6}/files_com.egg-info/dependency_links.txt +0 -0
  12. {files_com-2.0.4 → files_com-2.0.6}/files_com.egg-info/top_level.txt +0 -0
  13. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/access.py +0 -0
  14. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/adaptive.py +0 -0
  15. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/api.py +0 -0
  16. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/api_client.py +0 -0
  17. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/attachment.py +0 -0
  18. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/checkpoint.py +0 -0
  19. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/client.py +0 -0
  20. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/context.py +0 -0
  21. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/download.py +0 -0
  22. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/download_status.py +0 -0
  23. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/error.py +0 -0
  24. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/jobs.py +0 -0
  25. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/lifetime.py +0 -0
  26. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/list_obj.py +0 -0
  27. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/migration.py +0 -0
  28. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/__init__.py +0 -0
  29. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/account_line_item.py +0 -0
  30. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/action.py +0 -0
  31. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/action_log.py +0 -0
  32. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/action_notification_export.py +0 -0
  33. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/action_notification_export_result.py +0 -0
  34. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/agent_node.py +0 -0
  35. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/agent_node_connection.py +0 -0
  36. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/agent_node_instance.py +0 -0
  37. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/agent_push_update.py +0 -0
  38. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/ai_assistant_personality.py +0 -0
  39. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/ai_task.py +0 -0
  40. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/api_key.py +0 -0
  41. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/api_request_log.py +0 -0
  42. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/app.py +0 -0
  43. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/as2_incoming_message.py +0 -0
  44. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/as2_outgoing_message.py +0 -0
  45. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/as2_partner.py +0 -0
  46. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/as2_station.py +0 -0
  47. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/auto.py +0 -0
  48. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/automation.py +0 -0
  49. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/automation_authoring_schema.py +0 -0
  50. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/automation_execution_node.py +0 -0
  51. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/automation_log.py +0 -0
  52. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/automation_run.py +0 -0
  53. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/bandwidth_snapshot.py +0 -0
  54. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/behavior.py +0 -0
  55. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/bundle.py +0 -0
  56. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/bundle_action.py +0 -0
  57. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/bundle_download.py +0 -0
  58. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/bundle_notification.py +0 -0
  59. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/bundle_path.py +0 -0
  60. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/bundle_recipient.py +0 -0
  61. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/bundle_registration.py +0 -0
  62. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/chat_message.py +0 -0
  63. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/chat_session.py +0 -0
  64. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/child_site_management_policy.py +0 -0
  65. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/clickwrap.py +0 -0
  66. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/custom_domain.py +0 -0
  67. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/desktop_configuration_profile.py +0 -0
  68. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/direct_connection_info.py +0 -0
  69. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/dns_record.py +0 -0
  70. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/email_incoming_message.py +0 -0
  71. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/email_log.py +0 -0
  72. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/errors.py +0 -0
  73. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/event_channel.py +0 -0
  74. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/event_delivery_attempt.py +0 -0
  75. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/event_record.py +0 -0
  76. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/event_subscription.py +0 -0
  77. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/event_target.py +0 -0
  78. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/exavault_api_request_log.py +0 -0
  79. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/expectation.py +0 -0
  80. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/expectation_evaluation.py +0 -0
  81. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/expectation_incident.py +0 -0
  82. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/external_event.py +0 -0
  83. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/file.py +0 -0
  84. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/file_action.py +0 -0
  85. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/file_comment.py +0 -0
  86. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/file_comment_reaction.py +0 -0
  87. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/file_migration.py +0 -0
  88. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/file_migration_log.py +0 -0
  89. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/file_upload_part.py +0 -0
  90. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/folder.py +0 -0
  91. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/form_field.py +0 -0
  92. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/form_field_set.py +0 -0
  93. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/ftp_action_log.py +0 -0
  94. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/gpg_key.py +0 -0
  95. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/group.py +0 -0
  96. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/group_user.py +0 -0
  97. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/history.py +0 -0
  98. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/history_export.py +0 -0
  99. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/history_export_result.py +0 -0
  100. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/holiday_calendar.py +0 -0
  101. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/holiday_region.py +0 -0
  102. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/image.py +0 -0
  103. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/inbound_s3_log.py +0 -0
  104. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/inbox_recipient.py +0 -0
  105. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/inbox_registration.py +0 -0
  106. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/inbox_upload.py +0 -0
  107. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/integration_centric_profile.py +0 -0
  108. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/invoice.py +0 -0
  109. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/invoice_line_item.py +0 -0
  110. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/ip_address.py +0 -0
  111. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/key_lifecycle_rule.py +0 -0
  112. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/lock.py +0 -0
  113. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/metadata_category.py +0 -0
  114. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/notification.py +0 -0
  115. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/outbound_connection_log.py +0 -0
  116. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/partner.py +0 -0
  117. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/partner_channel.py +0 -0
  118. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/partner_channel_template.py +0 -0
  119. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/partner_connection.py +0 -0
  120. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/partner_site.py +0 -0
  121. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/partner_site_request.py +0 -0
  122. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/payment.py +0 -0
  123. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/payment_line_item.py +0 -0
  124. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/pending_work_event.py +0 -0
  125. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/permission.py +0 -0
  126. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/preview.py +0 -0
  127. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/public_hosting_request_log.py +0 -0
  128. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/public_ip_address.py +0 -0
  129. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/public_key.py +0 -0
  130. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/remote_bandwidth_snapshot.py +0 -0
  131. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/remote_mount_backend.py +0 -0
  132. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/remote_server.py +0 -0
  133. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/remote_server_configuration_file.py +0 -0
  134. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/remote_server_credential.py +0 -0
  135. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/request.py +0 -0
  136. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/restore.py +0 -0
  137. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/schedule.py +0 -0
  138. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/scheduled_export.py +0 -0
  139. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/scim_log.py +0 -0
  140. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/secret.py +0 -0
  141. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/session.py +0 -0
  142. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/settings_change.py +0 -0
  143. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/sftp_action_log.py +0 -0
  144. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/sftp_host_key.py +0 -0
  145. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/share_group.py +0 -0
  146. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/share_group_member.py +0 -0
  147. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/siem_http_destination.py +0 -0
  148. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/siem_http_destination_event.py +0 -0
  149. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/site.py +0 -0
  150. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/site_subdomain_redirect.py +0 -0
  151. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/snapshot.py +0 -0
  152. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/sso_event.py +0 -0
  153. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/sso_strategy.py +0 -0
  154. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/status.py +0 -0
  155. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/style.py +0 -0
  156. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/sync.py +0 -0
  157. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/sync_log.py +0 -0
  158. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/sync_run.py +0 -0
  159. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/sync_run_live_transfer.py +0 -0
  160. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/usage_by_top_level_dir.py +0 -0
  161. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/usage_daily_snapshot.py +0 -0
  162. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/usage_snapshot.py +0 -0
  163. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/user.py +0 -0
  164. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/user_additional_email_recipient.py +0 -0
  165. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/user_cipher_use.py +0 -0
  166. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/user_lifecycle_rule.py +0 -0
  167. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/user_request.py +0 -0
  168. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/user_security_event.py +0 -0
  169. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/user_sftp_client_use.py +0 -0
  170. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/web_dav_action_log.py +0 -0
  171. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/webhook_test.py +0 -0
  172. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/workspace.py +0 -0
  173. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/zip_list_entry.py +0 -0
  174. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/path_comparison.json +0 -0
  175. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/path_util.py +0 -0
  176. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/py.typed +0 -0
  177. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/region.py +0 -0
  178. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/transport.py +0 -0
  179. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/upload.py +0 -0
  180. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/util.py +0 -0
  181. {files_com-2.0.4 → files_com-2.0.6}/files_sdk/writing.py +0 -0
  182. {files_com-2.0.4 → files_com-2.0.6}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: files_com
3
- Version: 2.0.4
3
+ Version: 2.0.6
4
4
  Summary: Python bindings for the Files.com API
5
5
  License-Expression: MIT
6
6
  Project-URL: Documentation, https://developers.files.com/python/
@@ -18,7 +18,7 @@ Requires-Dist: requests<3,>=2.34.2
18
18
  Requires-Dist: requests-toolbelt<2,>=1.0.0
19
19
  Requires-Dist: urllib3<3,>=2.8.0
20
20
  Requires-Dist: idna<4,>=3.15
21
- Requires-Dist: certifi>=2026.7.22
21
+ Requires-Dist: certifi>=2026.10.19
22
22
  Requires-Dist: charset-normalizer<4,>=3.5.1
23
23
  Dynamic: license-file
24
24
 
@@ -37,6 +37,8 @@ is a short, runnable tour of the SDK.
37
37
 
38
38
  ## Introduction
39
39
 
40
+ For integration choices and credential scope, start with [SDKs & APIs](https://www.files.com/docs/clients-and-protocols/sdks-and-apis). [Scripts, APIs & Application Workflows](https://www.files.com/docs/automated-workflows/scripts-apis-and-application-workflows) explains how to coordinate Files.com operations with the work your application owns.
41
+
40
42
  The Files.com Python SDK manages files, folders, users, permissions and other API resources. Start by installing the package, then choose [Authentication](/python/overview/authentication) and a [Client](/python/overview/clients). For file transfers, begin with [Uploads](/python/overview/uploads) or [Downloads](/python/overview/downloads).
41
43
 
42
44
  The SDK communicates over HTTPS on port 443. Your environment needs outbound access to Files.com and the storage hosts used for transfers.
@@ -67,7 +69,7 @@ Explore the [files-sdk-python](https://github.com/Files-com/files-sdk-python) co
67
69
 
68
70
  The Files.com Support team provides official support for all of our official Files.com integration tools.
69
71
 
70
- To initiate a support conversation, you can send an [Authenticated Support Request](https://www.files.com/docs/overview/requesting-support) or simply send an E-Mail to support@files.com.
72
+ To initiate a support conversation, you can send an [Authenticated Support Request](https://www.files.com/docs/support-and-services/requesting-support) or simply send an E-Mail to support@files.com.
71
73
 
72
74
  ## Authentication
73
75
 
@@ -79,12 +81,10 @@ Authenticating with an API key is the recommended authentication method for most
79
81
  the method used in the examples on this site.
80
82
 
81
83
  To use an API Key, first generate an API key from the [web
82
- interface](https://www.files.com/docs/sdk-and-apis/api-keys) or [via the API or an
84
+ interface](https://www.files.com/docs/security/authentication-and-credentials/api-keys) or [via the API or an
83
85
  SDK](https://developers.files.com/python/resources/developers/api-keys).
84
86
 
85
- Note that when using a user-specific API key, if the user is an administrator, you will have full
86
- access to the entire API. If the user is not an administrator, you will only be able to access files
87
- that user can access, and no access will be granted to site administration functions in the API.
87
+ A user key follows its account's permissions, narrowed by the key's permission scope, Workspace, and any path restriction on file operations. It can perform administrative operations only when both the account and key permit them. [API Keys](https://www.files.com/docs/security/authentication-and-credentials/api-keys) explains credential scope and lifecycle; [Workspaces](https://developers.files.com/python/overview/workspaces) explains request context and delegated administration.
88
88
 
89
89
  ```python title="Example Request"
90
90
  import files_sdk
@@ -104,10 +104,7 @@ Don't forget to replace the placeholder, `YOUR_API_KEY`, with your actual API ke
104
104
 
105
105
  ### Authenticate with a Session
106
106
 
107
- You can also authenticate by creating a user session using the username and
108
- password of an active user. If the user is an administrator, the session will have full access to
109
- all capabilities of Files.com. Sessions created from regular user accounts will only be able to access files that
110
- user can access, and no access will be granted to site administration functions.
107
+ Create a session with the username and password of an active user. The session uses that user's permissions, including any delegated administrative access. [Workspaces](https://developers.files.com/python/overview/workspaces) describes account scope and administrative access.
111
108
 
112
109
  Sessions use the exact same session timeout settings as web interface sessions. When a
113
110
  session times out, simply create a new session and resume where you left off. This process is not
@@ -592,7 +589,7 @@ This behavior applies across:
592
589
  - Folder and file lookup operations
593
590
  - Automations and workflows
594
591
 
595
- See also: [Case Sensitivity Documentation](https://www.files.com/docs/files-and-folders/case-sensitivity/)
592
+ See also: [Case Sensitivity Documentation](https://www.files.com/docs/files-and-folders/file-system-semantics/case-sensitivity)
596
593
 
597
594
  The `path_util.is_same` function in the Files.com SDK is designed to help you determine if two paths on
598
595
  your native file system would be considered the same on Files.com. This is particularly important
@@ -13,6 +13,8 @@ is a short, runnable tour of the SDK.
13
13
 
14
14
  ## Introduction
15
15
 
16
+ For integration choices and credential scope, start with [SDKs & APIs](https://www.files.com/docs/clients-and-protocols/sdks-and-apis). [Scripts, APIs & Application Workflows](https://www.files.com/docs/automated-workflows/scripts-apis-and-application-workflows) explains how to coordinate Files.com operations with the work your application owns.
17
+
16
18
  The Files.com Python SDK manages files, folders, users, permissions and other API resources. Start by installing the package, then choose [Authentication](/python/overview/authentication) and a [Client](/python/overview/clients). For file transfers, begin with [Uploads](/python/overview/uploads) or [Downloads](/python/overview/downloads).
17
19
 
18
20
  The SDK communicates over HTTPS on port 443. Your environment needs outbound access to Files.com and the storage hosts used for transfers.
@@ -43,7 +45,7 @@ Explore the [files-sdk-python](https://github.com/Files-com/files-sdk-python) co
43
45
 
44
46
  The Files.com Support team provides official support for all of our official Files.com integration tools.
45
47
 
46
- To initiate a support conversation, you can send an [Authenticated Support Request](https://www.files.com/docs/overview/requesting-support) or simply send an E-Mail to support@files.com.
48
+ To initiate a support conversation, you can send an [Authenticated Support Request](https://www.files.com/docs/support-and-services/requesting-support) or simply send an E-Mail to support@files.com.
47
49
 
48
50
  ## Authentication
49
51
 
@@ -55,12 +57,10 @@ Authenticating with an API key is the recommended authentication method for most
55
57
  the method used in the examples on this site.
56
58
 
57
59
  To use an API Key, first generate an API key from the [web
58
- interface](https://www.files.com/docs/sdk-and-apis/api-keys) or [via the API or an
60
+ interface](https://www.files.com/docs/security/authentication-and-credentials/api-keys) or [via the API or an
59
61
  SDK](https://developers.files.com/python/resources/developers/api-keys).
60
62
 
61
- Note that when using a user-specific API key, if the user is an administrator, you will have full
62
- access to the entire API. If the user is not an administrator, you will only be able to access files
63
- that user can access, and no access will be granted to site administration functions in the API.
63
+ A user key follows its account's permissions, narrowed by the key's permission scope, Workspace, and any path restriction on file operations. It can perform administrative operations only when both the account and key permit them. [API Keys](https://www.files.com/docs/security/authentication-and-credentials/api-keys) explains credential scope and lifecycle; [Workspaces](https://developers.files.com/python/overview/workspaces) explains request context and delegated administration.
64
64
 
65
65
  ```python title="Example Request"
66
66
  import files_sdk
@@ -80,10 +80,7 @@ Don't forget to replace the placeholder, `YOUR_API_KEY`, with your actual API ke
80
80
 
81
81
  ### Authenticate with a Session
82
82
 
83
- You can also authenticate by creating a user session using the username and
84
- password of an active user. If the user is an administrator, the session will have full access to
85
- all capabilities of Files.com. Sessions created from regular user accounts will only be able to access files that
86
- user can access, and no access will be granted to site administration functions.
83
+ Create a session with the username and password of an active user. The session uses that user's permissions, including any delegated administrative access. [Workspaces](https://developers.files.com/python/overview/workspaces) describes account scope and administrative access.
87
84
 
88
85
  Sessions use the exact same session timeout settings as web interface sessions. When a
89
86
  session times out, simply create a new session and resume where you left off. This process is not
@@ -568,7 +565,7 @@ This behavior applies across:
568
565
  - Folder and file lookup operations
569
566
  - Automations and workflows
570
567
 
571
- See also: [Case Sensitivity Documentation](https://www.files.com/docs/files-and-folders/case-sensitivity/)
568
+ See also: [Case Sensitivity Documentation](https://www.files.com/docs/files-and-folders/file-system-semantics/case-sensitivity)
572
569
 
573
570
  The `path_util.is_same` function in the Files.com SDK is designed to help you determine if two paths on
574
571
  your native file system would be considered the same on Files.com. This is particularly important
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: files_com
3
- Version: 2.0.4
3
+ Version: 2.0.6
4
4
  Summary: Python bindings for the Files.com API
5
5
  License-Expression: MIT
6
6
  Project-URL: Documentation, https://developers.files.com/python/
@@ -18,7 +18,7 @@ Requires-Dist: requests<3,>=2.34.2
18
18
  Requires-Dist: requests-toolbelt<2,>=1.0.0
19
19
  Requires-Dist: urllib3<3,>=2.8.0
20
20
  Requires-Dist: idna<4,>=3.15
21
- Requires-Dist: certifi>=2026.7.22
21
+ Requires-Dist: certifi>=2026.10.19
22
22
  Requires-Dist: charset-normalizer<4,>=3.5.1
23
23
  Dynamic: license-file
24
24
 
@@ -37,6 +37,8 @@ is a short, runnable tour of the SDK.
37
37
 
38
38
  ## Introduction
39
39
 
40
+ For integration choices and credential scope, start with [SDKs & APIs](https://www.files.com/docs/clients-and-protocols/sdks-and-apis). [Scripts, APIs & Application Workflows](https://www.files.com/docs/automated-workflows/scripts-apis-and-application-workflows) explains how to coordinate Files.com operations with the work your application owns.
41
+
40
42
  The Files.com Python SDK manages files, folders, users, permissions and other API resources. Start by installing the package, then choose [Authentication](/python/overview/authentication) and a [Client](/python/overview/clients). For file transfers, begin with [Uploads](/python/overview/uploads) or [Downloads](/python/overview/downloads).
41
43
 
42
44
  The SDK communicates over HTTPS on port 443. Your environment needs outbound access to Files.com and the storage hosts used for transfers.
@@ -67,7 +69,7 @@ Explore the [files-sdk-python](https://github.com/Files-com/files-sdk-python) co
67
69
 
68
70
  The Files.com Support team provides official support for all of our official Files.com integration tools.
69
71
 
70
- To initiate a support conversation, you can send an [Authenticated Support Request](https://www.files.com/docs/overview/requesting-support) or simply send an E-Mail to support@files.com.
72
+ To initiate a support conversation, you can send an [Authenticated Support Request](https://www.files.com/docs/support-and-services/requesting-support) or simply send an E-Mail to support@files.com.
71
73
 
72
74
  ## Authentication
73
75
 
@@ -79,12 +81,10 @@ Authenticating with an API key is the recommended authentication method for most
79
81
  the method used in the examples on this site.
80
82
 
81
83
  To use an API Key, first generate an API key from the [web
82
- interface](https://www.files.com/docs/sdk-and-apis/api-keys) or [via the API or an
84
+ interface](https://www.files.com/docs/security/authentication-and-credentials/api-keys) or [via the API or an
83
85
  SDK](https://developers.files.com/python/resources/developers/api-keys).
84
86
 
85
- Note that when using a user-specific API key, if the user is an administrator, you will have full
86
- access to the entire API. If the user is not an administrator, you will only be able to access files
87
- that user can access, and no access will be granted to site administration functions in the API.
87
+ A user key follows its account's permissions, narrowed by the key's permission scope, Workspace, and any path restriction on file operations. It can perform administrative operations only when both the account and key permit them. [API Keys](https://www.files.com/docs/security/authentication-and-credentials/api-keys) explains credential scope and lifecycle; [Workspaces](https://developers.files.com/python/overview/workspaces) explains request context and delegated administration.
88
88
 
89
89
  ```python title="Example Request"
90
90
  import files_sdk
@@ -104,10 +104,7 @@ Don't forget to replace the placeholder, `YOUR_API_KEY`, with your actual API ke
104
104
 
105
105
  ### Authenticate with a Session
106
106
 
107
- You can also authenticate by creating a user session using the username and
108
- password of an active user. If the user is an administrator, the session will have full access to
109
- all capabilities of Files.com. Sessions created from regular user accounts will only be able to access files that
110
- user can access, and no access will be granted to site administration functions.
107
+ Create a session with the username and password of an active user. The session uses that user's permissions, including any delegated administrative access. [Workspaces](https://developers.files.com/python/overview/workspaces) describes account scope and administrative access.
111
108
 
112
109
  Sessions use the exact same session timeout settings as web interface sessions. When a
113
110
  session times out, simply create a new session and resume where you left off. This process is not
@@ -592,7 +589,7 @@ This behavior applies across:
592
589
  - Folder and file lookup operations
593
590
  - Automations and workflows
594
591
 
595
- See also: [Case Sensitivity Documentation](https://www.files.com/docs/files-and-folders/case-sensitivity/)
592
+ See also: [Case Sensitivity Documentation](https://www.files.com/docs/files-and-folders/file-system-semantics/case-sensitivity)
596
593
 
597
594
  The `path_util.is_same` function in the Files.com SDK is designed to help you determine if two paths on
598
595
  your native file system would be considered the same on Files.com. This is particularly important
@@ -2,5 +2,5 @@ requests<3,>=2.34.2
2
2
  requests-toolbelt<2,>=1.0.0
3
3
  urllib3<3,>=2.8.0
4
4
  idna<4,>=3.15
5
- certifi>=2026.7.22
5
+ certifi>=2026.10.19
6
6
  charset-normalizer<4,>=3.5.1
@@ -479,7 +479,7 @@ source_ip = None
479
479
  workspace_id = None
480
480
  base_url = "https://app.files.com"
481
481
  base_path = "api/rest/v1"
482
- version = "2.0.4"
482
+ version = "2.0.6"
483
483
 
484
484
  __version__ = version
485
485
 
@@ -178,10 +178,15 @@ class Directory:
178
178
  path, dir_fd = self._at(name)
179
179
  os.rmdir(path, dir_fd=dir_fd)
180
180
 
181
+ def renames_by_path(self, target):
182
+ """Whether rename_into goes by path names, where directories are not
183
+ held open (Windows)."""
184
+ return self.fd is None or target.fd is None
185
+
181
186
  def rename_into(self, name, target, target_name):
182
187
  """Rename name here to target_name in the directory target,
183
188
  replacing what is there."""
184
- if self.fd is None or target.fd is None:
189
+ if self.renames_by_path(target):
185
190
  os.replace(self.join(name), target.join(target_name))
186
191
  return
187
192
  os.rename(name, target_name, src_dir_fd=self.fd, dst_dir_fd=target.fd)
@@ -452,10 +457,54 @@ class Stage:
452
457
  os.chmod(self.private.join(self.file_name), mode)
453
458
  if not self._is_ours():
454
459
  raise ReplacedStage(self.private.join(self.file_name))
455
- self.private.rename_into(self.file_name, self.parent, target_name)
456
- self.close()
460
+ if self.private.renames_by_path(self.parent):
461
+ # Windows does not rename a file this process holds open: os.open
462
+ # does not share deletion. The file is closed first, and opened
463
+ # again if it is not renamed, so that a checkpoint can still sync
464
+ # and keep it.
465
+ self.close()
466
+ try:
467
+ self.private.rename_into(
468
+ self.file_name, self.parent, target_name
469
+ )
470
+ except BaseException as error:
471
+ self._reopen(error)
472
+ raise
473
+ else:
474
+ self.private.rename_into(self.file_name, self.parent, target_name)
475
+ self.close()
457
476
  self._remove_private()
458
477
 
478
+ def _reopen(self, error):
479
+ """Open the file again after it was closed to be renamed and was not
480
+ (error is why), if it is still the SDK's own; otherwise it stays
481
+ closed, with a note on error saying why. Nothing here is raised in
482
+ place of error."""
483
+ path = self.private.join(self.file_name)
484
+ try:
485
+ fd = self.private.open_file(self.file_name, os.O_RDWR)
486
+ except OSError as problem:
487
+ error.add_note(
488
+ "The temporary file {} could not be opened again: {}".format(
489
+ path, problem
490
+ )
491
+ )
492
+ return
493
+ try:
494
+ mine = identity_of(os.fstat(fd)) == self.file_identity
495
+ except OSError:
496
+ mine = False
497
+ if mine:
498
+ self.fd = fd
499
+ return
500
+ try:
501
+ os.close(fd)
502
+ except OSError:
503
+ pass
504
+ error.add_note(
505
+ "The temporary file {} is no longer the SDK's own".format(path)
506
+ )
507
+
459
508
  def close(self):
460
509
  fd, self.fd = self.fd, -1
461
510
  if fd >= 0:
@@ -502,12 +551,24 @@ def _exposed(private, directory, fd, found):
502
551
  its status) or its private directory (directory is its status) has
503
552
  since become usable by others: by the directory's or the file's
504
553
  permissions, the file's owner, or on macOS an access control list on
505
- either. Whoever opened it meanwhile keeps what they opened, however the
554
+ either. Windows permissions show only whether an item is read-only, so
555
+ there it is by owners and access control lists (see files_sdk.access):
556
+ the file's must let no one but this user, the system or administrators
557
+ use it, and the private directory and every folder above it must let no
558
+ one else delete, replace or re-permission them or what is in them, nor
559
+ be a link or junction; what cannot be read counts as usable by others.
560
+ Whoever opened it meanwhile keeps what they opened, however the
506
561
  permissions are changed back, so such a file is never resumed."""
562
+ if sys.platform == "win32":
563
+ try:
564
+ return (
565
+ access.namespace_problem(private.path) is not None
566
+ or access.new_file_problem(fd, "temporary file") is not None
567
+ )
568
+ except OSError:
569
+ return True
507
570
  if stat.S_IMODE(directory.st_mode) & 0o077:
508
571
  return True
509
- if sys.platform == "win32":
510
- return False
511
572
  if stat.S_IMODE(found.st_mode) & 0o077 or found.st_uid != os.geteuid():
512
573
  return True
513
574
  return private.fd is not None and (
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "files_com"
7
- version = "2.0.4"
7
+ version = "2.0.6"
8
8
  description = "Python bindings for the Files.com API"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -19,7 +19,7 @@ dependencies = [
19
19
  "requests-toolbelt>=1.0.0,<2",
20
20
  "urllib3>=2.8.0,<3",
21
21
  "idna>=3.15,<4",
22
- "certifi>=2026.7.22",
22
+ "certifi>=2026.10.19",
23
23
  "charset-normalizer>=3.5.1,<4",
24
24
  ]
25
25
  classifiers = [
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes