ml-dash 0.5.2__py3-none-any.whl → 0.5.3__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.
ml_dash/files.py
CHANGED
|
@@ -263,11 +263,12 @@ class FileBuilder:
|
|
|
263
263
|
if self._experiment._write_protected:
|
|
264
264
|
raise RuntimeError("Experiment is write-protected and cannot be modified.")
|
|
265
265
|
|
|
266
|
-
# Create temporary file
|
|
267
|
-
|
|
266
|
+
# Create temporary file with desired filename
|
|
267
|
+
temp_dir = tempfile.mkdtemp()
|
|
268
|
+
temp_path = os.path.join(temp_dir, file_name)
|
|
268
269
|
try:
|
|
269
270
|
# Write JSON content to temp file
|
|
270
|
-
with
|
|
271
|
+
with open(temp_path, 'w') as f:
|
|
271
272
|
json.dump(content, f, indent=2)
|
|
272
273
|
|
|
273
274
|
# Save using existing save() method
|
|
@@ -282,9 +283,10 @@ class FileBuilder:
|
|
|
282
283
|
|
|
283
284
|
return result
|
|
284
285
|
finally:
|
|
285
|
-
# Clean up temp file
|
|
286
|
+
# Clean up temp file and directory
|
|
286
287
|
try:
|
|
287
288
|
os.unlink(temp_path)
|
|
289
|
+
os.rmdir(temp_dir)
|
|
288
290
|
except Exception:
|
|
289
291
|
pass
|
|
290
292
|
|
|
@@ -326,9 +328,9 @@ class FileBuilder:
|
|
|
326
328
|
if self._experiment._write_protected:
|
|
327
329
|
raise RuntimeError("Experiment is write-protected and cannot be modified.")
|
|
328
330
|
|
|
329
|
-
# Create temporary file
|
|
330
|
-
|
|
331
|
-
os.
|
|
331
|
+
# Create temporary file with desired filename
|
|
332
|
+
temp_dir = tempfile.mkdtemp()
|
|
333
|
+
temp_path = os.path.join(temp_dir, file_name)
|
|
332
334
|
|
|
333
335
|
try:
|
|
334
336
|
# Save model to temp file
|
|
@@ -346,9 +348,69 @@ class FileBuilder:
|
|
|
346
348
|
|
|
347
349
|
return result
|
|
348
350
|
finally:
|
|
349
|
-
# Clean up temp file
|
|
351
|
+
# Clean up temp file and directory
|
|
350
352
|
try:
|
|
351
353
|
os.unlink(temp_path)
|
|
354
|
+
os.rmdir(temp_dir)
|
|
355
|
+
except Exception:
|
|
356
|
+
pass
|
|
357
|
+
|
|
358
|
+
def save_pkl(self, content: Any, file_name: str) -> Dict[str, Any]:
|
|
359
|
+
"""
|
|
360
|
+
Save Python object to a pickle file.
|
|
361
|
+
|
|
362
|
+
Args:
|
|
363
|
+
content: Python object to pickle (must be pickle-serializable)
|
|
364
|
+
file_name: Name of the file to create (should end with .pkl or .pickle)
|
|
365
|
+
|
|
366
|
+
Returns:
|
|
367
|
+
File metadata dict with id, path, filename, checksum, etc.
|
|
368
|
+
|
|
369
|
+
Raises:
|
|
370
|
+
RuntimeError: If experiment is not open or write-protected
|
|
371
|
+
ValueError: If content cannot be pickled
|
|
372
|
+
|
|
373
|
+
Examples:
|
|
374
|
+
data = {"model": "resnet50", "weights": np.array([1, 2, 3])}
|
|
375
|
+
result = experiment.file(prefix="/data").save_pkl(data, "data.pkl")
|
|
376
|
+
|
|
377
|
+
# Or save any Python object
|
|
378
|
+
result = experiment.file(prefix="/models").save_pkl(trained_model, "model.pickle")
|
|
379
|
+
"""
|
|
380
|
+
import pickle
|
|
381
|
+
import tempfile
|
|
382
|
+
import os
|
|
383
|
+
|
|
384
|
+
if not self._experiment._is_open:
|
|
385
|
+
raise RuntimeError("Experiment not open. Use experiment.run.start() or context manager.")
|
|
386
|
+
|
|
387
|
+
if self._experiment._write_protected:
|
|
388
|
+
raise RuntimeError("Experiment is write-protected and cannot be modified.")
|
|
389
|
+
|
|
390
|
+
# Create temporary file with desired filename
|
|
391
|
+
temp_dir = tempfile.mkdtemp()
|
|
392
|
+
temp_path = os.path.join(temp_dir, file_name)
|
|
393
|
+
try:
|
|
394
|
+
# Write pickled content to temp file
|
|
395
|
+
with open(temp_path, 'wb') as f:
|
|
396
|
+
pickle.dump(content, f)
|
|
397
|
+
|
|
398
|
+
# Save using existing save() method
|
|
399
|
+
original_file_path = self._file_path
|
|
400
|
+
self._file_path = temp_path
|
|
401
|
+
|
|
402
|
+
# Upload and get result
|
|
403
|
+
result = self.save()
|
|
404
|
+
|
|
405
|
+
# Restore original file_path
|
|
406
|
+
self._file_path = original_file_path
|
|
407
|
+
|
|
408
|
+
return result
|
|
409
|
+
finally:
|
|
410
|
+
# Clean up temp file and directory
|
|
411
|
+
try:
|
|
412
|
+
os.unlink(temp_path)
|
|
413
|
+
os.rmdir(temp_dir)
|
|
352
414
|
except Exception:
|
|
353
415
|
pass
|
|
354
416
|
|
|
@@ -2,12 +2,12 @@ ml_dash/__init__.py,sha256=o_LrWVJBY_VkUGhSBs5wdb_NqEsHD1AK9HGsjZGxHxQ,1414
|
|
|
2
2
|
ml_dash/auto_start.py,sha256=c3XcXFpZdvjtWauEoK5043Gw9k0L_5IDq4fdiB2ha88,959
|
|
3
3
|
ml_dash/client.py,sha256=vhWcS5o2n3o4apEjVeLmu7flCEzxBbBOoLSQNcAx_ew,17267
|
|
4
4
|
ml_dash/experiment.py,sha256=zdGB3oZsFNFyg9olRazWk7dTO7tfy-vTa4neFq5i2CY,30552
|
|
5
|
-
ml_dash/files.py,sha256=
|
|
5
|
+
ml_dash/files.py,sha256=Nx7f0n9zoQ7XqPtiHu_SBEZK0cT2b3F6-EhJBNs3C6k,15824
|
|
6
6
|
ml_dash/log.py,sha256=0yXaNnFwYeBI3tRLHX3kkqWRpg0MbSGwmgjnOfsElCk,5350
|
|
7
7
|
ml_dash/metric.py,sha256=LMb6-T08VAl6UBAv6FlZee6LleVLjFaBNc19b17NlfI,9662
|
|
8
8
|
ml_dash/params.py,sha256=xaByDSVar4D1pZqxTANkMPeZTL5-V7ewJe5TXfPLhMQ,5980
|
|
9
9
|
ml_dash/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
10
|
ml_dash/storage.py,sha256=UTuux2nfclLrrtlkC6TsOvDB_wIbSDvYGg8Gtbvk6mc,30471
|
|
11
|
-
ml_dash-0.5.
|
|
12
|
-
ml_dash-0.5.
|
|
13
|
-
ml_dash-0.5.
|
|
11
|
+
ml_dash-0.5.3.dist-info/WHEEL,sha256=X16MKk8bp2DRsAuyteHJ-9qOjzmnY0x1aj0P1ftqqWA,78
|
|
12
|
+
ml_dash-0.5.3.dist-info/METADATA,sha256=AO80zIp9TG2-3S-zZEPQUOwFBowKCddCfQarQem096M,6043
|
|
13
|
+
ml_dash-0.5.3.dist-info/RECORD,,
|
|
File without changes
|