mirror of
https://github.com/PyCQA/flake8.git
synced 2026-04-11 15:24:18 +00:00
Merge branch 'latest_pyflakes' into 'master'
use latest pyflakes See merge request pycqa/flake8!283
This commit is contained in:
commit
d83fed0987
13 changed files with 69 additions and 38 deletions
17
.gitignore
vendored
17
.gitignore
vendored
|
|
@ -1,13 +1,14 @@
|
||||||
*.pyc
|
|
||||||
.tox
|
|
||||||
.eggs
|
|
||||||
*.egg
|
*.egg
|
||||||
*.egg-info
|
*.egg-info
|
||||||
build
|
*.log
|
||||||
dist
|
*.pyc
|
||||||
|
*.sw*
|
||||||
*.zip
|
*.zip
|
||||||
.cache
|
.cache
|
||||||
*.sw*
|
|
||||||
*.log
|
|
||||||
docs/build/html/*
|
|
||||||
.coverage
|
.coverage
|
||||||
|
.eggs
|
||||||
|
.tox
|
||||||
|
/.mypy_cache
|
||||||
|
build
|
||||||
|
dist
|
||||||
|
docs/build/html/*
|
||||||
|
|
|
||||||
2
mypy.ini
Normal file
2
mypy.ini
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
[mypy]
|
||||||
|
ignore_missing_imports = true
|
||||||
3
setup.py
3
setup.py
|
|
@ -20,13 +20,14 @@ requires = [
|
||||||
# And in which releases we will update those ranges here:
|
# And in which releases we will update those ranges here:
|
||||||
# http://flake8.pycqa.org/en/latest/internal/releases.html#releasing-flake8
|
# http://flake8.pycqa.org/en/latest/internal/releases.html#releasing-flake8
|
||||||
"entrypoints >= 0.2.3, < 0.3.0",
|
"entrypoints >= 0.2.3, < 0.3.0",
|
||||||
"pyflakes >= 2.0.0, < 2.1.0",
|
"pyflakes >= 2.1.0, < 2.2.0",
|
||||||
"pycodestyle >= 2.4.0, < 2.5.0",
|
"pycodestyle >= 2.4.0, < 2.5.0",
|
||||||
"mccabe >= 0.6.0, < 0.7.0",
|
"mccabe >= 0.6.0, < 0.7.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
extras_require = {
|
extras_require = {
|
||||||
":python_version<'3.4'": ['enum34'],
|
":python_version<'3.4'": ['enum34'],
|
||||||
|
":python_version<'3.5'": ['typing'],
|
||||||
":python_version<'3.2'": ['configparser'],
|
":python_version<'3.2'": ['configparser'],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import logging
|
||||||
import signal
|
import signal
|
||||||
import sys
|
import sys
|
||||||
import tokenize
|
import tokenize
|
||||||
|
from typing import List, Optional # noqa: F401 (until flake8 3.7)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import multiprocessing
|
import multiprocessing
|
||||||
|
|
@ -195,7 +196,7 @@ class Manager(object):
|
||||||
)
|
)
|
||||||
|
|
||||||
def make_checkers(self, paths=None):
|
def make_checkers(self, paths=None):
|
||||||
# type: (List[str]) -> NoneType
|
# type: (List[str]) -> None
|
||||||
"""Create checkers for each file."""
|
"""Create checkers for each file."""
|
||||||
if paths is None:
|
if paths is None:
|
||||||
paths = self.arguments
|
paths = self.arguments
|
||||||
|
|
@ -411,7 +412,7 @@ class FileChecker(object):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def report(self, error_code, line_number, column, text, line=None):
|
def report(self, error_code, line_number, column, text, line=None):
|
||||||
# type: (str, int, int, str) -> str
|
# type: (str, int, int, str, Optional[str]) -> str
|
||||||
"""Report an error by storing it in the results list."""
|
"""Report an error by storing it in the results list."""
|
||||||
if error_code is None:
|
if error_code is None:
|
||||||
error_code, text = text.split(" ", 1)
|
error_code, text = text.split(" ", 1)
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@ from __future__ import print_function
|
||||||
import logging
|
import logging
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
|
from typing import List, Optional, Sequence # noqa: F401 (until flake8 3.7)
|
||||||
|
from typing import Type, TYPE_CHECKING # noqa: F401 (until flake8 3.7)
|
||||||
|
|
||||||
import flake8
|
import flake8
|
||||||
from flake8 import checker
|
from flake8 import checker
|
||||||
|
|
@ -16,6 +18,12 @@ from flake8.options import aggregator, config
|
||||||
from flake8.options import manager
|
from flake8.options import manager
|
||||||
from flake8.plugins import manager as plugin_manager
|
from flake8.plugins import manager as plugin_manager
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
# fmt: off
|
||||||
|
from flake8.formatting.base import BaseFormatter # noqa: F401, E501 (until flake8 3.7)
|
||||||
|
# fmt: on
|
||||||
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -23,7 +31,7 @@ class Application(object):
|
||||||
"""Abstract our application into a class."""
|
"""Abstract our application into a class."""
|
||||||
|
|
||||||
def __init__(self, program="flake8", version=flake8.__version__):
|
def __init__(self, program="flake8", version=flake8.__version__):
|
||||||
# type: (str, str) -> NoneType
|
# type: (str, str) -> None
|
||||||
"""Initialize our application.
|
"""Initialize our application.
|
||||||
|
|
||||||
:param str program:
|
:param str program:
|
||||||
|
|
@ -132,7 +140,7 @@ class Application(object):
|
||||||
self.prelim_opts, self.prelim_args = opts, args
|
self.prelim_opts, self.prelim_args = opts, args
|
||||||
|
|
||||||
def exit(self):
|
def exit(self):
|
||||||
# type: () -> NoneType
|
# type: () -> None
|
||||||
"""Handle finalization and exiting the program.
|
"""Handle finalization and exiting the program.
|
||||||
|
|
||||||
This should be the last thing called on the application instance. It
|
This should be the last thing called on the application instance. It
|
||||||
|
|
@ -159,7 +167,7 @@ class Application(object):
|
||||||
)
|
)
|
||||||
|
|
||||||
def find_plugins(self):
|
def find_plugins(self):
|
||||||
# type: () -> NoneType
|
# type: () -> None
|
||||||
"""Find and load the plugins for this application.
|
"""Find and load the plugins for this application.
|
||||||
|
|
||||||
If :attr:`check_plugins`, or :attr:`formatting_plugins` are ``None``
|
If :attr:`check_plugins`, or :attr:`formatting_plugins` are ``None``
|
||||||
|
|
@ -191,14 +199,14 @@ class Application(object):
|
||||||
self.formatting_plugins.load_plugins()
|
self.formatting_plugins.load_plugins()
|
||||||
|
|
||||||
def register_plugin_options(self):
|
def register_plugin_options(self):
|
||||||
# type: () -> NoneType
|
# type: () -> None
|
||||||
"""Register options provided by plugins to our option manager."""
|
"""Register options provided by plugins to our option manager."""
|
||||||
self.check_plugins.register_options(self.option_manager)
|
self.check_plugins.register_options(self.option_manager)
|
||||||
self.check_plugins.register_plugin_versions(self.option_manager)
|
self.check_plugins.register_plugin_versions(self.option_manager)
|
||||||
self.formatting_plugins.register_options(self.option_manager)
|
self.formatting_plugins.register_options(self.option_manager)
|
||||||
|
|
||||||
def parse_configuration_and_cli(self, argv=None):
|
def parse_configuration_and_cli(self, argv=None):
|
||||||
# type: (Union[NoneType, List[str]]) -> NoneType
|
# type: (Optional[List[str]]) -> None
|
||||||
"""Parse configuration files and the CLI options.
|
"""Parse configuration files and the CLI options.
|
||||||
|
|
||||||
:param list argv:
|
:param list argv:
|
||||||
|
|
@ -238,7 +246,7 @@ class Application(object):
|
||||||
return formatter_plugin.execute
|
return formatter_plugin.execute
|
||||||
|
|
||||||
def make_formatter(self, formatter_class=None):
|
def make_formatter(self, formatter_class=None):
|
||||||
# type: () -> NoneType
|
# type: (Optional[Type[BaseFormatter]]) -> None
|
||||||
"""Initialize a formatter based on the parsed options."""
|
"""Initialize a formatter based on the parsed options."""
|
||||||
if self.formatter is None:
|
if self.formatter is None:
|
||||||
format_plugin = self.options.format
|
format_plugin = self.options.format
|
||||||
|
|
@ -253,7 +261,7 @@ class Application(object):
|
||||||
self.formatter = formatter_class(self.options)
|
self.formatter = formatter_class(self.options)
|
||||||
|
|
||||||
def make_guide(self):
|
def make_guide(self):
|
||||||
# type: () -> NoneType
|
# type: () -> None
|
||||||
"""Initialize our StyleGuide."""
|
"""Initialize our StyleGuide."""
|
||||||
if self.guide is None:
|
if self.guide is None:
|
||||||
self.guide = style_guide.StyleGuideManager(
|
self.guide = style_guide.StyleGuideManager(
|
||||||
|
|
@ -264,7 +272,7 @@ class Application(object):
|
||||||
self.guide.add_diff_ranges(self.parsed_diff)
|
self.guide.add_diff_ranges(self.parsed_diff)
|
||||||
|
|
||||||
def make_file_checker_manager(self):
|
def make_file_checker_manager(self):
|
||||||
# type: () -> NoneType
|
# type: () -> None
|
||||||
"""Initialize our FileChecker Manager."""
|
"""Initialize our FileChecker Manager."""
|
||||||
if self.file_checker_manager is None:
|
if self.file_checker_manager is None:
|
||||||
self.file_checker_manager = checker.Manager(
|
self.file_checker_manager = checker.Manager(
|
||||||
|
|
@ -274,7 +282,7 @@ class Application(object):
|
||||||
)
|
)
|
||||||
|
|
||||||
def run_checks(self, files=None):
|
def run_checks(self, files=None):
|
||||||
# type: (Union[List[str], NoneType]) -> NoneType
|
# type: (Optional[List[str]]) -> None
|
||||||
"""Run the actual checks with the FileChecker Manager.
|
"""Run the actual checks with the FileChecker Manager.
|
||||||
|
|
||||||
This method encapsulates the logic to make a
|
This method encapsulates the logic to make a
|
||||||
|
|
@ -315,7 +323,7 @@ class Application(object):
|
||||||
self.formatter.show_benchmarks(statistics)
|
self.formatter.show_benchmarks(statistics)
|
||||||
|
|
||||||
def report_errors(self):
|
def report_errors(self):
|
||||||
# type: () -> NoneType
|
# type: () -> None
|
||||||
"""Report all the errors found by flake8 3.0.
|
"""Report all the errors found by flake8 3.0.
|
||||||
|
|
||||||
This also updates the :attr:`result_count` attribute with the total
|
This also updates the :attr:`result_count` attribute with the total
|
||||||
|
|
@ -338,7 +346,7 @@ class Application(object):
|
||||||
self.formatter.show_statistics(self.guide.stats)
|
self.formatter.show_statistics(self.guide.stats)
|
||||||
|
|
||||||
def initialize(self, argv):
|
def initialize(self, argv):
|
||||||
# type: () -> NoneType
|
# type: (Sequence[str]) -> None
|
||||||
"""Initialize the application to be run.
|
"""Initialize the application to be run.
|
||||||
|
|
||||||
This finds the plugins, registers their options, and parses the
|
This finds the plugins, registers their options, and parses the
|
||||||
|
|
@ -367,13 +375,13 @@ class Application(object):
|
||||||
self.formatter.stop()
|
self.formatter.stop()
|
||||||
|
|
||||||
def _run(self, argv):
|
def _run(self, argv):
|
||||||
# type: (Union[NoneType, List[str]]) -> NoneType
|
# type: (Optional[List[str]]) -> None
|
||||||
self.initialize(argv)
|
self.initialize(argv)
|
||||||
self.run_checks()
|
self.run_checks()
|
||||||
self.report()
|
self.report()
|
||||||
|
|
||||||
def run(self, argv=None):
|
def run(self, argv=None):
|
||||||
# type: (Union[NoneType, List[str]]) -> NoneType
|
# type: (Optional[List[str]]) -> None
|
||||||
"""Run our application.
|
"""Run our application.
|
||||||
|
|
||||||
This method will also handle KeyboardInterrupt exceptions for the
|
This method will also handle KeyboardInterrupt exceptions for the
|
||||||
|
|
@ -389,7 +397,7 @@ class Application(object):
|
||||||
self.catastrophic_failure = True
|
self.catastrophic_failure = True
|
||||||
except exceptions.ExecutionError as exc:
|
except exceptions.ExecutionError as exc:
|
||||||
print("There was a critical error during execution of Flake8:")
|
print("There was a critical error during execution of Flake8:")
|
||||||
print(exc.message)
|
print(exc)
|
||||||
LOG.exception(exc)
|
LOG.exception(exc)
|
||||||
self.catastrophic_failure = True
|
self.catastrophic_failure = True
|
||||||
except exceptions.EarlyQuit:
|
except exceptions.EarlyQuit:
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,11 @@
|
||||||
"""Command-line implementation of flake8."""
|
"""Command-line implementation of flake8."""
|
||||||
|
from typing import List, Optional # noqa: F401 (until flake8 3.7)
|
||||||
|
|
||||||
from flake8.main import application
|
from flake8.main import application
|
||||||
|
|
||||||
|
|
||||||
def main(argv=None):
|
def main(argv=None):
|
||||||
# type: (Union[NoneType, List[str]]) -> NoneType
|
# type: (Optional[List[str]]) -> None
|
||||||
"""Execute the main bit of the application.
|
"""Execute the main bit of the application.
|
||||||
|
|
||||||
This handles the creation of an instance of :class:`Application`, runs it,
|
This handles the creation of an instance of :class:`Application`, runs it,
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
"""The logic for Flake8's integration with setuptools."""
|
"""The logic for Flake8's integration with setuptools."""
|
||||||
import os
|
import os
|
||||||
|
from typing import List # noqa: F401 (until flake8 3.7)
|
||||||
|
|
||||||
import setuptools
|
import setuptools
|
||||||
|
|
||||||
|
|
@ -19,7 +20,7 @@ class Flake8(setuptools.Command):
|
||||||
# of options, and since this will break when users use plugins that
|
# of options, and since this will break when users use plugins that
|
||||||
# provide command-line options, we are leaving this empty. If users want
|
# provide command-line options, we are leaving this empty. If users want
|
||||||
# to configure this command, they can do so through config files.
|
# to configure this command, they can do so through config files.
|
||||||
user_options = []
|
user_options = [] # type: List[str]
|
||||||
|
|
||||||
def initialize_options(self):
|
def initialize_options(self):
|
||||||
"""Override this method to initialize our application."""
|
"""Override this method to initialize our application."""
|
||||||
|
|
|
||||||
|
|
@ -315,7 +315,7 @@ class PluginManager(object): # pylint: disable=too-few-public-methods
|
||||||
|
|
||||||
|
|
||||||
def version_for(plugin):
|
def version_for(plugin):
|
||||||
# (Plugin) -> Union[str, NoneType]
|
# (Plugin) -> Optional[str]
|
||||||
"""Determine the version of a plugin by its module.
|
"""Determine the version of a plugin by its module.
|
||||||
|
|
||||||
:param plugin:
|
:param plugin:
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,8 @@ FLAKE8_PYFLAKES_CODES = {
|
||||||
"TooManyExpressionsInStarredAssignment": "F621",
|
"TooManyExpressionsInStarredAssignment": "F621",
|
||||||
"TwoStarredExpressions": "F622",
|
"TwoStarredExpressions": "F622",
|
||||||
"AssertTuple": "F631",
|
"AssertTuple": "F631",
|
||||||
|
"IsLiteral": "F632",
|
||||||
|
"InvalidPrintSyntax": "F633",
|
||||||
"BreakOutsideLoop": "F701",
|
"BreakOutsideLoop": "F701",
|
||||||
"ContinueOutsideLoop": "F702",
|
"ContinueOutsideLoop": "F702",
|
||||||
"ContinueInFinally": "F703",
|
"ContinueInFinally": "F703",
|
||||||
|
|
@ -39,6 +41,7 @@ FLAKE8_PYFLAKES_CODES = {
|
||||||
"DefaultExceptNotLast": "F707",
|
"DefaultExceptNotLast": "F707",
|
||||||
"DoctestSyntaxError": "F721",
|
"DoctestSyntaxError": "F721",
|
||||||
"ForwardAnnotationSyntaxError": "F722",
|
"ForwardAnnotationSyntaxError": "F722",
|
||||||
|
"CommentAnnotationSyntaxError": "F723",
|
||||||
"RedefinedWhileUnused": "F811",
|
"RedefinedWhileUnused": "F811",
|
||||||
"RedefinedInListComp": "F812",
|
"RedefinedInListComp": "F812",
|
||||||
"UndefinedName": "F821",
|
"UndefinedName": "F821",
|
||||||
|
|
@ -72,7 +75,7 @@ class FlakesChecker(pyflakes.checker.Checker):
|
||||||
include_in_doctest = []
|
include_in_doctest = []
|
||||||
exclude_from_doctest = []
|
exclude_from_doctest = []
|
||||||
|
|
||||||
def __init__(self, tree, filename):
|
def __init__(self, tree, file_tokens, filename):
|
||||||
"""Initialize the PyFlakes plugin with an AST tree and filename."""
|
"""Initialize the PyFlakes plugin with an AST tree and filename."""
|
||||||
filename = utils.normalize_paths(filename)[0]
|
filename = utils.normalize_paths(filename)[0]
|
||||||
with_doctest = self.with_doctest
|
with_doctest = self.with_doctest
|
||||||
|
|
@ -97,7 +100,10 @@ class FlakesChecker(pyflakes.checker.Checker):
|
||||||
with_doctest = True
|
with_doctest = True
|
||||||
|
|
||||||
super(FlakesChecker, self).__init__(
|
super(FlakesChecker, self).__init__(
|
||||||
tree, filename=filename, withDoctest=with_doctest
|
tree,
|
||||||
|
filename=filename,
|
||||||
|
withDoctest=with_doctest,
|
||||||
|
file_tokens=file_tokens,
|
||||||
)
|
)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ import contextlib
|
||||||
import logging
|
import logging
|
||||||
import sys
|
import sys
|
||||||
import tokenize
|
import tokenize
|
||||||
|
from typing import List # noqa: F401 (until flake8 3.7)
|
||||||
|
|
||||||
import flake8
|
import flake8
|
||||||
from flake8 import defaults
|
from flake8 import defaults
|
||||||
|
|
@ -348,7 +349,7 @@ class FileProcessor(object):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def strip_utf_bom(self):
|
def strip_utf_bom(self):
|
||||||
# type: () -> NoneType
|
# type: () -> None
|
||||||
"""Strip the UTF bom from the lines of the file."""
|
"""Strip the UTF bom from the lines of the file."""
|
||||||
if not self.lines:
|
if not self.lines:
|
||||||
# If we have nothing to analyze quit early
|
# If we have nothing to analyze quit early
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import functools
|
||||||
import itertools
|
import itertools
|
||||||
import linecache
|
import linecache
|
||||||
import logging
|
import logging
|
||||||
|
from typing import Optional, Union # noqa: F401 (until flake8 3.7)
|
||||||
|
|
||||||
from flake8 import defaults
|
from flake8 import defaults
|
||||||
from flake8 import statistics
|
from flake8 import statistics
|
||||||
|
|
@ -391,7 +392,7 @@ class StyleGuideManager(object):
|
||||||
text,
|
text,
|
||||||
physical_line=None,
|
physical_line=None,
|
||||||
):
|
):
|
||||||
# type: (str, str, int, int, str) -> int
|
# type: (str, str, int, int, str, Optional[str]) -> int
|
||||||
"""Handle an error reported by a check.
|
"""Handle an error reported by a check.
|
||||||
|
|
||||||
:param str code:
|
:param str code:
|
||||||
|
|
@ -511,7 +512,7 @@ class StyleGuide(object):
|
||||||
text,
|
text,
|
||||||
physical_line=None,
|
physical_line=None,
|
||||||
):
|
):
|
||||||
# type: (str, str, int, int, str) -> int
|
# type: (str, str, int, int, str, Optional[str]) -> int
|
||||||
"""Handle an error reported by a check.
|
"""Handle an error reported by a check.
|
||||||
|
|
||||||
:param str code:
|
:param str code:
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,13 @@ import platform
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
import tokenize
|
import tokenize
|
||||||
|
from typing import Callable, Dict, Generator # noqa: F401 (until flake8 3.7)
|
||||||
|
from typing import List, Pattern, Sequence # noqa: F401 (until flake8 3,7)
|
||||||
|
from typing import Tuple, TYPE_CHECKING # noqa: F401 (until flake8 3.7)
|
||||||
|
from typing import Union # noqa: F401 (until flake8 3.7)
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from flake8.plugins.manager import Plugin # noqa: F401 (until flake8 3.7)
|
||||||
|
|
||||||
DIFF_HUNK_REGEXP = re.compile(r"^@@ -\d+(?:,\d+)? \+(\d+)(?:,(\d+))? @@.*$")
|
DIFF_HUNK_REGEXP = re.compile(r"^@@ -\d+(?:,\d+)? \+(\d+)(?:,(\d+))? @@.*$")
|
||||||
COMMA_SEPARATED_LIST_RE = re.compile(r"[,\s]")
|
COMMA_SEPARATED_LIST_RE = re.compile(r"[,\s]")
|
||||||
|
|
@ -15,7 +22,7 @@ LOCAL_PLUGIN_LIST_RE = re.compile(r"[,\t\n\r\f\v]")
|
||||||
|
|
||||||
|
|
||||||
def parse_comma_separated_list(value, regexp=COMMA_SEPARATED_LIST_RE):
|
def parse_comma_separated_list(value, regexp=COMMA_SEPARATED_LIST_RE):
|
||||||
# type: (Union[Sequence[str], str]) -> List[str]
|
# type: (Union[Sequence[str], str], Pattern[str]) -> List[str]
|
||||||
"""Parse a comma-separated list.
|
"""Parse a comma-separated list.
|
||||||
|
|
||||||
:param value:
|
:param value:
|
||||||
|
|
@ -321,7 +328,7 @@ def _default_predicate(*args):
|
||||||
|
|
||||||
|
|
||||||
def filenames_from(arg, predicate=None):
|
def filenames_from(arg, predicate=None):
|
||||||
# type: (str, callable) -> Generator
|
# type: (str, Callable[[str], bool]) -> Generator
|
||||||
"""Generate filenames from an argument.
|
"""Generate filenames from an argument.
|
||||||
|
|
||||||
:param str arg:
|
:param str arg:
|
||||||
|
|
@ -382,7 +389,7 @@ def fnmatch(filename, patterns, default=True):
|
||||||
|
|
||||||
|
|
||||||
def parameters_for(plugin):
|
def parameters_for(plugin):
|
||||||
# type: (flake8.plugins.manager.Plugin) -> Dict[str, bool]
|
# type: (Plugin) -> Dict[str, bool]
|
||||||
"""Return the parameters for the plugin.
|
"""Return the parameters for the plugin.
|
||||||
|
|
||||||
This will inspect the plugin and return either the function parameters
|
This will inspect the plugin and return either the function parameters
|
||||||
|
|
|
||||||
4
tox.ini
4
tox.ini
|
|
@ -74,9 +74,9 @@ commands =
|
||||||
basepython = python3
|
basepython = python3
|
||||||
skip_install = true
|
skip_install = true
|
||||||
deps =
|
deps =
|
||||||
mypy-lang
|
mypy
|
||||||
commands =
|
commands =
|
||||||
mypy flake8
|
mypy src
|
||||||
|
|
||||||
[testenv:bandit]
|
[testenv:bandit]
|
||||||
basepython = python3
|
basepython = python3
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue