@@ -33,39 +33,63 @@ def connect(self) -> None:
33
33
34
34
def disconnect (self ) -> None :
35
35
self .connected = False
36
- self .ctx .close ()
36
+ try :
37
+ self .ctx .close ()
38
+ except base .SMBTimeout as error :
39
+ raise TimeoutError (f"disconnect: { error } " )
37
40
38
41
def listdir (self , path : str = "/" ) -> typing .List [str ]:
39
42
try :
40
43
dentries = self .ctx .listPath (self .share , path )
41
44
except smb_structs .OperationFailure as error :
42
45
raise IOError (f"failed to readdir: { error } " )
46
+ except base .SMBTimeout as error :
47
+ raise TimeoutError (f"listdir: { error } " )
48
+ except base .NotConnectedError as error :
49
+ raise ConnectionError (f"listdir: { error } " )
50
+
43
51
return [dent .filename for dent in dentries ]
44
52
45
53
def mkdir (self , dpath : str ) -> None :
46
54
try :
47
55
self .ctx .createDirectory (self .share , dpath )
48
56
except smb_structs .OperationFailure as error :
49
57
raise IOError (f"failed to mkdir: { error } " )
58
+ except base .SMBTimeout as error :
59
+ raise TimeoutError (f"mkdir: { error } " )
60
+ except base .NotConnectedError as error :
61
+ raise ConnectionError (f"mkdir: { error } " )
50
62
51
63
def rmdir (self , dpath : str ) -> None :
52
64
try :
53
65
self .ctx .deleteDirectory (self .share , dpath )
54
66
except smb_structs .OperationFailure as error :
55
67
raise IOError (f"failed to rmdir: { error } " )
68
+ except base .SMBTimeout as error :
69
+ raise TimeoutError (f"rmdir: { error } " )
70
+ except base .NotConnectedError as error :
71
+ raise ConnectionError (f"rmdir: { error } " )
56
72
57
73
def unlink (self , fpath : str ) -> None :
58
74
try :
59
75
self .ctx .deleteFiles (self .share , fpath )
60
76
except smb_structs .OperationFailure as error :
61
77
raise IOError (f"failed to unlink: { error } " )
78
+ except base .SMBTimeout as error :
79
+ raise TimeoutError (f"unlink: { error } " )
80
+ except base .NotConnectedError as error :
81
+ raise ConnectionError (f"unlink: { error } " )
62
82
63
83
def write_text (self , fpath : str , teststr : str ) -> None :
64
84
try :
65
85
with io .BytesIO (teststr .encode ()) as writeobj :
66
86
self .ctx .storeFile (self .share , fpath , writeobj )
67
87
except smb_structs .OperationFailure as error :
68
88
raise IOError (f"failed in write_text: { error } " )
89
+ except base .SMBTimeout as error :
90
+ raise TimeoutError (f"write_text: { error } " )
91
+ except base .NotConnectedError as error :
92
+ raise ConnectionError (f"write: { error } " )
69
93
70
94
def read_text (self , fpath : str ) -> str :
71
95
try :
@@ -74,4 +98,8 @@ def read_text(self, fpath: str) -> str:
74
98
ret = readobj .getvalue ().decode ("utf8" )
75
99
except smb_structs .OperationFailure as error :
76
100
raise IOError (f"failed in read_text: { error } " )
101
+ except base .SMBTimeout as error :
102
+ raise TimeoutError (f"read_text: { error } " )
103
+ except base .NotConnectedError as error :
104
+ raise ConnectionError (f"read: { error } " )
77
105
return ret
0 commit comments