rclone-api 1.0.99__tar.gz → 1.0.100__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 (80) hide show
  1. {rclone_api-1.0.99 → rclone_api-1.0.100}/PKG-INFO +1 -1
  2. {rclone_api-1.0.99 → rclone_api-1.0.100}/pyproject.toml +1 -1
  3. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/s3/chunk_uploader.py +15 -3
  4. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api.egg-info/PKG-INFO +1 -1
  5. {rclone_api-1.0.99 → rclone_api-1.0.100}/.aiderignore +0 -0
  6. {rclone_api-1.0.99 → rclone_api-1.0.100}/.github/workflows/lint.yml +0 -0
  7. {rclone_api-1.0.99 → rclone_api-1.0.100}/.github/workflows/push_macos.yml +0 -0
  8. {rclone_api-1.0.99 → rclone_api-1.0.100}/.github/workflows/push_ubuntu.yml +0 -0
  9. {rclone_api-1.0.99 → rclone_api-1.0.100}/.github/workflows/push_win.yml +0 -0
  10. {rclone_api-1.0.99 → rclone_api-1.0.100}/.gitignore +0 -0
  11. {rclone_api-1.0.99 → rclone_api-1.0.100}/.pylintrc +0 -0
  12. {rclone_api-1.0.99 → rclone_api-1.0.100}/.vscode/launch.json +0 -0
  13. {rclone_api-1.0.99 → rclone_api-1.0.100}/.vscode/settings.json +0 -0
  14. {rclone_api-1.0.99 → rclone_api-1.0.100}/.vscode/tasks.json +0 -0
  15. {rclone_api-1.0.99 → rclone_api-1.0.100}/LICENSE +0 -0
  16. {rclone_api-1.0.99 → rclone_api-1.0.100}/MANIFEST.in +0 -0
  17. {rclone_api-1.0.99 → rclone_api-1.0.100}/README.md +0 -0
  18. {rclone_api-1.0.99 → rclone_api-1.0.100}/clean +0 -0
  19. {rclone_api-1.0.99 → rclone_api-1.0.100}/install +0 -0
  20. {rclone_api-1.0.99 → rclone_api-1.0.100}/lint +0 -0
  21. {rclone_api-1.0.99 → rclone_api-1.0.100}/requirements.testing.txt +0 -0
  22. {rclone_api-1.0.99 → rclone_api-1.0.100}/setup.cfg +0 -0
  23. {rclone_api-1.0.99 → rclone_api-1.0.100}/setup.py +0 -0
  24. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/__init__.py +0 -0
  25. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/assets/example.txt +0 -0
  26. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/cli.py +0 -0
  27. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/cmd/copy_large_s3.py +0 -0
  28. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/cmd/list_files.py +0 -0
  29. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/completed_process.py +0 -0
  30. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/config.py +0 -0
  31. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/convert.py +0 -0
  32. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/deprecated.py +0 -0
  33. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/diff.py +0 -0
  34. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/dir.py +0 -0
  35. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/dir_listing.py +0 -0
  36. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/exec.py +0 -0
  37. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/experimental/flags.py +0 -0
  38. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/file.py +0 -0
  39. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/filelist.py +0 -0
  40. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/group_files.py +0 -0
  41. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/process.py +0 -0
  42. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/rclone.py +0 -0
  43. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/remote.py +0 -0
  44. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/rpath.py +0 -0
  45. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/s3/api.py +0 -0
  46. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/s3/basic_ops.py +0 -0
  47. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/s3/create.py +0 -0
  48. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/s3/types.py +0 -0
  49. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/scan_missing_folders.py +0 -0
  50. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/types.py +0 -0
  51. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/util.py +0 -0
  52. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api/walk.py +0 -0
  53. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api.egg-info/SOURCES.txt +0 -0
  54. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api.egg-info/dependency_links.txt +0 -0
  55. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api.egg-info/entry_points.txt +0 -0
  56. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api.egg-info/requires.txt +0 -0
  57. {rclone_api-1.0.99 → rclone_api-1.0.100}/src/rclone_api.egg-info/top_level.txt +0 -0
  58. {rclone_api-1.0.99 → rclone_api-1.0.100}/test +0 -0
  59. {rclone_api-1.0.99 → rclone_api-1.0.100}/tests/archive/test_paramiko.py.disabled +0 -0
  60. {rclone_api-1.0.99 → rclone_api-1.0.100}/tests/test_cmd_list_files.py +0 -0
  61. {rclone_api-1.0.99 → rclone_api-1.0.100}/tests/test_copy.py +0 -0
  62. {rclone_api-1.0.99 → rclone_api-1.0.100}/tests/test_copy_files.py +0 -0
  63. {rclone_api-1.0.99 → rclone_api-1.0.100}/tests/test_diff.py +0 -0
  64. {rclone_api-1.0.99 → rclone_api-1.0.100}/tests/test_group_files.py +0 -0
  65. {rclone_api-1.0.99 → rclone_api-1.0.100}/tests/test_is_synced.py +0 -0
  66. {rclone_api-1.0.99 → rclone_api-1.0.100}/tests/test_ls.py +0 -0
  67. {rclone_api-1.0.99 → rclone_api-1.0.100}/tests/test_mount.py +0 -0
  68. {rclone_api-1.0.99 → rclone_api-1.0.100}/tests/test_mount_s3.py +0 -0
  69. {rclone_api-1.0.99 → rclone_api-1.0.100}/tests/test_mount_webdav.py +0 -0
  70. {rclone_api-1.0.99 → rclone_api-1.0.100}/tests/test_mounted_ranged_download.py +0 -0
  71. {rclone_api-1.0.99 → rclone_api-1.0.100}/tests/test_obscure.py +0 -0
  72. {rclone_api-1.0.99 → rclone_api-1.0.100}/tests/test_rclone_config.py +0 -0
  73. {rclone_api-1.0.99 → rclone_api-1.0.100}/tests/test_remote_control.py +0 -0
  74. {rclone_api-1.0.99 → rclone_api-1.0.100}/tests/test_remotes.py +0 -0
  75. {rclone_api-1.0.99 → rclone_api-1.0.100}/tests/test_s3.py +0 -0
  76. {rclone_api-1.0.99 → rclone_api-1.0.100}/tests/test_scan_missing_folders.py +0 -0
  77. {rclone_api-1.0.99 → rclone_api-1.0.100}/tests/test_size_files.py +0 -0
  78. {rclone_api-1.0.99 → rclone_api-1.0.100}/tests/test_walk.py +0 -0
  79. {rclone_api-1.0.99 → rclone_api-1.0.100}/tox.ini +0 -0
  80. {rclone_api-1.0.99 → rclone_api-1.0.100}/upload_package.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: rclone_api
3
- Version: 1.0.99
3
+ Version: 1.0.100
4
4
  Summary: rclone api in python
5
5
  Home-page: https://github.com/zackees/rclone-api
6
6
  License: BSD 3-Clause License
@@ -21,7 +21,7 @@ dependencies = [
21
21
  ]
22
22
 
23
23
  # Change this with the version number bump.
24
- version = "1.0.99"
24
+ version = "1.0.100"
25
25
 
26
26
  [tool.setuptools]
27
27
  package-dir = {"" = "src"}
@@ -1,3 +1,4 @@
1
+ import _thread
1
2
  import json
2
3
  import os
3
4
  import time
@@ -433,6 +434,7 @@ def upload_file_multipart(
433
434
  chunk_size: int = 16 * 1024 * 1024, # Default chunk size is 16MB; can be overridden
434
435
  retries: int = 20,
435
436
  max_chunks_before_suspension: int | None = None,
437
+ abort_transfer_on_failure: bool = False,
436
438
  ) -> MultiUploadResult:
437
439
  """Upload a file to the bucket using multipart upload with customizable chunk size."""
438
440
  file_size = os.path.getsize(str(file_path))
@@ -494,7 +496,13 @@ def upload_file_multipart(
494
496
  output=filechunks,
495
497
  max_chunks=max_chunks_before_suspension,
496
498
  ) -> None:
497
- file_chunker(upload_state=upload_state, output=output, max_chunks=max_chunks)
499
+ try:
500
+ file_chunker(
501
+ upload_state=upload_state, output=output, max_chunks=max_chunks
502
+ )
503
+ except Exception:
504
+ _thread.interrupt_main()
505
+ raise
498
506
 
499
507
  try:
500
508
  thread_chunker = Thread(target=chunker_task, daemon=True)
@@ -507,7 +515,11 @@ def upload_file_multipart(
507
515
  break
508
516
 
509
517
  def task(upload_info=upload_info, file_chunk=file_chunk):
510
- return handle_upload(upload_info, file_chunk)
518
+ try:
519
+ return handle_upload(upload_info, file_chunk)
520
+ except Exception:
521
+ _thread.interrupt_main()
522
+ raise
511
523
 
512
524
  fut = executor.submit(task)
513
525
 
@@ -540,7 +552,7 @@ def upload_file_multipart(
540
552
  f"Multipart upload completed: {file_path} to {bucket_name}/{object_name}"
541
553
  )
542
554
  except Exception:
543
- if upload_info.upload_id:
555
+ if upload_info.upload_id and abort_transfer_on_failure:
544
556
  try:
545
557
  s3_client.abort_multipart_upload(
546
558
  Bucket=bucket_name, Key=object_name, UploadId=upload_info.upload_id
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: rclone_api
3
- Version: 1.0.99
3
+ Version: 1.0.100
4
4
  Summary: rclone api in python
5
5
  Home-page: https://github.com/zackees/rclone-api
6
6
  License: BSD 3-Clause License
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