Coverage for amazonorders/entity/parsable.py: 93.75%

16 statements  

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

1import logging 

2 

3from amazonorders.exception import AmazonOrdersError 

4 

5__author__ = "Alex Laird" 

6__copyright__ = "Copyright 2024, Alex Laird" 

7__version__ = "0.0.5" 

8 

9logger = logging.getLogger(__name__) 

10 

11 

12class Parsable: 

13 def __init__(self, 

14 parsed): 

15 self.parsed = parsed 

16 

17 def safe_parse(self, parse_function): 

18 if not parse_function.__name__.startswith("_parse_"): 

19 raise AmazonOrdersError("This name of the `parse_function` passed to this method must start with `_parse_`") 

20 

21 try: 

22 return parse_function() 

23 except (AttributeError, IndexError): 

24 logger.warning("When building {}, `{}` could not be parsed.".format(self.__class__.__name__, 

25 parse_function.__name__.split( 

26 "_parse_")[1]), 

27 exc_info=True)