rclone-api 1.0.96__py2.py3-none-any.whl → 1.0.98__py2.py3-none-any.whl

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.
@@ -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
rclone_api/rclone.py CHANGED
@@ -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
@@ -12,7 +12,7 @@ rclone_api/file.py,sha256=EP5yT2dZ0H2p7CY5n0y5k5pHhIliV25pm8KOwBklUTk,1863
12
12
  rclone_api/filelist.py,sha256=xbiusvNgaB_b_kQOZoHMJJxn6TWGtPrWd2J042BI28o,767
13
13
  rclone_api/group_files.py,sha256=H92xPW9lQnbNw5KbtZCl00bD6iRh9yRbCuxku4j_3dg,8036
14
14
  rclone_api/process.py,sha256=RrMfTe0bndmJ6gBK67ioqNvCstJ8aTC8RlGX1XBLlcw,4191
15
- rclone_api/rclone.py,sha256=RTMvOH93kAiOmWifHt0P9tET9nLGZWam73aB-dMkjWI,42852
15
+ rclone_api/rclone.py,sha256=eSQNNKS8tO0WHvbMKT_Ov1IIhUxsUy8L0KTOoPpVW-Y,43539
16
16
  rclone_api/remote.py,sha256=O9WDUFQy9f6oT1HdUbTixK2eg0xtBBm8k4Xl6aa6K00,431
17
17
  rclone_api/rpath.py,sha256=8ZA_1wxWtskwcy0I8V2VbjKDmzPkiWd8Q2JQSvh-sYE,2586
18
18
  rclone_api/scan_missing_folders.py,sha256=Kulca2Q6WZodt00ATFHkmqqInuoPvBkhTcS9703y6po,4740
@@ -20,16 +20,17 @@ rclone_api/types.py,sha256=NC3e78aXCx-sEQ-FqEaC9KzaJDdJhJrKa4Nwum_-Db0,563
20
20
  rclone_api/util.py,sha256=efck9W0rw5wfeRI35iiEz4dy2cMkNpVXrQ9zzynkBks,5185
21
21
  rclone_api/walk.py,sha256=-54NVE8EJcCstwDoaC_UtHm73R2HrZwVwQmsnv55xNU,3369
22
22
  rclone_api/assets/example.txt,sha256=lTBovRjiz0_TgtAtbA1C5hNi2ffbqnNPqkKg6UiKCT8,54
23
- rclone_api/cmd/copy_large_s3.py,sha256=b0tSy4cWTyAYu-d0xjuFj5nbJIwnfeOV8e-S7A4rSVI,2712
23
+ rclone_api/cmd/copy_large_s3.py,sha256=33KFvCrh5uk-rdRtkREdEs2WNwxGgTdCAWDLCE4dm0A,2855
24
24
  rclone_api/cmd/list_files.py,sha256=x8FHODEilwKqwdiU1jdkeJbLwOqUkUQuDWPo2u_zpf0,741
25
+ rclone_api/experimental/flags.py,sha256=7sJyRU1vh5DgSdpFiv0gom2Aaw1-OP2v4PL5OXEruUo,2083
25
26
  rclone_api/s3/api.py,sha256=VstlaEnBjO2JDQuCRLdTfUGvQLbfshlXXhAzimFv4Vc,3763
26
27
  rclone_api/s3/basic_ops.py,sha256=hK3366xhVEzEcjz9Gk_8lFx6MRceAk72cax6mUrr6ko,2104
27
28
  rclone_api/s3/chunk_uploader.py,sha256=Wcm4h_A6ORaJvT9P9qSeknbJYch22RKZ4FGo1iePlAw,17385
28
29
  rclone_api/s3/create.py,sha256=SK3IGHZwsSkoG4Zb4NCphcVg9_f7VifDKng-tExMS2s,3088
29
30
  rclone_api/s3/types.py,sha256=81_3jwg6MGIxC-GxL-6zANzKO6au9C0BWvAqRyODxOM,1361
30
- rclone_api-1.0.96.dist-info/LICENSE,sha256=b6pOoifSXiUaz_lDS84vWlG3fr4yUKwB8fzkrH9R8bQ,1064
31
- rclone_api-1.0.96.dist-info/METADATA,sha256=WBLngFsHgInvzEL57OdATG4I0Ht_pUmYCAT1BoMN5O0,4479
32
- rclone_api-1.0.96.dist-info/WHEEL,sha256=rF4EZyR2XVS6irmOHQIJx2SUqXLZKRMUrjsg8UwN-XQ,109
33
- rclone_api-1.0.96.dist-info/entry_points.txt,sha256=6eNqTRXKhVf8CpWNjXiOa_0Du9tHiW_HD2iQSXRsUg8,132
34
- rclone_api-1.0.96.dist-info/top_level.txt,sha256=EvZ7uuruUpe9RiUyEp25d1Keq7PWYNT0O_-mr8FCG5g,11
35
- rclone_api-1.0.96.dist-info/RECORD,,
31
+ rclone_api-1.0.98.dist-info/LICENSE,sha256=b6pOoifSXiUaz_lDS84vWlG3fr4yUKwB8fzkrH9R8bQ,1064
32
+ rclone_api-1.0.98.dist-info/METADATA,sha256=N3rINQp548v5kGCXCnQnS36fdiQME8ifJk4gAv2GaGU,4479
33
+ rclone_api-1.0.98.dist-info/WHEEL,sha256=rF4EZyR2XVS6irmOHQIJx2SUqXLZKRMUrjsg8UwN-XQ,109
34
+ rclone_api-1.0.98.dist-info/entry_points.txt,sha256=6eNqTRXKhVf8CpWNjXiOa_0Du9tHiW_HD2iQSXRsUg8,132
35
+ rclone_api-1.0.98.dist-info/top_level.txt,sha256=EvZ7uuruUpe9RiUyEp25d1Keq7PWYNT0O_-mr8FCG5g,11
36
+ rclone_api-1.0.98.dist-info/RECORD,,