megfile 5.0.4.post1__py3-none-any.whl → 5.0.5__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.
megfile/cli.py CHANGED
@@ -1,6 +1,8 @@
1
1
  import os
2
+ import shlex
2
3
  import shutil
3
4
  import signal
5
+ import subprocess
4
6
  import sys
5
7
  import time
6
8
  from concurrent.futures import ThreadPoolExecutor
@@ -27,6 +29,7 @@ from megfile.s3_path import get_s3_session
27
29
  from megfile.sftp_path import sftp_add_host_key
28
30
  from megfile.smart import (
29
31
  _smart_sync_single_file,
32
+ smart_cache,
30
33
  smart_copy,
31
34
  smart_exists,
32
35
  smart_getmd5,
@@ -719,6 +722,16 @@ def stat(path: str):
719
722
  click.echo(smart_stat(path))
720
723
 
721
724
 
725
+ @cli.command(short_help="Edit the file.")
726
+ @click.argument("path", type=PathType())
727
+ @click.option("-e", "--editor", type=str, default="vim", help="Editor to use.")
728
+ def edit(path: str, editor: str):
729
+ with smart_cache(path, mode="a") as cache_path:
730
+ cmds = shlex.split(editor)
731
+ cmds.append(cache_path)
732
+ subprocess.check_call(cmds)
733
+
734
+
722
735
  @cli.command(short_help="Return the megfile version.")
723
736
  def version():
724
737
  click.echo(VERSION)
megfile/utils/atomic.py CHANGED
@@ -133,15 +133,14 @@ class AtomicTextIOWrapper(TextIOWrapper):
133
133
  super().__exit__(exc_type, exc_val, exc_tb)
134
134
 
135
135
  def __del__(self):
136
+ if self.closed:
137
+ return
138
+
136
139
  if self.atomic:
137
140
  if self.abort():
138
141
  _logger.warning(
139
142
  f"skip closing atomic file-like object before deletion: {self}"
140
143
  )
141
144
  return
142
- try:
143
- if self._raw.writable():
144
- self.flush()
145
- self.close()
146
- except Exception:
147
- pass
145
+
146
+ self.close()
megfile/version.py CHANGED
@@ -1 +1 @@
1
- VERSION = "5.0.4.post1"
1
+ VERSION = "5.0.5"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: megfile
3
- Version: 5.0.4.post1
3
+ Version: 5.0.5
4
4
  Summary: Megvii file operation library
5
5
  Author-email: megvii-reng <megvii-reng@googlegroups.com>
6
6
  Project-URL: Homepage, https://github.com/megvii-research/megfile
@@ -1,5 +1,5 @@
1
1
  megfile/__init__.py,sha256=4XbMsR-lM7MxbnPGBI16m2sq6ghuA2-zZj2XF4bbX2Y,3291
2
- megfile/cli.py,sha256=TjUhfcOB_weEBa_e55nmiajq_XObAhQa7sx5oivrQCw,30620
2
+ megfile/cli.py,sha256=Quj5uM7UUukiDGLiG6Z1BwtKrbaWw_dHHNiVD-l649E,31022
3
3
  megfile/config.py,sha256=K3B_o2dnI7qGsGnK8Jg18-S5YYLYuzskfNJowlSMkQM,5065
4
4
  megfile/errors.py,sha256=zKwM5r5j89mlbWZNeax26Hq63NmQhl9iGMfTtgyvYNA,16830
5
5
  megfile/fs_path.py,sha256=RxdhMDoc1HRmQtyaCehEGk_UJtHGLrrwiUIHrS4LJiY,41027
@@ -13,7 +13,7 @@ megfile/sftp_path.py,sha256=zxuT1hk7sgoOUwq6KBXS__caX8Hk_LgPjINQheTZWAU,52063
13
13
  megfile/smart.py,sha256=Lab2jxprj-zvPw5GqUWlWiEY8bcpRlviks_qp9r-km8,38224
14
14
  megfile/smart_path.py,sha256=kGidkM5S58ChE3LVZMcUACs3IQgsqh9m04sp6-wxuhk,12615
15
15
  megfile/stdio_path.py,sha256=cxaDr8rtisTPnN-rjtaEpqQnshwiqwXFUJBM9xWY7Cg,2711
16
- megfile/version.py,sha256=MnVREJsp4Ik25QAKczs0kjFzRp3Aegh4XyEkdhOqwzI,25
16
+ megfile/version.py,sha256=KZmXhcDHicScZCqwBzPprRNi1hfyVjIjbAsyTGuyt_g,19
17
17
  megfile/webdav_path.py,sha256=QrRYKBGWXkUZXEeHxAfVJkxnCfnczocBSRkVgDC_qC4,31421
18
18
  megfile/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
19
  megfile/lib/base_memory_handler.py,sha256=VEfw2RuynHFPtQ6KZv8hv8rnUwsj566Omg4cHajhARk,2863
@@ -41,12 +41,12 @@ megfile/lib/url.py,sha256=ER32pWy9Q2MAk3TraAaNEBWIqUeBmLuM57ol2cs7-Ks,103
41
41
  megfile/lib/webdav_memory_handler.py,sha256=7nq4o69ck_7dFh6xlYTBG8-rj49Q7gxwa3V2bHXEQz4,2551
42
42
  megfile/lib/webdav_prefetch_reader.py,sha256=M0X6E6t-DS5q9KiLvjVZx_AZuiW9SaIkBnIPLc774GQ,3941
43
43
  megfile/utils/__init__.py,sha256=lfJze58nO18ug8EUfSJgTTxOwj1p7FQdsnO1keBeMSo,12740
44
- megfile/utils/atomic.py,sha256=1skKRE7_tQP1FAgmYWlDRZyHNY5iyYYi0V8XQfSWeyI,4165
44
+ megfile/utils/atomic.py,sha256=V3gqUQjHIx5j6LCrU2_0tLVlX1ossetxdJJK48g9-rc,4084
45
45
  megfile/utils/mutex.py,sha256=asb8opGLgK22RiuBJUnfsvB8LnMmodP8KzCVHKmQBWA,2561
46
- megfile-5.0.4.post1.dist-info/licenses/LICENSE,sha256=xuY_rHyygMLmf0LgkKj_-wb-BxveHp9rTN0VDE73PrE,11365
47
- megfile-5.0.4.post1.dist-info/licenses/LICENSE.pyre,sha256=9lf5nT-5ZH25JijpYAequ0bl8E8z5JmZB1qrjiUMp84,1080
48
- megfile-5.0.4.post1.dist-info/METADATA,sha256=3GY4kMU9g3APFaQ2a7z0cexM4SX0HOesW2WOKdbCiMs,9232
49
- megfile-5.0.4.post1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
50
- megfile-5.0.4.post1.dist-info/entry_points.txt,sha256=M6ZWSSv5_5_QtIpZafy3vq7WuOJ_5dSGQQnEZbByt2Q,49
51
- megfile-5.0.4.post1.dist-info/top_level.txt,sha256=i3rMgdU1ZAJekAceojhA-bkm3749PzshtRmLTbeLUPQ,8
52
- megfile-5.0.4.post1.dist-info/RECORD,,
46
+ megfile-5.0.5.dist-info/licenses/LICENSE,sha256=xuY_rHyygMLmf0LgkKj_-wb-BxveHp9rTN0VDE73PrE,11365
47
+ megfile-5.0.5.dist-info/licenses/LICENSE.pyre,sha256=9lf5nT-5ZH25JijpYAequ0bl8E8z5JmZB1qrjiUMp84,1080
48
+ megfile-5.0.5.dist-info/METADATA,sha256=A5wTdggi4xoo1jf9Jn9PzkOCglLOQ1TBPBBX07_yLtE,9226
49
+ megfile-5.0.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
50
+ megfile-5.0.5.dist-info/entry_points.txt,sha256=M6ZWSSv5_5_QtIpZafy3vq7WuOJ_5dSGQQnEZbByt2Q,49
51
+ megfile-5.0.5.dist-info/top_level.txt,sha256=i3rMgdU1ZAJekAceojhA-bkm3749PzshtRmLTbeLUPQ,8
52
+ megfile-5.0.5.dist-info/RECORD,,