Skip to content

Commit 4680334

Browse files
authored
Merge pull request #2762 from opentensor/feat/roman/add-all-python-versions-to-e2e-workflow
Add pypi package version checker for `python -m bittensor`
2 parents 0695680 + aa64774 commit 4680334

File tree

2 files changed

+29
-2
lines changed

2 files changed

+29
-2
lines changed

bittensor/__main__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import sys
44

55
from bittensor import __version__
6+
from bittensor.utils.version import check_latest_version_in_pypi
67

78
if __name__ == "__main__":
89
if len(sys.argv) > 1 and sys.argv[1] == "certifi":
@@ -18,4 +19,5 @@
1819
# Run the script
1920
subprocess.run([certifi_script], check=True)
2021
else:
21-
print(f"Bittensor SDK version: {__version__}")
22+
print(f"Installed Bittensor SDK version: {__version__}")
23+
check_latest_version_in_pypi()

bittensor/utils/version.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
from typing import Optional
44

55
import requests
6-
from packaging.version import Version
6+
from packaging.version import Version, InvalidVersion
77

8+
from bittensor import __name__
89
from bittensor.core.settings import __version__, PIPADDRESS
910
from bittensor.utils.btlogging import logging
1011

@@ -115,3 +116,27 @@ def version_checking(timeout: int = 15):
115116
check_version(timeout)
116117
except VersionCheckError:
117118
logging.exception("Version check failed")
119+
120+
121+
def check_latest_version_in_pypi():
122+
"""Check for the latest version of the package on PyPI."""
123+
package_name = __name__
124+
url = f"https://pypi.org/pypi/{package_name}/json"
125+
126+
try:
127+
response = requests.get(url, timeout=5)
128+
response.raise_for_status()
129+
latest_version = response.json()["info"]["version"]
130+
installed_version = __version__
131+
try:
132+
if Version(installed_version) < Version(latest_version):
133+
print(
134+
f"\n🔔 New version is available `{package_name} v.{latest_version}`"
135+
)
136+
print("📦 Use command `pip install --upgrade bittensor` to update.")
137+
except InvalidVersion:
138+
# stay silent if InvalidVersion
139+
pass
140+
except (requests.RequestException, KeyError) as e:
141+
# stay silent if not internet connection or pypi.org issue
142+
pass

0 commit comments

Comments
 (0)