rclone-api 1.0.82__tar.gz → 1.0.84__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 (70) hide show
  1. {rclone_api-1.0.82 → rclone_api-1.0.84}/PKG-INFO +1 -1
  2. {rclone_api-1.0.82 → rclone_api-1.0.84}/pyproject.toml +1 -1
  3. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api/rclone.py +26 -3
  4. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api.egg-info/PKG-INFO +1 -1
  5. {rclone_api-1.0.82 → rclone_api-1.0.84}/tests/test_copy_files.py +27 -1
  6. {rclone_api-1.0.82 → rclone_api-1.0.84}/.aiderignore +0 -0
  7. {rclone_api-1.0.82 → rclone_api-1.0.84}/.github/workflows/lint.yml +0 -0
  8. {rclone_api-1.0.82 → rclone_api-1.0.84}/.github/workflows/push_macos.yml +0 -0
  9. {rclone_api-1.0.82 → rclone_api-1.0.84}/.github/workflows/push_ubuntu.yml +0 -0
  10. {rclone_api-1.0.82 → rclone_api-1.0.84}/.github/workflows/push_win.yml +0 -0
  11. {rclone_api-1.0.82 → rclone_api-1.0.84}/.gitignore +0 -0
  12. {rclone_api-1.0.82 → rclone_api-1.0.84}/.pylintrc +0 -0
  13. {rclone_api-1.0.82 → rclone_api-1.0.84}/.vscode/launch.json +0 -0
  14. {rclone_api-1.0.82 → rclone_api-1.0.84}/.vscode/settings.json +0 -0
  15. {rclone_api-1.0.82 → rclone_api-1.0.84}/.vscode/tasks.json +0 -0
  16. {rclone_api-1.0.82 → rclone_api-1.0.84}/LICENSE +0 -0
  17. {rclone_api-1.0.82 → rclone_api-1.0.84}/MANIFEST.in +0 -0
  18. {rclone_api-1.0.82 → rclone_api-1.0.84}/README.md +0 -0
  19. {rclone_api-1.0.82 → rclone_api-1.0.84}/clean +0 -0
  20. {rclone_api-1.0.82 → rclone_api-1.0.84}/install +0 -0
  21. {rclone_api-1.0.82 → rclone_api-1.0.84}/lint +0 -0
  22. {rclone_api-1.0.82 → rclone_api-1.0.84}/requirements.testing.txt +0 -0
  23. {rclone_api-1.0.82 → rclone_api-1.0.84}/setup.cfg +0 -0
  24. {rclone_api-1.0.82 → rclone_api-1.0.84}/setup.py +0 -0
  25. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api/__init__.py +0 -0
  26. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api/assets/example.txt +0 -0
  27. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api/cli.py +0 -0
  28. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api/cmd/list_files.py +0 -0
  29. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api/completed_process.py +0 -0
  30. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api/config.py +0 -0
  31. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api/convert.py +0 -0
  32. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api/deprecated.py +0 -0
  33. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api/diff.py +0 -0
  34. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api/dir.py +0 -0
  35. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api/dir_listing.py +0 -0
  36. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api/exec.py +0 -0
  37. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api/file.py +0 -0
  38. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api/filelist.py +0 -0
  39. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api/group_files.py +0 -0
  40. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api/process.py +0 -0
  41. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api/remote.py +0 -0
  42. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api/rpath.py +0 -0
  43. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api/scan_missing_folders.py +0 -0
  44. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api/types.py +0 -0
  45. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api/util.py +0 -0
  46. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api/walk.py +0 -0
  47. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api.egg-info/SOURCES.txt +0 -0
  48. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api.egg-info/dependency_links.txt +0 -0
  49. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api.egg-info/entry_points.txt +0 -0
  50. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api.egg-info/requires.txt +0 -0
  51. {rclone_api-1.0.82 → rclone_api-1.0.84}/src/rclone_api.egg-info/top_level.txt +0 -0
  52. {rclone_api-1.0.82 → rclone_api-1.0.84}/test +0 -0
  53. {rclone_api-1.0.82 → rclone_api-1.0.84}/tests/test_cmd_list_files.py +0 -0
  54. {rclone_api-1.0.82 → rclone_api-1.0.84}/tests/test_copy.py +0 -0
  55. {rclone_api-1.0.82 → rclone_api-1.0.84}/tests/test_diff.py +0 -0
  56. {rclone_api-1.0.82 → rclone_api-1.0.84}/tests/test_group_files.py +0 -0
  57. {rclone_api-1.0.82 → rclone_api-1.0.84}/tests/test_is_synced.py +0 -0
  58. {rclone_api-1.0.82 → rclone_api-1.0.84}/tests/test_ls.py +0 -0
  59. {rclone_api-1.0.82 → rclone_api-1.0.84}/tests/test_mount.py +0 -0
  60. {rclone_api-1.0.82 → rclone_api-1.0.84}/tests/test_mount_s3.py +0 -0
  61. {rclone_api-1.0.82 → rclone_api-1.0.84}/tests/test_mount_webdav.py +0 -0
  62. {rclone_api-1.0.82 → rclone_api-1.0.84}/tests/test_obscure.py +0 -0
  63. {rclone_api-1.0.82 → rclone_api-1.0.84}/tests/test_remote_control.py +0 -0
  64. {rclone_api-1.0.82 → rclone_api-1.0.84}/tests/test_remotes.py +0 -0
  65. {rclone_api-1.0.82 → rclone_api-1.0.84}/tests/test_scan_missing_folders.py +0 -0
  66. {rclone_api-1.0.82 → rclone_api-1.0.84}/tests/test_serve_webdav.py +0 -0
  67. {rclone_api-1.0.82 → rclone_api-1.0.84}/tests/test_size_files.py +0 -0
  68. {rclone_api-1.0.82 → rclone_api-1.0.84}/tests/test_walk.py +0 -0
  69. {rclone_api-1.0.82 → rclone_api-1.0.84}/tox.ini +0 -0
  70. {rclone_api-1.0.82 → rclone_api-1.0.84}/upload_package.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: rclone_api
3
- Version: 1.0.82
3
+ Version: 1.0.84
4
4
  Summary: rclone api in python
5
5
  Home-page: https://github.com/zackees/rclone-api
6
6
  Maintainer: Zachary Vorhies
@@ -15,7 +15,7 @@ dependencies = [
15
15
  "python-dotenv>=1.0.0",
16
16
  ]
17
17
  # Change this with the version number bump.
18
- version = "1.0.82"
18
+ version = "1.0.84"
19
19
 
20
20
  [tool.setuptools]
21
21
  package-dir = {"" = "src"}
@@ -394,7 +394,12 @@ class Rclone:
394
394
  f"Invalid file path, contains a remote, which is not allowed for copy_files: {p}"
395
395
  )
396
396
 
397
- datalists: dict[str, list[str]] = group_files(payload, fully_qualified=False)
397
+ if max_partition_workers > 1:
398
+ datalists: dict[str, list[str]] = group_files(
399
+ payload, fully_qualified=False
400
+ )
401
+ else:
402
+ datalists = {"": payload}
398
403
  # out: subprocess.CompletedProcess | None = None
399
404
  out: list[CompletedProcess] = []
400
405
 
@@ -490,7 +495,16 @@ class Rclone:
490
495
  warnings.warn(f"Error deleting files: {cp.stderr}")
491
496
  return out
492
497
 
493
- def copy(self, src: Dir | str, dst: Dir | str) -> CompletedProcess:
498
+ def copy(
499
+ self,
500
+ src: Dir | str,
501
+ dst: Dir | str,
502
+ check: bool | None = None,
503
+ transfers: int | None = None,
504
+ checkers: int | None = None,
505
+ multi_thread_streams: int | None = None,
506
+ other_args: list[str] | None = None,
507
+ ) -> CompletedProcess:
494
508
  """Copy files from source to destination.
495
509
 
496
510
  Args:
@@ -501,8 +515,17 @@ class Rclone:
501
515
  # dst_dir = dst.path.path
502
516
  src_dir = convert_to_str(src)
503
517
  dst_dir = convert_to_str(dst)
518
+ check = get_check(check)
519
+ checkers = checkers or 1000
520
+ transfers = transfers or 32
504
521
  cmd_list: list[str] = ["copy", src_dir, dst_dir]
505
- cp = self._run(cmd_list)
522
+ cmd_list += ["--checkers", str(checkers)]
523
+ cmd_list += ["--transfers", str(transfers)]
524
+ if multi_thread_streams is not None:
525
+ cmd_list += ["--multi-thread-streams", str(multi_thread_streams)]
526
+ if other_args:
527
+ cmd_list += other_args
528
+ cp = self._run(cmd_list, check=check, capture=False)
506
529
  return CompletedProcess.from_subprocess(cp)
507
530
 
508
531
  def purge(self, path: Dir | str) -> CompletedProcess:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: rclone_api
3
- Version: 1.0.82
3
+ Version: 1.0.84
4
4
  Summary: rclone api in python
5
5
  Home-page: https://github.com/zackees/rclone-api
6
6
  Maintainer: Zachary Vorhies
@@ -75,7 +75,33 @@ class RcloneCopyFilesTest(unittest.TestCase):
75
75
  print(f"first_file: {first_file_str}")
76
76
  include_files: list[str] = [first_file.name]
77
77
  completed_procs: list[CompletedProcess] = rclone.copy_files(
78
- src=src_prefix, dst=dst_prefix, files=include_files
78
+ src=src_prefix, dst=dst_prefix, files=include_files, max_partition_workers=2
79
+ )
80
+ self.assertGreater(len(completed_procs), 0)
81
+ for proc in completed_procs:
82
+ print(proc.stdout)
83
+ print(proc.stderr)
84
+ self.assertTrue(proc.returncode == 0)
85
+ self.assertTrue(rclone.exists(dst_prefix))
86
+ rclone.purge(dst_prefix)
87
+ print(f"Checking that {dst_prefix} was deleted")
88
+ still_exists = rclone.exists(dst_prefix)
89
+ self.assertFalse(still_exists)
90
+ print("done")
91
+
92
+ def test_copylist_one_worker(self) -> None:
93
+ """Test copying a list of files to remote storage."""
94
+ rclone = Rclone(_generate_rclone_config())
95
+ dst_prefix = f"dst:{BUCKET_NAME}/test_out"
96
+ src_prefix = f"dst:{BUCKET_NAME}/zachs_video"
97
+ listing: DirListing = rclone.ls(src_prefix, glob="*.png")
98
+ self.assertGreater(len(listing.files), 0)
99
+ first_file: File = listing.files[0]
100
+ first_file_str = first_file.to_string(include_remote=False)
101
+ print(f"first_file: {first_file_str}")
102
+ include_files: list[str] = [first_file.name]
103
+ completed_procs: list[CompletedProcess] = rclone.copy_files(
104
+ src=src_prefix, dst=dst_prefix, files=include_files, max_partition_workers=1
79
105
  )
80
106
  self.assertGreater(len(completed_procs), 0)
81
107
  for proc in completed_procs:
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