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_com-2.0.4/files_com.egg-info → files_com-2.0.6}/PKG-INFO +9 -12
- {files_com-2.0.4 → files_com-2.0.6}/README.md +7 -10
- {files_com-2.0.4 → files_com-2.0.6/files_com.egg-info}/PKG-INFO +9 -12
- {files_com-2.0.4 → files_com-2.0.6}/files_com.egg-info/requires.txt +1 -1
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/__init__.py +1 -1
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/localfs.py +67 -6
- {files_com-2.0.4 → files_com-2.0.6}/pyproject.toml +2 -2
- {files_com-2.0.4 → files_com-2.0.6}/LICENSE +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/MANIFEST.in +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_com.egg-info/SOURCES.txt +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_com.egg-info/dependency_links.txt +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_com.egg-info/top_level.txt +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/access.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/adaptive.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/api.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/api_client.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/attachment.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/checkpoint.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/client.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/context.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/download.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/download_status.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/error.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/jobs.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/lifetime.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/list_obj.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/migration.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/__init__.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/account_line_item.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/action.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/action_log.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/action_notification_export.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/action_notification_export_result.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/agent_node.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/agent_node_connection.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/agent_node_instance.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/agent_push_update.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/ai_assistant_personality.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/ai_task.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/api_key.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/api_request_log.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/app.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/as2_incoming_message.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/as2_outgoing_message.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/as2_partner.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/as2_station.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/auto.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/automation.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/automation_authoring_schema.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/automation_execution_node.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/automation_log.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/automation_run.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/bandwidth_snapshot.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/behavior.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/bundle.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/bundle_action.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/bundle_download.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/bundle_notification.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/bundle_path.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/bundle_recipient.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/bundle_registration.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/chat_message.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/chat_session.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/child_site_management_policy.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/clickwrap.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/custom_domain.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/desktop_configuration_profile.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/direct_connection_info.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/dns_record.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/email_incoming_message.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/email_log.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/errors.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/event_channel.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/event_delivery_attempt.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/event_record.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/event_subscription.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/event_target.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/exavault_api_request_log.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/expectation.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/expectation_evaluation.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/expectation_incident.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/external_event.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/file.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/file_action.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/file_comment.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/file_comment_reaction.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/file_migration.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/file_migration_log.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/file_upload_part.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/folder.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/form_field.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/form_field_set.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/ftp_action_log.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/gpg_key.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/group.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/group_user.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/history.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/history_export.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/history_export_result.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/holiday_calendar.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/holiday_region.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/image.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/inbound_s3_log.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/inbox_recipient.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/inbox_registration.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/inbox_upload.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/integration_centric_profile.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/invoice.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/invoice_line_item.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/ip_address.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/key_lifecycle_rule.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/lock.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/metadata_category.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/notification.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/outbound_connection_log.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/partner.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/partner_channel.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/partner_channel_template.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/partner_connection.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/partner_site.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/partner_site_request.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/payment.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/payment_line_item.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/pending_work_event.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/permission.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/preview.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/public_hosting_request_log.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/public_ip_address.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/public_key.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/remote_bandwidth_snapshot.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/remote_mount_backend.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/remote_server.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/remote_server_configuration_file.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/remote_server_credential.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/request.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/restore.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/schedule.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/scheduled_export.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/scim_log.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/secret.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/session.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/settings_change.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/sftp_action_log.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/sftp_host_key.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/share_group.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/share_group_member.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/siem_http_destination.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/siem_http_destination_event.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/site.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/site_subdomain_redirect.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/snapshot.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/sso_event.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/sso_strategy.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/status.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/style.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/sync.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/sync_log.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/sync_run.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/sync_run_live_transfer.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/usage_by_top_level_dir.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/usage_daily_snapshot.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/usage_snapshot.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/user.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/user_additional_email_recipient.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/user_cipher_use.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/user_lifecycle_rule.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/user_request.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/user_security_event.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/user_sftp_client_use.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/web_dav_action_log.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/webhook_test.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/workspace.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/models/zip_list_entry.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/path_comparison.json +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/path_util.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/py.typed +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/region.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/transport.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/upload.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/util.py +0 -0
- {files_com-2.0.4 → files_com-2.0.6}/files_sdk/writing.py +0 -0
- {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.
|
|
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.
|
|
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/
|
|
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/
|
|
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
|
-
|
|
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
|
-
|
|
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/
|
|
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/
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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/
|
|
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/
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
@@ -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.
|
|
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.
|
|
456
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|