| import configargparse | |
| import logging | |
| import os | |
| class StoreLoggingLevelAction(configargparse.Action): | |
| """This class converts string into logging level | |
| """ | |
| LEVELS = { | |
| 'CRITICAL': logging.CRITICAL, | |
| 'ERROR': logging.ERROR, | |
| 'WARNING': logging.WARNING, | |
| 'INFO': logging.INFO, | |
| 'DEBUG': logging.DEBUG, | |
| 'NOTSET': logging.NOTSET | |
| } | |
| CHOICES = list(LEVELS.keys()) + [str(_) for _ in LEVELS.values()] | |
| def __init__(self, option_strings, dest, help=None, **kwargs): | |
| super().__init__(option_strings, dest, help=help, **kwargs) | |
| def __call__(self, parser, namespace, value, option_string=None): | |
| """This function gets the key 'value' in the LEVELS, or just uses value | |
| """ | |
| level = StoreLoggingLevelAction.LEVELS.get(value, value) | |
| setattr(namespace, self.dest, level) | |
| class CheckPathAction(configargparse.Action): | |
| """This class checks file path, if not exits, then create dir(file) | |
| """ | |
| def __init__(self, option_strings, dest, help=None, **kwargs): | |
| super().__init__(option_strings, dest, help=help, **kwargs) | |
| def __call__(self, parser, namespace, value, option_string=None): | |
| """This function checks file path, if not exits, then create dir(file) | |
| """ | |
| parent_path = os.path.dirname(value) | |
| if not os.path.exists(parent_path): | |
| os.makedirs(parent_path) | |
| setattr(namespace, self.dest, value) | |