modelflowib 2.78__tar.gz → 2.79__tar.gz
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.
- {modelflowib-2.78 → modelflowib-2.79}/PKG-INFO +1 -1
- {modelflowib-2.78 → modelflowib-2.79}/model_parquet_mixin.py +20 -8
- {modelflowib-2.78 → modelflowib-2.79}/modelclass.py +522 -51
- {modelflowib-2.78 → modelflowib-2.79}/modelconstruct_estimation.py +18 -14
- {modelflowib-2.78 → modelflowib-2.79}/modeldashsidebar.py +20 -9
- {modelflowib-2.78 → modelflowib-2.79}/modelestimator_new.py +117 -31
- {modelflowib-2.78 → modelflowib-2.79}/modelflowib.egg-info/PKG-INFO +1 -1
- {modelflowib-2.78 → modelflowib-2.79}/modelhelp.py +48 -2
- {modelflowib-2.78 → modelflowib-2.79}/modeljupytermagic.py +68 -5
- {modelflowib-2.78 → modelflowib-2.79}/modelsolver_ng.py +4 -2
- {modelflowib-2.78 → modelflowib-2.79}/pyproject.toml +1 -1
- {modelflowib-2.78 → modelflowib-2.79}/README.md +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/license.md +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modelBLfunk.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/model_Excel.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/model_cvx.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/model_dynare.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/model_financial_stability.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/model_latex.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/model_latex_class.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modelconstruct.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modeldash.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modeldashboot.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modeldekom.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modeldiff.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modeldisplay.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modelestimation.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modelflowib.egg-info/SOURCES.txt +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modelflowib.egg-info/dependency_links.txt +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modelflowib.egg-info/requires.txt +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modelflowib.egg-info/top_level.txt +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modelgrab.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modelgrabgdx.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modelgrabwf2.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modelhtml.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modelinvert.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modeljupyter.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modelmacrograb.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modelmanipulation.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modelmf.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modelnet.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modelnewton.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modelnormalize.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modelpattern.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modelreport.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modeluserfunk.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modelvis.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modelwidget.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/modelwidget_input.py +0 -0
- {modelflowib-2.78 → modelflowib-2.79}/setup.cfg +0 -0
|
@@ -181,8 +181,18 @@ class Parquet_Mixin:
|
|
|
181
181
|
If True (only effective when large=True), store float64
|
|
182
182
|
columns as float32 to roughly halve file size.
|
|
183
183
|
On load the data is restored to float64.
|
|
184
|
+
|
|
185
|
+
A model instance without a lastdf holds no dataframe, so the feather
|
|
186
|
+
format has nothing to be fast about. Such a model is always written as a
|
|
187
|
+
structure only ``.pcims`` file on the JSON/gzip path.
|
|
184
188
|
"""
|
|
185
|
-
|
|
189
|
+
nodata = (not self.has_data) or (not kwargs.get('data', True)) \
|
|
190
|
+
or Path(file_path).suffix == self.nodata_suffix
|
|
191
|
+
|
|
192
|
+
if nodata and large:
|
|
193
|
+
print('No dataframe to store, dumping the structure in the json format instead')
|
|
194
|
+
|
|
195
|
+
if not large or nodata:
|
|
186
196
|
# ── original JSON/gzip path ──────────────────────────────────
|
|
187
197
|
return super().modeldump(file_path=file_path, keep=keep, **kwargs)
|
|
188
198
|
|
|
@@ -194,10 +204,10 @@ class Parquet_Mixin:
|
|
|
194
204
|
|
|
195
205
|
# --- serialise current_per (small – keep as JSON) ----------------
|
|
196
206
|
try:
|
|
197
|
-
current_per_json = pd.Series(self.
|
|
207
|
+
current_per_json = pd.Series(self.dump_current_per).to_json()
|
|
198
208
|
except Exception:
|
|
199
209
|
current_per_json = _period_series_to_json(
|
|
200
|
-
pd.Series(self.
|
|
210
|
+
pd.Series(self.dump_current_per)
|
|
201
211
|
)
|
|
202
212
|
|
|
203
213
|
# --- metadata dict (everything *except* DataFrames) --------------
|
|
@@ -242,7 +252,7 @@ class Parquet_Mixin:
|
|
|
242
252
|
# current_per
|
|
243
253
|
zf.writestr('current_per.json', current_per_json)
|
|
244
254
|
# lastdf → feather
|
|
245
|
-
zf.writestr('lastdf.feather', _df_to_feather_bytes(_maybe_compact(self.
|
|
255
|
+
zf.writestr('lastdf.feather', _df_to_feather_bytes(_maybe_compact(self.dump_df)))
|
|
246
256
|
# keep_solutions → one feather each, indexed by position
|
|
247
257
|
if keep:
|
|
248
258
|
for i, (name, df) in enumerate(self.keep_solutions.items()):
|
|
@@ -291,11 +301,13 @@ class Parquet_Mixin:
|
|
|
291
301
|
|
|
292
302
|
pinfile = Path(infile.replace('\\', '/'))
|
|
293
303
|
if not pinfile.suffix:
|
|
294
|
-
# try .pcimz first,
|
|
295
|
-
|
|
296
|
-
|
|
304
|
+
# try .pcimz first, then .pcim, then the structure only .pcims
|
|
305
|
+
for trysuffix in ('.pcimz', cls.data_suffix, cls.nodata_suffix):
|
|
306
|
+
if pinfile.with_suffix(trysuffix).exists():
|
|
307
|
+
pinfile = pinfile.with_suffix(trysuffix)
|
|
308
|
+
break
|
|
297
309
|
else:
|
|
298
|
-
pinfile = pinfile.with_suffix(
|
|
310
|
+
pinfile = pinfile.with_suffix(cls.data_suffix)
|
|
299
311
|
|
|
300
312
|
# ── detect format ────────────────────────────────────────────────
|
|
301
313
|
if pinfile.exists() and zipfile.is_zipfile(pinfile):
|