Coverage for meta_tags_parser/structs.py: 100%

42 statements  

« prev     ^ index     » next       coverage.py v7.10.3, created at 2025-08-21 00:51 +0000

1import dataclasses 

2import enum 

3import typing 

4 

5 

6@typing.final 

7@dataclasses.dataclass(kw_only=True, slots=True, frozen=True) 

8class OneMetaTag: 

9 """Helper public tag wrapper.""" 

10 

11 name: str 

12 value: str 

13 

14 

15@typing.final 

16@dataclasses.dataclass(kw_only=True, slots=True, frozen=True) 

17class ValuesGroup: 

18 """Helper inner wrapper.""" 

19 

20 original: str 

21 normalized: str 

22 

23 

24@typing.final 

25@dataclasses.dataclass(kw_only=True, slots=True, frozen=True) 

26class TagsGroup: 

27 """Return struct.""" 

28 

29 title: str = "" 

30 basic: list[OneMetaTag] = dataclasses.field(default_factory=list) 

31 open_graph: list[OneMetaTag] = dataclasses.field(default_factory=list) 

32 twitter: list[OneMetaTag] = dataclasses.field(default_factory=list) 

33 other: list[OneMetaTag] = dataclasses.field(default_factory=list) 

34 

35 

36@typing.final 

37@dataclasses.dataclass(kw_only=True, slots=True, frozen=True) 

38class SocialMediaSnippet: 

39 """Social media snippet group.""" 

40 

41 title: str = "" 

42 description: str = "" 

43 image: str = "" 

44 image_width: int = 0 

45 image_height: int = 0 

46 url: str = "" 

47 

48 

49@typing.final 

50@dataclasses.dataclass(kw_only=True, slots=True, frozen=True) 

51class SnippetGroup: 

52 """Groupping for social media.""" 

53 

54 open_graph: SocialMediaSnippet = dataclasses.field(default_factory=SocialMediaSnippet) 

55 twitter: SocialMediaSnippet = dataclasses.field(default_factory=SocialMediaSnippet) 

56 

57 

58@typing.final 

59class WhatToParse(enum.IntEnum): 

60 """Enum for parsing configuration.""" 

61 

62 TITLE = 0 

63 BASIC = 1 

64 OPEN_GRAPH = 2 

65 TWITTER = 3 

66 OTHER = 4