rclone-api 1.0.60__tar.gz → 1.0.62__tar.gz

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rclone-api might be problematic. Click here for more details.

Files changed (66) hide show
  1. {rclone_api-1.0.60 → rclone_api-1.0.62}/PKG-INFO +1 -1
  2. {rclone_api-1.0.60 → rclone_api-1.0.62}/pyproject.toml +1 -1
  3. {rclone_api-1.0.60 → rclone_api-1.0.62}/src/rclone_api/rclone.py +45 -9
  4. {rclone_api-1.0.60 → rclone_api-1.0.62}/src/rclone_api.egg-info/PKG-INFO +1 -1
  5. {rclone_api-1.0.60 → rclone_api-1.0.62}/.aiderignore +0 -0
  6. {rclone_api-1.0.60 → rclone_api-1.0.62}/.github/workflows/lint.yml +0 -0
  7. {rclone_api-1.0.60 → rclone_api-1.0.62}/.github/workflows/push_macos.yml +0 -0
  8. {rclone_api-1.0.60 → rclone_api-1.0.62}/.github/workflows/push_ubuntu.yml +0 -0
  9. {rclone_api-1.0.60 → rclone_api-1.0.62}/.github/workflows/push_win.yml +0 -0
  10. {rclone_api-1.0.60 → rclone_api-1.0.62}/.gitignore +0 -0
  11. {rclone_api-1.0.60 → rclone_api-1.0.62}/.pylintrc +0 -0
  12. {rclone_api-1.0.60 → rclone_api-1.0.62}/.vscode/launch.json +0 -0
  13. {rclone_api-1.0.60 → rclone_api-1.0.62}/.vscode/settings.json +0 -0
  14. {rclone_api-1.0.60 → rclone_api-1.0.62}/.vscode/tasks.json +0 -0
  15. {rclone_api-1.0.60 → rclone_api-1.0.62}/LICENSE +0 -0
  16. {rclone_api-1.0.60 → rclone_api-1.0.62}/MANIFEST.in +0 -0
  17. {rclone_api-1.0.60 → rclone_api-1.0.62}/README.md +0 -0
  18. {rclone_api-1.0.60 → rclone_api-1.0.62}/clean +0 -0
  19. {rclone_api-1.0.60 → rclone_api-1.0.62}/install +0 -0
  20. {rclone_api-1.0.60 → rclone_api-1.0.62}/lint +0 -0
  21. {rclone_api-1.0.60 → rclone_api-1.0.62}/requirements.testing.txt +0 -0
  22. {rclone_api-1.0.60 → rclone_api-1.0.62}/setup.cfg +0 -0
  23. {rclone_api-1.0.60 → rclone_api-1.0.62}/setup.py +0 -0
  24. {rclone_api-1.0.60 → rclone_api-1.0.62}/src/rclone_api/__init__.py +0 -0
  25. {rclone_api-1.0.60 → rclone_api-1.0.62}/src/rclone_api/assets/example.txt +0 -0
  26. {rclone_api-1.0.60 → rclone_api-1.0.62}/src/rclone_api/cli.py +0 -0
  27. {rclone_api-1.0.60 → rclone_api-1.0.62}/src/rclone_api/cmd/list_files.py +0 -0
  28. {rclone_api-1.0.60 → rclone_api-1.0.62}/src/rclone_api/completed_process.py +0 -0
  29. {rclone_api-1.0.60 → rclone_api-1.0.62}/src/rclone_api/config.py +0 -0
  30. {rclone_api-1.0.60 → rclone_api-1.0.62}/src/rclone_api/convert.py +0 -0
  31. {rclone_api-1.0.60 → rclone_api-1.0.62}/src/rclone_api/deprecated.py +0 -0
  32. {rclone_api-1.0.60 → rclone_api-1.0.62}/src/rclone_api/diff.py +0 -0
  33. {rclone_api-1.0.60 → rclone_api-1.0.62}/src/rclone_api/dir.py +0 -0
  34. {rclone_api-1.0.60 → rclone_api-1.0.62}/src/rclone_api/dir_listing.py +0 -0
  35. {rclone_api-1.0.60 → rclone_api-1.0.62}/src/rclone_api/exec.py +0 -0
  36. {rclone_api-1.0.60 → rclone_api-1.0.62}/src/rclone_api/file.py +0 -0
  37. {rclone_api-1.0.60 → rclone_api-1.0.62}/src/rclone_api/filelist.py +0 -0
  38. {rclone_api-1.0.60 → rclone_api-1.0.62}/src/rclone_api/group_files.py +0 -0
  39. {rclone_api-1.0.60 → rclone_api-1.0.62}/src/rclone_api/process.py +0 -0
  40. {rclone_api-1.0.60 → rclone_api-1.0.62}/src/rclone_api/remote.py +0 -0
  41. {rclone_api-1.0.60 → rclone_api-1.0.62}/src/rclone_api/rpath.py +0 -0
  42. {rclone_api-1.0.60 → rclone_api-1.0.62}/src/rclone_api/util.py +0 -0
  43. {rclone_api-1.0.60 → rclone_api-1.0.62}/src/rclone_api/walk.py +0 -0
  44. {rclone_api-1.0.60 → rclone_api-1.0.62}/src/rclone_api.egg-info/SOURCES.txt +0 -0
  45. {rclone_api-1.0.60 → rclone_api-1.0.62}/src/rclone_api.egg-info/dependency_links.txt +0 -0
  46. {rclone_api-1.0.60 → rclone_api-1.0.62}/src/rclone_api.egg-info/entry_points.txt +0 -0
  47. {rclone_api-1.0.60 → rclone_api-1.0.62}/src/rclone_api.egg-info/requires.txt +0 -0
  48. {rclone_api-1.0.60 → rclone_api-1.0.62}/src/rclone_api.egg-info/top_level.txt +0 -0
  49. {rclone_api-1.0.60 → rclone_api-1.0.62}/test +0 -0
  50. {rclone_api-1.0.60 → rclone_api-1.0.62}/tests/test_cmd_list_files.py +0 -0
  51. {rclone_api-1.0.60 → rclone_api-1.0.62}/tests/test_copy.py +0 -0
  52. {rclone_api-1.0.60 → rclone_api-1.0.62}/tests/test_copy_files.py +0 -0
  53. {rclone_api-1.0.60 → rclone_api-1.0.62}/tests/test_diff.py +0 -0
  54. {rclone_api-1.0.60 → rclone_api-1.0.62}/tests/test_group_files.py +0 -0
  55. {rclone_api-1.0.60 → rclone_api-1.0.62}/tests/test_is_synced.py +0 -0
  56. {rclone_api-1.0.60 → rclone_api-1.0.62}/tests/test_ls.py +0 -0
  57. {rclone_api-1.0.60 → rclone_api-1.0.62}/tests/test_mount.py +0 -0
  58. {rclone_api-1.0.60 → rclone_api-1.0.62}/tests/test_mount_s3.py +0 -0
  59. {rclone_api-1.0.60 → rclone_api-1.0.62}/tests/test_mount_webdav.py +0 -0
  60. {rclone_api-1.0.60 → rclone_api-1.0.62}/tests/test_obscure.py +0 -0
  61. {rclone_api-1.0.60 → rclone_api-1.0.62}/tests/test_remote_control.py +0 -0
  62. {rclone_api-1.0.60 → rclone_api-1.0.62}/tests/test_remotes.py +0 -0
  63. {rclone_api-1.0.60 → rclone_api-1.0.62}/tests/test_serve_webdav.py +0 -0
  64. {rclone_api-1.0.60 → rclone_api-1.0.62}/tests/test_walk.py +0 -0
  65. {rclone_api-1.0.60 → rclone_api-1.0.62}/tox.ini +0 -0
  66. {rclone_api-1.0.60 → rclone_api-1.0.62}/upload_package.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: rclone_api
3
- Version: 1.0.60
3
+ Version: 1.0.62
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.60"
18
+ version = "1.0.62"
19
19
 
20
20
  [tool.setuptools]
21
21
  package-dir = {"" = "src"}
@@ -47,6 +47,15 @@ class ModTimeStrategy(Enum):
47
47
  NO_MODTIME = "no-modtime"
48
48
 
49
49
 
50
+ class DiffOption(Enum):
51
+ COMBINED = "combined"
52
+ MISSING_ON_SRC = "missing-on-src"
53
+ MISSING_ON_DST = "missing-on-dst"
54
+ DIFFER = "differ"
55
+ MATCH = "match"
56
+ ERROR = "error"
57
+
58
+
50
59
  class Rclone:
51
60
  def __init__(
52
61
  self, rclone_conf: Path | Config, rclone_exe: Path | None = None
@@ -190,6 +199,9 @@ class Rclone:
190
199
  max_size: (
191
200
  str | None
192
201
  ) = None, # e. g. "1GB" - see rclone documentation: https://rclone.org/commands/rclone_check/
202
+ diff_option: DiffOption = DiffOption.COMBINED,
203
+ fast_list: bool = True,
204
+ size_only: bool = False,
193
205
  other_args: list[str] | None = None,
194
206
  ) -> Generator[DiffItem, None, None]:
195
207
  """Be extra careful with the src and dst values. If you are off by one
@@ -203,9 +215,13 @@ class Rclone:
203
215
  "1000",
204
216
  "--log-level",
205
217
  "INFO",
206
- "--combined",
218
+ f"--{diff_option.value}",
207
219
  "-",
208
220
  ]
221
+ if size_only:
222
+ cmd += ["--size-only"]
223
+ if fast_list:
224
+ cmd += ["--fast-list"]
209
225
  if min_size:
210
226
  cmd += ["--min-size", min_size]
211
227
  if max_size:
@@ -299,7 +315,7 @@ class Rclone:
299
315
  self,
300
316
  src: str,
301
317
  dst: str,
302
- files: list[str],
318
+ files: list[str] | Path,
303
319
  check: bool | None = None,
304
320
  verbose: bool | None = None,
305
321
  checkers: int | None = None,
@@ -322,7 +338,11 @@ class Rclone:
322
338
  checkers = checkers or 1000
323
339
  transfers = transfers or 32
324
340
  verbose = get_verbose(verbose)
325
- payload: list[str] = convert_to_filestr_list(files)
341
+ payload: list[str] = (
342
+ files
343
+ if isinstance(files, list)
344
+ else [f.strip() for f in files.read_text().splitlines() if f.strip()]
345
+ )
326
346
  if len(payload) == 0:
327
347
  return []
328
348
 
@@ -341,10 +361,26 @@ class Rclone:
341
361
  with ThreadPoolExecutor(max_workers=max_partition_workers) as executor:
342
362
  for common_prefix, files in datalists.items():
343
363
 
344
- def _task(files=files) -> subprocess.CompletedProcess:
364
+ def _task(
365
+ files: list[str] | Path = files,
366
+ ) -> subprocess.CompletedProcess:
345
367
  with TemporaryDirectory() as tmpdir:
346
- include_files_txt = Path(tmpdir) / "include_files.txt"
347
- include_files_txt.write_text("\n".join(files), encoding="utf-8")
368
+ filelist: list[str] = []
369
+ filepath: Path
370
+ if isinstance(files, list):
371
+ include_files_txt = Path(tmpdir) / "include_files.txt"
372
+ include_files_txt.write_text(
373
+ "\n".join(files), encoding="utf-8"
374
+ )
375
+ filelist = list(files)
376
+ filepath = Path(include_files_txt)
377
+ elif isinstance(files, Path):
378
+ filelist = [
379
+ f.strip()
380
+ for f in files.read_text().splitlines()
381
+ if f.strip()
382
+ ]
383
+ filepath = files
348
384
  if common_prefix:
349
385
  src_path = f"{src}/{common_prefix}"
350
386
  dst_path = f"{dst}/{common_prefix}"
@@ -353,8 +389,8 @@ class Rclone:
353
389
  dst_path = dst
354
390
 
355
391
  if verbose:
356
- nfiles = len(files)
357
- files_fqdn = [f" {src_path}/{f}" for f in files]
392
+ nfiles = len(filelist)
393
+ files_fqdn = [f" {src_path}/{f}" for f in filelist]
358
394
  print(f"Copying {nfiles} files:")
359
395
  chunk_size = 100
360
396
  for i in range(0, nfiles, chunk_size):
@@ -370,7 +406,7 @@ class Rclone:
370
406
  src_path,
371
407
  dst_path,
372
408
  "--files-from",
373
- str(include_files_txt),
409
+ str(filepath),
374
410
  "--checkers",
375
411
  str(checkers),
376
412
  "--transfers",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: rclone_api
3
- Version: 1.0.60
3
+ Version: 1.0.62
4
4
  Summary: rclone api in python
5
5
  Home-page: https://github.com/zackees/rclone-api
6
6
  Maintainer: Zachary Vorhies
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