mirror of
https://github.com/oxalica/rust-overlay.git
synced 2025-10-05 15:52:54 +02:00
scripts: add data analyzer for old nightly usages
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -2,5 +2,6 @@ target
|
|||||||
result
|
result
|
||||||
result-*
|
result-*
|
||||||
*.tmp
|
*.tmp
|
||||||
|
__pycache__
|
||||||
|
|
||||||
examples/cross-aarch64/flake.lock
|
examples/cross-aarch64/flake.lock
|
||||||
|
39
scripts/cargo_stat_analysis.py
Executable file
39
scripts/cargo_stat_analysis.py
Executable file
@@ -0,0 +1,39 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
import json
|
||||||
|
import urllib3
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
# Ref: https://rust-lang.zulipchat.com/#narrow/stream/318791-t-crates-io/topic/cargo.20version.20usage/near/401415815
|
||||||
|
URL = 'https://p.datadoghq.com/dashboard/shared_widget_update/3a172e20-e9e1-11ed-80e3-da7ad0900002-973f4c1011257befa8598303217bfe3a/355142551708710?preferred_time_frame=1mo'
|
||||||
|
THRESHOLD = (1, 68, 0) # -> 0.0014751846373960305
|
||||||
|
|
||||||
|
def main():
|
||||||
|
req = urllib3.request('GET', URL)
|
||||||
|
raw_json = json.loads(req.data)
|
||||||
|
raw: Any = raw_json['responses']['355142551708710'][0]['data'][0]['attributes']
|
||||||
|
data: list[tuple[str, int]] = list(
|
||||||
|
filter(
|
||||||
|
lambda el: el[1] != 0,
|
||||||
|
zip(
|
||||||
|
(g['group_tags'][0].removeprefix('cargo.version:') for g in raw['series']),
|
||||||
|
(sum(x for x in xs if x is not None) for xs in raw['values'])
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
data.sort(key = lambda el: el[1], reverse = True)
|
||||||
|
total = sum(cnt for _, cnt in data)
|
||||||
|
|
||||||
|
old_nightly = 0
|
||||||
|
for ver, cnt in data:
|
||||||
|
if ver.endswith('-nightly') or ver.endswith('-beta'):
|
||||||
|
ver_num = ver.split('-')[0]
|
||||||
|
vers_tup = tuple(map(int, ver_num.split('.')))
|
||||||
|
if vers_tup <= THRESHOLD:
|
||||||
|
old_nightly += cnt
|
||||||
|
print(ver, cnt / total)
|
||||||
|
|
||||||
|
print(f'total: {total}')
|
||||||
|
print(f'nightly <= {THRESHOLD}: {old_nightly / total}')
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
Reference in New Issue
Block a user