Coverage for amazonorders/entity/seller.py: 100.00%
20 statements
« prev ^ index » next coverage.py v7.4.1, created at 2024-02-07 21:56 +0000
« prev ^ index » next coverage.py v7.4.1, created at 2024-02-07 21:56 +0000
1import logging
2from typing import Optional
4from bs4 import Tag
6from amazonorders import constants
7from amazonorders.entity.parsable import Parsable
9__author__ = "Alex Laird"
10__copyright__ = "Copyright 2024, Alex Laird"
11__version__ = "1.0.9"
13logger = logging.getLogger(__name__)
16class Seller(Parsable):
17 """
18 An Amazon Seller of an Amazon :class:`~amazonorders.entity.item.Item`.
19 """
21 def __init__(self,
22 parsed: Tag) -> None:
23 super().__init__(parsed)
25 #: The Seller name.
26 self.name: str = self.safe_parse(self._parse_name)
27 #: The Seller link.
28 self.link: Optional[str] = self.safe_simple_parse(selector=constants.FIELD_SELLER_LINK_SELECTOR, link=True)
30 def __repr__(self) -> str:
31 return "<Seller: \"{}\">".format(self.name)
33 def __str__(self) -> str: # pragma: no cover
34 return "Seller: {}".format(self.name)
36 def _parse_name(self) -> str:
37 match_text = "Sold by:"
38 value = self.simple_parse(constants.FIELD_SELLER_NAME_SELECTOR, text_contains=match_text)
40 if value:
41 value = value.split(match_text)[1]
43 return value.strip()