Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

python 3 updates, tidied imports, docstrings #235

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
41 changes: 22 additions & 19 deletions dummy.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,21 @@


# commented code
#import os
# import os
# from foo import junk
# a = 3
a = 4
#foo(1, 2, 3)
# foo(1, 2, 3)


class Message(object):
message = ''
class Message:
message = ""
message_args = ()

def __init__(self, filename, loc, use_column=True):
self.filename = filename
self.lineno = loc.lineno
self.col = getattr(loc, 'col_offset', None) if use_column else None
self.col = getattr(loc, "col_offset", None) if use_column else None
test = 1
if test == 1:
if test == 1:
Expand All @@ -29,27 +30,27 @@ def __init__(self, filename, loc, use_column=True):
return 28

def __str__(self):
return '%s:%s: %s' % (self.filename, self.lineno, self.message % self.message_args)
return f"{self.filename}:{self.lineno}: {self.message % self.message_args}"


class UnusedImport(Message):
message = 'W402 %r imported but unused'
message = "W402 %r imported but unused"

def __init__(self, filename, lineno, name):
Message.__init__(self, filename, lineno)
self.message_args = (name,)


class RedefinedWhileUnused(Message):
message = 'W801 redefinition of unused %r from line %r'
message = "W801 redefinition of unused %r from line %r"

def __init__(self, filename, lineno, name, orig_lineno):
Message.__init__(self, filename, lineno)
self.message_args = (name, orig_lineno)


class ImportShadowedByLoopVar(Message):
message = 'W403 import %r from line %r shadowed by loop variable'
message = "W403 import %r from line %r shadowed by loop variable"

def __init__(self, filename, lineno, name, orig_lineno):
Message.__init__(self, filename, lineno)
Expand All @@ -65,48 +66,50 @@ def __init__(self, filename, lineno, modname):


class UndefinedName(Message):
message = 'W802 undefined name %r'
message = "W802 undefined name %r"

def __init__(self, filename, lineno, name):
Message.__init__(self, filename, lineno)
self.message_args = (name,)


class UndefinedExport(Message):
message = 'W803 undefined name %r in __all__'
message = "W803 undefined name %r in __all__"

def __init__(self, filename, lineno, name):
Message.__init__(self, filename, lineno)
self.message_args = (name,)


class UndefinedLocal(Message):
message = "W804 local variable %r (defined in enclosing scope on line " \
"%r) referenced before assignment"
message = (
"W804 local variable %r (defined in enclosing scope on line "
"%r) referenced before assignment"
)

def __init__(self, filename, lineno, name, orig_lineno):
Message.__init__(self, filename, lineno)
self.message_args = (name, orig_lineno)


class DuplicateArgument(Message):
message = 'W805 duplicate argument %r in function definition'
message = "W805 duplicate argument %r in function definition"

def __init__(self, filename, lineno, name):
Message.__init__(self, filename, lineno)
self.message_args = (name,)


class RedefinedFunction(Message):
message = 'W806 redefinition of function %r from line %r'
message = "W806 redefinition of function %r from line %r"

def __init__(self, filename, lineno, name, orig_lineno):
Message.__init__(self, filename, lineno)
self.message_args = (name, orig_lineno)


class LateFutureImport(Message):
message = 'W405 future import(s) %r after other statements'
message = "W405 future import(s) %r after other statements"

def __init__(self, filename, lineno, names):
Message.__init__(self, filename, lineno)
Expand All @@ -119,19 +122,19 @@ class UnusedVariable(Message):
used.
"""

message = 'W806 local variable %r is assigned to but never used'
message = "W806 local variable %r is assigned to but never used"

def __init__(self, filename, lineno, names):
Message.__init__(self, filename, lineno)
self.message_args = (names,)
error = 1 # noQa and some comments
error = 1 # noQa and some comments
another = 42


class BadTyping(Message):
"""Test the MyPy linting."""

message = 'error: No return value expected'
message = "error: No return value expected"

def bad_method(self): # type: () -> None
"""Return type mismatch."""
Expand Down
8 changes: 6 additions & 2 deletions pylama/check_async.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,18 @@ def worker(params):


def check_async(
paths: List[str], code: str = None, options: Namespace = None, rootdir: Path = None
paths: List[str],
code: str = None,
options: Namespace = None,
rootdir: Path = None,
) -> List[Error]:
"""Check given paths asynchronously."""
with ProcessPoolExecutor(CPU_COUNT) as pool:
return [
err
for res in pool.map(
worker, [(path, code, options, rootdir) for path in paths]
worker,
[(path, code, options, rootdir) for path in paths],
)
for err in res
]
Expand Down
22 changes: 18 additions & 4 deletions pylama/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,14 @@

try:
from pylama import config_toml
CONFIG_FILES = ["pylama.ini", "pyproject.toml", "setup.cfg", "tox.ini", "pytest.ini"]

CONFIG_FILES = [
"pylama.ini",
"pyproject.toml",
"setup.cfg",
"tox.ini",
"pytest.ini",
]
except ImportError:
CONFIG_FILES = ["pylama.ini", "setup.cfg", "tox.ini", "pytest.ini"]

Expand Down Expand Up @@ -90,7 +97,9 @@ def setup_parser() -> ArgumentParser:
help="Paths to files or directories for code check.",
)
parser.add_argument(
"--version", action="version", version="%(prog)s " + __version__
"--version",
action="version",
version="%(prog)s " + __version__,
)
parser.add_argument("--verbose", "-v", action="store_true", help="Verbose mode.")
parser.add_argument(
Expand Down Expand Up @@ -175,7 +184,9 @@ def setup_parser() -> ArgumentParser:
)
parser.add_argument("--report", "-r", help="Send report to file [REPORT]")
parser.add_argument(
"--hook", action="store_true", help="Install Git (Mercurial) hook."
"--hook",
action="store_true",
help="Install Git (Mercurial) hook.",
)

for linter_type in LINTERS.values():
Expand All @@ -185,7 +196,10 @@ def setup_parser() -> ArgumentParser:


def parse_options( # noqa
args: List[str] = None, config: bool = True, rootdir: Path = CURDIR, **overrides
args: List[str] = None,
config: bool = True,
rootdir: Path = CURDIR,
**overrides,
) -> Namespace:
"""Parse options from command line and configuration files."""
# Parse args from command string
Expand Down
3 changes: 2 additions & 1 deletion pylama/context.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@

# Parse modeline
MODELINE_RE = re.compile(
r"^\s*#\s+(?:pylama:)\s*((?:[\w_]*=[^:\n\s]+:?)+)", re.I | re.M
r"^\s*#\s+(?:pylama:)\s*((?:[\w_]*=[^:\n\s]+:?)+)",
re.I | re.M,
).search

SKIP_PATTERN = re.compile(r"# *noqa\b", re.I).search
Expand Down
14 changes: 11 additions & 3 deletions pylama/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,10 @@


def run(
path: str, code: str = None, rootdir: Path = CURDIR, options: Namespace = None
path: str,
code: str = None,
rootdir: Path = CURDIR,
options: Namespace = None,
) -> List[Error]:
"""Run code checkers with the given params.

Expand All @@ -36,7 +39,9 @@ def run(
linter.run_check(ctx)
else:
for err_info in linter.run(
ctx.temp_filename, code=ctx.source, params=ctx.get_params(lname)
ctx.temp_filename,
code=ctx.source,
params=ctx.get_params(lname),
):
ctx.push(source=lname, **err_info)

Expand All @@ -48,7 +53,10 @@ def run(
sorter = default_sorter
if options and options.sort:
sort = options.sort
sorter = lambda err: (sort.get(err.etype, 999), err.lnum) # pylint: disable=C3001
sorter = lambda err: (
sort.get(err.etype, 999),
err.lnum,
) # pylint: disable=C3001

return sorted(errors, key=sorter)

Expand Down
2 changes: 1 addition & 1 deletion pylama/hook.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ def install_git(path):

if __name__ == '__main__':
sys.exit(git_hook())
"""
""",
)
chmod(hook, 484)

Expand Down