Coverage for src/probable_fiesta/cli/builder/args_parse.py: 91%

33 statements  

« prev     ^ index     » next       coverage.py v7.1.0, created at 2023-01-30 18:57 -0500

1from ..v1 import MyArgumentParser 

2 

3class Parser: 

4 def __init__(self, parser=None, add_help=True, description=None): 

5 if parser is not None: 

6 self.parser = parser 

7 else: 

8 self.parser = MyArgumentParser(add_help=add_help, description=description) 

9 self.valid = False 

10 self.parsed_args = None 

11 self.error = None 

12 

13 def __str__(self): 

14 return f"Parser: {self.__dict__}" 

15 

16 def add_argument(self, *args, **kwargs): 

17 #print(args) 

18 #print(*args) 

19 #print(kwargs) 

20 #print(*kwargs) 

21 self.parser.add_argument(*args, **kwargs) 

22 return self 

23 

24 #def parse_args(self, args): 

25 #self.parsed_args = self.parser.parse_args(args) 

26 #return self 

27 

28 def get_parsed_args(self): 

29 return self.parsed_args 

30 

31 def validate(self, args=None): 

32 self.valid = True 

33 self.parsed_args = self.parser.parse_args(args) 

34 if self.parser.error_message: 

35 self.error = self.parser.error_message 

36 self.valid = False 

37 if not self.parsed_args: 

38 self.valid = False 

39 return self.valid 

40 

41 @staticmethod 

42 def new_parser(parser=None, add_help=True, description=None): 

43 return Parser(parser, add_help, description) 

44 

45 class Factory(): 

46 @staticmethod 

47 def new(parser=None, add_help=True, description=None): 

48 return Parser.new_parser(parser, add_help, description) 

49 

50 factory = Factory()