rclone-api 1.0.20__py2.py3-none-any.whl → 1.0.22__py2.py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
rclone_api/process.py CHANGED
@@ -124,3 +124,14 @@ class Process:
124
124
 
125
125
  def send_signal(self, signal: int) -> None:
126
126
  return self.process.send_signal(signal)
127
+
128
+ def __str__(self) -> str:
129
+ state = ""
130
+ rtn = self.process.poll()
131
+ if rtn is None:
132
+ state = "running"
133
+ elif rtn != 0:
134
+ state = f"error: {rtn}"
135
+ else:
136
+ state = "finished ok"
137
+ return f"Process({self.cmd}, {state})"
rclone_api/rclone.py CHANGED
@@ -19,7 +19,7 @@ from rclone_api.file import File
19
19
  from rclone_api.process import Process
20
20
  from rclone_api.remote import Remote
21
21
  from rclone_api.rpath import RPath
22
- from rclone_api.util import get_rclone_exe, to_path
22
+ from rclone_api.util import get_rclone_exe, to_path, wait_for_mount
23
23
  from rclone_api.walk import walk
24
24
 
25
25
 
@@ -291,9 +291,7 @@ class Rclone:
291
291
  if other_cmds:
292
292
  cmd_list += other_cmds
293
293
  proc = self._launch_process(cmd_list)
294
- time.sleep(2) # give it a moment to mount
295
- if proc.poll() is not None:
296
- raise ValueError("Mount process failed to start")
294
+ wait_for_mount(outdir, proc)
297
295
  return proc
298
296
 
299
297
  def mount_webdav(
@@ -330,10 +328,7 @@ class Rclone:
330
328
  if other_cmds:
331
329
  cmd_list += other_cmds
332
330
  proc = self._launch_process(cmd_list)
333
- # proc = rclone_exec.launch_process(cmd_list)
334
- time.sleep(2)
335
- if proc.poll() is not None:
336
- raise ValueError("Mount process failed to start")
331
+ wait_for_mount(outdir, proc)
337
332
  return proc
338
333
 
339
334
  def serve_webdav(
rclone_api/util.py CHANGED
@@ -1,6 +1,7 @@
1
1
  import os
2
2
  import shutil
3
3
  import subprocess
4
+ import time
4
5
  from pathlib import Path
5
6
  from tempfile import TemporaryDirectory
6
7
  from typing import Any
@@ -112,3 +113,17 @@ def rclone_execute(
112
113
  tempdir.cleanup()
113
114
  except Exception as e:
114
115
  print(f"Error cleaning up tempdir: {e}")
116
+
117
+
118
+ def wait_for_mount(path: Path, mount_process: Any, timeout: int = 60) -> None:
119
+ from rclone_api.process import Process
120
+
121
+ assert isinstance(mount_process, Process)
122
+ expire_time = time.time() + timeout
123
+ while time.time() < expire_time:
124
+ rtn = mount_process.poll()
125
+ if rtn is not None:
126
+ raise subprocess.CalledProcessError(rtn, mount_process.cmd)
127
+ if path.exists():
128
+ return
129
+ raise TimeoutError(f"Path {path} did not exist after {timeout} seconds")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: rclone_api
3
- Version: 1.0.20
3
+ Version: 1.0.22
4
4
  Summary: rclone api in python
5
5
  Home-page: https://github.com/zackees/rclone-api
6
6
  Maintainer: Zachary Vorhies
@@ -7,15 +7,15 @@ rclone_api/dir_listing.py,sha256=8t5Jx9ZVOJPqGKTJbWaES6bjgogUT2bnpbPVWwK1Fcs,112
7
7
  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
- rclone_api/process.py,sha256=C7vdGEvIKcI4fx-Z702wK1qomzSsFpdke2SQnBHxd-Y,3660
11
- rclone_api/rclone.py,sha256=MyFpjzC1Dh5TJbuulraXdtVSPAS3zuERrDj5TIdam6o,12887
10
+ rclone_api/process.py,sha256=iVA8_qtJFgHtg92Yb4W7xv9jnyds_7kAdKeSiGCBIZ0,3952
11
+ rclone_api/rclone.py,sha256=RBlEi7M8Jpgt8oJcV-2VrhF-iVAtGlpfBJ7YXGjPS_s,12649
12
12
  rclone_api/remote.py,sha256=c9hlRKBCg1BFB9MCINaQIoCg10qyAkeqiS4brl8ce-8,343
13
13
  rclone_api/rpath.py,sha256=8ZA_1wxWtskwcy0I8V2VbjKDmzPkiWd8Q2JQSvh-sYE,2586
14
- rclone_api/util.py,sha256=BDRJ2MIceDoKVTjUQBwyhjbA8UwPrZ-0ZSa9xyMJd0E,3343
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
- rclone_api-1.0.20.dist-info/LICENSE,sha256=b6pOoifSXiUaz_lDS84vWlG3fr4yUKwB8fzkrH9R8bQ,1064
18
- rclone_api-1.0.20.dist-info/METADATA,sha256=XfXp7UbwmdR0PtTwH7m_w3K9ZmIPQx0VZuRI9G7Zlb8,4454
19
- rclone_api-1.0.20.dist-info/WHEEL,sha256=9Hm2OB-j1QcCUq9Jguht7ayGIIZBRTdOXD1qg9cCgPM,109
20
- rclone_api-1.0.20.dist-info/top_level.txt,sha256=EvZ7uuruUpe9RiUyEp25d1Keq7PWYNT0O_-mr8FCG5g,11
21
- rclone_api-1.0.20.dist-info/RECORD,,
17
+ rclone_api-1.0.22.dist-info/LICENSE,sha256=b6pOoifSXiUaz_lDS84vWlG3fr4yUKwB8fzkrH9R8bQ,1064
18
+ rclone_api-1.0.22.dist-info/METADATA,sha256=dl2QJr1Q_oRiRNLB9gC-ZWAbCgHUxqUm-cdBVjPEFnI,4454
19
+ rclone_api-1.0.22.dist-info/WHEEL,sha256=9Hm2OB-j1QcCUq9Jguht7ayGIIZBRTdOXD1qg9cCgPM,109
20
+ rclone_api-1.0.22.dist-info/top_level.txt,sha256=EvZ7uuruUpe9RiUyEp25d1Keq7PWYNT0O_-mr8FCG5g,11
21
+ rclone_api-1.0.22.dist-info/RECORD,,