Coverage for fastblocks/adapters/sitemap/static.py: 0%
40 statements
« prev ^ index » next coverage.py v7.10.7, created at 2025-10-09 00:47 -0700
« prev ^ index » next coverage.py v7.10.7, created at 2025-10-09 00:47 -0700
1"""FastBlocks Static Sitemap Adapter.
3Pre-configured URL list sitemap generation for simple sites
4with known, static URL structures.
5"""
7import typing as t
8from contextlib import suppress
9from uuid import UUID
11from acb.adapters import AdapterStatus
12from acb.debug import debug
13from acb.depends import depends
15from ._base import SitemapBase, SitemapBaseSettings
16from .core import BaseSitemap, SitemapApp
19class StaticSitemapSettings(SitemapBaseSettings):
20 pass
23class StaticSitemap(BaseSitemap[str], SitemapBase): # type: ignore[override]
24 sitemap: SitemapApp | None = None
26 def items(self) -> list[str]:
27 strategy_options = self.config.strategy_options
28 static_urls = t.cast(list[str], strategy_options.get("static_urls", []))
29 debug(f"StaticSitemap: Using {len(static_urls)} static URLs")
30 return static_urls
32 def location(self, item: str) -> str:
33 return item
35 def changefreq(self, item: str) -> str:
36 return t.cast(str, self.config.change_freq)
38 def priority(self, item: str) -> float:
39 if item == "/":
40 return 1.0
41 segments = len([s for s in item.split("/") if s])
42 if segments == 1:
43 return 0.8
44 if segments == 2:
45 return 0.6
46 return 0.4
48 async def init(self) -> None:
49 if not self.config.domain:
50 msg = "domain must be set in sitemap settings"
51 raise ValueError(msg)
52 self.sitemap = SitemapApp(
53 self,
54 domain=self.config.domain,
55 cache_ttl=self.config.cache_ttl,
56 )
57 debug(f"StaticSitemap: Initialized with domain={self.config.domain}")
60Sitemap = StaticSitemap
62MODULE_ID = UUID("01937d86-af80-7192-e453-789012345601")
63MODULE_STATUS = AdapterStatus.STABLE
65with suppress(Exception):
66 depends.set(Sitemap)