rclone-api 1.0.96__tar.gz → 1.0.98__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.96 → rclone_api-1.0.98}/PKG-INFO +1 -1
  2. {rclone_api-1.0.96 → rclone_api-1.0.98}/pyproject.toml +1 -1
  3. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/cmd/copy_large_s3.py +4 -1
  4. rclone_api-1.0.98/src/rclone_api/experimental/flags.py +93 -0
  5. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/rclone.py +25 -11
  6. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api.egg-info/PKG-INFO +1 -1
  7. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api.egg-info/SOURCES.txt +1 -0
  8. {rclone_api-1.0.96 → rclone_api-1.0.98}/.aiderignore +0 -0
  9. {rclone_api-1.0.96 → rclone_api-1.0.98}/.github/workflows/lint.yml +0 -0
  10. {rclone_api-1.0.96 → rclone_api-1.0.98}/.github/workflows/push_macos.yml +0 -0
  11. {rclone_api-1.0.96 → rclone_api-1.0.98}/.github/workflows/push_ubuntu.yml +0 -0
  12. {rclone_api-1.0.96 → rclone_api-1.0.98}/.github/workflows/push_win.yml +0 -0
  13. {rclone_api-1.0.96 → rclone_api-1.0.98}/.gitignore +0 -0
  14. {rclone_api-1.0.96 → rclone_api-1.0.98}/.pylintrc +0 -0
  15. {rclone_api-1.0.96 → rclone_api-1.0.98}/.vscode/launch.json +0 -0
  16. {rclone_api-1.0.96 → rclone_api-1.0.98}/.vscode/settings.json +0 -0
  17. {rclone_api-1.0.96 → rclone_api-1.0.98}/.vscode/tasks.json +0 -0
  18. {rclone_api-1.0.96 → rclone_api-1.0.98}/LICENSE +0 -0
  19. {rclone_api-1.0.96 → rclone_api-1.0.98}/MANIFEST.in +0 -0
  20. {rclone_api-1.0.96 → rclone_api-1.0.98}/README.md +0 -0
  21. {rclone_api-1.0.96 → rclone_api-1.0.98}/clean +0 -0
  22. {rclone_api-1.0.96 → rclone_api-1.0.98}/install +0 -0
  23. {rclone_api-1.0.96 → rclone_api-1.0.98}/lint +0 -0
  24. {rclone_api-1.0.96 → rclone_api-1.0.98}/requirements.testing.txt +0 -0
  25. {rclone_api-1.0.96 → rclone_api-1.0.98}/setup.cfg +0 -0
  26. {rclone_api-1.0.96 → rclone_api-1.0.98}/setup.py +0 -0
  27. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/__init__.py +0 -0
  28. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/assets/example.txt +0 -0
  29. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/cli.py +0 -0
  30. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/cmd/list_files.py +0 -0
  31. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/completed_process.py +0 -0
  32. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/config.py +0 -0
  33. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/convert.py +0 -0
  34. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/deprecated.py +0 -0
  35. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/diff.py +0 -0
  36. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/dir.py +0 -0
  37. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/dir_listing.py +0 -0
  38. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/exec.py +0 -0
  39. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/file.py +0 -0
  40. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/filelist.py +0 -0
  41. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/group_files.py +0 -0
  42. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/process.py +0 -0
  43. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/remote.py +0 -0
  44. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/rpath.py +0 -0
  45. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/s3/api.py +0 -0
  46. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/s3/basic_ops.py +0 -0
  47. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/s3/chunk_uploader.py +0 -0
  48. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/s3/create.py +0 -0
  49. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/s3/types.py +0 -0
  50. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/scan_missing_folders.py +0 -0
  51. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/types.py +0 -0
  52. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/util.py +0 -0
  53. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api/walk.py +0 -0
  54. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api.egg-info/dependency_links.txt +0 -0
  55. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api.egg-info/entry_points.txt +0 -0
  56. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api.egg-info/requires.txt +0 -0
  57. {rclone_api-1.0.96 → rclone_api-1.0.98}/src/rclone_api.egg-info/top_level.txt +0 -0
  58. {rclone_api-1.0.96 → rclone_api-1.0.98}/test +0 -0
  59. {rclone_api-1.0.96 → rclone_api-1.0.98}/tests/archive/test_paramiko.py.disabled +0 -0
  60. {rclone_api-1.0.96 → rclone_api-1.0.98}/tests/test_cmd_list_files.py +0 -0
  61. {rclone_api-1.0.96 → rclone_api-1.0.98}/tests/test_copy.py +0 -0
  62. {rclone_api-1.0.96 → rclone_api-1.0.98}/tests/test_copy_files.py +0 -0
  63. {rclone_api-1.0.96 → rclone_api-1.0.98}/tests/test_diff.py +0 -0
  64. {rclone_api-1.0.96 → rclone_api-1.0.98}/tests/test_group_files.py +0 -0
  65. {rclone_api-1.0.96 → rclone_api-1.0.98}/tests/test_is_synced.py +0 -0
  66. {rclone_api-1.0.96 → rclone_api-1.0.98}/tests/test_ls.py +0 -0
  67. {rclone_api-1.0.96 → rclone_api-1.0.98}/tests/test_mount.py +0 -0
  68. {rclone_api-1.0.96 → rclone_api-1.0.98}/tests/test_mount_s3.py +0 -0
  69. {rclone_api-1.0.96 → rclone_api-1.0.98}/tests/test_mount_webdav.py +0 -0
  70. {rclone_api-1.0.96 → rclone_api-1.0.98}/tests/test_mounted_ranged_download.py +0 -0
  71. {rclone_api-1.0.96 → rclone_api-1.0.98}/tests/test_obscure.py +0 -0
  72. {rclone_api-1.0.96 → rclone_api-1.0.98}/tests/test_rclone_config.py +0 -0
  73. {rclone_api-1.0.96 → rclone_api-1.0.98}/tests/test_remote_control.py +0 -0
  74. {rclone_api-1.0.96 → rclone_api-1.0.98}/tests/test_remotes.py +0 -0
  75. {rclone_api-1.0.96 → rclone_api-1.0.98}/tests/test_s3.py +0 -0
  76. {rclone_api-1.0.96 → rclone_api-1.0.98}/tests/test_scan_missing_folders.py +0 -0
  77. {rclone_api-1.0.96 → rclone_api-1.0.98}/tests/test_size_files.py +0 -0
  78. {rclone_api-1.0.96 → rclone_api-1.0.98}/tests/test_walk.py +0 -0
  79. {rclone_api-1.0.96 → rclone_api-1.0.98}/tox.ini +0 -0
  80. {rclone_api-1.0.96 → rclone_api-1.0.98}/upload_package.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: rclone_api
3
- Version: 1.0.96
3
+ Version: 1.0.98
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.96"
24
+ version = "1.0.98"
25
25
 
26
26
  [tool.setuptools]
27
27
  package-dir = {"" = "src"}
@@ -16,6 +16,7 @@ class Args:
16
16
  read_concurrent_chunks: int
17
17
  retries: int
18
18
  save_state_json: Path
19
+ verbose: bool
19
20
 
20
21
 
21
22
  def list_files(rclone: Rclone, path: str):
@@ -29,6 +30,7 @@ def _parse_args() -> Args:
29
30
  parser = argparse.ArgumentParser(description="List files in a remote path.")
30
31
  parser.add_argument("src", help="File to copy")
31
32
  parser.add_argument("dst", help="Destination file")
33
+ parser.add_argument("-v", "--verbose", help="Verbose output", action="store_true")
32
34
  parser.add_argument(
33
35
  "--config", help="Path to rclone config file", type=Path, required=True
34
36
  )
@@ -58,6 +60,7 @@ def _parse_args() -> Args:
58
60
  read_concurrent_chunks=args.read_concurrent_chunks,
59
61
  retries=args.retries,
60
62
  save_state_json=args.resumable_json,
63
+ verbose=args.verbose,
61
64
  )
62
65
  return out
63
66
 
@@ -73,7 +76,7 @@ def main() -> int:
73
76
  concurrent_chunks=args.read_concurrent_chunks,
74
77
  retries=args.retries,
75
78
  save_state_json=args.save_state_json,
76
- verbose=True,
79
+ verbose=args.verbose,
77
80
  )
78
81
  print(rslt)
79
82
  return 0
@@ -0,0 +1,93 @@
1
+ from dataclasses import dataclass, field
2
+
3
+
4
+ @dataclass
5
+ class CopyFlags:
6
+ check_first: bool = False
7
+ checksum: bool = False
8
+ ignore_existing: bool = False
9
+ ignore_times: bool = False
10
+ immutable: bool = False
11
+ inplace: bool = False
12
+ links: bool = False
13
+ metadata: bool = False
14
+
15
+
16
+ @dataclass
17
+ class SyncFlags:
18
+ backup_dir: str | None = None
19
+ delete_after: bool = False
20
+ delete_before: bool = False
21
+ delete_during: bool = False
22
+ ignore_errors: bool = False
23
+ track_renames: bool = False
24
+
25
+
26
+ @dataclass
27
+ class ImportantFlags:
28
+ dry_run: bool = False
29
+ interactive: bool = False
30
+ verbose: int = 0 # 0 = default, 1 = -v, 2 = -vv, etc.
31
+
32
+
33
+ @dataclass
34
+ class NetworkingFlags:
35
+ bwlimit: str | None = None
36
+ timeout: str | None = "5m0s"
37
+ tpslimit: float | None = None
38
+ user_agent: str | None = "rclone/v1.69.1"
39
+
40
+
41
+ @dataclass
42
+ class PerformanceFlags:
43
+ buffer_size: str | None = "16MiB"
44
+ checkers: int = 8
45
+ transfers: int = 4
46
+
47
+
48
+ @dataclass
49
+ class ConfigFlags:
50
+ config: str | None = None
51
+ ask_password: bool = True
52
+ auto_confirm: bool = False
53
+
54
+
55
+ @dataclass
56
+ class DebuggingFlags:
57
+ cpuprofile: str | None = None
58
+ memprofile: str | None = None
59
+
60
+
61
+ @dataclass
62
+ class FilterFlags:
63
+ exclude: list[str] = field(default_factory=list)
64
+ include: list[str] = field(default_factory=list)
65
+ max_age: str | None = None
66
+ min_size: str | None = None
67
+
68
+
69
+ @dataclass
70
+ class ListingFlags:
71
+ fast_list: bool = False
72
+
73
+
74
+ @dataclass
75
+ class LoggingFlags:
76
+ log_file: str | None = None
77
+ log_level: str = "NOTICE" # Options: DEBUG, INFO, NOTICE, ERROR
78
+ stats: str | None = "1m0s"
79
+ progress: bool = False
80
+
81
+
82
+ @dataclass
83
+ class Flags:
84
+ copy: CopyFlags | None = None
85
+ sync: SyncFlags | None = None
86
+ important: ImportantFlags | None = None
87
+ networking: NetworkingFlags | None = None
88
+ performance: PerformanceFlags | None = None
89
+ config: ConfigFlags | None = None
90
+ debugging: DebuggingFlags | None = None
91
+ filter: FilterFlags | None = None
92
+ listing: ListingFlags | None = None
93
+ logging: LoggingFlags | None = None
@@ -893,6 +893,7 @@ class Rclone:
893
893
  ) -> Generator[Process, None, None]:
894
894
  """Like mount, but can be used in a context manager."""
895
895
  error_happened = False
896
+ verbose = get_verbose(verbose)
896
897
  proc = self.mount(
897
898
  src,
898
899
  outdir,
@@ -918,19 +919,32 @@ class Rclone:
918
919
  if outdir.exists():
919
920
  print(f"{outdir} mount still exists, attempting to remove")
920
921
  if not _IS_WINDOWS:
921
- # attempt
922
- os.system(f"fusermount -u {outdir}")
923
- os.system(f"umount {outdir}")
922
+ def exec(cmd: str) -> int:
923
+ if verbose:
924
+ print(f"Executing: {cmd}")
925
+ rtn = os.system(cmd)
926
+ if rtn != 0 and verbose:
927
+ print(f"Failed to execute: {cmd}")
928
+ return rtn
929
+
930
+ exec(f"fusermount -u {outdir}")
931
+ exec(f"umount {outdir}")
924
932
  time.sleep(2)
925
933
  if outdir.exists():
926
- is_empty = not list(outdir.iterdir())
927
- if not is_empty:
928
- warnings.warn(f"Failed to unmount {outdir}")
929
- else:
930
- try:
931
- outdir.rmdir()
932
- except Exception as e:
933
- warnings.warn(f"Failed to remove {outdir}: {e}")
934
+ is_empty = True
935
+ try:
936
+ is_empty = not list(outdir.iterdir())
937
+ if not is_empty:
938
+ warnings.warn(f"Failed to unmount {outdir}")
939
+ else:
940
+ try:
941
+ outdir.rmdir()
942
+ except Exception as e:
943
+ warnings.warn(f"Failed to remove {outdir}: {e}")
944
+ except Exception as e:
945
+ warnings.warn(
946
+ f"Failed during mount cleanup of {outdir}: because {e}"
947
+ )
934
948
 
935
949
  @deprecated("mount")
936
950
  def mount_webdav(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: rclone_api
3
- Version: 1.0.96
3
+ Version: 1.0.98
4
4
  Summary: rclone api in python
5
5
  Home-page: https://github.com/zackees/rclone-api
6
6
  License: BSD 3-Clause License
@@ -50,6 +50,7 @@ src/rclone_api.egg-info/top_level.txt
50
50
  src/rclone_api/assets/example.txt
51
51
  src/rclone_api/cmd/copy_large_s3.py
52
52
  src/rclone_api/cmd/list_files.py
53
+ src/rclone_api/experimental/flags.py
53
54
  src/rclone_api/s3/api.py
54
55
  src/rclone_api/s3/basic_ops.py
55
56
  src/rclone_api/s3/chunk_uploader.py
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