ml-dash 0.6.15__py3-none-any.whl → 0.6.17__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/__init__.py +46 -32
- ml_dash/experiment.py +6 -1
- {ml_dash-0.6.15.dist-info → ml_dash-0.6.17.dist-info}/METADATA +2 -2
- {ml_dash-0.6.15.dist-info → ml_dash-0.6.17.dist-info}/RECORD +6 -6
- {ml_dash-0.6.15.dist-info → ml_dash-0.6.17.dist-info}/WHEEL +2 -2
- {ml_dash-0.6.15.dist-info → ml_dash-0.6.17.dist-info}/entry_points.txt +0 -0
ml_dash/__init__.py
CHANGED
|
@@ -43,52 +43,66 @@ from .params import ParametersBuilder
|
|
|
43
43
|
from .run import RUN
|
|
44
44
|
from .storage import LocalStorage
|
|
45
45
|
|
|
46
|
-
__version__ = "0.6.
|
|
47
|
-
|
|
48
|
-
# Required version - MUST match exactly (blocks all older versions)
|
|
49
|
-
# Update this with EVERY release to force users to upgrade
|
|
50
|
-
REQUIRED_VERSION = "0.6.14"
|
|
46
|
+
__version__ = "0.6.17"
|
|
51
47
|
|
|
52
48
|
|
|
53
49
|
def _check_version_compatibility():
|
|
54
50
|
"""
|
|
55
|
-
Enforce strict version requirement.
|
|
51
|
+
Enforce strict version requirement by checking against PyPI.
|
|
56
52
|
|
|
57
|
-
Raises ImportError if installed version
|
|
53
|
+
Raises ImportError if installed version is older than the latest on PyPI.
|
|
58
54
|
This ensures all users are on the latest version with newest features and bug fixes.
|
|
59
55
|
"""
|
|
60
56
|
try:
|
|
61
57
|
from packaging import version
|
|
58
|
+
import httpx
|
|
62
59
|
except ImportError:
|
|
63
|
-
# If packaging
|
|
64
|
-
# (unlikely since it's a common dependency)
|
|
60
|
+
# If packaging or httpx not available, skip check
|
|
65
61
|
return
|
|
66
62
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
f"{'=' * 80}\n"
|
|
74
|
-
f"ERROR: ml-dash version {__version__} is outdated!\n"
|
|
75
|
-
f"{'=' * 80}\n"
|
|
76
|
-
f"\n"
|
|
77
|
-
f"Your installed version ({__version__}) is no longer supported.\n"
|
|
78
|
-
f"Required version: {REQUIRED_VERSION}\n"
|
|
79
|
-
f"\n"
|
|
80
|
-
f"Please upgrade to the latest version:\n"
|
|
81
|
-
f"\n"
|
|
82
|
-
f" pip install --upgrade ml-dash\n"
|
|
83
|
-
f"\n"
|
|
84
|
-
f"Or with uv:\n"
|
|
85
|
-
f"\n"
|
|
86
|
-
f" uv pip install --upgrade ml-dash\n"
|
|
87
|
-
f" uv sync --upgrade-package ml-dash\n"
|
|
88
|
-
f"\n"
|
|
89
|
-
f"{'=' * 80}\n"
|
|
63
|
+
try:
|
|
64
|
+
# Check PyPI for latest version (with short timeout)
|
|
65
|
+
response = httpx.get(
|
|
66
|
+
"https://pypi.org/pypi/ml-dash/json",
|
|
67
|
+
timeout=2.0,
|
|
68
|
+
follow_redirects=True
|
|
90
69
|
)
|
|
91
70
|
|
|
71
|
+
if response.status_code == 200:
|
|
72
|
+
latest_version = response.json()["info"]["version"]
|
|
73
|
+
current = version.parse(__version__)
|
|
74
|
+
latest = version.parse(latest_version)
|
|
75
|
+
|
|
76
|
+
if current < latest:
|
|
77
|
+
raise ImportError(
|
|
78
|
+
f"\n"
|
|
79
|
+
f"{'=' * 80}\n"
|
|
80
|
+
f"ERROR: ml-dash version {__version__} is outdated!\n"
|
|
81
|
+
f"{'=' * 80}\n"
|
|
82
|
+
f"\n"
|
|
83
|
+
f"Your installed version ({__version__}) is no longer supported.\n"
|
|
84
|
+
f"Latest version on PyPI: {latest_version}\n"
|
|
85
|
+
f"\n"
|
|
86
|
+
f"Please upgrade to the latest version:\n"
|
|
87
|
+
f"\n"
|
|
88
|
+
f" pip install --upgrade ml-dash\n"
|
|
89
|
+
f"\n"
|
|
90
|
+
f"Or with uv:\n"
|
|
91
|
+
f"\n"
|
|
92
|
+
f" uv pip install --upgrade ml-dash\n"
|
|
93
|
+
f" uv sync --upgrade-package ml-dash\n"
|
|
94
|
+
f"\n"
|
|
95
|
+
f"{'=' * 80}\n"
|
|
96
|
+
)
|
|
97
|
+
except (httpx.TimeoutException, httpx.ConnectError, KeyError):
|
|
98
|
+
# Silently skip check if PyPI is unreachable or response is malformed
|
|
99
|
+
# Don't block users due to network issues
|
|
100
|
+
pass
|
|
101
|
+
except Exception:
|
|
102
|
+
# Catch any other errors and silently continue
|
|
103
|
+
# Better to let users work than block on unexpected errors
|
|
104
|
+
pass
|
|
105
|
+
|
|
92
106
|
|
|
93
107
|
# Enforce version check on import
|
|
94
108
|
_check_version_compatibility()
|
ml_dash/experiment.py
CHANGED
|
@@ -381,6 +381,7 @@ class Experiment:
|
|
|
381
381
|
|
|
382
382
|
try:
|
|
383
383
|
from rich.console import Console
|
|
384
|
+
from ml_dash import __version__
|
|
384
385
|
|
|
385
386
|
console = Console()
|
|
386
387
|
experiment_url = f"https://dash.ml/{self.run.prefix}"
|
|
@@ -388,15 +389,19 @@ class Experiment:
|
|
|
388
389
|
f"[{status_color}]{status_emoji} Experiment {status.lower()}: "
|
|
389
390
|
f"[bold]{self.run.name}[/bold] (project: {self.run.project})[/{status_color}]\n"
|
|
390
391
|
f"[dim]View results, statistics, and plots online at:[/dim] "
|
|
391
|
-
f"[link={experiment_url}]{experiment_url}[/link]"
|
|
392
|
+
f"[link={experiment_url}]{experiment_url}[/link]\n"
|
|
393
|
+
f"[dim]ml-dash version: {__version__}[/dim]"
|
|
392
394
|
)
|
|
393
395
|
except ImportError:
|
|
394
396
|
# Fallback if rich is not available
|
|
397
|
+
from ml_dash import __version__
|
|
398
|
+
|
|
395
399
|
experiment_url = f"https://dash.ml/{self.run.prefix}"
|
|
396
400
|
print(
|
|
397
401
|
f"{status_emoji} Experiment {status.lower()}: {self.run.name} (project: {self.run.project})"
|
|
398
402
|
)
|
|
399
403
|
print(f"View results at: {experiment_url}")
|
|
404
|
+
print(f"ml-dash version: {__version__}")
|
|
400
405
|
|
|
401
406
|
except Exception as e:
|
|
402
407
|
# Raise on status update failure
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: ml-dash
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.17
|
|
4
4
|
Summary: ML experiment tracking and data storage
|
|
5
5
|
Keywords: machine-learning,experiment-tracking,mlops,data-storage
|
|
6
6
|
Author: Ge Yang, Tom Tao
|
|
@@ -43,7 +43,7 @@ Requires-Dist: imageio-ffmpeg>=0.4.9
|
|
|
43
43
|
Requires-Dist: scikit-image>=0.21.0
|
|
44
44
|
Requires-Dist: rich>=13.0.0
|
|
45
45
|
Requires-Dist: cryptography>=42.0.0
|
|
46
|
-
Requires-Dist: params-proto>=3.0.0
|
|
46
|
+
Requires-Dist: params-proto>=3.0.0,<3.2.0
|
|
47
47
|
Requires-Dist: keyring>=25.0.0 ; extra == 'auth'
|
|
48
48
|
Requires-Dist: qrcode>=8.0.0 ; extra == 'auth'
|
|
49
49
|
Requires-Dist: pytest>=8.0.0 ; extra == 'dev'
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
ml_dash/__init__.py,sha256=
|
|
1
|
+
ml_dash/__init__.py,sha256=Tm6Zvk8zIXKvIvS4mGF9iSmI0AZ19Jwp91ZGot-vD1g,3773
|
|
2
2
|
ml_dash/auth/__init__.py,sha256=3lwM-Y8UBHPU1gFW2JNpmXlPVTnkGudWLKNFFKulQfo,1200
|
|
3
3
|
ml_dash/auth/constants.py,sha256=ku4QzQUMNjvyJwjy7AUdywMAZd59jXSxNHZxDiagUWU,280
|
|
4
4
|
ml_dash/auth/device_flow.py,sha256=DQOdPNlZCuU1umZOA_A6WXdRM3zWphnyo9IntToBl_A,7921
|
|
@@ -20,7 +20,7 @@ ml_dash/cli_commands/remove.py,sha256=AtDlUWkNeGcnZWN0Wbg6XoyYhFHkCFMPdxsGA33v38
|
|
|
20
20
|
ml_dash/cli_commands/upload.py,sha256=oZVU8m9Ey8N151KmUiQD_qQLEBBN4oqu5NcqUNOUJWY,49786
|
|
21
21
|
ml_dash/client.py,sha256=ZWO1uzV-GLz-3R2ML90XPCV200e_ch7L-4iG07jkC84,67213
|
|
22
22
|
ml_dash/config.py,sha256=oz2xvoBh2X_xUXWr92cPD5nFxXMT5LxVNypv5B5O0fA,3116
|
|
23
|
-
ml_dash/experiment.py,sha256=
|
|
23
|
+
ml_dash/experiment.py,sha256=3JOIWHkZersCWz1ptWvF6hQWQoX7fkkxI93X9PT9tMo,43561
|
|
24
24
|
ml_dash/files.py,sha256=tGJCTxPfd9vmfvIEqstZjzLvqmHzMZffPXHz0jU9bYU,54441
|
|
25
25
|
ml_dash/log.py,sha256=E-DLg0vejVLLEyShJ_r0LneDMI0XU7XTH5iKWYJe9jI,5298
|
|
26
26
|
ml_dash/metric.py,sha256=hwdZIkHbt_wbJQPiO1LK3UJwusbAC7J-TR0gKeAnjHc,26206
|
|
@@ -31,7 +31,7 @@ ml_dash/run.py,sha256=yAKZ9HtU4cidtbWMAY1IiDPVWwluVlicD5hsmVT89U0,11361
|
|
|
31
31
|
ml_dash/snowflake.py,sha256=14rEpRU5YltsmmmZW0EMUy_hdv5S5ME9gWVtmdmwfiU,4917
|
|
32
32
|
ml_dash/storage.py,sha256=x1W-dK6wQY36-LVOJ4kA8Dn07ObNQuIErQWJ3b0PoGY,44910
|
|
33
33
|
ml_dash/track.py,sha256=Dfg1ZnmKZ_FlE5ZfG8Qld_wN4RIMs3nrOxrxwf3thiY,8164
|
|
34
|
-
ml_dash-0.6.
|
|
35
|
-
ml_dash-0.6.
|
|
36
|
-
ml_dash-0.6.
|
|
37
|
-
ml_dash-0.6.
|
|
34
|
+
ml_dash-0.6.17.dist-info/WHEEL,sha256=z-mOpxbJHqy3cq6SvUThBZdaLGFZzdZPtgWLcP2NKjQ,79
|
|
35
|
+
ml_dash-0.6.17.dist-info/entry_points.txt,sha256=dYs2EHX1uRNO7AQGNnVaJJpgiy0Z9q7tiy4fHSyaf3Q,46
|
|
36
|
+
ml_dash-0.6.17.dist-info/METADATA,sha256=Jui54B9MpsAK32HN3zF4iN8VGhk6UxY-f9SWL0J7qG8,9543
|
|
37
|
+
ml_dash-0.6.17.dist-info/RECORD,,
|
|
File without changes
|