Merge branch 'bug/163' into 'master'

Update setuptools integration for setup.cfg

*Description of changes*

Allow setuptools to parse config options from setup.cfg and pass them along via the attributes on our Flake8 command.

*Related to:*  #163

See merge request !67
This commit is contained in:
Ian Cordasco 2016-07-09 21:10:44 +00:00
commit 2e5100d44c
2 changed files with 33 additions and 5 deletions

View file

@ -5,6 +5,8 @@ import setuptools
from flake8.main import application as app
UNSET = object()
class Flake8(setuptools.Command):
"""Run Flake8 via setuptools/distutils for registered modules."""
@ -21,11 +23,25 @@ class Flake8(setuptools.Command):
def initialize_options(self):
"""Override this method to initialize our application."""
pass
self.flake8 = app.Application()
self.flake8.initialize([])
options = self.flake8.option_manager.options
for option in options:
if option.parse_from_config:
setattr(self, option.config_name, UNSET)
def finalize_options(self):
"""Override this to parse the parameters."""
pass
options = self.flake8.option_manager.options
for option in options:
if option.parse_from_config:
name = option.config_name
value = getattr(self, name, UNSET)
if value is UNSET:
continue
setattr(self.flake8.options,
name,
option.normalize_from_setuptools(value))
def package_files(self):
"""Collect the files/dirs included in the registered modules."""
@ -72,6 +88,5 @@ class Flake8(setuptools.Command):
def run(self):
"""Run the Flake8 application."""
flake8 = app.Application()
flake8.run(list(self.distribution_files()))
flake8.exit()
self.flake8.run_checks(list(self.distribution_files()))
self.flake8.exit()

View file

@ -133,6 +133,19 @@ class Option(object):
return utils.parse_comma_separated_list(value)
return value
def normalize_from_setuptools(self, value):
"""Normalize the value received from setuptools."""
value = self.normalize(value)
if self.type == 'int' or self.action == 'count':
return int(value)
if self.action in ('store_true', 'store_false'):
value = str(value).upper()
if value in ('1', 'T', 'TRUE', 'ON'):
return True
if value in ('0', 'F', 'FALSE', 'OFF'):
return False
return value
def to_optparse(self):
"""Convert a Flake8 Option to an optparse Option."""
if self._opt is None: