Coverage for fastblocks/adapters/sitemap/static.py: 0%
39 statements
« prev ^ index » next coverage.py v7.10.6, created at 2025-09-21 04:50 -0700
« prev ^ index » next coverage.py v7.10.6, created at 2025-09-21 04:50 -0700
1"""FastBlocks Static Sitemap Adapter.
3Pre-configured URL list sitemap generation for simple sites
4with known, static URL structures.
5"""
7from contextlib import suppress
8from uuid import UUID
10from acb.adapters import AdapterStatus
11from acb.debug import debug
12from acb.depends import depends
14from ._base import SitemapBase, SitemapBaseSettings
15from .core import BaseSitemap, SitemapApp
18class StaticSitemapSettings(SitemapBaseSettings):
19 pass
22class StaticSitemap(BaseSitemap[str], SitemapBase):
23 sitemap: SitemapApp | None = None
25 def items(self) -> list[str]:
26 strategy_options = self.config.strategy_options
27 static_urls = strategy_options.get("static_urls", [])
28 debug(f"StaticSitemap: Using {len(static_urls)} static URLs")
29 return static_urls
31 def location(self, item: str) -> str:
32 return item
34 def changefreq(self, item: str) -> str:
35 return self.config.change_freq
37 def priority(self, item: str) -> float:
38 if item == "/":
39 return 1.0
40 segments = len([s for s in item.split("/") if s])
41 if segments == 1:
42 return 0.8
43 elif segments == 2:
44 return 0.6
45 else:
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)