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

1"""FastBlocks Static Sitemap Adapter. 

2 

3Pre-configured URL list sitemap generation for simple sites 

4with known, static URL structures. 

5""" 

6 

7from contextlib import suppress 

8from uuid import UUID 

9 

10from acb.adapters import AdapterStatus 

11from acb.debug import debug 

12from acb.depends import depends 

13 

14from ._base import SitemapBase, SitemapBaseSettings 

15from .core import BaseSitemap, SitemapApp 

16 

17 

18class StaticSitemapSettings(SitemapBaseSettings): 

19 pass 

20 

21 

22class StaticSitemap(BaseSitemap[str], SitemapBase): 

23 sitemap: SitemapApp | None = None 

24 

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 

30 

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

32 return item 

33 

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

35 return self.config.change_freq 

36 

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 

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)