Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ nosetests.xml
.project
.pydevproject
.idea
.vscode

# Sphinx
docs/_build
12 changes: 6 additions & 6 deletions prospector/config/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,17 +56,17 @@ def get_tools(self, found_files):
runners.append(tool)
return runners

def get_output_format(self):
def get_output_report(self):
# Get the output formatter
if self.config.output_format is not None:
output_format = self.config.output_format
output_report = self.config.output_format
else:
output_format = self.profile.output_format
output_report = [(self.profile.output_format, self.profile.output_target or [])]

if output_format is None:
output_format = 'grouped'
if not all(output_report):
output_report = [('grouped', [])]

return output_format
return output_report

def _configure_prospector(self):
# first we will configure prospector as a whole
Expand Down
5 changes: 3 additions & 2 deletions prospector/config/configuration.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
import setoptconf as soc
from prospector.__pkginfo__ import __version__
from prospector.config.datatype import OutputChoice
from prospector.formatters import FORMATTERS
from prospector.tools import DEFAULT_TOOLS, TOOLS

Expand Down Expand Up @@ -29,9 +30,9 @@ def build_manager():

manager.add(soc.BooleanSetting('messages_only', default=False))
manager.add(soc.BooleanSetting('summary_only', default=False))
manager.add(soc.ChoiceSetting(
manager.add(soc.ListSetting(
'output_format',
sorted(FORMATTERS.keys()),
OutputChoice(sorted(FORMATTERS.keys())),
default=None,
))
manager.add(soc.BooleanSetting('absolute_paths', default=False))
Expand Down
11 changes: 11 additions & 0 deletions prospector/config/datatype.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
from os import pathsep

from setoptconf.datatype import Choice


class OutputChoice(Choice):
def sanitize(self, value):
splitted_value = value.split(pathsep)
output_format, output_targets = splitted_value[0], splitted_value[1:]
validated_format = super(OutputChoice, self).sanitize(output_format)
return (output_format, output_targets)
2 changes: 2 additions & 0 deletions prospector/profiles/profile.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ def __init__(self, name, profile_dict, inherit_order):
)

self.output_format = profile_dict.get('output-format')
self.output_target = profile_dict.get('output-target')
self.autodetect = profile_dict.get('autodetect')
self.uses = [uses for uses in _ensure_list(profile_dict.get('uses', []))
if uses in ('django', 'celery', 'flask')]
Expand Down Expand Up @@ -92,6 +93,7 @@ def as_dict(self):
'ignore-paths': self.ignore_paths,
'ignore-patterns': self.ignore_patterns,
'output-format': self.output_format,
'output-file': self.output_file,
'autodetect': self.autodetect,
'uses': self.uses,
'max-line-length': self.max_line_length,
Expand Down
26 changes: 17 additions & 9 deletions prospector/run.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,20 +123,28 @@ def get_summary(self):
def get_messages(self):
return self.messages

def print_messages(self, write_to=None):
write_to = write_to or sys.stdout

output_format = self.config.get_output_format()
self.summary['formatter'] = output_format
formatter = FORMATTERS[output_format](self.summary, self.messages, self.config.profile)

def print_messages(self):
output_reports = self.config.get_output_report()

for report in output_reports:
output_format, output_files = report
self.summary['formatter'] = output_format
formatter = FORMATTERS[output_format](self.summary, self.messages, self.config.profile)
if not output_files:
self.write_to(formatter, sys.stdout)
for output_file in output_files:
with open(output_file, 'w+') as target:
self.write_to(formatter, target)

def write_to(self, formatter, target):
# Produce the output
write_to.write(formatter.render(
target.write(formatter.render(
summary=not self.config.messages_only,
messages=not self.config.summary_only,
profile=self.config.show_profile
))
write_to.write('\n')
target.write('\n')



def get_parser():
Expand Down