mirror of
https://github.com/PyCQA/flake8.git
synced 2026-04-07 13:36:54 +00:00
Merge branch 'extend_select' into 'master'
Add --extend-select command line argument See merge request pycqa/flake8!437
This commit is contained in:
commit
b4eec50f61
6 changed files with 83 additions and 17 deletions
|
|
@ -115,6 +115,10 @@ And you should see something like:
|
||||||
run. (Default: 79)
|
run. (Default: 79)
|
||||||
--select=errors Comma-separated list of errors and warnings to enable.
|
--select=errors Comma-separated list of errors and warnings to enable.
|
||||||
For example, ``--select=E4,E51,W234``. (Default: )
|
For example, ``--select=E4,E51,W234``. (Default: )
|
||||||
|
--extend-select errors
|
||||||
|
Comma-separated list of errors and warnings to add to
|
||||||
|
the list of selected ones. For example, ``--extend-
|
||||||
|
select=E4,E51,W234``.
|
||||||
--disable-noqa Disable the effect of "# noqa". This will report
|
--disable-noqa Disable the effect of "# noqa". This will report
|
||||||
errors on lines with "# noqa" at the end.
|
errors on lines with "# noqa" at the end.
|
||||||
--show-source Show the source generate each error or warning.
|
--show-source Show the source generate each error or warning.
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,8 @@ Index of Options
|
||||||
|
|
||||||
- :option:`flake8 --select`
|
- :option:`flake8 --select`
|
||||||
|
|
||||||
|
- :option:`flake8 --extend-select`
|
||||||
|
|
||||||
- :option:`flake8 --disable-noqa`
|
- :option:`flake8 --disable-noqa`
|
||||||
|
|
||||||
- :option:`flake8 --show-source`
|
- :option:`flake8 --show-source`
|
||||||
|
|
@ -632,6 +634,38 @@ Options and their Descriptions
|
||||||
F
|
F
|
||||||
|
|
||||||
|
|
||||||
|
.. option:: --extend-select=<errors>
|
||||||
|
|
||||||
|
:ref:`Go back to index <top>`
|
||||||
|
|
||||||
|
.. versionadded:: 3.9.0
|
||||||
|
|
||||||
|
Specify a list of codes to add to the list of selected ones. Similar
|
||||||
|
considerations as in :option:`--select` apply here with regard to the
|
||||||
|
value.
|
||||||
|
|
||||||
|
The difference to the :option:`--select` option is, that this option can be
|
||||||
|
used to selectively add individual codes without overriding the default
|
||||||
|
list entirely.
|
||||||
|
|
||||||
|
Command-line example:
|
||||||
|
|
||||||
|
.. prompt:: bash
|
||||||
|
|
||||||
|
flake8 --extend-select=E4,E51,W234 dir/
|
||||||
|
|
||||||
|
This **can** be specified in config files.
|
||||||
|
|
||||||
|
Example config file usage:
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
extend-select =
|
||||||
|
E4,
|
||||||
|
E51,
|
||||||
|
W234
|
||||||
|
|
||||||
|
|
||||||
.. option:: --disable-noqa
|
.. option:: --disable-noqa
|
||||||
|
|
||||||
:ref:`Go back to index <top>`
|
:ref:`Go back to index <top>`
|
||||||
|
|
|
||||||
|
|
@ -105,6 +105,7 @@ def register_default_options(option_manager):
|
||||||
- ``--max-doc-length``
|
- ``--max-doc-length``
|
||||||
- ``--indent-size``
|
- ``--indent-size``
|
||||||
- ``--select``
|
- ``--select``
|
||||||
|
- ``--extend-select``
|
||||||
- ``--disable-noqa``
|
- ``--disable-noqa``
|
||||||
- ``--show-source``
|
- ``--show-source``
|
||||||
- ``--statistics``
|
- ``--statistics``
|
||||||
|
|
@ -272,6 +273,16 @@ def register_default_options(option_manager):
|
||||||
" For example, ``--select=E4,E51,W234``. (Default: %(default)s)",
|
" For example, ``--select=E4,E51,W234``. (Default: %(default)s)",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
add_option(
|
||||||
|
"--extend-select",
|
||||||
|
metavar="errors",
|
||||||
|
default="",
|
||||||
|
parse_from_config=True,
|
||||||
|
comma_separated_list=True,
|
||||||
|
help="Comma-separated list of errors and warnings to add to the list"
|
||||||
|
" of selected ones. For example, ``--extend-select=E4,E51,W234``.",
|
||||||
|
)
|
||||||
|
|
||||||
add_option(
|
add_option(
|
||||||
"--disable-noqa",
|
"--disable-noqa",
|
||||||
default=False,
|
default=False,
|
||||||
|
|
|
||||||
|
|
@ -163,7 +163,14 @@ class DecisionEngine:
|
||||||
)
|
)
|
||||||
self.enabled_extensions = tuple(options.enable_extensions)
|
self.enabled_extensions = tuple(options.enable_extensions)
|
||||||
self.all_selected = tuple(
|
self.all_selected = tuple(
|
||||||
sorted(self.selected + self.enabled_extensions, reverse=True)
|
sorted(
|
||||||
|
itertools.chain(
|
||||||
|
self.selected,
|
||||||
|
options.extend_select,
|
||||||
|
self.enabled_extensions,
|
||||||
|
),
|
||||||
|
reverse=True,
|
||||||
|
)
|
||||||
)
|
)
|
||||||
self.ignored = tuple(
|
self.ignored = tuple(
|
||||||
sorted(
|
sorted(
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ def create_options(**kwargs):
|
||||||
"""Create and return an instance of argparse.Namespace."""
|
"""Create and return an instance of argparse.Namespace."""
|
||||||
kwargs.setdefault('select', [])
|
kwargs.setdefault('select', [])
|
||||||
kwargs.setdefault('extended_default_select', [])
|
kwargs.setdefault('extended_default_select', [])
|
||||||
|
kwargs.setdefault('extend_select', [])
|
||||||
kwargs.setdefault('ignore', [])
|
kwargs.setdefault('ignore', [])
|
||||||
kwargs.setdefault('extend_ignore', [])
|
kwargs.setdefault('extend_ignore', [])
|
||||||
kwargs.setdefault('disable_noqa', False)
|
kwargs.setdefault('disable_noqa', False)
|
||||||
|
|
@ -52,20 +53,27 @@ def test_was_ignored_implicitly_selects_errors(ignore_list, extend_ignore,
|
||||||
assert decider.was_ignored(error_code) is style_guide.Selected.Implicitly
|
assert decider.was_ignored(error_code) is style_guide.Selected.Implicitly
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('select_list,enable_extensions,error_code', [
|
@pytest.mark.parametrize(
|
||||||
(['E111', 'E121'], [], 'E111'),
|
'select_list,extend_select,enable_extensions,error_code', [
|
||||||
(['E111', 'E121'], [], 'E121'),
|
(['E111', 'E121'], [], [], 'E111'),
|
||||||
(['E11', 'E12'], [], 'E121'),
|
(['E111', 'E121'], [], [], 'E121'),
|
||||||
(['E2', 'E12'], [], 'E121'),
|
(['E11', 'E12'], [], [], 'E121'),
|
||||||
(['E2', 'E12'], [], 'E211'),
|
(['E2', 'E12'], [], [], 'E121'),
|
||||||
(['E1'], ['E2'], 'E211'),
|
(['E2', 'E12'], [], [], 'E211'),
|
||||||
([], ['E2'], 'E211'),
|
(['E1'], ['E2'], [], 'E211'),
|
||||||
])
|
(['E1'], [], ['E2'], 'E211'),
|
||||||
def test_was_selected_selects_errors(select_list, enable_extensions,
|
([], ['E2'], [], 'E211'),
|
||||||
error_code):
|
([], [], ['E2'], 'E211'),
|
||||||
|
(['E1'], ['E2'], [], 'E211'),
|
||||||
|
(['E111'], ['E121'], ['E2'], 'E121'),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
def test_was_selected_selects_errors(select_list, extend_select,
|
||||||
|
enable_extensions, error_code):
|
||||||
"""Verify we detect users explicitly selecting an error."""
|
"""Verify we detect users explicitly selecting an error."""
|
||||||
decider = style_guide.DecisionEngine(
|
decider = style_guide.DecisionEngine(
|
||||||
options=create_options(select=select_list,
|
options=create_options(select=select_list,
|
||||||
|
extend_select=extend_select,
|
||||||
enable_extensions=enable_extensions),
|
enable_extensions=enable_extensions),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -144,7 +152,8 @@ def test_decision_for(select_list, ignore_list, extend_ignore, error_code,
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
'select,ignore,extend_select,enabled_extensions,error_code,expected', [
|
'select,ignore,extended_default_select,'
|
||||||
|
'enabled_extensions,error_code,expected', [
|
||||||
(defaults.SELECT, [], ['I1'], [], 'I100',
|
(defaults.SELECT, [], ['I1'], [], 'I100',
|
||||||
style_guide.Decision.Selected),
|
style_guide.Decision.Selected),
|
||||||
(defaults.SELECT, [], ['I1'], [], 'I201',
|
(defaults.SELECT, [], ['I1'], [], 'I201',
|
||||||
|
|
@ -185,14 +194,14 @@ def test_decision_for(select_list, ignore_list, extend_ignore, error_code,
|
||||||
# return statement
|
# return statement
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
def test_more_specific_decision_for_logic(select, ignore, extend_select,
|
def test_more_specific_decision_for_logic(
|
||||||
enabled_extensions, error_code,
|
select, ignore, extended_default_select,
|
||||||
expected):
|
enabled_extensions, error_code, expected):
|
||||||
"""Verify the logic of DecisionEngine.more_specific_decision_for."""
|
"""Verify the logic of DecisionEngine.more_specific_decision_for."""
|
||||||
decider = style_guide.DecisionEngine(
|
decider = style_guide.DecisionEngine(
|
||||||
create_options(
|
create_options(
|
||||||
select=select, ignore=ignore,
|
select=select, ignore=ignore,
|
||||||
extended_default_select=extend_select,
|
extended_default_select=extended_default_select,
|
||||||
enable_extensions=enabled_extensions,
|
enable_extensions=enabled_extensions,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ def create_options(**kwargs):
|
||||||
"""Create and return an instance of argparse.Namespace."""
|
"""Create and return an instance of argparse.Namespace."""
|
||||||
kwargs.setdefault('select', [])
|
kwargs.setdefault('select', [])
|
||||||
kwargs.setdefault('extended_default_select', [])
|
kwargs.setdefault('extended_default_select', [])
|
||||||
|
kwargs.setdefault('extend_select', [])
|
||||||
kwargs.setdefault('ignore', [])
|
kwargs.setdefault('ignore', [])
|
||||||
kwargs.setdefault('extend_ignore', [])
|
kwargs.setdefault('extend_ignore', [])
|
||||||
kwargs.setdefault('disable_noqa', False)
|
kwargs.setdefault('disable_noqa', False)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue