|
1 | 1 | import itertools |
2 | 2 | import json |
3 | 3 | import operator |
| 4 | +import re |
4 | 5 | import sys |
5 | 6 |
|
6 | 7 | import subprocess |
@@ -35,20 +36,35 @@ def status(s): |
35 | 36 | GET_PAY = operator.itemgetter('payload') |
36 | 37 |
|
37 | 38 | by_payload = {payload: |
38 | | - {ver(version): status(list(o2)[0]['status']) |
| 39 | + {ver(version): list(o2)[0]['status'] |
39 | 40 | for version, o2 in itertools.groupby(sorted(o1, key=GET_VER), GET_VER)} |
40 | 41 | for payload, o1 in itertools.groupby(sorted(data, key=GET_PAY), GET_PAY)} |
41 | 42 |
|
| 43 | +by_version = {ver(version): |
| 44 | + {payload: list(o2)[0]['status'] |
| 45 | + for payload, o2 in itertools.groupby(sorted(o1, key=GET_PAY), GET_PAY)} |
| 46 | + for version, o1 in itertools.groupby(sorted(data, key=GET_VER), GET_VER)} |
| 47 | + |
| 48 | +sorted_ver = sorted(by_version.items(), key=lambda v: list(map(int, re.split(r'[._]', v[0])))) |
| 49 | + |
| 50 | +ver_groups = [list(v for v, r in vers) for res, vers in itertools.groupby(sorted_ver, operator.itemgetter(1))] |
| 51 | + |
| 52 | +ver_ranges = [[vs[0], vs[-1]] for vs in ver_groups] |
| 53 | + |
| 54 | + |
| 55 | +print('\n'.join(repr(v) for v in ver_groups)) |
| 56 | +# |
42 | 57 | # print(repr(by_payload)) |
| 58 | +# print(repr(by_version)) |
43 | 59 |
|
44 | 60 | vers = list(list(by_payload.items())[0][1].keys()) |
45 | 61 |
|
46 | 62 | # print(vers) |
47 | 63 |
|
48 | 64 | md = pytablewriter.MarkdownTableWriter() |
49 | 65 | md.table_name = '' |
50 | | -md.header_list = [''] + vers |
51 | | -md.value_matrix = [[p] + [o[v] for v in vers] for p, o in sorted(by_payload.items())] |
| 66 | +md.header_list = [''] + ['{} - {}'.format(vs, ve) if vs != ve else vs for vs, ve in ver_ranges] |
| 67 | +md.value_matrix = [[p] + [status(o[vs]) for vs, ve in ver_ranges] for p, o in sorted(by_payload.items())] |
52 | 68 | md.margin = 1 |
53 | 69 |
|
54 | 70 | md.write_table() |
0 commit comments