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

Fix linter output parsing on Windows #378

Merged
merged 8 commits into from
Sep 4, 2022
Merged

Conversation

akaihola
Copy link
Owner

@akaihola akaihola commented Aug 27, 2022

Fixes #374.

  • Add test case with full paths to .py files
  • Observe test results on Windows runners
  • Create a fix
  • Add test case with a full path to a non-Python file
  • Fix crash on linter messages for non-Python files
    • either always show such messages, or never show them (design decision needed)
  • Add test case with a full path to a Python file outside the common root of paths given on the command line
  • Fix crash on linter messages for files outside the common root
    • either always show such messages, or never show them (design decision needed)
  • Update change log

@akaihola akaihola added the bug Something isn't working label Aug 27, 2022
@akaihola akaihola added this to the 1.5.1 milestone Aug 27, 2022
@akaihola akaihola self-assigned this Aug 27, 2022
@akaihola akaihola added this to In progress in Akaihola's Open source work via automation Aug 27, 2022
@akaihola
Copy link
Owner Author

@deadkex I started by creating a related test case. Let's see how it behaves on the Windows test runner.

Would you be willing to do a code review once I get a fix done? Could I add you as a contributor to this repository so I can assign the review to you?

@deadkex
Copy link
Collaborator

deadkex commented Aug 27, 2022

Would you be willing to do a code review once I get a fix done? Could I add you as a contributor to this repository so I can assign the review to you?

Sure

@akaihola
Copy link
Owner Author

akaihola commented Aug 27, 2022

Update: Fixed in #379.

In some of the runners we get this error:

ValueError:
'/home/runner/work/darker/darker/.pylintrc'
is not in the subpath of
'/home/runner/work/darker/darker/src/darker/tests'
OR one path is relative and the other is absolute.

Based on the traceback, what is going on is similar to this snippet from a Python shell:

>>> path_from_cwd = Path('/home/runner/work/darker/darker/.pylintrc')
>>> root = Path('/home/runner/work/darker/darker/src/darker/tests')
>>> path_from_cwd.relative_to(root)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "lib/python3.10/pathlib.py", line 816, in relative_to
    raise ValueError("{!r} is not in the subpath of {!r}"
ValueError: '/home/runner/work/darker/darker/.pylintrc' is not in the subpath of '/home/runner/work/darker/darker/src/darker/tests' OR one path is relative and the other is absolute.

So _parse_linter_line() is called with a line that begins with a path pointing to /home/runner/work/darker/darker/.pylintrc. We can't know if it's a relative or absolute path since the function turns it into an absolute one before the error.

The error is from a pylint --darker --flake8 --isort call after patching pyproject.toml [tool.darker] section to contain lint = ["pylint", "mypy"]. So apparently either pylint or mypy outputs a line starting with a reference to .pylintrc.

@akaihola
Copy link
Owner Author

akaihola commented Aug 27, 2022

Update: Fixed in #379.

In the failing builds we have pylint==2.15.0 and mypy==0.971. I'll try with those locally.

@akaihola
Copy link
Owner Author

akaihola commented Aug 27, 2022

Update: Fixed in #379.

I reproduced the ValueError locally. With some verbosity added, it turns out this invocation causes the error (-vv added here for verbosity, and with linter debugging from #373 cherry-picked):

$ python3.10 -m darker --check --diff --vvvv /home/akaihola/darker/src/darker/tests/test_linting.py
DEBUG:darker.linting:[/home/akaihola/darker]$ pylint /home/akaihola/darker/src/darker/tests/test_linting.py
DEBUG:darker.linting:Unparsable linter output: ************* Module /home/akaihola/darker/.pylintrc
Traceback (most recent call last):
  File "lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "darker/__main__.py", line 495, in <module>
    RETVAL = main_with_error_handling()
  File "darker/__main__.py", line 487, in main_with_error_handling
    return main()
  File "darker/__main__.py", line 469, in main
    linter_failures_on_modified_lines = run_linters(
  File "darker/linting.py", line 175, in run_linters
    return sum(
  File "darker/linting.py", line 176, in <genexpr>
    run_linter(linter_cmdline, root, paths, revrange, use_color)
  File "darker/linting.py", line 127, in run_linter
    ) = _parse_linter_line(line, root)
  File "darker/linting.py", line 57, in _parse_linter_line
    path_in_repo = path_from_cwd.relative_to(root)
  File "lib/python3.10/pathlib.py", line 816, in relative_to
    raise ValueError("{!r} is not in the subpath of {!r}"
ValueError: '/home/akaihola/darker/.pylintrc' is not in the subpath of '/home/akaihola/darker/src/darker/tests' OR one path is relative and the other is absolute.

@akaihola
Copy link
Owner Author

akaihola commented Aug 27, 2022

Update: Fixed in #379.

And indeed:

$ pylint /home/akaihola/darker/src/darker/tests/test_linting.py
************* Module /home/akaihola/darker/.pylintrc
.pylintrc:1:0: R0022: Useless option value for '--disable', 'bad-continuation' was removed from pylint, see https://github.com/PyCQA/pylint/pull/3571. (useless-option-value)

--------------------------------------------------------------------
Your code has been rated at 10.00/10 (previous run: 10.00/10, +0.00)

So the Unparsable linter output message is for the first line (************* Module /home/akaihola/darker/.pylintrc), and that's expected and doesn't cause any problems.

But the second line points to the Pylint configuration file! This is where Darker gets very confused, because that file is outside the common root of files given on the command line. We probably need to skip all linter output lines referencing such files.

@akaihola
Copy link
Owner Author

At least in the added test case, I'm betting the problem is the colon after the drive letter in

'C:\\Users\\runneradmin\\AppData\\Local\\Temp\\pytest-of-runneradmin\\pytest-0\\test_parse_linter_line__git_ro0\\mod.py:42:'

@akaihola
Copy link
Owner Author

@deadkex I believe the issue is now fixed. Could you try this branch with your original setup on Windows?

@deadkex
Copy link
Collaborator

deadkex commented Aug 27, 2022

Looks good on my personal pc/project so far.
Pre-commit also works fine now.
Will test on the original project next week, thanks for the work so far!

D:\Dokumente\Programming\python\_Bots\BDBot>darker -L flake8 BDBot.py

D:\Dokumente\Programming\python\_Bots\BDBot\BDBot.py:161:1: E722 do not use bare 'except'

D:\Dokumente\Programming\python\_Bots\BDBot\BDBot.py:172:80: E501 line too long (135 > 120 characters)

@akaihola akaihola requested a review from deadkex August 28, 2022 07:34
src/darker/linting.py Outdated Show resolved Hide resolved
@akaihola
Copy link
Owner Author

Will test on the original project next week

Great, let's wait until then before merging.

@deadkex
Copy link
Collaborator

deadkex commented Aug 29, 2022

Okay so i noticed that the src and lint parameter might not get parsed/put together correctly when not specifying a linter in the console:
Edit: i have src = [ "./" ] in my config file
python3 -m darker -vv -L test.py

[...]
# Configuration options which differ from defaults:

[tool.darker]
src = [
    "./",
]
revision = ":PRE-COMMIT:"
check = true
lint = [
    "    pylint\n        --rcfile=tools/pylint.conf\n    ",
    "    flake8\n        --ignore=E501,F841\n        --max-line-length=80\n    ",
    "test.py",
]
log_level = "DEBUG"
color = true

[...]
FileNotFoundError: [WinError 206] Der Dateiname oder die Erweiterung ist zu lang

python3 -m darker -vv -L flake8 test.py
(this also takes my config so flake8 is double)

[...]
# Configuration options which differ from defaults:

[tool.darker]
src = [
    "test.py",
]
revision = ":PRE-COMMIT:"
check = true
lint = [
    "    pylint\n        --rcfile=tools/pylint.conf\n    ",
    "    flake8\n        --ignore=E501,F841\n        --max-line-length=80\n    ",
    "flake8",
]
log_level = "DEBUG"
color = true

[...]
Correct Linter output (also flake8)

@deadkex
Copy link
Collaborator

deadkex commented Aug 29, 2022

When using color = true the output is missing spaces:

test.py:155:5:E722donotusebare'except'
test.py:167:5:E303toomanyblanklines(5)

@deadkex
Copy link
Collaborator

deadkex commented Aug 29, 2022

Edit:
I found a workaround but not why - i noticed that when running pylint through pre-commit, it doesn't care about changes in my pylint.conf file. So i renamed it to pylint1.conf and voila pre-commit uses the new file and darker works...

Edit2:
I think i found why. So we used to have the config file in C:\Python38\Lib\site-packages\gitlint\configs\pylint.conf and that seems to be the file that gets used even tho i specified another path.

Original comment:
In the work project,

  • pre-commit -> darker with flake8 -> now shows its output correctly

  • pre-commit -> darker with lint = [ "pylint --rcfile=tools/pylint.conf" ] and log_level = "DEBUG"

DEBUG:darker.git:[C:\Users\deadkex\folder\project]$ git rev-parse --is-inside-work-tree
DEBUG:darker.git:[C:\Users\deadkex\folder\project]$ git diff --name-only --relative HEAD -- test.py
DEBUG:darker.git:[C:\Users\deadkex\folder\project]$ git ls-files --others --exclude-standard -- test.py
DEBUG:darker.__main__:Read 223 lines from edited file C:\Users\deadkex\folder\project\test.py
DEBUG:darker.__main__:Black reformat resulted in 243 lines
DEBUG:darker.diff:Diff between edited and reformatted has 41 opcodes
DEBUG:darker.git:[C:\Users\deadkex\folder\project]$ git show HEAD:./test.py
DEBUG:darker.git:[C:\Users\deadkex\folder\project]$ git log -1 --format=%ct HEAD -- test.py
DEBUG:darker.diff:Diff between edited and reformatted has 7 opcodes
[...]
DEBUG:darker.__main__:Verifying that the 223 original edited lines and 221 reformatted lines parse into an identical abstract syntax tree
DEBUG:darker.linting:[C:\Users\deadkex\folder\project]$ pylint --rcfile=tools/pylint.conf C:\Users\deadkex\folder\project\test.py
DEBUG:darker.linting:Unparsable linter output: ************* Module tools\pylint.conf
DEBUG:darker.git:[C:\Users\deadkex\folder\project]$ git show HEAD:./tools/pylint.conf
DEBUG:darker.git:[C:\Users\deadkex\folder\project]$ git log -1 --format=%ct HEAD -- tools/pylint.conf
DEBUG:darker.diff:Diff between edited and reformatted has 1 opcode
Traceback (most recent call last):
  File "c:\python38\lib\site-packages\pylint\lint\pylinter.py", line 769, in _lint_file
    check_astroid_module(module)
  File "c:\python38\lib\site-packages\pylint\lint\pylinter.py", line 1029, in check_astroid_module
    retval = self._check_astroid_module(
  File "c:\python38\lib\site-packages\pylint\lint\pylinter.py", line 1075, in _check_astroid_module
    raw_checker.process_module(node)
  File "c:\python38\lib\site-packages\pylint\checkers\unicode.py", line 522, in process_module
    self._check_codec(codec, codec_line)
  File "c:\python38\lib\site-packages\pylint\checkers\unicode.py", line 466, in _check_codec
    self.add_message(
  File "c:\python38\lib\site-packages\pylint\checkers\base_checker.py", line 164, in add_message
    self.linter.add_message(
  File "c:\python38\lib\site-packages\pylint\lint\pylinter.py", line 1284, in add_message
    self._add_one_message(
  File "c:\python38\lib\site-packages\pylint\lint\pylinter.py", line 1242, in _add_one_message
    self.reporter.handle_message(
  File "c:\python38\lib\site-packages\pylint\reporters\text.py", line 300, in handle_message
    self.writeln(modsep)
  File "c:\python38\lib\site-packages\pylint\reporters\base_reporter.py", line 62, in writeln
    print(string, file=self.out)
  File "c:\python38\lib\site-packages\colorama\ansitowin32.py", line 170, in write
    self.write_and_convert(text)
  File "c:\python38\lib\site-packages\colorama\ansitowin32.py", line 195, in write_and_convert
    self.write_plain_text(text, cursor, start)
  File "c:\python38\lib\site-packages\colorama\ansitowin32.py", line 204, in write_plain_text
    self.wrapped.flush()
OSError: [Errno 22] Invalid argument
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "c:\python38\lib\site-packages\pylint\lint\pylinter.py", line 734, in _lint_files
    self._lint_file(fileitem, module, check_astroid_module)
  File "c:\python38\lib\site-packages\pylint\lint\pylinter.py", line 771, in _lint_file
    raise astroid.AstroidError from e
astroid.exceptions.AstroidError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "c:\python38\lib\runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "c:\python38\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Python38\Scripts\pylint.exe\__main__.py", line 7, in <module>
  File "c:\python38\lib\site-packages\pylint\__init__.py", line 35, in run_pylint
    PylintRun(argv or sys.argv[1:])
  File "c:\python38\lib\site-packages\pylint\lint\run.py", line 207, in __init__
    linter.check(args)
  File "c:\python38\lib\site-packages\pylint\lint\pylinter.py", line 678, in check
    self._lint_files(ast_per_fileitem, check_astroid_module)
  File "c:\python38\lib\site-packages\pylint\lint\pylinter.py", line 741, in _lint_files
    self.add_message(
  File "c:\python38\lib\site-packages\pylint\lint\pylinter.py", line 1284, in add_message
    self._add_one_message(
  File "c:\python38\lib\site-packages\pylint\lint\pylinter.py", line 1242, in _add_one_message
    self.reporter.handle_message(
  File "c:\python38\lib\site-packages\pylint\reporters\text.py", line 300, in handle_message
    self.writeln(modsep)
  File "c:\python38\lib\site-packages\pylint\reporters\base_reporter.py", line 62, in writeln
    print(string, file=self.out)
  File "c:\python38\lib\site-packages\colorama\ansitowin32.py", line 170, in write
    self.write_and_convert(text)
  File "c:\python38\lib\site-packages\colorama\ansitowin32.py", line 195, in write_and_convert
    self.write_plain_text(text, cursor, start)
  File "c:\python38\lib\site-packages\colorama\ansitowin32.py", line 204, in write_plain_text
    self.wrapped.flush()
OSError: [Errno 22] Invalid argument
Exception ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='cp1252'>
OSError: [Errno 22] Invalid argument
Traceback (most recent call last):
  File "c:\python38\lib\runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "c:\python38\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Python38\Scripts\darker.EXE\__main__.py", line 7, in <module>
  File "c:\python38\lib\site-packages\darker\__main__.py", line 487, in main_with_error_handling
    return main()
  File "c:\python38\lib\site-packages\darker\__main__.py", line 469, in main
    linter_failures_on_modified_lines = run_linters(
  File "c:\python38\lib\site-packages\darker\linting.py", line 229, in run_linters
    return sum(
  File "c:\python38\lib\site-packages\darker\linting.py", line 230, in <genexpr>
    run_linter(linter_cmdline, root, paths, revrange, use_color)
  File "c:\python38\lib\site-packages\darker\linting.py", line 189, in run_linter
    edited_linenums = edited_linenums_differ.compare_revisions(
  File "c:\python38\lib\site-packages\darker\git.py", line 462, in compare_revisions
    return _compare_revisions(
  File "c:\python38\lib\site-packages\darker\git.py", line 431, in _compare_revisions
    linenums = _revision_vs_lines(root, path_in_repo, rev1, content, context_lines)
  File "c:\python38\lib\site-packages\darker\git.py", line 404, in _revision_vs_lines
    multiline_string_ranges = get_multiline_string_ranges(content)
  File "c:\python38\lib\site-packages\darker\multiline_strings.py", line 20, in get_multiline_string_ranges
    return [
  File "c:\python38\lib\site-packages\darker\multiline_strings.py", line 20, in <listcomp>
    return [
  File "c:\python38\lib\tokenize.py", line 521, in _tokenize
    raise TokenError("EOF in multi-line statement", (lnum, 0))
tokenize.TokenError: ('EOF in multi-line statement', (283, 0))
# Effective configuration:
[tool.darker]
src = [
    "test.py",
]
revision = ":PRE-COMMIT:"
diff = false
stdout = false
check = true
isort = false
lint = [
    "pylint --rcfile=tools/pylint.conf",
]
log_level = "DEBUG"
workers = 1
# Configuration options which differ from defaults:
[tool.darker]
src = [
    "test.py",
]
revision = ":PRE-COMMIT:"
check = true
lint = [
    "pylint --rcfile=tools/pylint.conf",
]
log_level = "DEBUG"

@akaihola
Copy link
Owner Author

akaihola commented Aug 29, 2022

python3 -m darker -vv -L test.py

@deadkex this is clearly wrong. The -L/--lint argument needs to always be followed by the linter command, e.g. -L pylint or --lint flake8. If lint = [...] is specified in pyproject.toml, those linters will always be run, even if there's no -L or --lint on the command line.

@akaihola
Copy link
Owner Author

akaihola commented Aug 29, 2022

@deadkex also here something's odd:

lint = [
    "    pylint\n        --rcfile=tools/pylint.conf\n    ",
    "    flake8\n        --ignore=E501,F841\n        --max-line-length=80\n    ",
    "test.py",
]

Since your src = "./", Darker will call

  • pylint --rcfile=tools/pylint.conf ./path/file1.py ./path/file2.py
  • flake8 --ignore=E501,F841 --max-line-length=80 "test.py" ./path/file1.py ./path/file2.py
  • flake8 --ignore=E501,F841 --max-line-length=80 ./path/file1.py ./path/file2.py
  • test.py ./path/file1.py ./path/file2.py

(assuming that your source tree contains the two Python source code files path/file1.py and path/file2.py)

You shouldn't include any file paths (like test.py above) on the linter command line options. Darker will provide those.

Edit: Ah, the config dump was probably output from darker -vv, and I missed the comma between flake8 and test.py. So as shown in my previous comment, test.py ended up in the list since that's exactly what you asked it to do on the command line. The option -L test.py means "Darker, please run all the Python files through a linter by running the test.py command".

@akaihola
Copy link
Owner Author

python3 -m darker -vv -L flake8 test.py
(this also takes my config so flake8 is double)

Yes. Just leave out -L flake8 from the command line and let Darker pick it up from your configuration file.

@akaihola
Copy link
Owner Author

  File "c:\python38\lib\site-packages\darker\multiline_strings.py", line 20, in <listcomp>
    return [
  File "c:\python38\lib\tokenize.py", line 521, in _tokenize
    raise TokenError("EOF in multi-line statement", (lnum, 0))

tokenize() in multiline_strings.py tries to tokenize a whole Python source code and find where multi-line strings (the triple-quoted ones) are in the file. Looks like there's an invalid Python file somewhere there.

DEBUG:darker.linting:[C:\Users\deadkex\folder\project]$ pylint --rcfile=tools/pylint.conf C:\Users\deadkex\folder\project\test.py
DEBUG:darker.linting:Unparsable linter output: ************* Module tools\pylint.conf
DEBUG:darker.git:[C:\Users\deadkex\folder\project]$ git show HEAD:./tools/pylint.conf
DEBUG:darker.git:[C:\Users\deadkex\folder\project]$ git log -1 --format=%ct HEAD -- tools/pylint.conf

And indeed, Darker is trying to parse tools\pylint.conf as a Python file! And it's picking up that path since it appears in output from pylint.

Could you run pylint --rcfile=tools/pylint.conf C:\Users\deadkex\folder\project\test.py manually in C:\Users\deadkex\folder\project and see if there's a line which starts with whitespace and tools\pylint.conf: somewhere?

You know, if I'm not mistaken, this is exactly the kind of edge case which yesterday's commit "Make linter output parsing stricter" should prevent. Did you pull the branch before doing these tests? If not, could you do that and see if it helps?

@deadkex
Copy link
Collaborator

deadkex commented Aug 30, 2022

test.py ended up in the list since that's exactly what you asked it to do on the command line

Yep, my bad i was overthinking it.

@deadkex
Copy link
Collaborator

deadkex commented Aug 30, 2022

Did you pull the branch before doing these tests?

Yes

  • using the new updated pylintrc.conf
C:\Users\deadkex\Documents\project>pylint --rcfile=tools/pylintrc.conf C:\Users\deadkex\Documents\project\test.py
************* Module test
test.py:2:0: C2503: PEP8 recommends UTF-8 as encoding for Python files (bad-file-encoding)
test.py:161:0: C0301: Line too long (96/80) (line-too-long)
[...]
test.py:160:4: W0612: Unused variable 'AaAcydaAAca' (unused-variable)

Report
[...]
  • now using the old pylint.conf file which gets used when i put tools/pylint.conf in pyproject.toml even tho that's the path of the file in the project -> thats why i renamed it so it takes the new file tools/pylintrc.conf
C:\Users\deadkex\Documents\project>pylint --rcfile=C:/Python38/Lib/site-packages/gitlint/configs/pylint.conf C:\Users\deadkex\Documents\project\test.py
************* Module C:\Python38\Lib\site-packages\gitlint\configs\pylint.conf
C:\Python38\Lib\site-packages\gitlint\configs\pylint.conf:1:0: E0015: Unrecognized option found: profile, files-output, comment, zope, no-space-check, required-attributes, bad-functions, ignore-iface-methods (unrecognized-option)
C:\Python38\Lib\site-packages\gitlint\configs\pylint.conf:1:0: W0012: Unknown option value for '--disable', expected a valid pylint message and got 'W0403' (unknown-option-value)
************* Module test
test.py:2:0: C2503: PEP8 recommends UTF-8 as encoding for Python files (bad-file-encoding)
test.py:161:0: C0301: Line too long (96/80) (line-too-long)
[...]
test.py:160:4: W0612: Unused variable 'AaAcydaAAca' (unused-variable)

Report
[...]

And let me guess darker doesn't like that pylint outputs config errors as normal linting errors...
-> Indeed when adding an invalid option in the new pylintrc.conf that file now also fails when running via pre-commit

@deadkex
Copy link
Collaborator

deadkex commented Aug 30, 2022

I encountered another thing.
When running via pre-commit, even if there is nothing to report from linters, darker seems to provide a 1 as exit code so pre-commit fails.

[WARNING] Unstaged files detected.
[INFO] Stashing unstaged files to [...]
darker...................................................................Failed
- hook id: darker
- exit code: 1
[INFO] Restored changes from [...]

Edit: I guess darker just doesn't return anything if there are no problems?

@akaihola
Copy link
Owner Author

akaihola commented Sep 1, 2022

C:\Python38\Lib\site-packages\gitlint\configs\pylint.conf:1:0: E0015: Unrecognized option found: profile, files-output, comment, zope, no-space-check, required-attributes, bad-functions, ignore-iface-methods (unrecognized-option)
C:\Python38\Lib\site-packages\gitlint\configs\pylint.conf:1:0: W0012: Unknown option value for '--disable', expected a valid pylint message and got 'W0403' (unknown-option-value)

Alright, so we really need to filter out non-Python file paths as well as paths outside the common root of file paths requested to be checked? This would follow the principle of "only showing messages which fall on modified lines of Python files".

Or,, does it make more sense not not filter them out? In this case the principle would be to "filter out messages which fall on unmodified lines of Python files".

Anyway, it shouldn't crash, so I'll add this to the checklist in the description of this PR.

@deadkex
Copy link
Collaborator

deadkex commented Sep 1, 2022

Hmm if those errors don't get displayed the user wouldn't know that there's something wrong with their config. I also only found out because i ran pylint with its config directly via pre-commit and it was shown there. I guess running pylint directly would also work but i don't know.

@akaihola
Copy link
Owner Author

akaihola commented Sep 1, 2022

@deadkex, the linter-output-full-path branch should now ignore Linter messages about non-Python files and files outside the common root of paths on the command line. It does log a warning about both of those.

Could you see how this affects your results?

@deadkex
Copy link
Collaborator

deadkex commented Sep 1, 2022

Config file path inside project
grafik
Config file path outside project
grafik

@akaihola
Copy link
Owner Author

akaihola commented Sep 1, 2022

So @deadkex would you consider all the issues you've raised as solved by this PR?
And the code appropriate and reviewed?

@akaihola
Copy link
Owner Author

akaihola commented Sep 2, 2022

When running via pre-commit, even if there is nothing to report from linters, darker seems to provide a 1 as exit code so pre-commit fails.

@deadkex, I created the separate issue #390 for this.

@akaihola akaihola merged commit 450271d into master Sep 4, 2022
Akaihola's Open source work automation moved this from In progress to Done Sep 4, 2022
@akaihola akaihola deleted the linter-output-full-path branch September 4, 2022 19:09
@deadkex
Copy link
Collaborator

deadkex commented Sep 12, 2022

So @deadkex would you consider all the issues you've raised as solved by this PR? And the code appropriate and reviewed?

@akaihola Hey, yes to both questions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
Development

Successfully merging this pull request may close these issues.

No output from flake8 on Windows
2 participants