Coverage for amazonorders/entity/seller.py: 100.00%

20 statements  

« prev     ^ index     » next       coverage.py v7.4.1, created at 2024-01-30 14:24 +0000

1import logging 

2from typing import Optional 

3 

4from bs4 import Tag 

5 

6from amazonorders import constants 

7from amazonorders.entity.parsable import Parsable 

8 

9__author__ = "Alex Laird" 

10__copyright__ = "Copyright 2024, Alex Laird" 

11__version__ = "1.0.7" 

12 

13logger = logging.getLogger(__name__) 

14 

15 

16class Seller(Parsable): 

17 """ 

18 An Amazon Seller of an Amazon `~amazonorders.entity.item.Item`. 

19 """ 

20 

21 def __init__(self, 

22 parsed: Tag) -> None: 

23 super().__init__(parsed) 

24 

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) 

29 

30 def __repr__(self) -> str: 

31 return "<Seller: \"{}\">".format(self.name) 

32 

33 def __str__(self) -> str: # pragma: no cover 

34 return "Seller: {}".format(self.name) 

35 

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) 

39 

40 if value: 

41 value = value.split(match_text)[1] 

42 

43 return value.strip()