|
4 | 4 | """Sort `mike`'s `version.json` file with a custom order.""" |
5 | 5 |
|
6 | 6 |
|
7 | | -import dataclasses |
8 | 7 | import json |
9 | 8 | import sys |
10 | | -from typing import TextIO |
| 9 | +from typing import Any, TextIO |
11 | 10 |
|
12 | 11 | from .... import github |
13 | | -from ....mkdocs.mike import MikeVersionInfo, sort_mike_versions |
| 12 | +from ....mkdocs.mike import sort_mike_versions |
14 | 13 |
|
15 | 14 |
|
16 | | -def _load_and_sort_versions_from(stream: TextIO) -> list[MikeVersionInfo]: |
17 | | - """Load the versions from the given stream. |
| 15 | +def _load_and_sort_versions_from(stream: TextIO) -> dict[str, dict[str, Any]]: |
| 16 | + """Load the versions from the given stream and sort them. |
18 | 17 |
|
19 | 18 | Args: |
20 | 19 | stream: The stream to read the versions from. |
21 | 20 |
|
22 | 21 | Returns: |
23 | | - The loaded versions. |
| 22 | + The sorted loaded versions. |
24 | 23 | """ |
25 | | - versions = [MikeVersionInfo(**v) for v in json.load(stream)] |
26 | | - return sort_mike_versions(versions) |
| 24 | + versions = {v["version"]: v for v in json.load(stream)} |
| 25 | + return {v: versions[v] for v in sort_mike_versions(list(versions.keys()))} |
27 | 26 |
|
28 | 27 |
|
29 | | -def _dump_versions_to(versions: list[MikeVersionInfo], stream: TextIO) -> None: |
| 28 | +def _dump_versions_to(versions: dict[str, dict[str, Any]], stream: TextIO) -> None: |
30 | 29 | """Dump the versions to the given stream. |
31 | 30 |
|
32 | 31 | Args: |
33 | 32 | versions: The versions to dump. |
34 | 33 | stream: The stream to write the versions to. |
35 | 34 | """ |
36 | | - json.dump([dataclasses.asdict(v) for v in versions], stream, separators=(",", ":")) |
| 35 | + json.dump(list(versions.values()), stream, separators=(",", ":")) |
37 | 36 |
|
38 | 37 |
|
39 | 38 | def main() -> None: |
|
0 commit comments