rclone-api 1.1.24__tar.gz → 1.1.25__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.
- {rclone_api-1.1.24 → rclone_api-1.1.25}/PKG-INFO +1 -1
- {rclone_api-1.1.24 → rclone_api-1.1.25}/pyproject.toml +1 -1
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/types.py +20 -11
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api.egg-info/PKG-INFO +1 -1
- {rclone_api-1.1.24 → rclone_api-1.1.25}/tests/test_size_suffix.py +4 -1
- {rclone_api-1.1.24 → rclone_api-1.1.25}/.aiderignore +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/.github/workflows/lint.yml +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/.github/workflows/push_macos.yml +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/.github/workflows/push_ubuntu.yml +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/.github/workflows/push_win.yml +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/.gitignore +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/.pylintrc +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/.vscode/launch.json +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/.vscode/settings.json +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/.vscode/tasks.json +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/LICENSE +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/MANIFEST.in +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/README.md +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/clean +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/install +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/lint +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/requirements.testing.txt +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/setup.cfg +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/setup.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/__init__.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/assets/example.txt +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/cli.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/cmd/copy_large_s3.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/cmd/list_files.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/completed_process.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/config.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/convert.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/deprecated.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/diff.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/dir.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/dir_listing.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/exec.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/experimental/flags.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/experimental/flags_base.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/file.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/filelist.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/group_files.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/mount.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/process.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/rclone.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/remote.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/rpath.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/s3/api.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/s3/basic_ops.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/s3/chunk_file.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/s3/chunk_types.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/s3/chunk_uploader.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/s3/create.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/s3/types.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/scan_missing_folders.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/util.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api/walk.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api.egg-info/SOURCES.txt +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api.egg-info/dependency_links.txt +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api.egg-info/entry_points.txt +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api.egg-info/requires.txt +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/src/rclone_api.egg-info/top_level.txt +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/test +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/tests/archive/test_paramiko.py.disabled +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/tests/test_cmd_list_files.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/tests/test_copy.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/tests/test_copy_file_resumable_s3.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/tests/test_copy_files.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/tests/test_diff.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/tests/test_group_files.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/tests/test_is_synced.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/tests/test_ls.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/tests/test_mount.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/tests/test_mount_s3.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/tests/test_obscure.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/tests/test_rclone_config.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/tests/test_remote_control.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/tests/test_remotes.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/tests/test_s3.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/tests/test_scan_missing_folders.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/tests/test_size_files.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/tests/test_walk.py +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/tox.ini +0 -0
- {rclone_api-1.1.24 → rclone_api-1.1.25}/upload_package.sh +0 -0
|
@@ -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
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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)
|
|
@@ -17,9 +17,12 @@ class RcloneSuffixSize(unittest.TestCase):
|
|
|
17
17
|
self.assertEqual(size_int, 16 * 1024 * 1024)
|
|
18
18
|
|
|
19
19
|
def test_float_suffix(self) -> None:
|
|
20
|
-
size_suffix = SizeSuffix("16.
|
|
20
|
+
size_suffix = SizeSuffix("16.5M")
|
|
21
21
|
size_int = size_suffix.as_int()
|
|
22
22
|
self.assertEqual(size_int, int(16.5 * 1024 * 1024))
|
|
23
|
+
# now assert that the string value is the same as the input
|
|
24
|
+
out_str = str(size_suffix)
|
|
25
|
+
self.assertEqual(out_str, "16.5M")
|
|
23
26
|
|
|
24
27
|
|
|
25
28
|
if __name__ == "__main__":
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|