Coverage for tld/result.py: 100%
29 statements
« prev ^ index » next coverage.py v7.4.4, created at 2024-05-27 05:40 +0000
« 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
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",)
10class Result(object):
11 """Container."""
13 __slots__ = ("subdomain", "domain", "tld", "__fld", "parsed_url")
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
23 if domain:
24 self.__fld = f"{self.domain}.{self.tld}"
25 else:
26 self.__fld = self.tld
28 @property
29 def extension(self) -> str:
30 """Alias of ``tld``.
32 :return str:
33 """
34 return self.tld
36 suffix = extension
38 @property
39 def fld(self) -> str:
40 """First level domain.
42 :return:
43 :rtype: str
44 """
45 return self.__fld
47 def __str__(self) -> str:
48 return self.tld
50 __repr__ = __str__
52 @property
53 def __dict__(self) -> Dict[str, Any]: # type: ignore
54 """Mimic __dict__ functionality.
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 }