Coverage for amazonorders/entity/seller.py: 96.30%
27 statements
« prev ^ index » next coverage.py v7.4.0, created at 2024-01-16 23:55 +0000
« prev ^ index » next coverage.py v7.4.0, created at 2024-01-16 23:55 +0000
1import logging
2from typing import Optional
4from bs4 import Tag
6from amazonorders.entity.parsable import Parsable
7from amazonorders.session import BASE_URL
9__author__ = "Alex Laird"
10__copyright__ = "Copyright 2024, Alex Laird"
11__version__ = "0.0.7"
13logger = logging.getLogger(__name__)
16class Seller(Parsable):
17 def __init__(self,
18 parsed: Tag) -> None:
19 super().__init__(parsed)
21 self.name: str = self.safe_parse(self._parse_name)
22 self.link: Optional[str] = self.safe_parse(self._parse_link)
24 def __repr__(self) -> str:
25 return "<Seller: \"{}\">".format(self.name)
27 def __str__(self) -> str: # pragma: no cover
28 return "Seller: \"{}\"".format(self.name)
30 def _parse_name(self) -> str:
31 tag = self.parsed.find("a")
32 if not tag:
33 tag = self.parsed.find("span")
34 value = tag.text
35 if "Sold by:" in value:
36 value = value.split("Sold by:")[1]
37 return value.strip()
39 def _parse_link(self) -> Optional[str]:
40 tag = self.parsed.find("a")
41 if tag:
42 return "{}{}".format(BASE_URL, tag.attrs["href"])
43 else:
44 return None