rclone-api 1.5.26__py3-none-any.whl → 1.5.28__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/fs.py +27 -2
- {rclone_api-1.5.26.dist-info → rclone_api-1.5.28.dist-info}/METADATA +1 -1
- {rclone_api-1.5.26.dist-info → rclone_api-1.5.28.dist-info}/RECORD +7 -7
- {rclone_api-1.5.26.dist-info → rclone_api-1.5.28.dist-info}/WHEEL +0 -0
- {rclone_api-1.5.26.dist-info → rclone_api-1.5.28.dist-info}/entry_points.txt +0 -0
- {rclone_api-1.5.26.dist-info → rclone_api-1.5.28.dist-info}/licenses/LICENSE +0 -0
- {rclone_api-1.5.26.dist-info → rclone_api-1.5.28.dist-info}/top_level.txt +0 -0
rclone_api/fs.py
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
import abc
|
2
2
|
import shutil
|
3
|
+
import warnings
|
3
4
|
from pathlib import Path
|
4
5
|
|
5
6
|
from rclone_api.config import Config
|
@@ -41,6 +42,10 @@ class FS(abc.ABC):
|
|
41
42
|
def get_path(self, path: str) -> "FSPath":
|
42
43
|
pass
|
43
44
|
|
45
|
+
@abc.abstractmethod
|
46
|
+
def dispose(self) -> None:
|
47
|
+
pass
|
48
|
+
|
44
49
|
|
45
50
|
class RealFS(FS):
|
46
51
|
|
@@ -78,6 +83,9 @@ class RealFS(FS):
|
|
78
83
|
def get_path(self, path: str) -> "FSPath":
|
79
84
|
return FSPath(self, path)
|
80
85
|
|
86
|
+
def dispose(self) -> None:
|
87
|
+
pass
|
88
|
+
|
81
89
|
|
82
90
|
class RemoteFS(FS):
|
83
91
|
|
@@ -180,8 +188,15 @@ class RemoteFS(FS):
|
|
180
188
|
|
181
189
|
class FSPath:
|
182
190
|
def __init__(self, fs: FS, path: str) -> None:
|
183
|
-
self.fs = fs
|
184
|
-
self.path = path
|
191
|
+
self.fs: FS = fs
|
192
|
+
self.path: str = path
|
193
|
+
self.fs_holder: FS | None = None
|
194
|
+
|
195
|
+
def set_owner(self) -> None:
|
196
|
+
self.fs_holder = self.fs
|
197
|
+
|
198
|
+
def is_real_fs(self) -> bool:
|
199
|
+
return isinstance(self.fs, RealFS)
|
185
200
|
|
186
201
|
def read_text(self) -> str:
|
187
202
|
data = self.read_bytes()
|
@@ -204,6 +219,16 @@ class FSPath:
|
|
204
219
|
def __repr__(self) -> str:
|
205
220
|
return f"FSPath({self.path})"
|
206
221
|
|
222
|
+
def __enter__(self) -> "FSPath":
|
223
|
+
if self.fs_holder is not None:
|
224
|
+
warnings.warn("This operation is reserved for the cwd returned by FS")
|
225
|
+
return self
|
226
|
+
|
227
|
+
def __exit__(self, exc_type, exc_value, traceback) -> None:
|
228
|
+
if self.fs_holder is not None:
|
229
|
+
self.fs_holder.dispose()
|
230
|
+
self.fs_holder = None
|
231
|
+
|
207
232
|
def mkdir(self, parents=True, exist_ok=True) -> None:
|
208
233
|
self.fs.mkdir(self.path, parents=parents, exist_ok=exist_ok)
|
209
234
|
|
@@ -13,7 +13,7 @@ rclone_api/file_item.py,sha256=cH-AQYsxedhNPp4c8NHY1ad4Z7St4yf_VGbmiGD59no,1770
|
|
13
13
|
rclone_api/file_part.py,sha256=i6ByS5_sae8Eba-4imBVTxd-xKC8ExWy7NR8QGr0ors,6155
|
14
14
|
rclone_api/file_stream.py,sha256=_W3qnwCuigqA0hzXl2q5pAxSZDRaUSwet4BkT0lpnzs,1431
|
15
15
|
rclone_api/filelist.py,sha256=xbiusvNgaB_b_kQOZoHMJJxn6TWGtPrWd2J042BI28o,767
|
16
|
-
rclone_api/fs.py,sha256=
|
16
|
+
rclone_api/fs.py,sha256=T08YXyHgxyWbjK09hNAIhchLyWtA1LLU5o1rJe6zvcE,7899
|
17
17
|
rclone_api/group_files.py,sha256=H92xPW9lQnbNw5KbtZCl00bD6iRh9yRbCuxku4j_3dg,8036
|
18
18
|
rclone_api/http_server.py,sha256=ZdL-rGaq0zIjcaIiRIbPBQ4OIWZ7dCu71aq0nRlKtY4,11686
|
19
19
|
rclone_api/install.py,sha256=Xb1BRn8rQcSpSd4dzmvIOELP2zM2DytUeIZ6jzv738A,2893
|
@@ -54,9 +54,9 @@ rclone_api/s3/multipart/upload_parts_inline.py,sha256=V7syKjFyVIe4U9Ahl5XgqVTzt9
|
|
54
54
|
rclone_api/s3/multipart/upload_parts_resumable.py,sha256=6-nlMclS8jyVvMvFbQDcZOX9MY1WbCcKA_s9bwuYxnk,9793
|
55
55
|
rclone_api/s3/multipart/upload_parts_server_side_merge.py,sha256=Fp2pdrs5dONQI9LkfNolgAGj1-Z2V1SsRd0r0sreuXI,18040
|
56
56
|
rclone_api/s3/multipart/upload_state.py,sha256=f-Aq2NqtAaMUMhYitlICSNIxCKurWAl2gDEUVizLIqw,6019
|
57
|
-
rclone_api-1.5.
|
58
|
-
rclone_api-1.5.
|
59
|
-
rclone_api-1.5.
|
60
|
-
rclone_api-1.5.
|
61
|
-
rclone_api-1.5.
|
62
|
-
rclone_api-1.5.
|
57
|
+
rclone_api-1.5.28.dist-info/licenses/LICENSE,sha256=b6pOoifSXiUaz_lDS84vWlG3fr4yUKwB8fzkrH9R8bQ,1064
|
58
|
+
rclone_api-1.5.28.dist-info/METADATA,sha256=RsDZv4SyyPBilnMykL9Yywt0p9ORIYHoqqUporH1V2c,37155
|
59
|
+
rclone_api-1.5.28.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
|
60
|
+
rclone_api-1.5.28.dist-info/entry_points.txt,sha256=fJteOlYVwgX3UbNuL9jJ0zUTuX2O79JFAeNgK7Sw7EQ,255
|
61
|
+
rclone_api-1.5.28.dist-info/top_level.txt,sha256=EvZ7uuruUpe9RiUyEp25d1Keq7PWYNT0O_-mr8FCG5g,11
|
62
|
+
rclone_api-1.5.28.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|