rclone-api 1.1.76__tar.gz → 1.1.77__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.76 → rclone_api-1.1.77}/PKG-INFO +1 -1
- {rclone_api-1.1.76 → rclone_api-1.1.77}/pyproject.toml +1 -1
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/mount.py +8 -6
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/profile/mount_copy_bytes.py +17 -4
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api.egg-info/PKG-INFO +1 -1
- {rclone_api-1.1.76 → rclone_api-1.1.77}/.aiderignore +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/.github/workflows/lint.yml +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/.github/workflows/push_macos.yml +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/.github/workflows/push_ubuntu.yml +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/.github/workflows/push_win.yml +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/.gitignore +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/.pylintrc +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/.vscode/launch.json +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/.vscode/settings.json +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/.vscode/tasks.json +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/LICENSE +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/MANIFEST.in +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/README.md +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/clean +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/install +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/lint +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/requirements.testing.txt +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/setup.cfg +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/setup.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/__init__.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/assets/example.txt +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/cli.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/cmd/copy_large_s3.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/cmd/list_files.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/completed_process.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/config.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/convert.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/deprecated.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/diff.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/dir.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/dir_listing.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/exec.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/experimental/flags.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/experimental/flags_base.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/file.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/filelist.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/group_files.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/process.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/rclone.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/remote.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/rpath.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/s3/api.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/s3/basic_ops.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/s3/chunk_file.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/s3/chunk_types.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/s3/create.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/s3/types.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/s3/upload_file_multipart.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/scan_missing_folders.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/types.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/util.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api/walk.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api.egg-info/SOURCES.txt +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api.egg-info/dependency_links.txt +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api.egg-info/entry_points.txt +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api.egg-info/requires.txt +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/src/rclone_api.egg-info/top_level.txt +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/test +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/tests/archive/test_paramiko.py.disabled +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/tests/test_cmd_list_files.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/tests/test_copy.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/tests/test_copy_bytes.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/tests/test_copy_file_resumable_s3.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/tests/test_copy_files.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/tests/test_diff.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/tests/test_group_files.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/tests/test_is_synced.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/tests/test_ls.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/tests/test_mount.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/tests/test_mount_s3.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/tests/test_obscure.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/tests/test_rclone_config.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/tests/test_remote_control.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/tests/test_remotes.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/tests/test_s3.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/tests/test_scan_missing_folders.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/tests/test_size_files.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/tests/test_size_suffix.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/tests/test_walk.py +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/tox.ini +0 -0
- {rclone_api-1.1.76 → rclone_api-1.1.77}/upload_package.sh +0 -0
|
@@ -313,8 +313,10 @@ class MultiMountFileChunker:
|
|
|
313
313
|
print(f"Fetching chunk {offset} - {offset + size} from {self.filename}")
|
|
314
314
|
try:
|
|
315
315
|
try:
|
|
316
|
-
assert
|
|
317
|
-
|
|
316
|
+
assert (
|
|
317
|
+
offset % self.chunk_size.as_int() == 0
|
|
318
|
+
), f"Invalid offset: {offset}"
|
|
319
|
+
# assert size <= self.chunk_size.as_int(), f"Invalid size: {size}"
|
|
318
320
|
assert size > 0, f"Invalid size: {size}"
|
|
319
321
|
assert offset >= 0, f"Invalid offset: {offset}"
|
|
320
322
|
except AssertionError as e:
|
|
@@ -340,11 +342,11 @@ class MultiMountFileChunker:
|
|
|
340
342
|
path = mount.mount_path / self.filename
|
|
341
343
|
print(f"Fetching chunk {start} - {start + chunk_size} from {path}")
|
|
342
344
|
|
|
343
|
-
def task(
|
|
345
|
+
def task(
|
|
346
|
+
start=start, size=chunk_size, path=path, mount=mount
|
|
347
|
+
) -> bytes | Exception:
|
|
344
348
|
try:
|
|
345
|
-
print(
|
|
346
|
-
f"Fetching chunk {start} - {start + size} from {path}"
|
|
347
|
-
)
|
|
349
|
+
print(f"Fetching chunk {start} - {start + size} from {path}")
|
|
348
350
|
with path.open("rb") as f:
|
|
349
351
|
f.seek(offset)
|
|
350
352
|
return f.read(size)
|
|
@@ -13,6 +13,7 @@ import psutil
|
|
|
13
13
|
from dotenv import load_dotenv
|
|
14
14
|
|
|
15
15
|
from rclone_api import Config, Rclone, SizeSuffix
|
|
16
|
+
from rclone_api.mount import MultiMountFileChunker
|
|
16
17
|
|
|
17
18
|
os.environ["RCLONE_API_VERBOSE"] = "1"
|
|
18
19
|
|
|
@@ -119,15 +120,27 @@ def _run_profile(
|
|
|
119
120
|
net_io_start = psutil.net_io_counters()
|
|
120
121
|
start = time.time()
|
|
121
122
|
chunk_size = size // transfers
|
|
122
|
-
|
|
123
|
+
|
|
124
|
+
filechunker: MultiMountFileChunker = rclone.get_multi_mount_file_chunker(
|
|
123
125
|
src=src_file,
|
|
124
|
-
offset=offset.as_int(),
|
|
125
|
-
length=size.as_int(),
|
|
126
126
|
chunk_size=chunk_size,
|
|
127
|
+
threads=transfers,
|
|
127
128
|
direct_io=direct_io,
|
|
128
|
-
max_threads=transfers,
|
|
129
129
|
mount_log=mount_log,
|
|
130
130
|
)
|
|
131
|
+
|
|
132
|
+
# bytes_or_err: bytes | Exception = rclone.copy_bytes(
|
|
133
|
+
# src=src_file,
|
|
134
|
+
# offset=offset.as_int(),
|
|
135
|
+
# length=size.as_int(),
|
|
136
|
+
# chunk_size=chunk_size,
|
|
137
|
+
# direct_io=direct_io,
|
|
138
|
+
# max_threads=transfers,
|
|
139
|
+
# mount_log=mount_log,
|
|
140
|
+
# )
|
|
141
|
+
|
|
142
|
+
bytes_or_err = filechunker.fetch(offset.as_int(), size.as_int())
|
|
143
|
+
|
|
131
144
|
diff = time.time() - start
|
|
132
145
|
net_io_end = psutil.net_io_counters()
|
|
133
146
|
if isinstance(bytes_or_err, Exception):
|
|
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
|