rclone-api 1.1.98__tar.gz → 1.2.0__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.98 → rclone_api-1.2.0}/PKG-INFO +1 -1
- {rclone_api-1.1.98 → rclone_api-1.2.0}/pyproject.toml +1 -1
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/mount.py +5 -2
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/s3/chunk_file.py +2 -4
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api.egg-info/PKG-INFO +1 -1
- {rclone_api-1.1.98 → rclone_api-1.2.0}/tests/test_s3.py +3 -4
- {rclone_api-1.1.98 → rclone_api-1.2.0}/.aiderignore +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/.github/workflows/lint.yml +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/.github/workflows/push_macos.yml +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/.github/workflows/push_ubuntu.yml +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/.github/workflows/push_win.yml +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/.gitignore +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/.pylintrc +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/.vscode/launch.json +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/.vscode/settings.json +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/.vscode/tasks.json +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/LICENSE +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/MANIFEST.in +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/README.md +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/clean +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/install +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/lint +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/requirements.testing.txt +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/setup.cfg +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/setup.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/__init__.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/assets/example.txt +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/cli.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/cmd/copy_large_s3.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/cmd/list_files.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/completed_process.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/config.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/convert.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/deprecated.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/diff.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/dir.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/dir_listing.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/exec.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/experimental/flags.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/experimental/flags_base.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/file.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/filelist.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/group_files.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/process.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/profile/mount_copy_bytes.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/rclone.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/remote.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/rpath.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/s3/api.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/s3/basic_ops.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/s3/chunk_types.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/s3/create.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/s3/types.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/s3/upload_file_multipart.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/scan_missing_folders.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/types.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/util.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api/walk.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api.egg-info/SOURCES.txt +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api.egg-info/dependency_links.txt +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api.egg-info/entry_points.txt +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api.egg-info/requires.txt +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/src/rclone_api.egg-info/top_level.txt +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/test +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/tests/archive/test_paramiko.py.disabled +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/tests/test_cmd_list_files.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/tests/test_copy.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/tests/test_copy_bytes.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/tests/test_copy_file_resumable_s3.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/tests/test_copy_files.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/tests/test_diff.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/tests/test_group_files.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/tests/test_is_synced.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/tests/test_ls.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/tests/test_mount.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/tests/test_mount_s3.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/tests/test_obscure.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/tests/test_rclone_config.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/tests/test_remote_control.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/tests/test_remotes.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/tests/test_scan_missing_folders.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/tests/test_size_files.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/tests/test_size_suffix.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/tests/test_walk.py +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/tox.ini +0 -0
- {rclone_api-1.1.98 → rclone_api-1.2.0}/upload_package.sh +0 -0
|
@@ -4,6 +4,7 @@ import platform
|
|
|
4
4
|
import shutil
|
|
5
5
|
import subprocess
|
|
6
6
|
import time
|
|
7
|
+
import traceback
|
|
7
8
|
import warnings
|
|
8
9
|
import weakref
|
|
9
10
|
from concurrent.futures import Future, ThreadPoolExecutor
|
|
@@ -366,8 +367,10 @@ class MultiMountFileChunker:
|
|
|
366
367
|
_thread.interrupt_main()
|
|
367
368
|
return Exception(e)
|
|
368
369
|
except Exception as e:
|
|
369
|
-
stack_trace =
|
|
370
|
-
warnings.warn(
|
|
370
|
+
stack_trace = traceback.format_exc()
|
|
371
|
+
warnings.warn(
|
|
372
|
+
f"Error fetching file chunk at offset{offset} + {size}: {e}\n{stack_trace}"
|
|
373
|
+
)
|
|
371
374
|
return e
|
|
372
375
|
finally:
|
|
373
376
|
with self.lock:
|
|
@@ -36,9 +36,6 @@ def file_chunker(
|
|
|
36
36
|
) -> None:
|
|
37
37
|
count = 0
|
|
38
38
|
|
|
39
|
-
if False:
|
|
40
|
-
print(chunk_fetcher)
|
|
41
|
-
|
|
42
39
|
def should_stop() -> bool:
|
|
43
40
|
nonlocal count
|
|
44
41
|
|
|
@@ -128,7 +125,8 @@ def file_chunker(
|
|
|
128
125
|
done_part_numbers.add(part_number)
|
|
129
126
|
output.put(file_chunk)
|
|
130
127
|
|
|
131
|
-
|
|
128
|
+
offset = (curr_parth_num - 1) * chunk_size
|
|
129
|
+
fut = chunk_fetcher(offset, chunk_size)
|
|
132
130
|
fut.add_done_callback(on_complete)
|
|
133
131
|
# wait until the output queue can accept the next chunk
|
|
134
132
|
while output.full():
|
|
@@ -18,7 +18,7 @@ class RcloneS3Tester(unittest.TestCase):
|
|
|
18
18
|
"""Test rclone functionality."""
|
|
19
19
|
|
|
20
20
|
# @unittest.skipIf(not _ENABLED, "Test not enabled")
|
|
21
|
-
@unittest.skipIf(True, "Test not enabled")
|
|
21
|
+
# @unittest.skipIf(True, "Test not enabled")
|
|
22
22
|
def test_upload_chunks(self) -> None:
|
|
23
23
|
"""Test basic Webdav serve functionality."""
|
|
24
24
|
|
|
@@ -67,14 +67,13 @@ class RcloneS3Tester(unittest.TestCase):
|
|
|
67
67
|
state_json = Path(tempdir) / "state.json"
|
|
68
68
|
|
|
69
69
|
def simple_fetcher(
|
|
70
|
-
|
|
70
|
+
offset: int, chunk_size: int
|
|
71
71
|
) -> Future[bytes | Exception]:
|
|
72
72
|
with ThreadPoolExecutor() as executor:
|
|
73
73
|
|
|
74
74
|
def task() -> bytes | Exception:
|
|
75
75
|
with open(str(tmpfile), "rb") as f:
|
|
76
|
-
|
|
77
|
-
f.seek(idx * chunk_size)
|
|
76
|
+
f.seek(offset)
|
|
78
77
|
return f.read(chunk_size)
|
|
79
78
|
|
|
80
79
|
fut = executor.submit(task)
|
|
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
|