datastock 0.0.42__py3-none-any.whl → 0.0.44__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.
- datastock/_class0.py +9 -3
- datastock/_class1.py +2 -2
- datastock/_saveload.py +143 -33
- datastock/tests/test_01_DataStock.py +16 -1
- datastock/version.py +1 -1
- {datastock-0.0.42.dist-info → datastock-0.0.44.dist-info}/METADATA +1 -1
- {datastock-0.0.42.dist-info → datastock-0.0.44.dist-info}/RECORD +10 -10
- {datastock-0.0.42.dist-info → datastock-0.0.44.dist-info}/LICENSE +0 -0
- {datastock-0.0.42.dist-info → datastock-0.0.44.dist-info}/WHEEL +0 -0
- {datastock-0.0.42.dist-info → datastock-0.0.44.dist-info}/top_level.txt +0 -0
datastock/_class0.py
CHANGED
@@ -65,7 +65,7 @@ class DataStock0(object):
|
|
65
65
|
)
|
66
66
|
|
67
67
|
@classmethod
|
68
|
-
def from_dict(cls, din=None, isflat=None, sep=None):
|
68
|
+
def from_dict(cls, din=None, isflat=None, sep=None, obj=None):
|
69
69
|
""" Populate the instances attributes using an input dict
|
70
70
|
|
71
71
|
The input dict must be properly formatted
|
@@ -85,7 +85,9 @@ class DataStock0(object):
|
|
85
85
|
# ---------------------
|
86
86
|
# Instanciate and populate
|
87
87
|
|
88
|
-
obj
|
88
|
+
if obj is None:
|
89
|
+
obj = cls()
|
90
|
+
|
89
91
|
for k0 in din.keys():
|
90
92
|
if k0 == '_ddef':
|
91
93
|
if 'dobj' not in din[k0]['params'].keys():
|
@@ -161,11 +163,13 @@ class DataStock0(object):
|
|
161
163
|
|
162
164
|
def save(
|
163
165
|
self,
|
166
|
+
pfe=None,
|
164
167
|
path=None,
|
165
168
|
name=None,
|
166
169
|
sep=None,
|
167
|
-
|
170
|
+
overwrite=None,
|
168
171
|
return_pfe=False,
|
172
|
+
verb=True,
|
169
173
|
):
|
170
174
|
|
171
175
|
lsep = [';', '&', '?', '#', ',', '~', '.', '-', '_']
|
@@ -191,9 +195,11 @@ class DataStock0(object):
|
|
191
195
|
asarray=True,
|
192
196
|
returnas='blended',
|
193
197
|
),
|
198
|
+
pfe=pfe,
|
194
199
|
sep=sep,
|
195
200
|
path=path,
|
196
201
|
name=name,
|
202
|
+
overwrite=overwrite,
|
197
203
|
clsname=self.__class__.__name__,
|
198
204
|
return_pfe=return_pfe,
|
199
205
|
verb=verb,
|
datastock/_class1.py
CHANGED
@@ -369,8 +369,8 @@ class DataStock1(DataStock0):
|
|
369
369
|
###########
|
370
370
|
|
371
371
|
@classmethod
|
372
|
-
def from_dict(cls, din=None, sep=None):
|
373
|
-
obj = super().from_dict(din=din, sep=sep)
|
372
|
+
def from_dict(cls, din=None, sep=None, obj=None):
|
373
|
+
obj = super().from_dict(din=din, sep=sep, obj=obj)
|
374
374
|
obj.update()
|
375
375
|
return obj
|
376
376
|
|
datastock/_saveload.py
CHANGED
@@ -26,10 +26,12 @@ _KEY_SEP = '--sep--'
|
|
26
26
|
|
27
27
|
def save(
|
28
28
|
dflat=None,
|
29
|
+
pfe=None,
|
29
30
|
sep=None,
|
30
31
|
name=None,
|
31
32
|
path=None,
|
32
33
|
clsname=None,
|
34
|
+
overwrite=None,
|
33
35
|
return_pfe=None,
|
34
36
|
verb=None,
|
35
37
|
):
|
@@ -37,30 +39,97 @@ def save(
|
|
37
39
|
|
38
40
|
# ------------
|
39
41
|
# check inputs
|
42
|
+
# ------------
|
40
43
|
|
41
|
-
#
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
44
|
+
# ------------------
|
45
|
+
# pfe vs path/name
|
46
|
+
|
47
|
+
lc = [
|
48
|
+
pfe is not None,
|
49
|
+
path is not None or name is not None,
|
50
|
+
]
|
51
|
+
|
52
|
+
if np.sum(lc) > 1:
|
53
|
+
msg = (
|
54
|
+
"Saving, please provide {pfe} xor {path and/or name}!\n"
|
55
|
+
f"\t- path: {path}\n"
|
56
|
+
f"\t- name: {name}\n"
|
57
|
+
f"\t- pfe: {pfe}\n"
|
58
|
+
)
|
50
59
|
raise Exception(msg)
|
51
60
|
|
52
|
-
#
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
61
|
+
# ------------------
|
62
|
+
# pfe vs path/name
|
63
|
+
|
64
|
+
if lc[0]:
|
65
|
+
if not isinstance(pfe, str):
|
66
|
+
msg = (
|
67
|
+
"Arg pfe must be a str ponting to a file!\n"
|
68
|
+
f"Provided: {pfe}\n"
|
69
|
+
)
|
70
|
+
raise Exception(msg)
|
71
|
+
|
72
|
+
sdir, sfile = os.path.split(pfe)
|
73
|
+
if sdir == '':
|
74
|
+
sdir = os.path.asbpath('.')
|
75
|
+
|
76
|
+
# check path
|
77
|
+
if not os.path.isdir(sdir):
|
78
|
+
msg = (
|
79
|
+
"Arg pfe seems to have a non-valid path!\n"
|
80
|
+
"Provided: {sdir}\n"
|
81
|
+
)
|
82
|
+
raise Exception(msg)
|
83
|
+
|
84
|
+
# check file name
|
85
|
+
if not sfile.endswith('.npz'):
|
86
|
+
sfile = f"{sfile}.npz"
|
87
|
+
|
88
|
+
# re-assemble
|
89
|
+
pfe = os.path.join(sdir, sfile)
|
90
|
+
|
91
|
+
else:
|
92
|
+
# path
|
93
|
+
path = _generic_check._check_var(
|
94
|
+
path, 'path',
|
95
|
+
default=os.path.abspath('./'),
|
96
|
+
types=str,
|
97
|
+
)
|
98
|
+
path = os.path.abspath(path)
|
99
|
+
if not os.path.isdir(path):
|
100
|
+
msg = f"Arg path must be a valid path!\nProvided: {path}"
|
101
|
+
raise Exception(msg)
|
102
|
+
|
103
|
+
# clsname
|
104
|
+
clsname = _generic_check._check_var(
|
105
|
+
clsname, 'clsname',
|
106
|
+
default='DataCollection',
|
107
|
+
types=str,
|
108
|
+
)
|
109
|
+
|
110
|
+
# name
|
111
|
+
name = _generic_check._check_var(
|
112
|
+
name, 'name',
|
113
|
+
default='name',
|
114
|
+
types=str,
|
115
|
+
)
|
116
|
+
|
117
|
+
# set automatic name
|
118
|
+
user = getpass.getuser()
|
119
|
+
dt = dtm.datetime.now().strftime("%Y%m%d-%H%M%S")
|
120
|
+
name = f'{clsname}_{name}_{user}_{dt}.npz'
|
121
|
+
|
122
|
+
# pfe
|
123
|
+
pfe = os.path.join(path, name)
|
58
124
|
|
59
|
-
#
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
125
|
+
# ------------------
|
126
|
+
# options
|
127
|
+
|
128
|
+
# overwrite
|
129
|
+
overwrite = _generic_check._check_var(
|
130
|
+
overwrite, 'overwrite',
|
131
|
+
default=False,
|
132
|
+
types=bool,
|
64
133
|
)
|
65
134
|
|
66
135
|
# verb
|
@@ -79,24 +148,44 @@ def save(
|
|
79
148
|
|
80
149
|
# ----------------------
|
81
150
|
# save / print / return
|
82
|
-
|
83
|
-
user = getpass.getuser()
|
84
|
-
dt = dtm.datetime.now().strftime("%Y%m%d-%H%M%S")
|
85
|
-
name = f'{clsname}_{name}_{user}_{dt}.npz'
|
151
|
+
# ----------------------
|
86
152
|
|
87
153
|
# add sep
|
88
154
|
dflat[_KEY_SEP] = sep
|
89
155
|
|
156
|
+
# -----------------
|
157
|
+
# check vs existing
|
158
|
+
|
159
|
+
if os.path.isfile(pfe):
|
160
|
+
if overwrite is True:
|
161
|
+
msg = (
|
162
|
+
"Overwriting existing file:\n"
|
163
|
+
f"\t{pfe}"
|
164
|
+
)
|
165
|
+
warnings.warn(msg)
|
166
|
+
else:
|
167
|
+
msg = (
|
168
|
+
"File already existing!\n"
|
169
|
+
"\t=> use overwrite = True to overwrite\n"
|
170
|
+
f"\t{pfe}"
|
171
|
+
)
|
172
|
+
raise Exception(msg)
|
173
|
+
|
174
|
+
# --------
|
90
175
|
# save
|
91
|
-
pfe = os.path.join(path, name)
|
92
|
-
np.savez(pfe, **dflat)
|
93
176
|
|
177
|
+
np.savez(pfe, **dflat)
|
178
|
+
|
179
|
+
# -------
|
94
180
|
# print
|
181
|
+
|
95
182
|
if verb:
|
96
|
-
msg = f"
|
183
|
+
msg = f"\nSaved in:\n\t{pfe}\n"
|
97
184
|
print(msg)
|
98
185
|
|
186
|
+
# -------
|
99
187
|
# return
|
188
|
+
|
100
189
|
if return_pfe is True:
|
101
190
|
return pfe
|
102
191
|
|
@@ -110,6 +199,7 @@ def save(
|
|
110
199
|
def load(
|
111
200
|
pfe=None,
|
112
201
|
cls=None,
|
202
|
+
coll=None,
|
113
203
|
allow_pickle=None,
|
114
204
|
sep=None,
|
115
205
|
verb=None,
|
@@ -117,16 +207,24 @@ def load(
|
|
117
207
|
|
118
208
|
# -------------
|
119
209
|
# check inputs
|
210
|
+
# -------------
|
120
211
|
|
212
|
+
# ---------
|
121
213
|
# pfe
|
214
|
+
|
122
215
|
if not os.path.isfile(pfe):
|
123
216
|
msg = f"Arg pfe must be a valid path to a file!\n\t- Provided: {pfe}"
|
124
217
|
raise Exception(msg)
|
125
218
|
|
126
|
-
#
|
127
|
-
|
128
|
-
|
129
|
-
|
219
|
+
# --------------
|
220
|
+
# cls vs coll
|
221
|
+
|
222
|
+
if coll is None:
|
223
|
+
if cls is None:
|
224
|
+
from ._class import DataStock
|
225
|
+
cls = DataStock
|
226
|
+
else:
|
227
|
+
cls = coll.__class__
|
130
228
|
|
131
229
|
if not (type(cls) is type and hasattr(cls, 'from_dict')):
|
132
230
|
msg = (
|
@@ -135,14 +233,18 @@ def load(
|
|
135
233
|
)
|
136
234
|
raise Exception(msg)
|
137
235
|
|
236
|
+
# ------------
|
138
237
|
# allow_pickle
|
238
|
+
|
139
239
|
allow_pickle = _generic_check._check_var(
|
140
240
|
allow_pickle, 'allow_pickle',
|
141
241
|
default=True,
|
142
242
|
types=bool,
|
143
243
|
)
|
144
244
|
|
245
|
+
# -------
|
145
246
|
# verb
|
247
|
+
|
146
248
|
verb = _generic_check._check_var(
|
147
249
|
verb, 'verb',
|
148
250
|
default=True,
|
@@ -151,11 +253,13 @@ def load(
|
|
151
253
|
|
152
254
|
# --------------
|
153
255
|
# load flat dict
|
256
|
+
# --------------
|
154
257
|
|
155
258
|
dflat = dict(np.load(pfe, allow_pickle=allow_pickle))
|
156
259
|
|
157
260
|
# ------------------------------
|
158
261
|
# load sep from file if exists
|
262
|
+
# ------------------------------
|
159
263
|
|
160
264
|
if _KEY_SEP in dflat.keys():
|
161
265
|
# new
|
@@ -167,6 +271,7 @@ def load(
|
|
167
271
|
|
168
272
|
# ----------
|
169
273
|
# reshape
|
274
|
+
# ----------
|
170
275
|
|
171
276
|
dout = {}
|
172
277
|
for k0, v0 in dflat.items():
|
@@ -221,14 +326,19 @@ def load(
|
|
221
326
|
|
222
327
|
# -----------
|
223
328
|
# Instanciate
|
329
|
+
# -----------
|
224
330
|
|
225
|
-
|
331
|
+
coll = cls.from_dict(dout, obj=coll)
|
332
|
+
|
333
|
+
# -----------
|
334
|
+
# verb
|
335
|
+
# -----------
|
226
336
|
|
227
337
|
if verb:
|
228
338
|
msg = f"Loaded from\n\t{pfe}"
|
229
339
|
print(msg)
|
230
340
|
|
231
|
-
return
|
341
|
+
return coll
|
232
342
|
|
233
343
|
|
234
344
|
# #################################################################
|
@@ -602,11 +602,26 @@ class Test02_Manipulate():
|
|
602
602
|
def test22_get_nbytes(self):
|
603
603
|
nb, dnb = self.st.get_nbytes()
|
604
604
|
|
605
|
-
def
|
605
|
+
def test23_save_pfe(self, verb=False):
|
606
|
+
pfe = os.path.join(_PATH_OUTPUT, 'testsave.npz')
|
607
|
+
self.st.save(pfe=pfe, return_pfe=False)
|
608
|
+
os.remove(pfe)
|
609
|
+
|
610
|
+
def test24_saveload(self, verb=False):
|
606
611
|
pfe = self.st.save(path=_PATH_OUTPUT, verb=verb, return_pfe=True)
|
607
612
|
st2 = load(pfe, verb=verb)
|
608
613
|
# Just to check the loaded version works fine
|
609
614
|
msg = st2.__eq__(self.st, returnas=str)
|
615
|
+
if msg is not True:
|
616
|
+
raise Exception(msg)
|
617
|
+
os.remove(pfe)
|
618
|
+
|
619
|
+
def test25_saveload_coll(self, verb=False):
|
620
|
+
pfe = self.st.save(path=_PATH_OUTPUT, verb=verb, return_pfe=True)
|
621
|
+
st = DataStock()
|
622
|
+
st2 = load(pfe, coll=st, verb=verb)
|
623
|
+
# Just to check the loaded version works fine
|
624
|
+
msg = st2.__eq__(self.st, returnas=str)
|
610
625
|
if msg is not True:
|
611
626
|
raise Exception(msg)
|
612
627
|
os.remove(pfe)
|
datastock/version.py
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
# Do not edit, pipeline versioning governed by git tags!
|
2
|
-
__version__ = '0.0.
|
2
|
+
__version__ = '0.0.44'
|
@@ -2,8 +2,8 @@ _updateversion.py,sha256=OR6OJJozaHWzu7NWjKu5ERi0IyYqR61KrWvzf7kfoto,951
|
|
2
2
|
datastock/_DataCollection_utils.py,sha256=hHf6HvGKMmM-psx3fj9QcY1TEmKrAtTdkRokH7SFqoo,7143
|
3
3
|
datastock/__init__.py,sha256=i_Ijl-AM07n4zN52frWfbeGN1iB6v4e5oLzTuVIh_oM,217
|
4
4
|
datastock/_class.py,sha256=Az9PS3aSskiPMb1ekt78Y2ynBujYVc_cDjJxW9xH9g4,47
|
5
|
-
datastock/_class0.py,sha256=
|
6
|
-
datastock/_class1.py,sha256=
|
5
|
+
datastock/_class0.py,sha256=je4ckTynK8lEGBa7OSURYZZ_-3XjzAtf6SazN3b-f5k,6028
|
6
|
+
datastock/_class1.py,sha256=WlI666OOG8x-qtfNRcwP7aoCs7TDfvk3yKzVsHShO7c,28745
|
7
7
|
datastock/_class1_binning.py,sha256=LWHv2LIfgZfSFWYwqdcN0DKpNe6q7Go3sxfcJqmzTrI,28085
|
8
8
|
datastock/_class1_check.py,sha256=0azV7ftoAWsqTMEYbGQ_luJi95Px-pBif_vOug3W8Zg,50978
|
9
9
|
datastock/_class1_compute.py,sha256=yHdG0afYc_YtjpR6RvMh7SeRtWEyuHZ5y9VOPRIYVDo,31671
|
@@ -30,13 +30,13 @@ datastock/_plot_as_profile1d.py,sha256=ebOrzcV1m197Ua1CE04EV6mno_LryrumCpwGcrrDZ
|
|
30
30
|
datastock/_plot_correlations.py,sha256=ITOypu_AEoKl0ihxocV-JVTXIHqut6p9TfG-xZmQysc,10175
|
31
31
|
datastock/_plot_old_backup.py,sha256=XixTi2CiihKjtQP0TRycH0b25caWN1m35DgpsDeiWZE,21729
|
32
32
|
datastock/_plot_text.py,sha256=wQPqjfpLyIioS2JeOt3E9C9HgYUJ49YEoOgRuKYvAR8,3143
|
33
|
-
datastock/_saveload.py,sha256=
|
34
|
-
datastock/version.py,sha256=
|
33
|
+
datastock/_saveload.py,sha256=1vAMp27KfqXbo5b_Pi8hJux0stsHq6dO5vy8k1d4_iA,14141
|
34
|
+
datastock/version.py,sha256=EX8urNJ1ILJpXuRtvcV0i0MWqPQj1IxD_snvo_plkfg,80
|
35
35
|
datastock/tests/__init__.py,sha256=teOo2xP0IO7PQMuMDmum61XVHe2TuxW3BiHiL73X8jQ,35
|
36
|
-
datastock/tests/test_01_DataStock.py,sha256=
|
36
|
+
datastock/tests/test_01_DataStock.py,sha256=tGVJiCVjWT5oR4DlFopbcKMxi2cpCbBvdBDRc0WV1KU,17532
|
37
37
|
datastock/tests/output/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
38
|
-
datastock-0.0.
|
39
|
-
datastock-0.0.
|
40
|
-
datastock-0.0.
|
41
|
-
datastock-0.0.
|
42
|
-
datastock-0.0.
|
38
|
+
datastock-0.0.44.dist-info/LICENSE,sha256=V1uXqi3vxR0QhB4QdFyjkynl6jpN4wZmlB5EMYJk0NM,1068
|
39
|
+
datastock-0.0.44.dist-info/METADATA,sha256=XTfrvF04pd1W2uJ7lOUhlFWpvL7pQBWxwa7Updlhazc,8660
|
40
|
+
datastock-0.0.44.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
|
41
|
+
datastock-0.0.44.dist-info/top_level.txt,sha256=BzJsLLK_zZw13WQCoMhC74qWVKalnVCjBxdPXvJn7HQ,25
|
42
|
+
datastock-0.0.44.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|