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 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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rclone_api
3
- Version: 1.5.26
3
+ Version: 1.5.28
4
4
  Summary: rclone api in python
5
5
  Home-page: https://github.com/zackees/rclone-api
6
6
  License: BSD 3-Clause License
@@ -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=judqhucGuhlsqUCoxa0cELZ-cjVDymlJirrjPzIrJ84,7219
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.26.dist-info/licenses/LICENSE,sha256=b6pOoifSXiUaz_lDS84vWlG3fr4yUKwB8fzkrH9R8bQ,1064
58
- rclone_api-1.5.26.dist-info/METADATA,sha256=H0bEHI4tOsGrt6Be5m_UBMyA20KqSJdhZ5KJwUyvl6M,37155
59
- rclone_api-1.5.26.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
60
- rclone_api-1.5.26.dist-info/entry_points.txt,sha256=fJteOlYVwgX3UbNuL9jJ0zUTuX2O79JFAeNgK7Sw7EQ,255
61
- rclone_api-1.5.26.dist-info/top_level.txt,sha256=EvZ7uuruUpe9RiUyEp25d1Keq7PWYNT0O_-mr8FCG5g,11
62
- rclone_api-1.5.26.dist-info/RECORD,,
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,,