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

26 statements  

« prev     ^ index     » next       coverage.py v7.4.0, created at 2024-01-16 21:17 +0000

1import logging 

2 

3from amazonorders.entity.parsable import Parsable 

4from amazonorders.session import BASE_URL 

5 

6__author__ = "Alex Laird" 

7__copyright__ = "Copyright 2024, Alex Laird" 

8__version__ = "0.0.5" 

9 

10logger = logging.getLogger(__name__) 

11 

12 

13class Seller(Parsable): 

14 def __init__(self, 

15 parsed, 

16 item=None, 

17 order=None) -> None: 

18 super().__init__(parsed) 

19 

20 self.item = item 

21 self.order = order 

22 

23 self.name = self.safe_parse(self._parse_name) 

24 self.link = self.safe_parse(self._parse_link) 

25 

26 def __repr__(self) -> str: 

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

28 

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

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

31 

32 def _parse_name(self): 

33 tag = self.parsed.find("a") 

34 if not tag: 

35 tag = self.parsed.find("span") 

36 value = tag.text 

37 if "Sold by:" in value: 

38 value = value.split("Sold by:")[1] 

39 return value.strip() 

40 

41 def _parse_link(self): 

42 tag = self.parsed.find("a") 

43 if tag: 

44 return "{}{}".format(BASE_URL, tag.attrs["href"])