Skip to content

Commit 910b222

Browse files
Add support for frosted, drop support for pyflakes
frosted is a fork of pyflakes which is better maintained and supports python 3.4. It is also easier to integrate in an IDE, making the code cleaner
1 parent 182c3ef commit 910b222

6 files changed

Lines changed: 23 additions & 33 deletions

File tree

README.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ Features:
2525
* code completion provider (using `Jedi`_)
2626
* code folding mode
2727
* auto indent mode
28-
* on the fly code checkers (PyFlakes, PEP8)
28+
* on the fly code checkers (frosted (fork of PyFlakes), PEP8)
2929
* a customisable python specific syntax highlighter
3030
* a pre-configured QPythonCodeEdit (with the corresponding Qt Designer plugin)
3131

@@ -42,7 +42,7 @@ pyqode.python depends on the following libraries:
4242
- pyqode.core
4343
- jedi
4444
- pep8
45-
- pyflakes
45+
- frosted
4646

4747
Installation
4848
------------

pyqode/python/editor.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
from pyqode.python.modes import CommentsMode
4343
from pyqode.python.modes import PEP8CheckerMode
4444
from pyqode.python.modes import PyAutoIndentMode
45-
from pyqode.python.modes import PyFlakesCheckerMode
45+
from pyqode.python.modes import FrostedCheckerMode
4646
from pyqode.python.modes import PyHighlighterMode
4747
from pyqode.python.modes import PyIndenterMode
4848
from pyqode.python.modes import DEFAULT_DARK_STYLES
@@ -119,7 +119,7 @@ def __init__(self, parent=None):
119119
self.installMode(PyHighlighterMode(self.document()))
120120
self.installMode(PyAutoCompleteMode())
121121
self.installMode(PyAutoIndentMode())
122-
self.installMode(PyFlakesCheckerMode())
122+
self.installMode(FrostedCheckerMode())
123123
self.installMode(PEP8CheckerMode())
124124
self.installMode(CalltipsMode())
125125
self.installMode(PyIndenterMode())

pyqode/python/modes/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
from pyqode.python.modes.pep8_checker import PEP8CheckerMode
3333
from pyqode.python.modes.autoindent import PyAutoIndentMode
3434
from pyqode.python.modes.indenter import PyIndenterMode
35-
from pyqode.python.modes.pyflakes_checker import PyFlakesCheckerMode
35+
from pyqode.python.modes.frosted_checker import FrostedCheckerMode
3636
from pyqode.python.modes.syntax_highlighter import PyHighlighterMode
3737
from pyqode.python.modes.syntax_highlighter import DEFAULT_DARK_STYLES
3838
from pyqode.python.modes.syntax_highlighter import DEFAULT_LIGHT_STYLES
@@ -41,6 +41,6 @@
4141

4242

4343
__all__ = ["PyAutoCompleteMode", "CalltipsMode", "PEP8CheckerMode",
44-
"GoToAssignmentsMode", "PyAutoIndentMode", "PyFlakesCheckerMode",
44+
"GoToAssignmentsMode", "PyAutoIndentMode", "FrostedCheckerMode",
4545
"PyIndenterMode", "CommentsMode", "PyHighlighterMode",
4646
"DEFAULT_DARK_STYLES", "DEFAULT_LIGHT_STYLES"]
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,16 @@
2727
This module contains the pyFlakes checker mode
2828
"""
2929
from pyqode.core.modes import CheckerMode
30-
from pyqode.python.workers import run_pyflakes
30+
from pyqode.python.workers import run_frosted
3131

3232

33-
class PyFlakesCheckerMode(CheckerMode):
33+
class FrostedCheckerMode(CheckerMode):
3434
"""
3535
This checker mode runs pyflakes on the fly to check your python syntax.
3636
"""
37-
DESCRIPTION = "Check python code using pyFlakes"
38-
IDENTIFIER = "pyFlakesCheckerMode"
37+
DESCRIPTION = "Check python code using frosted (pyFlakes)"
38+
IDENTIFIER = "frostedCheckerMode"
3939

4040
def __init__(self):
41-
super().__init__(run_pyflakes, delay=1200,
41+
super().__init__(run_frosted, delay=1200,
4242
clearOnRequest=False)

pyqode/python/workers.py

Lines changed: 11 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"""
22
Contains the worker classes/functions executed on the server side.
33
"""
4+
import os
45
from pyqode.core import logger
56
from pyqode.core.api.constants import CheckerMessages
67
from pyqode.python.code_completion import icon_from_typename
@@ -259,9 +260,10 @@ def run_pep8(request_data):
259260
return True, messages
260261

261262

262-
def run_pyflakes(request_data):
263+
def run_frosted(request_data):
263264
"""
264-
Worker that run a pyflakes code analysis on the current editor text
265+
Worker that run a frosted (the fork of pyflakes) code analysis on the
266+
current editor text.
265267
"""
266268
import _ast
267269
ret_val = []
@@ -284,29 +286,17 @@ def run_pyflakes(request_data):
284286
# file declared was unknown.s
285287
logger.warning("%s: problem decoding source" % path)
286288
else:
287-
ret_val.append((msg, CheckerMessages.WARNING, lineno))
289+
ret_val.append((msg, CheckerMessages.ERROR, lineno))
288290
else:
289291
# Okay, it's syntactically valid. Now check it.
290-
from pyflakes import checker, messages
291-
msg_types = {messages.UnusedImport: CheckerMessages.WARNING,
292-
messages.RedefinedWhileUnused: CheckerMessages.WARNING,
293-
messages.RedefinedInListComp: CheckerMessages.WARNING,
294-
messages.ImportShadowedByLoopVar: CheckerMessages.WARNING,
295-
messages.ImportStarUsed: CheckerMessages.WARNING,
296-
messages.UndefinedName: CheckerMessages.ERROR,
297-
messages.DoctestSyntaxError: CheckerMessages.ERROR,
298-
messages.UndefinedExport: CheckerMessages.ERROR,
299-
messages.UndefinedLocal: CheckerMessages.ERROR,
300-
messages.DuplicateArgument: CheckerMessages.WARNING,
301-
messages.Redefined: CheckerMessages.WARNING,
302-
messages.LateFutureImport: CheckerMessages.WARNING,
303-
messages.UnusedVariable: CheckerMessages.WARNING}
304-
w = checker.Checker(tree, path)
292+
from frosted import checker
293+
w = checker.Checker(tree, os.path.split(path)[1])
305294
w.messages.sort(key=lambda m: m.lineno)
306295
for warning in w.messages:
307-
msg = warning.message % warning.message_args
296+
msg = "%s: %s" % (warning.type.error_code, warning.message)
308297
line = warning.lineno
309-
status = msg_types[type(warning)]
298+
status = (CheckerMessages.WARNING
299+
if warning.type.error_code.startswith('W')
300+
else CheckerMessages.ERROR)
310301
ret_val.append((msg, status, line))
311-
print("MESSAGES: %r" % ret_val)
312302
return True, ret_val

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def readme():
4242

4343

4444
# get requirements
45-
requirements = ['pyqode.core>=1.3.0', 'jedi>=0.8', 'pep8', 'pyflakes',
45+
requirements = ['pyqode.core>=1.3.0', 'jedi>=0.8', 'pep8', 'frosted',
4646
'docutils']
4747

4848

0 commit comments

Comments
 (0)