comparison env/lib/python3.7/site-packages/gxformat2/linting.py @ 0:26e78fe6e8c4 draft

"planemo upload commit c699937486c35866861690329de38ec1a5d9f783"
author shellac
date Sat, 02 May 2020 07:14:21 -0400
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:26e78fe6e8c4
1 """Generic utilities for linting.
2
3 Largely derived in large part from galaxy.tool_util.lint.
4 """
5 LEVEL_ALL = "all"
6 LEVEL_WARN = "warn"
7 LEVEL_ERROR = "error"
8 DEFAULT_TRAINING_LINT = None
9
10
11 class LintContext(object):
12 """Track running status (state) of linting."""
13
14 def __init__(self, level=LEVEL_WARN, training_topic=DEFAULT_TRAINING_LINT):
15 """Create LintContext with specified 'level' (currently unused)."""
16 self.level = level
17 self.training_topic = training_topic
18 self.found_errors = False
19 self.found_warns = False
20
21 # self.valid_messages = []
22 # self.info_messages = []
23 self.warn_messages = []
24 self.error_messages = []
25
26 def __handle_message(self, message_list, message, *args, **kwds):
27 if kwds or args:
28 message = message.format(*args, **kwds)
29 message_list.append(message)
30
31 # def valid(self, message, *args, **kwds):
32 # self.__handle_message(self.valid_messages, message, *args, **kwds)
33
34 # def info(self, message, *args, **kwds):
35 # self.__handle_message(self.info_messages, message, *args, **kwds)
36
37 def error(self, message, *args, **kwds):
38 """Track a linting error - a serious problem with the artifact preventing execution."""
39 self.__handle_message(self.error_messages, message, *args, **kwds)
40
41 def warn(self, message, *args, **kwds):
42 """Track a linting warning - a deviation from best practices."""
43 self.__handle_message(self.warn_messages, message, *args, **kwds)
44
45 def print_messages(self):
46 """Print error messages and update state at the end of linting."""
47 for message in self.error_messages:
48 self.found_errors = True
49 print(".. ERROR: %s" % message)
50
51 if self.level != LEVEL_ERROR:
52 for message in self.warn_messages:
53 self.found_warns = True
54 print(".. WARNING: %s" % message)
55
56 if self.level == LEVEL_ALL:
57 for message in self.info_messages:
58 print(".. INFO: %s" % message)
59 for message in self.valid_messages:
60 print(".. CHECK: %s" % message)