|
20 | 20 | SITEMAP_URL = f"{SITE_URL}sitemap.xml" |
21 | 21 | SITEMAP_NS = "http://www.sitemaps.org/schemas/sitemap/0.9" |
22 | 22 |
|
| 23 | +BUILTIN_FILTER = "Built-in" |
| 24 | +BUILTIN_SLUG = "built-in" |
| 25 | +BUILTIN_PATH = f"/categories/{BUILTIN_SLUG}/" |
| 26 | +BUILTIN_PUBLIC_URL = f"{SITE_URL}categories/{BUILTIN_SLUG}/" |
| 27 | + |
23 | 28 | SOURCE_TYPE_DOMAINS = { |
24 | 29 | "docs.python.org": "Built-in", |
25 | 30 | "gitlab.com": "GitLab", |
@@ -287,7 +292,7 @@ def build(repo_root: Path) -> None: |
287 | 292 | categories = [cat for g in parsed_groups for cat in g["categories"]] |
288 | 293 | cat_slugs = [cat["slug"] for cat in categories] |
289 | 294 | group_slugs = [g["slug"] for g in parsed_groups] |
290 | | - all_top_level_slugs = cat_slugs + group_slugs |
| 295 | + all_top_level_slugs = cat_slugs + group_slugs + [BUILTIN_SLUG] |
291 | 296 | duplicates = {s for s in all_top_level_slugs if all_top_level_slugs.count(s) > 1} |
292 | 297 | if duplicates: |
293 | 298 | raise ValueError( |
@@ -325,6 +330,9 @@ def build(repo_root: Path) -> None: |
325 | 330 | for entry in entries: |
326 | 331 | for sub in entry.get("subcategories", []): |
327 | 332 | filter_urls[sub["value"]] = sub["url"] |
| 333 | + builtin_entries = [e for e in entries if e.get("source_type") == BUILTIN_FILTER] |
| 334 | + if builtin_entries: |
| 335 | + filter_urls[BUILTIN_FILTER] = BUILTIN_PATH |
328 | 336 |
|
329 | 337 | env = Environment( |
330 | 338 | loader=FileSystemLoader(website / "templates"), |
@@ -402,6 +410,29 @@ def build(repo_root: Path) -> None: |
402 | 410 | encoding="utf-8", |
403 | 411 | ) |
404 | 412 |
|
| 413 | + if builtin_entries: |
| 414 | + page_dir = categories_dir / BUILTIN_SLUG |
| 415 | + page_dir.mkdir(parents=True, exist_ok=True) |
| 416 | + synthetic = { |
| 417 | + "name": BUILTIN_FILTER, |
| 418 | + "slug": BUILTIN_SLUG, |
| 419 | + "description": "", |
| 420 | + "description_html": "", |
| 421 | + } |
| 422 | + (page_dir / "index.html").write_text( |
| 423 | + tpl_category.render( |
| 424 | + category=synthetic, |
| 425 | + category_url=BUILTIN_PUBLIC_URL, |
| 426 | + entries=builtin_entries, |
| 427 | + total_categories=len(categories), |
| 428 | + page_kind="built-in", |
| 429 | + category_urls=category_urls, |
| 430 | + current_path=BUILTIN_PATH, |
| 431 | + filter_urls_json=filter_urls_json, |
| 432 | + ), |
| 433 | + encoding="utf-8", |
| 434 | + ) |
| 435 | + |
405 | 436 | seen_subcats: set[tuple[str, str]] = set() |
406 | 437 | for category in categories: |
407 | 438 | cat_url_prefix = f"/categories/{category['slug']}/" |
@@ -455,6 +486,8 @@ def build(repo_root: Path) -> None: |
455 | 486 | sitemap_urls = [(SITE_URL, sitemap_date)] |
456 | 487 | sitemap_urls.extend((category_public_url(c), sitemap_date) for c in categories) |
457 | 488 | sitemap_urls.extend((group_public_url(g["slug"]), sitemap_date) for g in parsed_groups) |
| 489 | + if builtin_entries: |
| 490 | + sitemap_urls.append((BUILTIN_PUBLIC_URL, sitemap_date)) |
458 | 491 | for cat_slug, sub_slug in sorted(seen_subcats): |
459 | 492 | sitemap_urls.append((subcategory_public_url(cat_slug, sub_slug), sitemap_date)) |
460 | 493 | write_sitemap_xml(site_dir / "sitemap.xml", sitemap_urls) |
|
0 commit comments