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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy