| Viewing file:  text.py (2.95 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
from prospector.formatters.base import Formatter
 __all__ = ("TextFormatter",)
 
 
 # pylint: disable=unnecessary-lambda
 
 
 class TextFormatter(Formatter):
 summary_labels = (
 ("started", "Started"),
 ("completed", "Finished"),
 ("time_taken", "Time Taken", lambda x: "%s seconds" % x),
 ("formatter", "Formatter"),
 ("profiles", "Profiles"),
 ("strictness", "Strictness"),
 ("libraries", "Libraries Used", lambda x: ", ".join(x)),
 ("tools", "Tools Run", lambda x: ", ".join(x)),
 ("adaptors", "Adaptors", lambda x: ", ".join(x)),
 ("message_count", "Messages Found"),
 ("external_config", "External Config"),
 )
 
 def render_summary(self):
 output = [
 "Check Information",
 "=================",
 ]
 
 label_width = max(len(label[1]) for label in self.summary_labels)
 
 for summary_label in self.summary_labels:
 key = summary_label[0]
 if key in self.summary:
 label = summary_label[1]
 if len(summary_label) > 2:
 value = summary_label[2](self.summary[key])
 else:
 value = self.summary[key]
 output.append(
 " %s: %s"
 % (
 label.rjust(label_width),
 value,
 )
 )
 
 return "\n".join(output)
 
 def render_message(self, message):
 output = []
 
 if message.location.module:
 output.append(f"{message.location.module} ({self._make_path(message.location.path)}):")
 else:
 output.append("%s:" % self._make_path(message.location.path))
 
 output.append(
 "    L%s:%s %s: %s - %s"
 % (
 message.location.line or "-",
 message.location.character if message.location.character else "-",
 message.location.function,
 message.source,
 message.code,
 )
 )
 
 output.append("    %s" % message.message)
 
 return "\n".join(output)
 
 def render_messages(self):
 output = [
 "Messages",
 "========",
 "",
 ]
 
 for message in self.messages:
 output.append(self.render_message(message))
 output.append("")
 
 return "\n".join(output)
 
 def render_profile(self):
 output = ["Profile", "=======", "", self.profile.as_yaml().strip()]
 
 return "\n".join(output)
 
 def render(self, summary=True, messages=True, profile=False):
 output = []
 if messages and self.messages:  # if there are no messages, don't render an empty header
 output.append(self.render_messages())
 if profile:
 output.append(self.render_profile())
 if summary:
 output.append(self.render_summary())
 
 return "\n\n\n".join(output) + "\n"
 
 |