rclone-api 1.4.6__tar.gz → 1.4.7__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 (105) hide show
  1. {rclone_api-1.4.6 → rclone_api-1.4.7}/PKG-INFO +1 -1
  2. {rclone_api-1.4.6 → rclone_api-1.4.7}/pyproject.toml +1 -1
  3. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/detail/copy_file_parts.py +34 -2
  4. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api.egg-info/PKG-INFO +1 -1
  5. {rclone_api-1.4.6 → rclone_api-1.4.7}/.aiderignore +0 -0
  6. {rclone_api-1.4.6 → rclone_api-1.4.7}/.github/workflows/lint.yml +0 -0
  7. {rclone_api-1.4.6 → rclone_api-1.4.7}/.github/workflows/push_macos.yml +0 -0
  8. {rclone_api-1.4.6 → rclone_api-1.4.7}/.github/workflows/push_ubuntu.yml +0 -0
  9. {rclone_api-1.4.6 → rclone_api-1.4.7}/.github/workflows/push_win.yml +0 -0
  10. {rclone_api-1.4.6 → rclone_api-1.4.7}/.gitignore +0 -0
  11. {rclone_api-1.4.6 → rclone_api-1.4.7}/.pylintrc +0 -0
  12. {rclone_api-1.4.6 → rclone_api-1.4.7}/.vscode/launch.json +0 -0
  13. {rclone_api-1.4.6 → rclone_api-1.4.7}/.vscode/settings.json +0 -0
  14. {rclone_api-1.4.6 → rclone_api-1.4.7}/.vscode/tasks.json +0 -0
  15. {rclone_api-1.4.6 → rclone_api-1.4.7}/LICENSE +0 -0
  16. {rclone_api-1.4.6 → rclone_api-1.4.7}/MANIFEST.in +0 -0
  17. {rclone_api-1.4.6 → rclone_api-1.4.7}/README.md +0 -0
  18. {rclone_api-1.4.6 → rclone_api-1.4.7}/clean +0 -0
  19. {rclone_api-1.4.6 → rclone_api-1.4.7}/install +0 -0
  20. {rclone_api-1.4.6 → rclone_api-1.4.7}/lint +0 -0
  21. {rclone_api-1.4.6 → rclone_api-1.4.7}/requirements.testing.txt +0 -0
  22. {rclone_api-1.4.6 → rclone_api-1.4.7}/setup.cfg +0 -0
  23. {rclone_api-1.4.6 → rclone_api-1.4.7}/setup.py +0 -0
  24. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/__init__.py +0 -0
  25. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/assets/example.txt +0 -0
  26. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/cli.py +0 -0
  27. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/cmd/analyze.py +0 -0
  28. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/cmd/copy_large_s3.py +0 -0
  29. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/cmd/list_files.py +0 -0
  30. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/cmd/save_to_db.py +0 -0
  31. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/completed_process.py +0 -0
  32. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/config.py +0 -0
  33. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/convert.py +0 -0
  34. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/db/__init__.py +0 -0
  35. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/db/db.py +0 -0
  36. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/db/models.py +0 -0
  37. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/deprecated.py +0 -0
  38. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/detail/walk.py +0 -0
  39. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/diff.py +0 -0
  40. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/dir.py +0 -0
  41. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/dir_listing.py +0 -0
  42. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/exec.py +0 -0
  43. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/experimental/flags.py +0 -0
  44. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/experimental/flags_base.py +0 -0
  45. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/file.py +0 -0
  46. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/file_item.py +0 -0
  47. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/file_part.py +0 -0
  48. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/file_stream.py +0 -0
  49. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/filelist.py +0 -0
  50. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/group_files.py +0 -0
  51. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/http_server.py +0 -0
  52. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/log.py +0 -0
  53. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/mount.py +0 -0
  54. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/process.py +0 -0
  55. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/rclone_impl.py +0 -0
  56. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/remote.py +0 -0
  57. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/rpath.py +0 -0
  58. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/s3/api.py +0 -0
  59. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/s3/basic_ops.py +0 -0
  60. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/s3/chunk_task.py +0 -0
  61. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/s3/create.py +0 -0
  62. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/s3/multipart/file_info.py +0 -0
  63. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/s3/multipart/finished_piece.py +0 -0
  64. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/s3/multipart/upload_info.py +0 -0
  65. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/s3/multipart/upload_state.py +0 -0
  66. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/s3/s3_multipart_uploader.py +0 -0
  67. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/s3/types.py +0 -0
  68. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/s3/upload_file_multipart.py +0 -0
  69. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/scan_missing_folders.py +0 -0
  70. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/types.py +0 -0
  71. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api/util.py +0 -0
  72. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api.egg-info/SOURCES.txt +0 -0
  73. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api.egg-info/dependency_links.txt +0 -0
  74. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api.egg-info/entry_points.txt +0 -0
  75. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api.egg-info/requires.txt +0 -0
  76. {rclone_api-1.4.6 → rclone_api-1.4.7}/src/rclone_api.egg-info/top_level.txt +0 -0
  77. {rclone_api-1.4.6 → rclone_api-1.4.7}/test +0 -0
  78. {rclone_api-1.4.6 → rclone_api-1.4.7}/tests/archive/test_paramiko.py.disabled +0 -0
  79. {rclone_api-1.4.6 → rclone_api-1.4.7}/tests/test_cmd_list_files.py +0 -0
  80. {rclone_api-1.4.6 → rclone_api-1.4.7}/tests/test_copy.py +0 -0
  81. {rclone_api-1.4.6 → rclone_api-1.4.7}/tests/test_copy_bytes.py +0 -0
  82. {rclone_api-1.4.6 → rclone_api-1.4.7}/tests/test_copy_file_resumable_s3.py +0 -0
  83. {rclone_api-1.4.6 → rclone_api-1.4.7}/tests/test_copy_files.py +0 -0
  84. {rclone_api-1.4.6 → rclone_api-1.4.7}/tests/test_db.py +0 -0
  85. {rclone_api-1.4.6 → rclone_api-1.4.7}/tests/test_diff.py +0 -0
  86. {rclone_api-1.4.6 → rclone_api-1.4.7}/tests/test_file_item.py +0 -0
  87. {rclone_api-1.4.6 → rclone_api-1.4.7}/tests/test_group_files.py +0 -0
  88. {rclone_api-1.4.6 → rclone_api-1.4.7}/tests/test_is_synced.py +0 -0
  89. {rclone_api-1.4.6 → rclone_api-1.4.7}/tests/test_ls.py +0 -0
  90. {rclone_api-1.4.6 → rclone_api-1.4.7}/tests/test_ls_stream_files.py +0 -0
  91. {rclone_api-1.4.6 → rclone_api-1.4.7}/tests/test_mount.py +0 -0
  92. {rclone_api-1.4.6 → rclone_api-1.4.7}/tests/test_mount_s3.py +0 -0
  93. {rclone_api-1.4.6 → rclone_api-1.4.7}/tests/test_obscure.py +0 -0
  94. {rclone_api-1.4.6 → rclone_api-1.4.7}/tests/test_rclone_config.py +0 -0
  95. {rclone_api-1.4.6 → rclone_api-1.4.7}/tests/test_read_write_text.py +0 -0
  96. {rclone_api-1.4.6 → rclone_api-1.4.7}/tests/test_remote_control.py +0 -0
  97. {rclone_api-1.4.6 → rclone_api-1.4.7}/tests/test_remotes.py +0 -0
  98. {rclone_api-1.4.6 → rclone_api-1.4.7}/tests/test_s3.py +0 -0
  99. {rclone_api-1.4.6 → rclone_api-1.4.7}/tests/test_scan_missing_folders.py +0 -0
  100. {rclone_api-1.4.6 → rclone_api-1.4.7}/tests/test_serve_http.py +0 -0
  101. {rclone_api-1.4.6 → rclone_api-1.4.7}/tests/test_size_files.py +0 -0
  102. {rclone_api-1.4.6 → rclone_api-1.4.7}/tests/test_size_suffix.py +0 -0
  103. {rclone_api-1.4.6 → rclone_api-1.4.7}/tests/test_walk.py +0 -0
  104. {rclone_api-1.4.6 → rclone_api-1.4.7}/tox.ini +0 -0
  105. {rclone_api-1.4.6 → rclone_api-1.4.7}/upload_package.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: rclone_api
3
- Version: 1.4.6
3
+ Version: 1.4.7
4
4
  Summary: rclone api in python
5
5
  Home-page: https://github.com/zackees/rclone-api
6
6
  License: BSD 3-Clause License
@@ -25,7 +25,7 @@ dependencies = [
25
25
  ]
26
26
 
27
27
  # Change this with the version number bump.
28
- version = "1.4.6"
28
+ version = "1.4.7"
29
29
 
30
30
  [tool.setuptools]
31
31
  package-dir = {"" = "src"}
@@ -248,6 +248,36 @@ class InfoJson:
248
248
  return self.to_json_str()
249
249
 
250
250
 
251
+ def collapse_runs(numbers: list[int]) -> list[str]:
252
+ if not numbers:
253
+ return []
254
+
255
+ runs = []
256
+ start = numbers[0]
257
+ prev = numbers[0]
258
+
259
+ for num in numbers[1:]:
260
+ if num == prev + 1:
261
+ # Continue current run
262
+ prev = num
263
+ else:
264
+ # End current run
265
+ if start == prev:
266
+ runs.append(str(start))
267
+ else:
268
+ runs.append(f"{start}-{prev}")
269
+ start = num
270
+ prev = num
271
+
272
+ # Append the final run
273
+ if start == prev:
274
+ runs.append(str(start))
275
+ else:
276
+ runs.append(f"{start}-{prev}")
277
+
278
+ return runs
279
+
280
+
251
281
  def copy_file_parts(
252
282
  self: RcloneImpl,
253
283
  src: str, # src:/Bucket/path/myfile.large.zst
@@ -297,7 +327,9 @@ def copy_file_parts(
297
327
  first_part_number = part_infos[0].part_number
298
328
  last_part_number = part_infos[-1].part_number
299
329
 
300
- print(f"all_numbers_already_done: {sorted(list(all_numbers_already_done))}")
330
+ print(
331
+ f"all_numbers_already_done: {collapse_runs(sorted(list(all_numbers_already_done)))}"
332
+ )
301
333
 
302
334
  filtered_part_infos: list[PartInfo] = []
303
335
  for part_info in part_infos:
@@ -306,7 +338,7 @@ def copy_file_parts(
306
338
  part_infos = filtered_part_infos
307
339
 
308
340
  remaining_part_numbers: list[int] = [p.part_number for p in part_infos]
309
- print(f"remaining_part_numbers: {remaining_part_numbers}")
341
+ print(f"remaining_part_numbers: {collapse_runs(remaining_part_numbers)}")
310
342
 
311
343
  if len(part_infos) == 0:
312
344
  return Exception(f"No parts to copy for {src}")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: rclone_api
3
- Version: 1.4.6
3
+ Version: 1.4.7
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
File without changes
File without changes
File without changes
File without changes