Skip to content

Commit 60cc4f5

Browse files
committed
Update pylint
1 parent f0e6b40 commit 60cc4f5

File tree

17 files changed

+107
-63
lines changed

17 files changed

+107
-63
lines changed

pymode/libs/pylama/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
66
"""
77

8-
version_info = 3, 0, 0
8+
version_info = 3, 0, 2
99

1010
__version__ = version = '.'.join(map(str, version_info))
1111
__project__ = __name__

pymode/libs/pylama/lint/pylama_pyflakes/__init__.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,16 @@
99
path = op.dirname(op.abspath(__file__))
1010
sys.path.insert(0, path)
1111

12+
from pyflakes import checker
13+
1214

1315
class Linter(BaseLinter):
1416

1517
""" Pyflakes code check. """
1618

1719
def __init__(self):
18-
from pyflakes import messages
19-
20-
if messages.UndefinedName.message != "E0602 undefined name %r":
21-
monkey_patch_messages(messages)
20+
if checker.messages.UndefinedName.message != "E0602 undefined name %r":
21+
monkey_patch_messages(checker.messages)
2222

2323
@staticmethod
2424
def run(path, code=None, builtins="", **meta):
@@ -29,7 +29,6 @@ def run(path, code=None, builtins="", **meta):
2929
"""
3030
import _ast
3131
import os
32-
from pyflakes import checker
3332

3433
os.environ.setdefault('PYFLAKES_BUILTINS', builtins)
3534

pymode/libs/pylama/lint/pylama_pylint/__init__.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,16 @@
44
# ==================
55

66

7-
__version__ = '0.1.6'
7+
__version__ = '0.2.0'
88
__project__ = 'pylama_pylint'
99
__author__ = "horneds <horneds@gmail.com>"
1010
__license__ = "BSD"
1111

12-
import os.path
1312
import sys
1413

1514
if sys.version_info >= (3, 0, 0):
1615
raise ImportError("pylama_pylint doesnt support python3")
1716

18-
CURDIR = os.path.abspath(os.path.dirname(__file__))
19-
sys.path.insert(0, CURDIR)
2017

2118
from .main import Linter
2219
assert Linter

pymode/libs/pylama/lint/pylama_pylint/astroid/as_string.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,15 @@ def visit_starred(self, node):
467467
"""return Starred node as string"""
468468
return "*" + node.value.accept(self)
469469

470+
def visit_yieldfrom(self, node):
471+
""" Return an astroid.YieldFrom node as string. """
472+
yi_val = node.value and (" " + node.value.accept(self)) or ""
473+
expr = 'yield from' + yi_val
474+
if node.parent.is_statement:
475+
return expr
476+
else:
477+
return "(%s)" % (expr,)
478+
470479

471480
def _import_string(names):
472481
"""return a list of (name, asname) formatted as a string"""

pymode/libs/pylama/lint/pylama_pylint/astroid/builder.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,12 @@ def module_build(self, module, modname=None):
102102
# this is a built-in module
103103
# get a partial representation by introspection
104104
node = self.inspect_build(module, modname=modname, path=path)
105+
# we have to handle transformation by ourselves since the rebuilder
106+
# isn't called for builtin nodes
107+
#
108+
# XXX it's then only called for Module nodes, not for underlying
109+
# nodes
110+
node = self._manager.transform(node)
105111
return node
106112

107113
def file_build(self, path, modname=None):

pymode/libs/pylama/lint/pylama_pylint/astroid/manager.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,33 @@ def register_transform(self, node_class, transform, predicate=None):
273273
"""
274274
self.transforms.setdefault(node_class, []).append( (transform, predicate) )
275275

276+
def unregister_transform(self, node_class, transform, predicate=None):
277+
"""Unregister the given transform."""
278+
self.transforms[node_class].remove( (transform, predicate) )
279+
280+
def transform(self, node):
281+
"""Call matching transforms for the given node if any and return the
282+
transformed node.
283+
"""
284+
try:
285+
transforms = self.transforms[type(node)]
286+
except KeyError:
287+
return node # no transform registered for this class of node
288+
orig_node = node # copy the reference
289+
for transform_func, predicate in transforms:
290+
if predicate is None or predicate(node):
291+
ret = transform_func(node)
292+
# if the transformation function returns something, it's
293+
# expected to be a replacement for the node
294+
if ret is not None:
295+
if node is not orig_node:
296+
# node has already be modified by some previous
297+
# transformation, warn about it
298+
warn('node %s substitued multiple times' % node)
299+
node = ret
300+
return node
301+
302+
276303

277304
class Project(object):
278305
"""a project handle a set of modules / packages"""

pymode/libs/pylama/lint/pylama_pylint/astroid/node_classes.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -888,6 +888,9 @@ class Yield(NodeNG):
888888
_astroid_fields = ('value',)
889889
value = None
890890

891+
class YieldFrom(Yield):
892+
""" Class representing a YieldFrom node. """
893+
891894
# constants ##############################################################
892895

893896
CONST_CLS = {

pymode/libs/pylama/lint/pylama_pylint/astroid/nodes.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
Dict, Discard, Ellipsis, EmptyNode, ExceptHandler, Exec, ExtSlice, For, \
4444
From, Getattr, Global, If, IfExp, Import, Index, Keyword, \
4545
List, Name, Nonlocal, Pass, Print, Raise, Return, Set, Slice, Starred, Subscript, \
46-
TryExcept, TryFinally, Tuple, UnaryOp, While, With, Yield, \
46+
TryExcept, TryFinally, Tuple, UnaryOp, While, With, Yield, YieldFrom, \
4747
const_factory
4848
from astroid.scoped_nodes import Module, GenExpr, Lambda, DictComp, \
4949
ListComp, SetComp, Function, Class
@@ -68,6 +68,6 @@
6868
TryExcept, TryFinally, Tuple,
6969
UnaryOp,
7070
While, With,
71-
Yield,
71+
Yield, YieldFrom
7272
)
7373

pymode/libs/pylama/lint/pylama_pylint/astroid/rebuilder.py

Lines changed: 11 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,14 @@ def _infer_metaclass(node):
122122
elif isinstance(node, Attribute):
123123
return node.attr
124124

125+
def _create_yield_node(node, parent, rebuilder, factory):
126+
newnode = factory()
127+
_lineno_parent(node, newnode, parent)
128+
if node.value is not None:
129+
newnode.value = rebuilder.visit(node.value, newnode)
130+
newnode.set_line_info(newnode.last_child())
131+
return newnode
132+
125133

126134
class TreeRebuilder(object):
127135
"""Rebuilds the _ast tree to become an Astroid tree"""
@@ -134,25 +142,7 @@ def __init__(self, manager):
134142
self._from_nodes = []
135143
self._delayed_assattr = []
136144
self._visit_meths = {}
137-
138-
def _transform(self, node):
139-
try:
140-
transforms = self._manager.transforms[type(node)]
141-
except KeyError:
142-
return node # no transform registered for this class of node
143-
orig_node = node # copy the reference
144-
for transform_func, predicate in transforms:
145-
if predicate is None or predicate(node):
146-
ret = transform_func(node)
147-
# if the transformation function returns something, it's
148-
# expected to be a replacement for the node
149-
if ret is not None:
150-
if node is not orig_node:
151-
# node has already be modified by some previous
152-
# transformation, warn about it
153-
warn('node %s substitued multiple times' % node)
154-
node = ret
155-
return node
145+
self._transform = manager.transform
156146

157147
def visit_module(self, node, modname, package):
158148
"""visit a Module node by returning a fresh instance of it"""
@@ -837,13 +827,7 @@ def visit_with(self, node, parent):
837827

838828
def visit_yield(self, node, parent):
839829
"""visit a Yield node by returning a fresh instance of it"""
840-
newnode = new.Yield()
841-
_lineno_parent(node, newnode, parent)
842-
if node.value is not None:
843-
newnode.value = self.visit(node.value, newnode)
844-
newnode.set_line_info(newnode.last_child())
845-
return newnode
846-
830+
return _create_yield_node(node, parent, self, new.Yield)
847831

848832
class TreeRebuilder3k(TreeRebuilder):
849833
"""extend and overwrite TreeRebuilder for python3k"""
@@ -954,7 +938,7 @@ def visit_child(child):
954938
return newnode
955939

956940
def visit_yieldfrom(self, node, parent):
957-
return self.visit_yield(node, parent)
941+
return _create_yield_node(node, parent, self, new.YieldFrom)
958942

959943
def visit_class(self, node, parent):
960944
newnode = super(TreeRebuilder3k, self).visit_class(node, parent)

pymode/libs/pylama/lint/pylama_pylint/astroid/scoped_nodes.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
from astroid.exceptions import NotFoundError, \
3333
AstroidBuildingException, InferenceError
3434
from astroid.node_classes import Const, DelName, DelAttr, \
35-
Dict, From, List, Pass, Raise, Return, Tuple, Yield, \
35+
Dict, From, List, Pass, Raise, Return, Tuple, Yield, YieldFrom, \
3636
LookupMixIn, const_factory as cf, unpack_infer
3737
from astroid.bases import NodeNG, InferenceContext, Instance,\
3838
YES, Generator, UnboundMethod, BoundMethod, _infer_stmts, copy_context, \
@@ -620,7 +620,8 @@ def is_generator(self):
620620
"""return true if this is a generator function"""
621621
# XXX should be flagged, not computed
622622
try:
623-
return self.nodes_of_class(Yield, skip_klass=(Function, Lambda)).next()
623+
return self.nodes_of_class((Yield, YieldFrom),
624+
skip_klass=(Function, Lambda)).next()
624625
except StopIteration:
625626
return False
626627

0 commit comments

Comments
 (0)