Hello community,

here is the log from the commit of package python3-pylint for openSUSE:Factory 
checked in at 2016-01-21 23:42:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-pylint (Old)
 and      /work/SRC/openSUSE:Factory/.python3-pylint.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python3-pylint"

Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-pylint/python3-pylint.changes    
2015-12-23 08:50:40.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python3-pylint.new/python3-pylint.changes       
2016-01-22 01:07:00.000000000 +0100
@@ -1,0 +2,34 @@
+Wed Jan 13 10:15:52 UTC 2016 - toddrme2...@gmail.com
+
+- Update to version 1.5.3:
+  * Handle the import fallback idiom with regard to wrong-import-order.
+    Closes issue #750.
+  * Decouple the displaying of reports from the displaying of messages
+    Some reporters are aggregating the messages instead of displaying
+    them when they are available. The actual displaying was conflatted
+    in the generate_reports. Unfortunately this behaviour was flaky
+    and in the case of the JSON reporter, the messages weren't shown
+    at all if a file had syntax errors or if it was missing.
+    In order to fix this, the aggregated messages can now be
+    displayed with Reporter.display_message, while the reports are
+    displayed with display_reports.
+    Closes issues #766 and #765.
+  * Ignore function calls with variadic arguments without a context.
+    Inferring variadic positional arguments and keyword arguments
+    will result into empty Tuples and Dicts, which can lead in
+    some cases to false positives with regard to no-value-for-parameter.
+    In order to avoid this, until we'll have support for call context
+    propagation, we're ignoring such cases if detected.
+    Closes issue #722.
+  * Treat AsyncFunctionDef just like FunctionDef nodes,
+    by implementing visit_asyncfunctiondef in terms of
+    visit_functiondef.
+    Closes issue #767.
+  * Take in account kwonlyargs when verifying that arguments
+    are defined with the check_docs extension.
+    Closes issue #745.
+  * Suppress reporting 'unneeded-not' inside `__ne__` methods
+    Closes issue #749.
+- Cleanup update-alternatives
+
+-------------------------------------------------------------------

Old:
----
  pylint-1.5.2.tar.gz

New:
----
  pylint-1.5.3.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python3-pylint.spec ++++++
--- /var/tmp/diff_new_pack.n7Ho4P/_old  2016-01-22 01:07:02.000000000 +0100
+++ /var/tmp/diff_new_pack.n7Ho4P/_new  2016-01-22 01:07:02.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python3-pylint
 #
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,15 +17,15 @@
 
 
 Name:           python3-pylint
-Version:        1.5.2
+Version:        1.5.3
 Release:        0
 Summary:        Syntax and style checker for Python code
 License:        GPL-2.0+
 Group:          Development/Languages/Python
-Url:            http://www.pylint.org/
+Url:            https://github.com/pycqa/pylint
 Source:         
https://pypi.python.org/packages/source/p/pylint/pylint-%{version}.tar.gz
-BuildRequires:  python3-2to3
 BuildRequires:  python3-astroid
+BuildRequires:  python3-six
 BuildRequires:  python3-tk
 Requires:       python3-astroid
 Requires:       python3-six
@@ -58,58 +58,53 @@
 python3 setup.py build
 
 %install
-# build failes without --no-compile
 python3 setup.py install --prefix=%{_prefix} --root=%{buildroot} --no-compile
+
 # fix non-executable rpmlint warning
 chmod +x %{buildroot}%{python3_sitelib}/pylint/epylint.py
-# update-alternatives
-mv %{buildroot}%{_bindir}/pylint %{buildroot}%{_bindir}/pylint-%{py3_ver}
-mv %{buildroot}%{_bindir}/epylint %{buildroot}%{_bindir}/epylint-%{py3_ver}
-mv %{buildroot}%{_bindir}/pylint-gui 
%{buildroot}%{_bindir}/pylint-gui-%{py3_ver}
-mv %{buildroot}%{_bindir}/pyreverse %{buildroot}%{_bindir}/pyreverse-%{py3_ver}
-mv %{buildroot}%{_bindir}/symilar %{buildroot}%{_bindir}/symilar-%{py3_ver}
-ln -s %{_bindir}/pylint-%{py3_ver} %{buildroot}%{_bindir}/pylint
-ln -s %{_bindir}/epylint-%{py3_ver} %{buildroot}%{_bindir}/epylint
-ln -s %{_bindir}/pylint-gui-%{py3_ver} %{buildroot}%{_bindir}/pylint-gui
-ln -s %{_bindir}/pyreverse-%{py3_ver} %{buildroot}%{_bindir}/pyreverse
-ln -s %{_bindir}/symilar-%{py3_ver} %{buildroot}%{_bindir}/symilar
-
-%pre
-# Since /usr/bin/pylint, etc. became ghosted to be used with 
update-alternatives, we have to get rid
-# of the old binary resulting from the non-update-alternativies-ified package:
-[ -h %{_bindir}/pylint ] || rm -f %{_bindir}/pylint
-[ -h %{_bindir}/epylint ] || rm -f %{_bindir}/epylint
-[ -h %{_bindir}/pylint-gui ] || rm -f %{_bindir}/pylint-gui
-[ -h %{_bindir}/pyreverse ] || rm -f %{_bindir}/pyreverse
-[ -h %{_bindir}/symilar ] || rm -f %{_bindir}/symilar
+
+# Prepare for update-alternatives usage
+mkdir -p %{buildroot}%{_sysconfdir}/alternatives
+for p in pylint epylint pylint-gui pyreverse symilar ; do
+    mv %{buildroot}%{_bindir}/$p %{buildroot}%{_bindir}/$p-%{py3_ver}
+    ln -s -f %{_sysconfdir}/alternatives/$p %{buildroot}%{_bindir}/$p
+    # create a dummy target for /etc/alternatives/$p
+    touch %{buildroot}%{_sysconfdir}/alternatives/$p
+done
 
 %post
-update-alternatives \
+%_sbindir/update-alternatives \
    --install %{_bindir}/pylint pylint %{_bindir}/pylint-%{py3_ver} 30 \
    --slave %{_bindir}/epylint epylint %{_bindir}/epylint-%{py3_ver} \
    --slave %{_bindir}/pylint-gui pylint-gui %{_bindir}/pylint-gui-%{py3_ver} \
    --slave %{_bindir}/pyreverse pyreverse %{_bindir}/pyreverse-%{py3_ver} \
    --slave %{_bindir}/symilar symilar %{_bindir}/symilar-%{py3_ver}
 
-%preun
+%postun
 if [ $1 -eq 0 ] ; then
-    update-alternatives --remove pylint %{_bindir}/pylint-%{py3_ver}
+    %_sbindir/update-alternatives --remove pylint %{_bindir}/pylint-%{py3_ver}
 fi
 
 %files
 %defattr(-,root,root)
-%doc ChangeLog COPYING README.rst examples/
+%doc ChangeLog COPYING README.rst
+%doc examples/
+%{_bindir}/pylint
+%{_bindir}/epylint
+%{_bindir}/pylint-gui
+%{_bindir}/pyreverse
+%{_bindir}/symilar
 %{_bindir}/pylint-%{py3_ver}
 %{_bindir}/epylint-%{py3_ver}
 %{_bindir}/pylint-gui-%{py3_ver}
 %{_bindir}/pyreverse-%{py3_ver}
 %{_bindir}/symilar-%{py3_ver}
-%ghost %{_bindir}/pylint
-%ghost %{_bindir}/epylint
-%ghost %{_bindir}/pylint-gui
-%ghost %{_bindir}/pyreverse
-%ghost %{_bindir}/symilar
+%ghost %{_sysconfdir}/alternatives/pylint
+%ghost %{_sysconfdir}/alternatives/epylint
+%ghost %{_sysconfdir}/alternatives/pylint-gui
+%ghost %{_sysconfdir}/alternatives/pyreverse
+%ghost %{_sysconfdir}/alternatives/symilar
 %{python3_sitelib}/pylint/
-%{python3_sitelib}/pylint-%{version}-py%{py3_ver}.egg-info
+%{python3_sitelib}/pylint-%{version}-py*.egg-info
 
 %changelog

++++++ pylint-1.5.2.tar.gz -> pylint-1.5.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/ChangeLog new/pylint-1.5.3/ChangeLog
--- old/pylint-1.5.2/ChangeLog  2015-12-21 01:15:06.000000000 +0100
+++ new/pylint-1.5.3/ChangeLog  2016-01-11 10:51:49.000000000 +0100
@@ -1,8 +1,52 @@
 ChangeLog for Pylint
 --------------------
 
-2015-12-21
+2016-01-11 -- 1.5.3
 
+    * Handle the import fallback idiom with regard to wrong-import-order.
+
+      Closes issue #750.
+
+    * Decouple the displaying of reports from the displaying of messages
+
+      Some reporters are aggregating the messages instead of displaying
+      them when they are available. The actual displaying was conflatted
+      in the generate_reports. Unfortunately this behaviour was flaky
+      and in the case of the JSON reporter, the messages weren't shown
+      at all if a file had syntax errors or if it was missing.
+      In order to fix this, the aggregated messages can now be
+      displayed with Reporter.display_message, while the reports are
+      displayed with display_reports.
+      
+      Closes issues #766 and #765.
+
+    * Ignore function calls with variadic arguments without a context.
+
+      Inferring variadic positional arguments and keyword arguments
+      will result into empty Tuples and Dicts, which can lead in
+      some cases to false positives with regard to no-value-for-parameter.
+      In order to avoid this, until we'll have support for call context
+      propagation, we're ignoring such cases if detected.
+      Closes issue #722.
+
+    * Treat AsyncFunctionDef just like FunctionDef nodes,
+      by implementing visit_asyncfunctiondef in terms of
+      visit_functiondef.
+
+      Closes issue #767.
+      
+    * Take in account kwonlyargs when verifying that arguments
+      are defined with the check_docs extension.
+
+      Closes issue #745.
+
+    * Suppress reporting 'unneeded-not' inside `__ne__` methods
+
+      Closes issue #749.
+
+
+2015-12-21 -- 1.5.2
+        
     * Don't crash if graphviz is not installed, instead emit a
       warning letting the user to know.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/PKG-INFO new/pylint-1.5.3/PKG-INFO
--- old/pylint-1.5.2/PKG-INFO   2015-12-21 01:21:43.000000000 +0100
+++ new/pylint-1.5.3/PKG-INFO   2016-01-11 11:07:57.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: pylint
-Version: 1.5.2
+Version: 1.5.3
 Summary: python code static checker
 Home-page: http://www.pylint.org
 Author: Logilab
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/doc/changelog.rst 
new/pylint-1.5.3/doc/changelog.rst
--- old/pylint-1.5.2/doc/changelog.rst  2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/doc/changelog.rst  2016-01-09 21:13:05.000000000 +0100
@@ -1,8 +1,6 @@
 
-Changes & Contributors
-======================
+Change log
+==========
 
 .. include:: ../ChangeLog
 
-
-.. include:: ../CONTRIBUTORS.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/man/pylint.1 
new/pylint-1.5.3/man/pylint.1
--- old/pylint-1.5.2/man/pylint.1       2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/man/pylint.1       2016-01-09 21:13:05.000000000 +0100
@@ -239,7 +239,7 @@
 .IP "--max-module-lines=<int>"
 Maximum number of lines in a module [current: 1000]
 .IP "--indent-string=<string>"
-String used as indentation unit. This is usually "    " (4 spaces) or "\t" (1 
tab). [current: '    ']
+String used as indentation unit. This is usually "    " (4 spaces) or "\\t" (1 
tab). [current: '    ']
 .IP "--indent-after-paren=<int>"
 Number of spaces of indent required inside a hanging  or continued line. 
[current: 4]
 .IP "--expected-line-ending-format=<empty or LF or CRLF>"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/pylint/__pkginfo__.py 
new/pylint-1.5.3/pylint/__pkginfo__.py
--- old/pylint-1.5.2/pylint/__pkginfo__.py      2015-12-21 01:14:49.000000000 
+0100
+++ new/pylint-1.5.3/pylint/__pkginfo__.py      2016-01-11 10:51:17.000000000 
+0100
@@ -23,11 +23,11 @@
 
 modname = distname = 'pylint'
 
-numversion = (1, 5, 2)
+numversion = (1, 5, 3)
 version = '.'.join([str(num) for num in numversion])
 
 install_requires = [
-    'astroid>=1.4.1',
+    'astroid>=1.4.1,<1.5.0',
     'six',
 ]
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/pylint/checkers/base.py 
new/pylint-1.5.3/pylint/checkers/base.py
--- old/pylint-1.5.2/pylint/checkers/base.py    2015-12-20 14:33:00.000000000 
+0100
+++ new/pylint-1.5.3/pylint/checkers/base.py    2016-01-09 21:13:05.000000000 
+0100
@@ -419,6 +419,8 @@
             else:
                 args.add(name)
 
+    visit_asyncfunctiondef = visit_functiondef
+
     def _check_nonlocal_and_global(self, node):
         """Check that a name is both nonlocal and global."""
         def same_scope(current):
@@ -777,7 +779,7 @@
         # * a yield (which are wrapped by a discard node in _ast XXX)
         # warn W0106 if we have any underlying function call (we can't predict
         # side effects), else pointless-statement
-        if (isinstance(expr, (astroid.Yield, astroid.Call)) or
+        if (isinstance(expr, (astroid.Yield, astroid.Await, astroid.Call)) or
                 (isinstance(node.parent, astroid.TryExcept) and
                  node.parent.body == [node])):
             return
@@ -871,6 +873,8 @@
         self.stats[node.is_method() and 'method' or 'function'] += 1
         self._check_dangerous_default(node)
 
+    visit_asyncfunctiondef = visit_functiondef
+
     def _check_dangerous_default(self, node):
         # check for dangerous default values as arguments
         is_iterable = lambda n: isinstance(n, (astroid.List,
@@ -1238,6 +1242,8 @@
         if args is not None:
             self._recursive_check_names(args, node)
 
+    visit_asyncfunctiondef = visit_functiondef
+
     @check_messages('blacklisted-name', 'invalid-name')
     def visit_global(self, node):
         for name in node.names:
@@ -1389,6 +1395,8 @@
             else:
                 self._check_docstring(ftype, node)
 
+    visit_asyncfunctiondef = visit_functiondef
+
     def _check_docstring(self, node_type, node, report_missing=True,
                          confidence=HIGH):
         """check the node has a non empty docstring"""
@@ -1860,6 +1868,7 @@
         if node.op != 'not':
             return
         operand = node.operand
+
         if isinstance(operand, astroid.UnaryOp) and operand.op == 'not':
             self.add_message('unneeded-not', node=node,
                              args=(node.as_string(),
@@ -1872,6 +1881,12 @@
             operator, right = operand.ops[0]
             if operator not in self.reverse_op:
                 return
+
+            # Ignore __ne__ as function of __eq__
+            frame = node.frame()
+            if frame.name == '__ne__' and operator == '==':
+                return
+
             suggestion = '%s %s %s' % (left.as_string(),
                                        self.reverse_op[operator],
                                        right.as_string())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/pylint/checkers/classes.py 
new/pylint-1.5.3/pylint/checkers/classes.py
--- old/pylint-1.5.2/pylint/checkers/classes.py 2015-12-10 16:29:47.000000000 
+0100
+++ new/pylint-1.5.3/pylint/checkers/classes.py 2016-01-09 21:13:05.000000000 
+0100
@@ -508,6 +508,8 @@
         except astroid.NotFoundError:
             pass
 
+    visit_asyncfunctiondef = visit_functiondef
+
     def _check_slots(self, node):
         if '__slots__' not in node.locals:
             return
@@ -1015,6 +1017,8 @@
         if node.name in PYMETHODS:
             self._check_unexpected_method_signature(node)
 
+    visit_asyncfunctiondef = visit_functiondef
+
     def _check_unexpected_method_signature(self, node):
         expected_params = SPECIAL_METHODS_PARAMS[node.name]
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/pylint/checkers/design_analysis.py 
new/pylint-1.5.3/pylint/checkers/design_analysis.py
--- old/pylint-1.5.2/pylint/checkers/design_analysis.py 2015-12-10 
16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/checkers/design_analysis.py 2016-01-09 
21:13:05.000000000 +0100
@@ -254,6 +254,8 @@
         # init statements counter
         self._stmts = 1
 
+    visit_asyncfunctiondef = visit_functiondef
+
     @check_messages('too-many-return-statements', 'too-many-branches',
                     'too-many-arguments', 'too-many-locals',
                     'too-many-statements')
@@ -274,6 +276,8 @@
             self.add_message('too-many-statements', node=node,
                              args=(self._stmts, self.config.max_statements))
 
+    leave_asyncfunctiondef = leave_functiondef
+
     def visit_return(self, _):
         """count number of returns"""
         if not self._returns:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/pylint/checkers/imports.py 
new/pylint-1.5.3/pylint/checkers/imports.py
--- old/pylint-1.5.2/pylint/checkers/imports.py 2015-12-21 00:56:43.000000000 
+0100
+++ new/pylint-1.5.3/pylint/checkers/imports.py 2016-01-11 10:42:15.000000000 
+0100
@@ -16,6 +16,7 @@
 """imports checkers for Python code"""
 
 import collections
+from distutils import sysconfig
 import os
 import sys
 
@@ -23,7 +24,7 @@
 
 import astroid
 from astroid import are_exclusive
-from astroid.modutils import (EXT_LIB_DIR, get_module_part, is_standard_module,
+from astroid.modutils import (get_module_part, is_standard_module,
                               file_from_modpath)
 
 from pylint.interfaces import IAstroidChecker
@@ -253,7 +254,6 @@
 given file (report RP0402 must not be disabled)'}
                ),
               )
-    ext_lib_dir = os.path.normcase(os.path.abspath(EXT_LIB_DIR))
 
     def __init__(self, linter=None):
         BaseChecker.__init__(self, linter)
@@ -268,6 +268,29 @@
                          self._report_dependencies_graph),
                        )
 
+        self._site_packages = self._compute_site_packages()
+
+    @staticmethod
+    def _compute_site_packages():
+        def _normalized_path(path):
+            return os.path.normcase(os.path.abspath(path))
+
+        paths = set()
+        real_prefix = getattr(sys, 'real_prefix', None)
+        for prefix in filter(None, (real_prefix, sys.prefix)):
+            path = sysconfig.get_python_lib(prefix=prefix)
+            path = _normalized_path(path)
+            paths.add(path)
+
+        # Handle Debian's derivatives /usr/local.
+        if os.path.isfile("/etc/debian_version"):
+            for prefix in filter(None, (real_prefix, sys.prefix)):
+                libpython = os.path.join(prefix, "local", "lib",
+                                         "python" + 
sysconfig.get_python_version(),
+                                         "dist-packages")
+                paths.add(libpython)
+        return paths
+
     def open(self):
         """called before visiting project (i.e set of modules)"""
         self.linter.add_stats(dependencies={})
@@ -429,6 +452,12 @@
             importedname = node.names[0][0].split('.')[0]
         self._imports_stack.append((node, importedname))
 
+    @staticmethod
+    def _is_fallback_import(node, imports):
+        imports = [import_node for (import_node, _) in imports]
+        return any(astroid.are_exclusive(import_node, node)
+                   for import_node in imports)
+
     def _check_imports_order(self, node):
         """Checks imports of module `node` are grouped by category
 
@@ -437,11 +466,6 @@
         extern_imports = []
         local_imports = []
         std_imports = []
-        stdlib_paths = [sys.prefix, self.ext_lib_dir]
-        real_prefix = getattr(sys, 'real_prefix', None)
-        if real_prefix is not None:
-            stdlib_paths.append(real_prefix)
-
         for node, modname in self._imports_stack:
             package = modname.split('.')[0]
             if is_standard_module(modname):
@@ -449,6 +473,8 @@
                 wrong_import = extern_imports or local_imports
                 if not wrong_import:
                     continue
+                if self._is_fallback_import(node, wrong_import):
+                    continue
                 self.add_message('wrong-import-order', node=node,
                                  args=('standard import "%s"' % 
node.as_string(),
                                        '"%s"' % 
wrong_import[0][0].as_string()))
@@ -456,13 +482,12 @@
                 try:
                     filename = file_from_modpath([package])
                 except ImportError:
-                    extern_imports.append((node, package))
                     continue
                 if not filename:
-                    extern_imports.append((node, package))
                     continue
+
                 filename = os.path.normcase(os.path.abspath(filename))
-                if not any(filename.startswith(path) for path in stdlib_paths):
+                if not any(filename.startswith(path) for path in 
self._site_packages):
                     local_imports.append((node, package))
                     continue
                 extern_imports.append((node, package))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/pylint/checkers/newstyle.py 
new/pylint-1.5.3/pylint/checkers/newstyle.py
--- old/pylint-1.5.2/pylint/checkers/newstyle.py        2015-12-16 
16:25:28.000000000 +0100
+++ new/pylint-1.5.3/pylint/checkers/newstyle.py        2016-01-09 
21:13:05.000000000 +0100
@@ -161,6 +161,8 @@
                     if name is not None:
                         self.add_message('bad-super-call', node=call, 
args=(name, ))
 
+    visit_asyncfunctiondef = visit_functiondef
+
 
 def register(linter):
     """required method to auto register this checker """
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/pylint/checkers/spelling.py 
new/pylint-1.5.3/pylint/checkers/spelling.py
--- old/pylint-1.5.2/pylint/checkers/spelling.py        2015-12-10 
16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/checkers/spelling.py        2016-01-09 
21:13:05.000000000 +0100
@@ -239,6 +239,8 @@
             return
         self._check_docstring(node)
 
+    visit_asyncfunctiondef = visit_functiondef
+
     def _check_docstring(self, node):
         """check the node has any spelling errors"""
         docstring = node.doc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/pylint/checkers/typecheck.py 
new/pylint-1.5.3/pylint/checkers/typecheck.py
--- old/pylint-1.5.2/pylint/checkers/typecheck.py       2015-12-21 
00:56:58.000000000 +0100
+++ new/pylint-1.5.3/pylint/checkers/typecheck.py       2016-01-11 
10:42:15.000000000 +0100
@@ -468,6 +468,33 @@
                                      args=node.func.as_string())
                     break
 
+    @staticmethod
+    def _no_context_variadic(node):
+        """Verify if the given call node has variadic nodes without context
+
+        This is a workaround for handling cases of nested call functions
+        which don't have the specific call context at hand.
+        Variadic arguments (variable positional arguments and variable
+        keyword arguments) are inferred, inherently wrong, by astroid
+        as a Tuple, respectively a Dict with empty elements.
+        This can lead pylint to believe that a function call receives
+        too few arguments.
+        """
+        for arg in node.args:
+            if not isinstance(arg, astroid.Starred):
+                continue
+
+            inferred = safe_infer(arg.value)
+            if isinstance(inferred, astroid.Tuple):
+                length = len(inferred.elts)
+            elif isinstance(inferred, astroid.Dict):
+                length = len(inferred.items)
+            else:
+                return False
+            if not length and isinstance(inferred.statement(), 
astroid.FunctionDef):
+                return True
+        return False
+
     @check_messages(*(list(MSGS.keys())))
     def visit_call(self, node):
         """check that called functions/methods are inferred to callable 
objects,
@@ -479,6 +506,7 @@
         call_site = astroid.arguments.CallSite.from_call(node)
         num_positional_args = len(call_site.positional_arguments)
         keyword_args = list(call_site.keyword_arguments.keys())
+        no_context_variadic = self._no_context_variadic(node)
 
         called = safe_infer(node.func)
         # only function, generator and object defining __call__ are allowed
@@ -494,6 +522,7 @@
             # Any error occurred during determining the function type, most of
             # those errors are handled by different warnings.
             return
+
         num_positional_args += implicit_args
         if called.args.args is None:
             # Built-in functions have no argument information.
@@ -610,8 +639,10 @@
                     display_name = '<tuple>'
                 else:
                     display_name = repr(name)
-                self.add_message('no-value-for-parameter', node=node,
-                                 args=(display_name, callable_name))
+                # TODO(cpopa): this should be removed after 
PyCQA/astroid/issues/177
+                if not no_context_variadic:
+                    self.add_message('no-value-for-parameter', node=node,
+                                     args=(display_name, callable_name))
 
         for name in kwparams:
             defval, assigned = kwparams[name]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/pylint/checkers/variables.py 
new/pylint-1.5.3/pylint/checkers/variables.py
--- old/pylint-1.5.2/pylint/checkers/variables.py       2015-12-21 
00:52:14.000000000 +0100
+++ new/pylint-1.5.3/pylint/checkers/variables.py       2016-01-11 
10:42:15.000000000 +0100
@@ -622,6 +622,9 @@
                         continue
                 self.add_message('unused-variable', args=name, node=stmt)
 
+    visit_asyncfunctiondef = visit_functiondef
+    leave_asyncfunctiondef = leave_functiondef
+
     @check_messages('global-variable-undefined', 
'global-variable-not-assigned',
                     'global-statement', 'global-at-module-level',
                     'redefined-builtin')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/pylint/extensions/check_docs.py 
new/pylint-1.5.3/pylint/extensions/check_docs.py
--- old/pylint-1.5.2/pylint/extensions/check_docs.py    2015-12-12 
13:20:29.000000000 +0100
+++ new/pylint-1.5.3/pylint/extensions/check_docs.py    2016-01-09 
21:13:05.000000000 +0100
@@ -174,6 +174,7 @@
 
         # Collect the function arguments.
         expected_argument_names = [arg.name for arg in arguments_node.args]
+        expected_argument_names += [arg.name for arg in 
arguments_node.kwonlyargs]
         not_needed_type_in_docstring = (
             self.not_needed_param_in_docstring.copy())
 
@@ -183,7 +184,6 @@
         if arguments_node.kwarg is not None:
             expected_argument_names.append(arguments_node.kwarg)
             not_needed_type_in_docstring.add(arguments_node.kwarg)
-
         params_with_doc, params_with_type = self.match_param_docs(doc)
 
         # Tolerate no parameter documentation at all.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/pylint/interfaces.py 
new/pylint-1.5.3/pylint/interfaces.py
--- old/pylint-1.5.2/pylint/interfaces.py       2015-12-21 00:52:14.000000000 
+0100
+++ new/pylint-1.5.3/pylint/interfaces.py       2016-01-11 10:42:15.000000000 
+0100
@@ -94,7 +94,7 @@
         msg is the actual message
         """
 
-    def display_results(self, layout):
+    def display_reports(self, layout):
         """display results encapsulated in the layout tree
         """
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/pylint/lint.py 
new/pylint-1.5.3/pylint/lint.py
--- old/pylint-1.5.2/pylint/lint.py     2015-12-21 00:52:14.000000000 +0100
+++ new/pylint-1.5.3/pylint/lint.py     2016-01-11 10:42:15.000000000 +0100
@@ -964,6 +964,9 @@
 
         if persistent run, pickle results for later comparison
         """
+        # Display whatever messages are left on the reporter.
+        self.reporter.display_messages(report_nodes.Section())
+
         if self.file_state.base_name is not None:
             # load previous results if any
             previous_stats = config.load_results(self.file_state.base_name)
@@ -976,17 +979,12 @@
                     self.reporter.set_output(open(filename, 'w'))
             else:
                 sect = report_nodes.Section()
-            if self.config.reports or self.config.output_format == 'html':
-                self.reporter.display_results(sect)
+            if self.config.reports:
+                self.reporter.display_reports(sect)
             # save results if persistent run
             if self.config.persistent:
                 config.save_results(self.stats, self.file_state.base_name)
         else:
-            if self.config.output_format == 'html':
-                # No output will be emitted for the html
-                # reporter if the file doesn't exist, so emit
-                # the results here.
-                self.reporter.display_results(report_nodes.Section())
             self.reporter.on_close(self.stats, {})
 
     # specific reports ########################################################
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/pylint/reporters/__init__.py 
new/pylint-1.5.3/pylint/reporters/__init__.py
--- old/pylint-1.5.2/pylint/reporters/__init__.py       2015-12-21 
00:52:14.000000000 +0100
+++ new/pylint-1.5.3/pylint/reporters/__init__.py       2016-01-11 
10:42:15.000000000 +0100
@@ -91,17 +91,34 @@
         """write a line in the output buffer"""
         print(self.encode(string), file=self.out)
 
-    def display_results(self, layout):
+    def display_reports(self, layout):
         """display results encapsulated in the layout tree"""
         self.section = 0
         if hasattr(layout, 'report_id'):
             layout.children[0].children[0].data += ' (%s)' % layout.report_id
         self._display(layout)
 
+    def display_results(self, layout):
+        warnings.warn("display_results is deprecated, use display_reports 
instead. "
+                      "The former will be removed in Pylint 2.0.",
+                      DeprecationWarning)
+        self.display_reports(layout)
+
     def _display(self, layout):
         """display the layout"""
         raise NotImplementedError()
 
+    def display_messages(self, layout):
+        """Hook for displaying the messages of the reporter
+
+        This will be called whenever the underlying messages
+        needs to be displayed. For some reporters, it probably
+        doesn't make sense to display messages as soon as they
+        are available, so some mechanism of storing them could be used.
+        This method can be implemented to display them after they've
+        been aggregated.
+        """
+
     # Event callbacks
 
     def on_set_current_module(self, module, filepath):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/pylint/reporters/html.py 
new/pylint-1.5.3/pylint/reporters/html.py
--- old/pylint-1.5.2/pylint/reporters/html.py   2015-12-10 16:29:47.000000000 
+0100
+++ new/pylint-1.5.3/pylint/reporters/html.py   2016-01-09 21:13:05.000000000 
+0100
@@ -88,6 +88,9 @@
         (in add_message, message is not displayed, just collected so it
         can be displayed in an html table)
         """
+        HTMLWriter().format(layout, self.out)
+
+    def display_messages(self, layout):
         if self.msgs:
             # add stored messages to the layout
             msgs = self.header
@@ -97,7 +100,7 @@
             layout.append(sect)
             sect.append(Table(cols=cols, children=msgs, rheaders=1))
             self.msgs = []
-        HTMLWriter().format(layout, self.out)
+            self._display(layout)
 
 
 def register(linter):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/pylint/reporters/json.py 
new/pylint-1.5.3/pylint/reporters/json.py
--- old/pylint-1.5.2/pylint/reporters/json.py   2015-12-10 16:29:47.000000000 
+0100
+++ new/pylint-1.5.3/pylint/reporters/json.py   2016-01-09 21:13:05.000000000 
+0100
@@ -35,7 +35,6 @@
 
     def handle_message(self, message):
         """Manage message of different type and in the context of path."""
-
         self.messages.append({
             'type': message.category,
             'module': message.module,
@@ -48,11 +47,17 @@
             'message': cgi.escape(message.msg or ''),
         })
 
-    def _display(self, layout):
+    def display_messages(self, layout):
         """Launch layouts display"""
         if self.messages:
             print(json.dumps(self.messages, indent=4), file=self.out)
 
+    def display_reports(self, _):
+        """Don't do nothing in this reporter."""
+
+    def _display(self, layout):
+        """Don't do nothing."""
+
 
 def register(linter):
     """Register the reporter classes with the linter."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pylint-1.5.2/pylint/test/extensions/test_check_docs.py 
new/pylint-1.5.3/pylint/test/extensions/test_check_docs.py
--- old/pylint-1.5.2/pylint/test/extensions/test_check_docs.py  2015-12-10 
16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/extensions/test_check_docs.py  2016-01-09 
21:13:05.000000000 +0100
@@ -4,6 +4,7 @@
 from __future__ import division, print_function, absolute_import
 
 import unittest
+import sys
 
 import astroid
 from astroid import test_utils
@@ -639,6 +640,27 @@
         ):
             self._visit_methods_of_class(node)
 
+    @unittest.skipIf(sys.version_info[0] != 3, "Enabled on Python 3")
+    def test_kwonlyargs_are_taken_in_account(self):
+        node = test_utils.extract_node('''
+        def my_func(arg, *, kwonly, missing_kwonly):
+            """The docstring
+
+            :param int arg: The argument.
+            :param bool kwonly: A keyword-arg.
+            """
+        ''')
+        with self.assertAddsMessages(
+            Message(
+                msg_id='missing-param-doc',
+                node=node,
+                args=('missing_kwonly', )),
+            Message(
+                msg_id='missing-type-doc',
+                node=node,
+                args=('missing_kwonly', ))):
+            self.checker.visit_functiondef(node)
+
 
 if __name__ == '__main__':
     unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/pylint/test/functional/arguments.py 
new/pylint-1.5.3/pylint/test/functional/arguments.py
--- old/pylint-1.5.2/pylint/test/functional/arguments.py        2015-12-21 
00:52:14.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/functional/arguments.py        2016-01-11 
10:42:15.000000000 +0100
@@ -156,3 +156,12 @@
 function_1_arg(5, 6, **{unknown: 1})
 function_1_arg(**{object: 1})
 function_1_arg(**{1: 2})
+
+# Don't emit no-value-for-parameter for this, since we
+# don't have the context at our disposal.
+def expect_three(one, two, three):
+    return one + two + three
+
+
+def no_context(*args):
+    expect_three(*args)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pylint-1.5.2/pylint/test/functional/async_functions.py 
new/pylint-1.5.3/pylint/test/functional/async_functions.py
--- old/pylint-1.5.2/pylint/test/functional/async_functions.py  1970-01-01 
01:00:00.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/functional/async_functions.py  2016-01-11 
10:42:15.000000000 +0100
@@ -0,0 +1,65 @@
+"""Check that Python 3.5's async functions are properly analyzed by Pylint."""
+# pylint: disable=missing-docstring,invalid-name,too-few-public-methods
+# pylint: disable=using-constant-test
+
+async def next(): # [redefined-builtin]
+    pass
+
+async def some_function(arg1, arg2): # [unused-argument]
+    await arg1
+
+
+class OtherClass(object):
+
+    @staticmethod
+    def test():
+        return 42
+
+
+class Class(object):
+
+    async def some_method(self):
+        super(OtherClass, self).test() # [bad-super-call]
+
+
+# +1: [too-many-arguments,too-many-return-statements, too-many-branches]
+async def complex_function(this, function, has, more, arguments, than,
+                           one, _, should, have):
+    if 1:
+        return this
+    elif 1:
+        return function
+    elif 1:
+        return has
+    elif 1:
+        return more
+    elif 1:
+        return arguments
+    elif 1:
+        return than
+    try:
+        return one
+    finally:
+        pass
+    if 2:
+        return should
+    while True:
+        pass
+    if 1:
+        return have
+    elif 2:
+        return function
+    elif 3:
+        pass
+
+
+# +1: [duplicate-argument-name,dangerous-default-value]
+async def func(a, a, b=[]):
+    return a, b
+
+
+# +1: [empty-docstring, blacklisted-name]
+async def foo():
+    ""
+
+    
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pylint-1.5.2/pylint/test/functional/async_functions.rc 
new/pylint-1.5.3/pylint/test/functional/async_functions.rc
--- old/pylint-1.5.2/pylint/test/functional/async_functions.rc  1970-01-01 
01:00:00.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/functional/async_functions.rc  2016-01-09 
21:13:05.000000000 +0100
@@ -0,0 +1,2 @@
+[testoptions]
+min_pyver=3.5
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pylint-1.5.2/pylint/test/functional/async_functions.txt 
new/pylint-1.5.3/pylint/test/functional/async_functions.txt
--- old/pylint-1.5.2/pylint/test/functional/async_functions.txt 1970-01-01 
01:00:00.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/functional/async_functions.txt 2016-01-09 
21:13:05.000000000 +0100
@@ -0,0 +1,10 @@
+redefined-builtin:5:next:"Redefining built-in 'next'"
+unused-argument:8:some_function:"Unused argument 'arg2'"
+bad-super-call:22:Class.some_method:"Bad first argument 'OtherClass' given to 
super()"
+too-many-arguments:26:complex_function:Too many arguments (10/5)
+too-many-branches:26:complex_function:Too many branches (13/12)
+too-many-return-statements:26:complex_function:Too many return statements 
(10/6)
+dangerous-default-value:57:func:Dangerous default value [] as argument
+duplicate-argument-name:57:func:Duplicate argument name a in function 
definition
+blacklisted-name:62:foo:Black listed name "foo"
+empty-docstring:62:foo:Empty function docstring
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/pylint/test/functional/unneeded_not.py 
new/pylint-1.5.3/pylint/test/functional/unneeded_not.py
--- old/pylint-1.5.2/pylint/test/functional/unneeded_not.py     2015-12-10 
16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/functional/unneeded_not.py     2016-01-11 
10:42:15.000000000 +0100
@@ -1,6 +1,6 @@
 """Check exceeding negations in boolean expressions trigger warnings"""
 
-# pylint: disable=singleton-comparison, too-many-branches
+# pylint: disable=singleton-comparison, too-many-branches, 
too-few-public-methods
 
 def unneeded_not():
     """This is not ok
@@ -49,3 +49,9 @@
         pass
     if not 2 <= someint < 3 < 4:
         pass
+
+class Klass(object):
+    """This is also ok"""
+    def __ne__(self, other):
+        return not self == other
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pylint-1.5.2/pylint/test/functional/wrong_import_order.py 
new/pylint-1.5.3/pylint/test/functional/wrong_import_order.py
--- old/pylint-1.5.2/pylint/test/functional/wrong_import_order.py       
2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/functional/wrong_import_order.py       
2016-01-11 10:42:04.000000000 +0100
@@ -1,5 +1,9 @@
 """Checks import order rule"""
 # pylint: disable=unused-import,relative-import,ungrouped-imports,import-error
+try:
+    from six.moves import configparser
+except ImportError:
+    import configparser
 
 import six
 import os.path  # [wrong-import-order]
@@ -7,4 +11,5 @@
 import sys  # [wrong-import-order]
 import datetime  # [wrong-import-order]
 import unused_import
+import totally_missing
 import astroid
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pylint-1.5.2/pylint/test/functional/wrong_import_order.txt 
new/pylint-1.5.3/pylint/test/functional/wrong_import_order.txt
--- old/pylint-1.5.2/pylint/test/functional/wrong_import_order.txt      
2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/functional/wrong_import_order.txt      
2016-01-11 10:40:13.000000000 +0100
@@ -1,3 +1,3 @@
-wrong-import-order:5::standard import "import os.path" comes before "import 
six"
-wrong-import-order:7::standard import "import sys" comes before "import six"
-wrong-import-order:8::standard import "import datetime" comes before "import 
six"
+wrong-import-order:9::standard import "import os.path" comes before "from 
six.moves import configparser"
+wrong-import-order:11::standard import "import sys" comes before "from 
six.moves import configparser"
+wrong-import-order:12::standard import "import datetime" comes before "from 
six.moves import configparser"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pylint-1.5.2/pylint/test/functional/yield_inside_async_function.py 
new/pylint-1.5.3/pylint/test/functional/yield_inside_async_function.py
--- old/pylint-1.5.2/pylint/test/functional/yield_inside_async_function.py      
2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/functional/yield_inside_async_function.py      
2016-01-09 21:13:05.000000000 +0100
@@ -1,5 +1,5 @@
 """Test that `yield` or `yield from` can't be used inside an async function."""
-# pylint: disable=missing-docstring
+# pylint: disable=missing-docstring, unused-variable
 
 async def good_coro():
     def _inner():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pylint-1.5.2/pylint/test/regrtest_data/syntax_error.py 
new/pylint-1.5.3/pylint/test/regrtest_data/syntax_error.py
--- old/pylint-1.5.2/pylint/test/regrtest_data/syntax_error.py  1970-01-01 
01:00:00.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/regrtest_data/syntax_error.py  2016-01-09 
21:13:05.000000000 +0100
@@ -0,0 +1 @@
+class A extends B {}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/pylint/test/test_functional.py 
new/pylint-1.5.3/pylint/test/test_functional.py
--- old/pylint-1.5.2/pylint/test/test_functional.py     2015-12-10 
16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/test_functional.py     2016-01-09 
21:13:05.000000000 +0100
@@ -88,7 +88,7 @@
     def on_set_current_module(self, module, filepath):
         self.messages = []
 
-    def display_results(self, layout):
+    def display_reports(self, layout):
         """Ignore layouts."""
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/pylint/test/test_self.py 
new/pylint-1.5.3/pylint/test/test_self.py
--- old/pylint-1.5.2/pylint/test/test_self.py   2015-12-21 00:52:14.000000000 
+0100
+++ new/pylint-1.5.3/pylint/test/test_self.py   2016-01-11 10:42:15.000000000 
+0100
@@ -12,6 +12,7 @@
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 
 import contextlib
+import json
 import re
 import sys
 import os
@@ -56,7 +57,7 @@
         for rep in self._reporters:
             rep.handle_message(msg)
 
-    def display_results(self, layout):
+    def display_reports(self, layout):
         pass
 
     @property
@@ -296,6 +297,51 @@
                           expected_output=expected)
                            
 
+    def test_json_report_when_file_has_syntax_error(self):
+        out = six.StringIO()
+        module = join(HERE, 'regrtest_data', 'syntax_error.py')
+        self._runtest([module], code=2, reporter=JSONReporter(out))
+        output = json.loads(out.getvalue())
+        self.assertIsInstance(output, list)
+        self.assertEqual(len(output), 1)
+        self.assertIsInstance(output[0], dict)
+        expected = {
+            "obj": "",
+            "column": 0,
+            "line": 1,
+            "type": "error",
+            "symbol": "syntax-error",
+            "module": "syntax_error"
+        }
+        message = output[0]
+        for key, value in expected.items():
+            self.assertIn(key, message)
+            self.assertEqual(message[key], value)
+        self.assertIn("invalid syntax", message["message"].lower())
+
+    def test_json_report_when_file_is_missing(self):
+        out = six.StringIO()
+        module = join(HERE, 'regrtest_data', 'totally_missing.py')
+        self._runtest([module], code=1, reporter=JSONReporter(out))
+        output = json.loads(out.getvalue())
+        self.assertIsInstance(output, list)
+        self.assertEqual(len(output), 1)
+        self.assertIsInstance(output[0], dict)
+        expected = {
+            "obj": "",
+            "column": 0,
+            "line": 1,
+            "type": "fatal",
+            "symbol": "fatal",
+            "module": module
+        }
+        message = output[0]
+        for key, value in expected.items():
+            self.assertIn(key, message)
+            self.assertEqual(message[key], value)
+        self.assertTrue(message['message'].startswith("No module named"))
+
+
 
 if __name__ == '__main__':
     unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/pylint/test/unittest_reporters_json.py 
new/pylint-1.5.3/pylint/test/unittest_reporters_json.py
--- old/pylint-1.5.2/pylint/test/unittest_reporters_json.py     2015-12-10 
16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/unittest_reporters_json.py     2016-01-09 
21:13:05.000000000 +0100
@@ -40,7 +40,8 @@
         linter.add_message('line-too-long', line=1, args=(1, 2))
 
         # we call this method because we didn't actually run the checkers
-        reporter.display_results(None)
+        reporter.display_messages(None)
+
         expected_result = [[
             ("column", 0),
             ("line", 1),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/pylint/test/unittest_reporting.py 
new/pylint-1.5.3/pylint/test/unittest_reporting.py
--- old/pylint-1.5.2/pylint/test/unittest_reporting.py  2015-12-21 
00:52:14.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/unittest_reporting.py  2016-01-11 
10:42:15.000000000 +0100
@@ -123,7 +123,7 @@
         linter.open()
         linter.set_current_module('0123')
         linter.add_message('lowercase-l-suffix', line=1)
-        linter.reporter.display_results(Section())
+        linter.reporter.display_messages(Section())
         self.assertEqual(output.getvalue().splitlines(), expected)
 
     @unittest.expectedFailure
@@ -169,8 +169,26 @@
         linter.add_message('bad-whitespace', line=1,
                            args=('Exactly one', 'required', 'before',
                                  'comparison', 'a< 5: print "zero"'))
-        linter.reporter.display_results(Section())
+        linter.reporter.display_reports(Section())
         self.assertMultiLineEqual(output.getvalue(), expected)
 
+    def test_display_results_is_renamed(self):
+        class CustomReporter(TextReporter):
+            def _display(self, layout):
+                return None
+
+        reporter = CustomReporter()
+        if __pkginfo__.numversion >= (2, 0):
+            with self.assertRaises(AttributeError):
+                reporter.display_results
+        else:
+            with warnings.catch_warnings(record=True) as cm:
+                warnings.simplefilter("always")
+                reporter.display_results(Section())
+
+            self.assertEqual(len(cm), 1)
+            self.assertIsInstance(cm[0].message, DeprecationWarning)
+
+
 if __name__ == '__main__':
     unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/pylint/testutils.py 
new/pylint-1.5.3/pylint/testutils.py
--- old/pylint-1.5.2/pylint/testutils.py        2015-12-21 00:52:14.000000000 
+0100
+++ new/pylint-1.5.3/pylint/testutils.py        2016-01-11 10:42:15.000000000 
+0100
@@ -125,7 +125,7 @@
         self.reset()
         return result
 
-    def display_results(self, layout):
+    def display_reports(self, layout):
         """ignore layouts"""
 
     _display = None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/pylint.egg-info/PKG-INFO 
new/pylint-1.5.3/pylint.egg-info/PKG-INFO
--- old/pylint-1.5.2/pylint.egg-info/PKG-INFO   2015-12-21 01:21:34.000000000 
+0100
+++ new/pylint-1.5.3/pylint.egg-info/PKG-INFO   2016-01-11 11:07:49.000000000 
+0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: pylint
-Version: 1.5.2
+Version: 1.5.3
 Summary: python code static checker
 Home-page: http://www.pylint.org
 Author: Logilab
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/pylint.egg-info/SOURCES.txt 
new/pylint-1.5.3/pylint.egg-info/SOURCES.txt
--- old/pylint-1.5.2/pylint.egg-info/SOURCES.txt        2015-12-21 
01:21:34.000000000 +0100
+++ new/pylint-1.5.3/pylint.egg-info/SOURCES.txt        2016-01-11 
11:07:49.000000000 +0100
@@ -178,6 +178,9 @@
 pylint/test/functional/assert_on_tuple.txt
 pylint/test/functional/assigning_non_slot.py
 pylint/test/functional/assigning_non_slot.txt
+pylint/test/functional/async_functions.py
+pylint/test/functional/async_functions.rc
+pylint/test/functional/async_functions.txt
 pylint/test/functional/attribute_defined_outside_init.py
 pylint/test/functional/attribute_defined_outside_init.txt
 pylint/test/functional/bad_builtin.py
@@ -784,6 +787,7 @@
 pylint/test/regrtest_data/precedence_test.py
 pylint/test/regrtest_data/py3k_error_flag.py
 pylint/test/regrtest_data/special_attr_scope_lookup_crash.py
+pylint/test/regrtest_data/syntax_error.py
 pylint/test/regrtest_data/try_finally_disable_msg_crash.py
 pylint/test/regrtest_data/wrong_import_position.py
 pylint/test/regrtest_data/absimp/__init__.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-1.5.2/pylint.egg-info/requires.txt 
new/pylint-1.5.3/pylint.egg-info/requires.txt
--- old/pylint-1.5.2/pylint.egg-info/requires.txt       2015-12-21 
01:21:34.000000000 +0100
+++ new/pylint-1.5.3/pylint.egg-info/requires.txt       2016-01-11 
11:07:49.000000000 +0100
@@ -1,3 +1,3 @@
-astroid>=1.4.1
+astroid>=1.4.1,<1.5.0
 six
 colorama


Reply via email to