rclone-api 1.1.54__tar.gz → 1.1.56__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.54 → rclone_api-1.1.56}/PKG-INFO +1 -1
- {rclone_api-1.1.54 → rclone_api-1.1.56}/pyproject.toml +1 -1
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/profile/mount_copy_bytes.py +23 -17
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api.egg-info/PKG-INFO +1 -1
- {rclone_api-1.1.54 → rclone_api-1.1.56}/.aiderignore +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/.github/workflows/lint.yml +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/.github/workflows/push_macos.yml +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/.github/workflows/push_ubuntu.yml +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/.github/workflows/push_win.yml +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/.gitignore +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/.pylintrc +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/.vscode/launch.json +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/.vscode/settings.json +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/.vscode/tasks.json +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/LICENSE +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/MANIFEST.in +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/README.md +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/clean +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/install +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/lint +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/requirements.testing.txt +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/setup.cfg +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/setup.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/__init__.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/assets/example.txt +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/cli.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/cmd/copy_large_s3.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/cmd/list_files.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/completed_process.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/config.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/convert.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/deprecated.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/diff.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/dir.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/dir_listing.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/exec.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/experimental/flags.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/experimental/flags_base.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/file.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/filelist.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/group_files.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/mount.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/process.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/rclone.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/remote.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/rpath.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/s3/api.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/s3/basic_ops.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/s3/chunk_file.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/s3/chunk_types.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/s3/create.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/s3/types.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/s3/upload_file_multipart.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/scan_missing_folders.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/types.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/util.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api/walk.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api.egg-info/SOURCES.txt +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api.egg-info/dependency_links.txt +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api.egg-info/entry_points.txt +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api.egg-info/requires.txt +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/src/rclone_api.egg-info/top_level.txt +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/test +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/tests/archive/test_paramiko.py.disabled +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/tests/test_cmd_list_files.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/tests/test_copy.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/tests/test_copy_bytes.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/tests/test_copy_file_resumable_s3.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/tests/test_copy_files.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/tests/test_diff.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/tests/test_group_files.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/tests/test_is_synced.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/tests/test_ls.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/tests/test_mount.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/tests/test_mount_s3.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/tests/test_obscure.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/tests/test_rclone_config.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/tests/test_remote_control.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/tests/test_remotes.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/tests/test_s3.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/tests/test_scan_missing_folders.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/tests/test_size_files.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/tests/test_size_suffix.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/tests/test_walk.py +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/tox.ini +0 -0
- {rclone_api-1.1.54 → rclone_api-1.1.56}/upload_package.sh +0 -0
|
@@ -6,7 +6,7 @@ import argparse
|
|
|
6
6
|
import os
|
|
7
7
|
import shutil
|
|
8
8
|
import time
|
|
9
|
-
from concurrent.futures import ThreadPoolExecutor
|
|
9
|
+
from concurrent.futures import ThreadPoolExecutor, Future
|
|
10
10
|
from dataclasses import dataclass
|
|
11
11
|
from pathlib import Path
|
|
12
12
|
|
|
@@ -138,8 +138,8 @@ def _run_profile(
|
|
|
138
138
|
bytes_sent = net_io_end.bytes_sent - net_io_start.bytes_sent
|
|
139
139
|
bytes_recv = net_io_end.bytes_recv - net_io_start.bytes_recv
|
|
140
140
|
packets_sent = net_io_end.packets_sent - net_io_start.packets_sent
|
|
141
|
-
efficiency = size / (bytes_recv)
|
|
142
|
-
efficiency_100 = efficiency
|
|
141
|
+
efficiency = size.as_int() / (bytes_recv)
|
|
142
|
+
efficiency_100 = efficiency * 100
|
|
143
143
|
efficiency_str = f"{efficiency_100:.2f}"
|
|
144
144
|
|
|
145
145
|
bytes_send_suffix = SizeSuffix(bytes_sent)
|
|
@@ -155,7 +155,7 @@ def _run_profile(
|
|
|
155
155
|
print(f"Time: {diff:.1f} seconds")
|
|
156
156
|
|
|
157
157
|
|
|
158
|
-
def test_profile_copy_bytes(args: Args, rclone: Rclone, offset: SizeSuffix) -> None:
|
|
158
|
+
def test_profile_copy_bytes(args: Args, rclone: Rclone, offset: SizeSuffix, transfer_list: list[int] | None, mount_root_path: Path) -> None:
|
|
159
159
|
|
|
160
160
|
sizes = [
|
|
161
161
|
1024 * 1024 * 1,
|
|
@@ -169,15 +169,13 @@ def test_profile_copy_bytes(args: Args, rclone: Rclone, offset: SizeSuffix) -> N
|
|
|
169
169
|
# 1024 * 1024 * 256,
|
|
170
170
|
]
|
|
171
171
|
# transfer_list = [1, 2, 4, 8, 16]
|
|
172
|
-
transfer_list = [1, 2, 4]
|
|
172
|
+
transfer_list = transfer_list or [1, 2, 4]
|
|
173
173
|
|
|
174
174
|
# src_file = "dst:rclone-api-unit-test/zachs_video/internaly_ai_alignment.mp4"
|
|
175
175
|
# sftp mount
|
|
176
176
|
src_file = "src:aa_misc_data/aa_misc_data/world_lending_library_2024_11.tar.zst"
|
|
177
177
|
|
|
178
|
-
|
|
179
|
-
if mount_root_path.exists():
|
|
180
|
-
shutil.rmtree(mount_root_path)
|
|
178
|
+
|
|
181
179
|
|
|
182
180
|
for size in sizes:
|
|
183
181
|
for transfers in transfer_list:
|
|
@@ -210,16 +208,24 @@ def main() -> None:
|
|
|
210
208
|
print(creds)
|
|
211
209
|
rclone = Rclone(config)
|
|
212
210
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
def task(offset: SizeSuffix, args=args, rclone=rclone):
|
|
218
|
-
return test_profile_copy_bytes(args, rclone, offset)
|
|
211
|
+
mount_root_path = Path("rclone_logs") / "mount"
|
|
212
|
+
if mount_root_path.exists():
|
|
213
|
+
shutil.rmtree(mount_root_path)
|
|
219
214
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
215
|
+
args = _parse_args()
|
|
216
|
+
transfer_list = [1]
|
|
217
|
+
parallel_workers = 4
|
|
218
|
+
|
|
219
|
+
def task(offset: SizeSuffix, args=args, rclone=rclone, transfer_list=transfer_list, mount_root_path=mount_root_path):
|
|
220
|
+
return test_profile_copy_bytes(args, rclone, offset, transfer_list, mount_root_path)
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
with ThreadPoolExecutor(max_workers=parallel_workers) as executor:
|
|
224
|
+
tasks: list[Future] = []
|
|
225
|
+
for i in range(parallel_workers):
|
|
226
|
+
offset = SizeSuffix(i * 1024 * 1024 * 256)
|
|
227
|
+
future = ThreadPoolExecutor().submit(lambda: task(offset=offset))
|
|
228
|
+
tasks.append(future)
|
|
223
229
|
|
|
224
230
|
|
|
225
231
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|