ml-dash 0.6.15__py3-none-any.whl → 0.6.16__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 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.14"
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.16"
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 doesn't match the required 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 is not available, skip check
64
- # (unlikely since it's a common dependency)
60
+ # If packaging or httpx not available, skip check
65
61
  return
66
62
 
67
- current = version.parse(__version__)
68
- required = version.parse(REQUIRED_VERSION)
69
-
70
- if current < required:
71
- raise ImportError(
72
- f"\n"
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.15
3
+ Version: 0.6.16
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
@@ -1,4 +1,4 @@
1
- ml_dash/__init__.py,sha256=0N78Rs6EH_pFB-OoRXx42ZXm1ghbvp2xd54it41CPXM,3060
1
+ ml_dash/__init__.py,sha256=yI5-bSk2T6LHGmVLxxwfwQt1lyUcmf_q9sN5xt-U_rY,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=eSzrh49jP5dPx6rlEZZHLDMn2CxoA9uE_PSG3CpQQfA,43366
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.15.dist-info/WHEEL,sha256=fAguSjoiATBe7TNBkJwOjyL1Tt4wwiaQGtNtjRPNMQA,80
35
- ml_dash-0.6.15.dist-info/entry_points.txt,sha256=dYs2EHX1uRNO7AQGNnVaJJpgiy0Z9q7tiy4fHSyaf3Q,46
36
- ml_dash-0.6.15.dist-info/METADATA,sha256=h5lcu5MX1urb8ZSPaZDPprXM6CUdvemGfGgVhqJJ4hA,9536
37
- ml_dash-0.6.15.dist-info/RECORD,,
34
+ ml_dash-0.6.16.dist-info/WHEEL,sha256=z-mOpxbJHqy3cq6SvUThBZdaLGFZzdZPtgWLcP2NKjQ,79
35
+ ml_dash-0.6.16.dist-info/entry_points.txt,sha256=dYs2EHX1uRNO7AQGNnVaJJpgiy0Z9q7tiy4fHSyaf3Q,46
36
+ ml_dash-0.6.16.dist-info/METADATA,sha256=A7XnIQsPOvU62NZlrF3Wdng6Hcahwgp9S06e4QtuLWc,9536
37
+ ml_dash-0.6.16.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: uv 0.9.28
2
+ Generator: uv 0.9.15
3
3
  Root-Is-Purelib: true
4
- Tag: py3-none-any
4
+ Tag: py3-none-any