Coverage for tld/result.py: 100%

29 statements  

« prev     ^ index     » next       coverage.py v7.4.4, created at 2024-05-27 05:40 +0000

1from typing import Any, Dict 

2from urllib.parse import SplitResult 

3 

4__author__ = "Artur Barseghyan" 

5__copyright__ = "2013-2023 Artur Barseghyan" 

6__license__ = "MPL-1.1 OR GPL-2.0-only OR LGPL-2.1-or-later" 

7__all__ = ("Result",) 

8 

9 

10class Result(object): 

11 """Container.""" 

12 

13 __slots__ = ("subdomain", "domain", "tld", "__fld", "parsed_url") 

14 

15 def __init__( 

16 self, tld: str, domain: str, subdomain: str, parsed_url: SplitResult 

17 ): 

18 self.tld = tld 

19 self.domain = domain if domain != "" else tld 

20 self.subdomain = subdomain 

21 self.parsed_url = parsed_url 

22 

23 if domain: 

24 self.__fld = f"{self.domain}.{self.tld}" 

25 else: 

26 self.__fld = self.tld 

27 

28 @property 

29 def extension(self) -> str: 

30 """Alias of ``tld``. 

31 

32 :return str: 

33 """ 

34 return self.tld 

35 

36 suffix = extension 

37 

38 @property 

39 def fld(self) -> str: 

40 """First level domain. 

41 

42 :return: 

43 :rtype: str 

44 """ 

45 return self.__fld 

46 

47 def __str__(self) -> str: 

48 return self.tld 

49 

50 __repr__ = __str__ 

51 

52 @property 

53 def __dict__(self) -> Dict[str, Any]: # type: ignore 

54 """Mimic __dict__ functionality. 

55 

56 :return: 

57 :rtype: dict 

58 """ 

59 return { 

60 "tld": self.tld, 

61 "domain": self.domain, 

62 "subdomain": self.subdomain, 

63 "fld": self.fld, 

64 "parsed_url": self.parsed_url, 

65 }