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

1"""FastBlocks Static Sitemap Adapter. 

2 

3Pre-configured URL list sitemap generation for simple sites 

4with known, static URL structures. 

5""" 

6 

7import typing as t 

8from contextlib import suppress 

9from uuid import UUID 

10 

11from acb.adapters import AdapterStatus 

12from acb.debug import debug 

13from acb.depends import depends 

14 

15from ._base import SitemapBase, SitemapBaseSettings 

16from .core import BaseSitemap, SitemapApp 

17 

18 

19class StaticSitemapSettings(SitemapBaseSettings): 

20 pass 

21 

22 

23class StaticSitemap(BaseSitemap[str], SitemapBase): # type: ignore[override] 

24 sitemap: SitemapApp | None = None 

25 

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 

31 

32 def location(self, item: str) -> str: 

33 return item 

34 

35 def changefreq(self, item: str) -> str: 

36 return t.cast(str, self.config.change_freq) 

37 

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 

47 

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}") 

58 

59 

60Sitemap = StaticSitemap 

61 

62MODULE_ID = UUID("01937d86-af80-7192-e453-789012345601") 

63MODULE_STATUS = AdapterStatus.STABLE 

64 

65with suppress(Exception): 

66 depends.set(Sitemap)