| 191 | |
| 192 | |
| 193 | def ordered_entries( |
| 194 | existing: list[VersionEntry], updated: VersionEntry |
| 195 | ) -> list[VersionEntry]: |
| 196 | by_slug = {entry.slug: entry for entry in existing} |
| 197 | by_slug[updated.slug] = updated |
| 198 | existing_order = [entry.slug for entry in existing if entry.slug != updated.slug] |
| 199 | |
| 200 | order: list[str] = [] |
| 201 | for slug in ("latest", "dev"): |
| 202 | if slug in by_slug: |
| 203 | order.append(slug) |
| 204 | for slug in existing_order: |
| 205 | if slug not in order and slug in by_slug: |
| 206 | order.append(slug) |
| 207 | if updated.slug not in order: |
| 208 | order.append(updated.slug) |
| 209 | return [by_slug[slug] for slug in order] |
| 210 | |
| 211 | |
| 212 | def render_versions(entries: list[VersionEntry]) -> list[dict[str, str]]: |