rclone-api 1.0.23__py2.py3-none-any.whl → 1.0.25__py2.py3-none-any.whl
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/rclone.py +57 -0
- {rclone_api-1.0.23.dist-info → rclone_api-1.0.25.dist-info}/METADATA +1 -1
- {rclone_api-1.0.23.dist-info → rclone_api-1.0.25.dist-info}/RECORD +7 -7
- {rclone_api-1.0.23.dist-info → rclone_api-1.0.25.dist-info}/LICENSE +0 -0
- {rclone_api-1.0.23.dist-info → rclone_api-1.0.25.dist-info}/WHEEL +0 -0
- {rclone_api-1.0.23.dist-info → rclone_api-1.0.25.dist-info}/entry_points.txt +0 -0
- {rclone_api-1.0.23.dist-info → rclone_api-1.0.25.dist-info}/top_level.txt +0 -0
rclone_api/rclone.py
CHANGED
@@ -6,6 +6,7 @@ import subprocess
|
|
6
6
|
import time
|
7
7
|
import warnings
|
8
8
|
from concurrent.futures import ThreadPoolExecutor
|
9
|
+
from enum import Enum
|
9
10
|
from fnmatch import fnmatch
|
10
11
|
from pathlib import Path
|
11
12
|
from typing import Generator
|
@@ -23,6 +24,11 @@ from rclone_api.util import get_rclone_exe, to_path, wait_for_mount
|
|
23
24
|
from rclone_api.walk import walk
|
24
25
|
|
25
26
|
|
27
|
+
class ModTimeStrategy(Enum):
|
28
|
+
USE_SERVER_MODTIME = "use-server-modtime"
|
29
|
+
NO_MODTIME = "no-modtime"
|
30
|
+
|
31
|
+
|
26
32
|
class Rclone:
|
27
33
|
def __init__(
|
28
34
|
self, rclone_conf: Path | Config, rclone_exe: Path | None = None
|
@@ -299,6 +305,7 @@ class Rclone:
|
|
299
305
|
url: str,
|
300
306
|
outdir: Path,
|
301
307
|
vfs_cache_mode="full",
|
308
|
+
vfs_disk_space_total_size: str | None = "10G",
|
302
309
|
other_cmds: list[str] | None = None,
|
303
310
|
) -> Process:
|
304
311
|
"""Mount a remote or directory to a local path.
|
@@ -327,10 +334,60 @@ class Rclone:
|
|
327
334
|
cmd_list.append(vfs_cache_mode)
|
328
335
|
if other_cmds:
|
329
336
|
cmd_list += other_cmds
|
337
|
+
if vfs_disk_space_total_size is not None:
|
338
|
+
cmd_list.append("--vfs-cache-max-size")
|
339
|
+
cmd_list.append(vfs_disk_space_total_size)
|
330
340
|
proc = self._launch_process(cmd_list)
|
331
341
|
wait_for_mount(outdir, proc)
|
332
342
|
return proc
|
333
343
|
|
344
|
+
def mount_s3(
|
345
|
+
self,
|
346
|
+
url: str,
|
347
|
+
outdir: Path,
|
348
|
+
allow_writes=False,
|
349
|
+
vfs_cache_mode="full",
|
350
|
+
transfers: int | None = 16,
|
351
|
+
modtime_strategy: (
|
352
|
+
ModTimeStrategy | None
|
353
|
+
) = ModTimeStrategy.USE_SERVER_MODTIME, # speeds up S3 operations
|
354
|
+
vfs_read_chunk_streams: int | None = 16,
|
355
|
+
vfs_read_chunk_size: str | None = "4M",
|
356
|
+
vfs_fast_fingerprint: bool = True,
|
357
|
+
other_cmds: list[str] | None = None,
|
358
|
+
) -> Process:
|
359
|
+
"""Mount a remote or directory to a local path.
|
360
|
+
|
361
|
+
Args:
|
362
|
+
src: Remote or directory to mount
|
363
|
+
outdir: Local path to mount to
|
364
|
+
"""
|
365
|
+
other_cmds = other_cmds or []
|
366
|
+
if modtime_strategy is not None:
|
367
|
+
other_cmds.append(f"--{modtime_strategy.value}")
|
368
|
+
if (vfs_cache_mode == "full" or vfs_cache_mode == "writes") and (
|
369
|
+
transfers is not None
|
370
|
+
):
|
371
|
+
other_cmds.append("--transfers")
|
372
|
+
other_cmds.append(str(transfers))
|
373
|
+
if vfs_read_chunk_streams:
|
374
|
+
other_cmds.append("--vfs-read-chunk-streams")
|
375
|
+
other_cmds.append(str(vfs_read_chunk_streams))
|
376
|
+
if vfs_read_chunk_size:
|
377
|
+
other_cmds.append("--vfs-read-chunk-size")
|
378
|
+
other_cmds.append(vfs_read_chunk_size)
|
379
|
+
if vfs_fast_fingerprint:
|
380
|
+
other_cmds.append("--vfs-fast-fingerprint")
|
381
|
+
|
382
|
+
other_cmds = other_cmds if other_cmds else None
|
383
|
+
return self.mount(
|
384
|
+
url,
|
385
|
+
outdir,
|
386
|
+
allow_writes=allow_writes,
|
387
|
+
vfs_cache_mode=vfs_cache_mode,
|
388
|
+
other_cmds=other_cmds,
|
389
|
+
)
|
390
|
+
|
334
391
|
def serve_webdav(
|
335
392
|
self,
|
336
393
|
src: Remote | Dir | str,
|
@@ -8,16 +8,16 @@ rclone_api/exec.py,sha256=9qSOpZo8YRYxv3hOvNr57ApnY2KbjxwT1QNr8OgcLM4,883
|
|
8
8
|
rclone_api/file.py,sha256=D02iHJW1LhfOiM_R_yPHP8_ApnDiYrkuraVcrV8-qkw,1246
|
9
9
|
rclone_api/filelist.py,sha256=xbiusvNgaB_b_kQOZoHMJJxn6TWGtPrWd2J042BI28o,767
|
10
10
|
rclone_api/process.py,sha256=iVA8_qtJFgHtg92Yb4W7xv9jnyds_7kAdKeSiGCBIZ0,3952
|
11
|
-
rclone_api/rclone.py,sha256=
|
11
|
+
rclone_api/rclone.py,sha256=2sxlxC9zsEG8P4ctgGtVKUPYxk2hB8uBimXbHnpqC-Q,14705
|
12
12
|
rclone_api/remote.py,sha256=c9hlRKBCg1BFB9MCINaQIoCg10qyAkeqiS4brl8ce-8,343
|
13
13
|
rclone_api/rpath.py,sha256=8ZA_1wxWtskwcy0I8V2VbjKDmzPkiWd8Q2JQSvh-sYE,2586
|
14
14
|
rclone_api/util.py,sha256=AWTImA1liCMw52wtS-Gs8Abz96diQ39x6Tx56mvbrEo,3860
|
15
15
|
rclone_api/walk.py,sha256=kca0t1GAnF6FLclN01G8NG__Qe-ggodLtAbQSHyVPng,2968
|
16
16
|
rclone_api/assets/example.txt,sha256=lTBovRjiz0_TgtAtbA1C5hNi2ffbqnNPqkKg6UiKCT8,54
|
17
17
|
rclone_api/cmd/list_files.py,sha256=x8FHODEilwKqwdiU1jdkeJbLwOqUkUQuDWPo2u_zpf0,741
|
18
|
-
rclone_api-1.0.
|
19
|
-
rclone_api-1.0.
|
20
|
-
rclone_api-1.0.
|
21
|
-
rclone_api-1.0.
|
22
|
-
rclone_api-1.0.
|
23
|
-
rclone_api-1.0.
|
18
|
+
rclone_api-1.0.25.dist-info/LICENSE,sha256=b6pOoifSXiUaz_lDS84vWlG3fr4yUKwB8fzkrH9R8bQ,1064
|
19
|
+
rclone_api-1.0.25.dist-info/METADATA,sha256=1UQ5eElGnKi2Bd-rWpgy_XT9Vw_jLS-TYM1Mm95xk9o,4454
|
20
|
+
rclone_api-1.0.25.dist-info/WHEEL,sha256=9Hm2OB-j1QcCUq9Jguht7ayGIIZBRTdOXD1qg9cCgPM,109
|
21
|
+
rclone_api-1.0.25.dist-info/entry_points.txt,sha256=XUoTX3m7CWxdj2VAKhEuO0NMOfX2qf-OcEDFwdyk9ZE,72
|
22
|
+
rclone_api-1.0.25.dist-info/top_level.txt,sha256=EvZ7uuruUpe9RiUyEp25d1Keq7PWYNT0O_-mr8FCG5g,11
|
23
|
+
rclone_api-1.0.25.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|