rclone-api 1.1.24__py2.py3-none-any.whl → 1.1.26__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.
@@ -13,7 +13,7 @@ class Args:
13
13
  src: str
14
14
  dst: str
15
15
  chunk_size: SizeSuffix
16
- threads: int
16
+ read_threads: int
17
17
  write_threads: int
18
18
  retries: int
19
19
  save_state_json: Path
@@ -37,19 +37,19 @@ def _parse_args() -> Args:
37
37
  )
38
38
  parser.add_argument(
39
39
  "--chunk-size",
40
- help="Chunk size that will be read and uploaded in in SizeSuffix (i.e. 128M = 128 megabytes) form",
40
+ help="Chunk size that will be read and uploaded in SizeSuffix form, too low or too high will cause issues",
41
41
  type=str,
42
- default="64MB",
42
+ default="64MB", # if this is too low or too high an s3 service
43
43
  )
44
44
  parser.add_argument(
45
- "--threads",
46
- help="Number of threads to use per chunk",
45
+ "--read-threads",
46
+ help="Number of concurrent read threads per chunk, only one chunk will be read at a time",
47
47
  type=int,
48
- default=8,
48
+ default=32,
49
49
  )
50
50
  parser.add_argument(
51
51
  "--write-threads",
52
- help="Max number of chunks to upload in parallel to the destination",
52
+ help="Max number of chunks to upload in parallel to the destination, each chunk is uploaded in a separate thread",
53
53
  type=int,
54
54
  default=64,
55
55
  )
@@ -67,7 +67,7 @@ def _parse_args() -> Args:
67
67
  src=args.src,
68
68
  dst=args.dst,
69
69
  chunk_size=SizeSuffix(args.chunk_size),
70
- threads=args.threads,
70
+ read_threads=args.read_threads,
71
71
  write_threads=args.write_threads,
72
72
  retries=args.retries,
73
73
  save_state_json=args.resume_json,
@@ -85,11 +85,8 @@ def main() -> int:
85
85
  src=args.src,
86
86
  dst=args.dst,
87
87
  chunk_size=args.chunk_size,
88
- read_threads=args.threads,
88
+ read_threads=args.read_threads,
89
89
  write_threads=args.write_threads,
90
- # vfs_read_chunk_size=unit_chunk,
91
- # vfs_read_chunk_size_limit=args.chunk_size,
92
- # vfs_read_chunk_streams=args.threads,
93
90
  retries=args.retries,
94
91
  save_state_json=args.save_state_json,
95
92
  verbose=args.verbose,
rclone_api/types.py CHANGED
@@ -39,17 +39,26 @@ class SizeResult:
39
39
  def _to_size_suffix(size: int) -> str:
40
40
  if size < 1024:
41
41
  return f"{size}B"
42
- if size < 1024 * 1024:
43
- return f"{size // 1024}K"
44
- if size < 1024 * 1024 * 1024:
45
- return f"{size // (1024 * 1024)}M"
46
- if size < 1024 * 1024 * 1024 * 1024:
47
- return f"{size // (1024 * 1024 * 1024)}G"
48
- if size < 1024 * 1024 * 1024 * 1024 * 1024:
49
- return f"{size // (1024 * 1024 * 1024 * 1024)}T"
50
- if size < 1024 * 1024 * 1024 * 1024 * 1024 * 1024:
51
- return f"{size // (1024 * 1024 * 1024 * 1024 * 1024)}P"
52
- raise ValueError(f"Invalid size: {size}")
42
+ elif size < 1024**2:
43
+ val = size / 1024
44
+ unit = "K"
45
+ elif size < 1024**3:
46
+ val = size / (1024**2)
47
+ unit = "M"
48
+ elif size < 1024**4:
49
+ val = size / (1024**3)
50
+ unit = "G"
51
+ elif size < 1024**5:
52
+ val = size / (1024**4)
53
+ unit = "T"
54
+ elif size < 1024**6:
55
+ val = size / (1024**5)
56
+ unit = "P"
57
+ else:
58
+ raise ValueError(f"Invalid size: {size}")
59
+
60
+ # If the float is an integer, drop the decimal, otherwise format with one decimal.
61
+ return f"{int(val) if val.is_integer() else f'{val:.1f}'}{unit}"
53
62
 
54
63
 
55
64
  # Update regex to allow decimals (e.g., 16.5MB)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: rclone_api
3
- Version: 1.1.24
3
+ Version: 1.1.26
4
4
  Summary: rclone api in python
5
5
  Home-page: https://github.com/zackees/rclone-api
6
6
  License: BSD 3-Clause License
@@ -17,11 +17,11 @@ rclone_api/rclone.py,sha256=gszjs6MJFoT5tKmBB06sd0OjbtZZAtRdjvha4RrE-lI,40252
17
17
  rclone_api/remote.py,sha256=O9WDUFQy9f6oT1HdUbTixK2eg0xtBBm8k4Xl6aa6K00,431
18
18
  rclone_api/rpath.py,sha256=8ZA_1wxWtskwcy0I8V2VbjKDmzPkiWd8Q2JQSvh-sYE,2586
19
19
  rclone_api/scan_missing_folders.py,sha256=Kulca2Q6WZodt00ATFHkmqqInuoPvBkhTcS9703y6po,4740
20
- rclone_api/types.py,sha256=zfTb0iM6mhfqgaYS6j6T0NIOA4e9GymNOXLPhVELe4A,3853
20
+ rclone_api/types.py,sha256=-jb8_cU-vTw7oFRcjUiMhXlskavp26Q67EBmENxjsPU,3941
21
21
  rclone_api/util.py,sha256=_Z-GUMVXnHYOGdo2dy2ie2P5fGgyg8KdGjHKicx68Ko,4573
22
22
  rclone_api/walk.py,sha256=-54NVE8EJcCstwDoaC_UtHm73R2HrZwVwQmsnv55xNU,3369
23
23
  rclone_api/assets/example.txt,sha256=lTBovRjiz0_TgtAtbA1C5hNi2ffbqnNPqkKg6UiKCT8,54
24
- rclone_api/cmd/copy_large_s3.py,sha256=n8DyKVl9oIZEQX6syi0GloBXuZG33jOapKE9MmfwdiE,3356
24
+ rclone_api/cmd/copy_large_s3.py,sha256=-rfedi-ZzPUdCSP8ai9LRL0y1xVkvN-viQQlk8HVUWw,3389
25
25
  rclone_api/cmd/list_files.py,sha256=x8FHODEilwKqwdiU1jdkeJbLwOqUkUQuDWPo2u_zpf0,741
26
26
  rclone_api/experimental/flags.py,sha256=qCVD--fSTmzlk9hloRLr0q9elzAOFzPsvVpKM3aB1Mk,2739
27
27
  rclone_api/experimental/flags_base.py,sha256=ajU_czkTcAxXYU-SlmiCfHY7aCQGHvpCLqJ-Z8uZLk0,2102
@@ -32,9 +32,9 @@ rclone_api/s3/chunk_types.py,sha256=LbXayXY1KgVU1LkdbASD_BQ7TpVpwVnzMjtz--8LBaE,
32
32
  rclone_api/s3/chunk_uploader.py,sha256=1jQAdk35Fa9Tcq36bS65262cs7AcNG2DAFQ-NdYlWSw,9961
33
33
  rclone_api/s3/create.py,sha256=wgfkapv_j904CfKuWyiBIWJVxfAx_ftemFSUV14aT68,3149
34
34
  rclone_api/s3/types.py,sha256=yBnJ38Tjk6RlydJ-sqZ7DSfyFloy8KDYJ0mv3vlOzLE,1388
35
- rclone_api-1.1.24.dist-info/LICENSE,sha256=b6pOoifSXiUaz_lDS84vWlG3fr4yUKwB8fzkrH9R8bQ,1064
36
- rclone_api-1.1.24.dist-info/METADATA,sha256=XQsuE53luxsOZrJKm1_8D6HOW09ncxhAxkyXwwnGk-s,4514
37
- rclone_api-1.1.24.dist-info/WHEEL,sha256=rF4EZyR2XVS6irmOHQIJx2SUqXLZKRMUrjsg8UwN-XQ,109
38
- rclone_api-1.1.24.dist-info/entry_points.txt,sha256=6eNqTRXKhVf8CpWNjXiOa_0Du9tHiW_HD2iQSXRsUg8,132
39
- rclone_api-1.1.24.dist-info/top_level.txt,sha256=EvZ7uuruUpe9RiUyEp25d1Keq7PWYNT0O_-mr8FCG5g,11
40
- rclone_api-1.1.24.dist-info/RECORD,,
35
+ rclone_api-1.1.26.dist-info/LICENSE,sha256=b6pOoifSXiUaz_lDS84vWlG3fr4yUKwB8fzkrH9R8bQ,1064
36
+ rclone_api-1.1.26.dist-info/METADATA,sha256=XP4PVPRFpIgNBCDE-dj1s2Ah4Hw5zBAo-AjAQKwu-f4,4514
37
+ rclone_api-1.1.26.dist-info/WHEEL,sha256=rF4EZyR2XVS6irmOHQIJx2SUqXLZKRMUrjsg8UwN-XQ,109
38
+ rclone_api-1.1.26.dist-info/entry_points.txt,sha256=6eNqTRXKhVf8CpWNjXiOa_0Du9tHiW_HD2iQSXRsUg8,132
39
+ rclone_api-1.1.26.dist-info/top_level.txt,sha256=EvZ7uuruUpe9RiUyEp25d1Keq7PWYNT0O_-mr8FCG5g,11
40
+ rclone_api-1.1.26.dist-info/RECORD,,