Open edvard-munch opened 2 years ago
The -
indicates that flake8 should read from stdin.
The last line that throws shows flake8_mock.py
as the culprit. Probably remove that flake8 plugin. Which flake8 do you use here?
@kaste There is A LOT of flake8 plugins involved. I've just installed all of the requirements from this project - https://github.com/tough-dev-school/education-backend/blob/master/dev-requirements.txt
I'll try to delete the flake8 mock. Not sure if this is a right decision in the long term. If this plugin is in project's requirements it probably should be used.
With flake8 mock uninstalled the error is now in flake8 pytest
SublimeLinter: linter.py:1127 flake8: Checking lint mode 'background' vs lint reason 'on_modified'. Ok.
SublimeLinter: sublime_linter.py:345 Delay linting 'linter.py' for 0.0s
SublimeLinter: linter.py:1127 flake8: Checking lint mode 'background' vs lint reason 'on_save'. Ok.
SublimeLinter: #31 linter.py:1144 flake8: linting 'linter.py'
SublimeLinter: #31 linter.py:922 flake8: wanted executable is '/home/edvard_munch/programming/python/education-backend-master/venv/bin/flake8'
SublimeLinter: #31 linter.py:1704 Running ...
/home/edvard_munch/.config/sublime-text (working dir)
$ cat Packages/SublimeLinter-flake8/linter.py | /home/edvard_munch/programming/python/education-backend-master/venv/bin/flake8 --format default -
reloading python 3.3 plugin SublimeLinter-flake8.linter
SublimeLinter: sublime_linter.py:345 Delay linting 'linter.py' for 0.0s
SublimeLinter: sublime_linter.py:345 Delay linting 'linter.py' for 0.0s
SublimeLinter: sublime_linter.py:345 Delay linting 'db.py' for 0.0s
SublimeLinter: linter.py:648 flake8 linter reloaded
SublimeLinter: linter.py:1111 flake8: Unknown reason 'relint_views' is okay.
SublimeLinter: linter.py:1111 flake8: Unknown reason 'relint_views' is okay.
SublimeLinter: linter.py:1111 flake8: Unknown reason 'relint_views' is okay.
SublimeLinter: sublime_linter.py:396 Friendly terminate: <pid 19488>
SublimeLinter: sublime_linter.py:593 Linting 'linter.py' took 0.11s
SublimeLinter: #33 linter.py:1144 flake8: linting 'linter.py'
SublimeLinter: #32 linter.py:1144 flake8: linting 'linter.py'
SublimeLinter: #33 linter.py:922 flake8: wanted executable is '/home/edvard_munch/programming/python/education-backend-master/venv/bin/flake8'
SublimeLinter: #32 linter.py:922 flake8: wanted executable is '/home/edvard_munch/programming/python/education-backend-master/venv/bin/flake8'
SublimeLinter: #34 linter.py:1144 flake8: linting 'db.py'
SublimeLinter: #34 linter.py:922 flake8: wanted executable is '/home/edvard_munch/programming/python/education-backend-master/venv/bin/flake8'
SublimeLinter: #32 linter.py:1704 Running ...
/home/edvard_munch/.config/sublime-text (working dir)
$ cat Packages/SublimeLinter-flake8/linter.py | /home/edvard_munch/programming/python/education-backend-master/venv/bin/flake8 --format default -
SublimeLinter: #33 linter.py:1704 Running ...
/home/edvard_munch/.config/sublime-text (working dir)
$ cat Packages/SublimeLinter/lint/linter.py | /home/edvard_munch/programming/python/education-backend-master/venv/bin/flake8 --format default -
SublimeLinter: #34 linter.py:1704 Running ...
/home/edvard_munch/programming/python/education-backend-master (working dir)
$ cat src/app/conf/db.py | /home/edvard_munch/programming/python/education-backend-master/venv/bin/flake8 --format default -
SublimeLinter: #32 linter.py:62 ERROR: Traceback (most recent call last):
File "/home/edvard_munch/programming/python/education-backend-master/venv/bin/flake8", line 8, in <module>
sys.exit(main())
File "/home/edvard_munch/programming/python/education-backend-master/venv/lib/python3.10/site-packages/flake8/main/cli.py", line 22, in main
app.run(argv)
File "/home/edvard_munch/programming/python/education-backend-master/venv/lib/python3.10/site-packages/flake8/main/application.py", line 363, in run
self._run(argv)
File "/home/edvard_munch/programming/python/education-backend-master/venv/lib/python3.10/site-packages/flake8/main/application.py", line 351, in _run
self.run_checks()
File "/home/edvard_munch/programming/python/education-backend-master/venv/lib/python3.10/site-packages/flake8/main/application.py", line 264, in run_checks
self.file_checker_manager.run()
File "/home/edvard_munch/programming/python/education-backend-master/venv/lib/python3.10/site-packages/flake8/checker.py", line 323, in run
self.run_serial()
File "/home/edvard_munch/programming/python/education-backend-master/venv/lib/python3.10/site-packages/flake8/checker.py", line 307, in run_serial
checker.run_checks()
File "/home/edvard_munch/programming/python/education-backend-master/venv/lib/python3.10/site-packages/flake8/checker.py", line 589, in run_checks
self.run_ast_checks()
File "/home/edvard_munch/programming/python/education-backend-master/venv/lib/python3.10/site-packages/flake8/checker.py", line 494, in run_ast_checks
for (line_number, offset, text, _) in runner:
File "/home/edvard_munch/programming/python/education-backend-master/venv/lib/python3.10/site-packages/flake8_pytest.py", line 30, in run
noqa = _get_noqa_lines(self.filename)
File "/home/edvard_munch/programming/python/education-backend-master/venv/lib/python3.10/site-packages/flake8_pytest.py", line 51, in _get_noqa_lines
tokens = tokenize.generate_tokens(lambda L=iter(code): next(L))
ValueError: I/O operation on closed file.
SublimeLinter: #32 linter.py:1225 flake8: no output
SublimeLinter: sublime_linter.py:593 Linting 'linter.py' took 0.49s
Very unfortunate. These plugins and dependencies are pretty outdated as it seems. They don't support stdin input which is a normal feature of flake8 we require here as otherwise we can't run while you're typing in the editor. Actually your teachers should update the educational project; they pin flake8 to 3.x although we're on 5.x already and imo all plugins to flake8 should be selected so they support all common core feature of flake8.
Unfortunately it is not pluggable here to run on stdin or only on save where we could use the normal file names as on the CLI. The safer, defensive approach from our side would be to support that and maybe automatically switch operation modes here. (Actually #106 would do this if you switch the lint_mode
to on_save
as well.)
Honestly, it is not clear why an educational, beginner project should need that many dependencies IMO. dependencies need to get managed which just adds more work to the teachers.
TLDR; we require from flake8 more feature than we need as a bare minimum. they ("you" or your teachers) pin to flake8 plugins not fully supporting the flake8 standard feature set.
@kaste oh, thanks. It's not really an educational project. Name is kinda misleading. It's a project for an educational web-site where you can buy courses etc.
It's started working perfectly, when I deleted flake8-pytest
Flake8 works great when using it manually in command line. Doesn't work in Sublime. It seems like this command is wrong "cat src/app/conf/db.py | /home/edvard_munch/programming/python/education-backend-master/venv/bin/flake8 --format default -"
Ubuntu 22.04 Sublime Text Build 4126 Python 3.10.4 Venv
Console output:
Settings:
I've noticed the line
cmd = ('flake8', '--format', 'default', '${args}', '-')
. Didn't dig deep enough to know why '-' is needed here. When I've tried to remove '-', thinking it will make sublime linter construct the command without extra '-' being added. No, it's not not that simple. Though it looks like the flake8 command is ok in this case.