rclone-api 1.5.25__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/__init__.py +5 -1
- rclone_api/fs.py +27 -2
- {rclone_api-1.5.25.dist-info → rclone_api-1.5.28.dist-info}/METADATA +1 -1
- {rclone_api-1.5.25.dist-info → rclone_api-1.5.28.dist-info}/RECORD +8 -8
- {rclone_api-1.5.25.dist-info → rclone_api-1.5.28.dist-info}/WHEEL +0 -0
- {rclone_api-1.5.25.dist-info → rclone_api-1.5.28.dist-info}/entry_points.txt +0 -0
- {rclone_api-1.5.25.dist-info → rclone_api-1.5.28.dist-info}/licenses/LICENSE +0 -0
- {rclone_api-1.5.25.dist-info → rclone_api-1.5.28.dist-info}/top_level.txt +0 -0
rclone_api/__init__.py
CHANGED
@@ -24,7 +24,7 @@ from .dir_listing import DirListing # Directory contents representation
|
|
24
24
|
from .file import File, FileItem # File representation
|
25
25
|
from .file_stream import FilesStream # Streaming file listings
|
26
26
|
from .filelist import FileList # File list utilities
|
27
|
-
from .fs import FSPath, RemoteFS # Filesystem utilities
|
27
|
+
from .fs import FSPath, RealFS, RemoteFS # Filesystem utilities
|
28
28
|
from .http_server import HttpFetcher, HttpServer, Range # HTTP serving capabilities
|
29
29
|
|
30
30
|
# Import logging configuration utilities
|
@@ -972,4 +972,8 @@ __all__ = [
|
|
972
972
|
"Range", # HTTP range
|
973
973
|
"HttpFetcher", # HTTP fetcher
|
974
974
|
"PartInfo", # Part information for uploads
|
975
|
+
"RealFS", # Real filesystem
|
976
|
+
"RemoteFS", # Remote filesystem
|
977
|
+
"FSPath", # File object backed by a real or remote filesystem
|
978
|
+
"FilesStream",
|
975
979
|
]
|
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
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
rclone_api/__init__.py,sha256=
|
1
|
+
rclone_api/__init__.py,sha256=1bmwlfdExJS7wFFWJyaS8GFhxbBUDfKhCGYD-h_6pgk,33232
|
2
2
|
rclone_api/cli.py,sha256=dibfAZIh0kXWsBbfp3onKLjyZXo54mTzDjUdzJlDlWo,231
|
3
3
|
rclone_api/completed_process.py,sha256=_IZ8IWK7DM1_tsbDEkH6wPZ-bbcrgf7A7smls854pmg,1775
|
4
4
|
rclone_api/config.py,sha256=f6jEAxVorGFr31oHfcsu5AJTtOJj2wR5tTSsbGGZuIw,2558
|
@@ -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
|