"""The indexable-page URL list — shared by the sitemap, IndexNow submission, and (eventually) the frontend's own sitemap.xml, so all three never drift apart. """ from data import cities MONTHS = ["january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december"] def sitemap_entries() -> list[tuple[str, str, str]]: """Every indexable page as (path, changefreq, priority). Paths are relative to BASE.""" entries = [("/", "daily", "1.0")] for p in ("/climate", "/about", "/glossary", "/calendar", "/compare", "/legend"): entries.append((p, "weekly", "0.6")) for slug in cities.all_slugs(): entries.append((f"/climate/{slug}", "daily", "0.8")) entries.append((f"/climate/{slug}/records", "monthly", "0.5")) for m in MONTHS: entries.append((f"/climate/{slug}/{m}", "monthly", "0.5")) return entries def public_paths() -> list[str]: """BASE-relative paths of every indexable page — for IndexNow submission.""" return [p for p, _, _ in sitemap_entries()]