This repository has been archived by the owner on Jan 30, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathget_latest_micromamba.py
81 lines (69 loc) · 1.8 KB
/
get_latest_micromamba.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import requests
import sys
import platform
import time
import os
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry
TOKEN = os.getenv("GITHUB_TOKEN")
def requests_retry_session(
retries=5,
backoff_factor=0.2,
status_forcelist=(500, 502, 504),
session=None,
):
session = session or requests.Session()
retry = Retry(
total=retries,
read=retries,
connect=retries,
backoff_factor=backoff_factor,
status_forcelist=status_forcelist,
)
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)
return session
s = requests_retry_session()
nightly = False
if len(sys.argv) >= 2:
nightly = sys.argv[1] == "nightly"
plat = platform.system()
if plat == "Linux":
plat = "linux-64"
elif plat == "Darwin":
plat = "osx-64"
elif plat == "Windows":
plat = "win-64"
if not nightly:
url = "https://api.github.com/repos/mamba-org/boa-forge/releases/latest"
else:
url = "https://api.github.com/repos/mamba-org/boa-forge/releases"
def get_json():
headers = {}
if TOKEN:
headers = {"authorization": f"Bearer {TOKEN}"}
j = s.get(url, headers=headers).json()
time.sleep(0.3)
return j
release = None
j = get_json()
retries = 10
i = 0
while release == None and i < retries:
if not nightly:
release = j
else:
try:
print(j, file=sys.stderr)
release = j[0]
except KeyError:
print(j, file=sys.stderr)
time.sleep(0.5)
j = get_json()
i += 1
print(f"Found release: {release['name']}", file=sys.stderr)
for asset in release["assets"]:
if plat in asset["name"]:
print(asset["browser_download_url"])
sys.exit(0)