Skip to content

Commit 6cf4066

Browse files
committed
Fixed file wrapper errors
1 parent 6b8b0de commit 6cf4066

File tree

3 files changed

+67
-122
lines changed

3 files changed

+67
-122
lines changed

philh_myftp_biz/array.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from typing import Callable, Self, TYPE_CHECKING, Any
22

33
if TYPE_CHECKING:
4-
from .file import JSON, PKL
4+
from .file import JSON, PKL, TXT
55
from .pc import _var
66

77
class InvalidArrayError(Exception):
@@ -17,12 +17,12 @@ class List[V]:
1717
def __init__(self,
1818
array: 'list[V] | tuple[V] | Self[V] | filter[V] | JSON | _var | PKL | range' = []
1919
):
20-
from .file import JSON, PKL, temp
20+
from .file import JSON, PKL, temp, TXT
2121
from builtins import filter
2222
from .classOBJ import path
2323
from .pc import _var
2424

25-
if isinstance(array, (JSON, _var, PKL)):
25+
if isinstance(array, (JSON, _var, PKL, TXT)):
2626
self.var = array
2727

2828
elif isinstance(array, List):

philh_myftp_biz/file.py

Lines changed: 63 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import TYPE_CHECKING, Generator
1+
from typing import TYPE_CHECKING, Generator, Callable, Any
22

33
if TYPE_CHECKING:
44
from .pc import Path
@@ -31,6 +31,25 @@ def temp(
3131

3232
return dir.child(f'{name}-{id}.{ext}')
3333

34+
class _Template:
35+
36+
def __init__(self,
37+
path: 'Path',
38+
default = ''
39+
):
40+
self._default = default
41+
self._path = path
42+
43+
read = Callable[[], Any]
44+
"""
45+
Read data from the file
46+
"""
47+
48+
save = Callable[[Any], None]
49+
"""
50+
Save data to the file
51+
"""
52+
3453
class XML:
3554
"""
3655
.XML File
@@ -69,35 +88,24 @@ def save(self) -> None:
6988

7089
self.path.write(d)
7190

72-
class PKL:
91+
class PKL(_Template):
7392
"""
7493
.PKL File
7594
"""
7695

77-
def __init__(self, path, default=None):
78-
from .pc import Path
79-
self.path = Path(path)
80-
self.default = default
81-
8296
def read(self):
83-
"""
84-
Read the data from the file
85-
"""
8697
from dill import load
8798

8899
try:
89-
with self.path.open('rb') as f:
100+
with self._path.open('rb') as f:
90101
return load(f)
91102
except:
92-
return self.default
103+
return self._default
93104

94105
def save(self, value) -> None:
95-
"""
96-
Save data to the file
97-
"""
98106
from dill import dump
99107

100-
with self.path.open('wb') as f:
108+
with self._path.open('wb') as f:
101109
dump(value, f)
102110

103111
class VHDX:
@@ -163,140 +171,102 @@ def dismount(self):
163171
# Delete the mounting directory
164172
self.MNT.delete()
165173

166-
class JSON:
174+
class JSON(_Template):
167175
"""
168176
.JSON File
169177
"""
170178

171-
def __init__(self,
172-
path: 'Path',
173-
default = {}
174-
):
175-
from .pc import Path
176-
177-
self.path = Path(path)
178-
self.__default = default
179-
180179
def read(self):
181-
"""
182-
Read the contents of the json file
183-
"""
184180
from json import load
185-
from .text import hex
186181

187182
try:
188-
return load(self.path.open())
183+
return load(self._path.open())
189184
except:
190-
return self.__default
185+
return self._default
191186

192187
def save(self, data):
193-
"""
194-
Save data to the json file
195-
"""
196188
from json import dump
197-
from .text import hex
198189

199190
dump(
200191
obj = data,
201-
fp = self.path.open('w'),
192+
fp = self._path.open('w'),
202193
indent = 3
203194
)
204195

205-
class INI:
196+
class INI(_Template):
206197
"""
207198
.INI/.PROPERTIES File
208199
"""
209-
210-
def __init__(self, path:'Path', default=''):
211-
from .pc import Path
212-
213-
self.path = Path(path)
214-
self.__default = default
215200

216-
def __obj(self):
217-
from configobj import ConfigObj
218-
219-
return ConfigObj(self.path.path)
220-
221201
def read(self):
202+
from configobj import ConfigObj
203+
222204
try:
223-
return self.__obj().dict()
205+
obj = ConfigObj(str(self._path))
206+
return obj.dict()
224207
except:
225-
return self.__default
208+
return self._default
226209

227210
def save(self, data):
211+
from configobj import ConfigObj
228212

229-
config = self.__obj()
213+
obj = ConfigObj(str(self._path))
230214

231215
for name in data:
232-
config[name] = data[name]
216+
obj[name] = data[name]
233217

234-
config.write()
218+
obj.write()
235219

236-
class YAML:
220+
class YAML(_Template):
237221
"""
238222
.YML/.YAML File
239223
"""
240224

241-
def __init__(self, path, default={}):
242-
from .pc import Path
243-
244-
self.path = Path(path)
245-
self.__default = default
246-
247225
def read(self):
248-
"""
249-
Read the yaml file
250-
"""
251226
from yaml import safe_load
252227

253228
try:
254229

255-
with self.path.open() as f:
230+
with self._path.open() as f:
256231
data = safe_load(f)
257232

258-
if data is None:
259-
return self.__default
260-
else:
233+
if data:
261234
return data
235+
else:
236+
return self._default
262237

263238
except:
264-
return self.__default
239+
return self._default
265240

266241
def save(self, data):
267-
"""
268-
Save data to the yaml file
269-
"""
270242
from yaml import dump
271243

272-
with self.path.open('w') as file:
273-
dump(data, file, default_flow_style=False, sort_keys=False)
244+
dump(
245+
data = data,
246+
stream = self._path.open('w'),
247+
default_flow_style = False,
248+
sort_keys = False
249+
)
274250

275-
class TXT:
251+
class TXT(_Template):
276252
"""
277253
.TXT File
278254
"""
279-
280-
def __init__(self, path, default=''):
281-
from .pc import Path
282-
283-
self.path = Path(path)
284-
self.__default = default
285255

286256
def read(self):
287257
"""
288258
Read data from the txt file
289259
"""
290260
try:
291-
self.path.open('r').read()
261+
return self._path.open('r').read()
292262
except:
293-
return self.__default
263+
return self._default
294264

295-
def save(self, data) -> None:
265+
def save(self, data):
296266
"""
297267
Save data to the txt file
298268
"""
299-
self.path.open('w').write(str(data))
269+
self._path.open('w').write(str(data))
300270

301271
class ZIP:
302272
"""
@@ -305,7 +275,6 @@ class ZIP:
305275

306276
def __init__(self, zipfile:'Path'):
307277
from zipfile import ZipFile
308-
from .pc import Path
309278

310279
self.zipfile = zipfile
311280
self.__zip = ZipFile(str(zipfile))
@@ -364,66 +333,42 @@ def extractAll(self,
364333
else:
365334
self.__zip.extractall(str(dst))
366335

367-
class CSV:
336+
class CSV(_Template):
368337
"""
369338
.CSV File
370339
"""
371340

372-
def __init__(self, path, default=''):
373-
from .pc import Path
374-
375-
self.path = Path(path)
376-
self.__default = default
377-
378341
def read(self):
379-
"""
380-
Read data from the csv file
381-
"""
382342
from csv import reader
383343

384344
try:
385-
with self.path.open() as csvfile:
345+
with self._path.open() as csvfile:
386346
return reader(csvfile)
387347
except:
388-
return self.__default
348+
return self._default
389349

390350
def save(self, data) -> None:
391-
"""
392-
Save data to the csv file
393-
"""
394351
from csv import writer
395352

396-
with self.path.open('w') as csvfile:
353+
with self._path.open('w') as csvfile:
397354
writer(csvfile).writerows(data)
398355

399-
class TOML:
356+
class TOML(_Template):
400357
"""
401358
.TOML File
402359
"""
403360

404-
def __init__(self, path, default=''):
405-
from .pc import Path
406-
407-
self.path = Path(path)
408-
self.__default = default
409-
410361
def read(self):
411-
"""
412-
Read data from the toml file
413-
"""
414362
from toml import load
415363

416364
try:
417-
with self.path.open() as f:
365+
with self._path.open() as f:
418366
return load(f)
419367
except:
420-
return self.__default
368+
return self._default
421369

422370
def save(self, data) -> None:
423-
"""
424-
Save data to the toml file
425-
"""
426371
from tomli_w import dump
427372

428-
with self.path.open('wb') as f:
373+
with self._path.open('wb') as f:
429374
dump(data, f, indent=2)

philh_myftp_biz/json.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import TYPE_CHECKING, Self, Generator, Callable, Generic, TypeVar, Iterator
1+
from typing import TYPE_CHECKING, Self, Generator
22
from json import load, loads, dump, dumps
33

44
if TYPE_CHECKING:

0 commit comments

Comments
 (0)