rclone-api 1.4.29__tar.gz → 1.4.32__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.4.29 → rclone_api-1.4.32}/PKG-INFO +4 -2
- {rclone_api-1.4.29 → rclone_api-1.4.32}/README.md +3 -1
- {rclone_api-1.4.29 → rclone_api-1.4.32}/pyproject.toml +1 -1
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/__init__.py +2 -2
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/cmd/copy_large_s3.py +3 -9
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/rclone_impl.py +5 -1
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api.egg-info/PKG-INFO +4 -2
- {rclone_api-1.4.29 → rclone_api-1.4.32}/tests/test_copy_file_resumable_s3.py +7 -7
- {rclone_api-1.4.29 → rclone_api-1.4.32}/.aiderignore +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/.github/workflows/lint.yml +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/.github/workflows/push_macos.yml +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/.github/workflows/push_ubuntu.yml +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/.github/workflows/push_win.yml +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/.gitignore +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/.pylintrc +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/.vscode/launch.json +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/.vscode/settings.json +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/.vscode/tasks.json +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/LICENSE +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/MANIFEST.in +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/clean +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/install +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/lint +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/requirements.testing.txt +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/setup.cfg +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/setup.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/assets/example.txt +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/cli.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/cmd/analyze.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/cmd/copy_large_s3_finish.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/cmd/list_files.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/cmd/save_to_db.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/completed_process.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/config.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/convert.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/db/__init__.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/db/db.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/db/models.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/deprecated.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/detail/copy_file_parts_resumable.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/detail/walk.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/diff.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/dir.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/dir_listing.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/exec.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/experimental/flags.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/experimental/flags_base.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/file.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/file_item.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/file_part.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/file_stream.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/filelist.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/group_files.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/http_server.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/log.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/mount.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/process.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/remote.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/rpath.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/s3/api.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/s3/basic_ops.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/s3/chunk_task.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/s3/create.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/s3/multipart/file_info.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/s3/multipart/finished_piece.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/s3/multipart/info_json.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/s3/multipart/merge_state.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/s3/multipart/upload_info.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/s3/multipart/upload_parts_inline.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/s3/multipart/upload_parts_resumable.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/s3/multipart/upload_parts_server_side_merge.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/s3/multipart/upload_state.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/s3/types.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/scan_missing_folders.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/types.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/util.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api.egg-info/SOURCES.txt +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api.egg-info/dependency_links.txt +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api.egg-info/entry_points.txt +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api.egg-info/requires.txt +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api.egg-info/top_level.txt +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/test +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/tests/archive/test_paramiko.py.disabled +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/tests/test_cmd_list_files.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/tests/test_copy.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/tests/test_copy_bytes.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/tests/test_copy_files.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/tests/test_db.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/tests/test_diff.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/tests/test_file_item.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/tests/test_group_files.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/tests/test_is_synced.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/tests/test_ls.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/tests/test_ls_stream_files.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/tests/test_mount.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/tests/test_mount_s3.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/tests/test_obscure.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/tests/test_rclone_config.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/tests/test_read_write_text.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/tests/test_remote_control.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/tests/test_remotes.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/tests/test_s3.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/tests/test_scan_missing_folders.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/tests/test_serve_http.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/tests/test_size_files.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/tests/test_size_suffix.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/tests/test_walk.py +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/tox.ini +0 -0
- {rclone_api-1.4.29 → rclone_api-1.4.32}/upload_package.sh +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: rclone_api
|
3
|
-
Version: 1.4.
|
3
|
+
Version: 1.4.32
|
4
4
|
Summary: rclone api in python
|
5
5
|
Home-page: https://github.com/zackees/rclone-api
|
6
6
|
License: BSD 3-Clause License
|
@@ -35,7 +35,7 @@ Dynamic: home-page
|
|
35
35
|
|
36
36
|
Got a lot of data to transfer quickly? This package is for you.
|
37
37
|
|
38
|
-
This library was built out of necessity to transfer large amounts of AI training data. Aggressive
|
38
|
+
This library was built out of necessity to transfer large amounts of AI training data. Aggressive defaults means this api will transfer faster than rclone does in stock settings.
|
39
39
|
|
40
40
|
You must have [rclone](https://rclone.org/) in your path to use this library. You'd want this anyway because rclone is still under heavy developement.
|
41
41
|
|
@@ -43,6 +43,8 @@ You must have [rclone](https://rclone.org/) in your path to use this library. Yo
|
|
43
43
|
|
44
44
|
`pip install rclone-api`
|
45
45
|
|
46
|
+
pypi link: https://pypi.org/project/rclone-api/
|
47
|
+
|
46
48
|
# Quick
|
47
49
|
|
48
50
|
In addition to providing easy python use for rclone, this package provides additional features:
|
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
Got a lot of data to transfer quickly? This package is for you.
|
16
16
|
|
17
|
-
This library was built out of necessity to transfer large amounts of AI training data. Aggressive
|
17
|
+
This library was built out of necessity to transfer large amounts of AI training data. Aggressive defaults means this api will transfer faster than rclone does in stock settings.
|
18
18
|
|
19
19
|
You must have [rclone](https://rclone.org/) in your path to use this library. You'd want this anyway because rclone is still under heavy developement.
|
20
20
|
|
@@ -22,6 +22,8 @@ You must have [rclone](https://rclone.org/) in your path to use this library. Yo
|
|
22
22
|
|
23
23
|
`pip install rclone-api`
|
24
24
|
|
25
|
+
pypi link: https://pypi.org/project/rclone-api/
|
26
|
+
|
25
27
|
# Quick
|
26
28
|
|
27
29
|
In addition to providing easy python use for rclone, this package provides additional features:
|
@@ -399,7 +399,7 @@ class Rclone:
|
|
399
399
|
def copy_file_s3_resumable(
|
400
400
|
self,
|
401
401
|
src: str, # src:/Bucket/path/myfile.large.zst
|
402
|
-
|
402
|
+
dst: str, # dst:/Bucket/path/myfile.large.zst
|
403
403
|
part_infos: list[PartInfo] | None = None,
|
404
404
|
upload_threads: int = 8, # Number of reader and writer threads to use
|
405
405
|
merge_threads: int = 4, # Number of threads to use for merging the parts
|
@@ -407,7 +407,7 @@ class Rclone:
|
|
407
407
|
"""Copy a file in parts."""
|
408
408
|
return self.impl.copy_file_s3_resumable(
|
409
409
|
src=src,
|
410
|
-
|
410
|
+
dst=dst,
|
411
411
|
part_infos=part_infos,
|
412
412
|
upload_threads=upload_threads,
|
413
413
|
merge_threads=merge_threads,
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import argparse
|
2
|
+
import sys
|
2
3
|
from dataclasses import dataclass
|
3
4
|
from pathlib import Path
|
4
5
|
|
@@ -89,7 +90,7 @@ def main() -> int:
|
|
89
90
|
# )
|
90
91
|
err: Exception | None = rclone.copy_file_s3_resumable(
|
91
92
|
src=args.src,
|
92
|
-
|
93
|
+
dst=args.dst,
|
93
94
|
)
|
94
95
|
if err is not None:
|
95
96
|
print(f"Error: {err}")
|
@@ -98,20 +99,13 @@ def main() -> int:
|
|
98
99
|
|
99
100
|
|
100
101
|
if __name__ == "__main__":
|
101
|
-
import sys
|
102
102
|
|
103
|
-
# here = Path(__file__).parent
|
104
|
-
# project_root = here.parent.parent.parent
|
105
|
-
# print(f"project_root: {project_root}")
|
106
|
-
# os.chdir(str(project_root))
|
107
|
-
# cwd = Path(__file__).parent
|
108
|
-
# print(f"cwd: {cwd}")
|
109
103
|
sys.argv.append("--config")
|
110
104
|
sys.argv.append("rclone.conf")
|
111
105
|
sys.argv.append(
|
112
106
|
"45061:aa_misc_data/aa_misc_data/world_lending_library_2024_11.tar.zst"
|
113
107
|
)
|
114
108
|
sys.argv.append(
|
115
|
-
"dst:TorrentBooks/aa_misc_data/aa_misc_data/world_lending_library_2024_11.tar.zst
|
109
|
+
"dst:TorrentBooks/aa_misc_data/aa_misc_data/world_lending_library_2024_11.tar.zst"
|
116
110
|
)
|
117
111
|
main()
|
@@ -786,7 +786,7 @@ class RcloneImpl:
|
|
786
786
|
def copy_file_s3_resumable(
|
787
787
|
self,
|
788
788
|
src: str, # src:/Bucket/path/myfile.large.zst
|
789
|
-
|
789
|
+
dst: str, # dst:/Bucket/path/myfile.large
|
790
790
|
part_infos: list[PartInfo] | None = None,
|
791
791
|
upload_threads: int = 8,
|
792
792
|
merge_threads: int = 4,
|
@@ -796,6 +796,10 @@ class RcloneImpl:
|
|
796
796
|
copy_file_parts_resumable,
|
797
797
|
)
|
798
798
|
|
799
|
+
if dst.endswith("/"):
|
800
|
+
dst = dst[:-1]
|
801
|
+
dst_dir = f"{dst}-parts"
|
802
|
+
|
799
803
|
out = copy_file_parts_resumable(
|
800
804
|
self=self,
|
801
805
|
src=src,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: rclone_api
|
3
|
-
Version: 1.4.
|
3
|
+
Version: 1.4.32
|
4
4
|
Summary: rclone api in python
|
5
5
|
Home-page: https://github.com/zackees/rclone-api
|
6
6
|
License: BSD 3-Clause License
|
@@ -35,7 +35,7 @@ Dynamic: home-page
|
|
35
35
|
|
36
36
|
Got a lot of data to transfer quickly? This package is for you.
|
37
37
|
|
38
|
-
This library was built out of necessity to transfer large amounts of AI training data. Aggressive
|
38
|
+
This library was built out of necessity to transfer large amounts of AI training data. Aggressive defaults means this api will transfer faster than rclone does in stock settings.
|
39
39
|
|
40
40
|
You must have [rclone](https://rclone.org/) in your path to use this library. You'd want this anyway because rclone is still under heavy developement.
|
41
41
|
|
@@ -43,6 +43,8 @@ You must have [rclone](https://rclone.org/) in your path to use this library. Yo
|
|
43
43
|
|
44
44
|
`pip install rclone-api`
|
45
45
|
|
46
|
+
pypi link: https://pypi.org/project/rclone-api/
|
47
|
+
|
46
48
|
# Quick
|
47
49
|
|
48
50
|
In addition to providing easy python use for rclone, this package provides additional features:
|
@@ -88,8 +88,8 @@ class RcloneCopyResumableFileToS3(unittest.TestCase):
|
|
88
88
|
|
89
89
|
def test_copy_parts(self) -> None:
|
90
90
|
src_file = "dst:rclone-api-unit-test/zachs_video/global_alliance.mp4"
|
91
|
-
|
92
|
-
|
91
|
+
dst = "dst:rclone-api-unit-test/test_data/global_alliance.mp4"
|
92
|
+
dst_dir = "dst:rclone-api-unit-test/test_data/global_alliance.mp4-parts"
|
93
93
|
|
94
94
|
# print(f"BUCKET_KEY_SECRET: {SECRET_ACCESS_KEY}")
|
95
95
|
config_text = _generate_rclone_config(PORT)
|
@@ -110,7 +110,7 @@ class RcloneCopyResumableFileToS3(unittest.TestCase):
|
|
110
110
|
|
111
111
|
err = rclone.copy_file_s3_resumable(
|
112
112
|
src=src_file,
|
113
|
-
|
113
|
+
dst=dst,
|
114
114
|
part_infos=part_infos,
|
115
115
|
)
|
116
116
|
|
@@ -119,11 +119,11 @@ class RcloneCopyResumableFileToS3(unittest.TestCase):
|
|
119
119
|
# Second time should go fast.
|
120
120
|
rclone.copy_file_s3_resumable(
|
121
121
|
src=src_file,
|
122
|
-
|
122
|
+
dst=dst,
|
123
123
|
part_infos=part_infos,
|
124
124
|
)
|
125
125
|
|
126
|
-
dir_listing = rclone.ls(
|
126
|
+
dir_listing = rclone.ls(dst)
|
127
127
|
print(f"dir_listing: {dir_listing}")
|
128
128
|
self.assertEqual(len(dir_listing.files), 1)
|
129
129
|
expected_files = dir_listing.files[0]
|
@@ -131,9 +131,9 @@ class RcloneCopyResumableFileToS3(unittest.TestCase):
|
|
131
131
|
self.assertEqual(expected_files.name, "global_alliance.mp4")
|
132
132
|
self.assertEqual(expected_files.size, src_size)
|
133
133
|
|
134
|
-
dst_dir_listing = rclone.ls(
|
134
|
+
dst_dir_listing = rclone.ls(dst)
|
135
135
|
print(f"dst_dir_listing: {dst_dir_listing}")
|
136
|
-
self.assertEqual(len(dst_dir_listing.files),
|
136
|
+
self.assertEqual(len(dst_dir_listing.files), 1)
|
137
137
|
self.assertEqual(len(dst_dir_listing.dirs), 0)
|
138
138
|
|
139
139
|
rclone.purge(dst_dir)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{rclone_api-1.4.29 → rclone_api-1.4.32}/src/rclone_api/s3/multipart/upload_parts_resumable.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|