Full changelog#

What's New in Pylint 1.8.1?#

Release date: 2017-12-15

  • Wrong version number in __pkginfo__.

What's New in Pylint 1.8?#

Release date: 2017-12-15

  • Respect disable=... in config file when running with --py3k.

  • New warning shallow-copy-environ added

    Shallow copy of os.environ doesn't work as people may expect. os.environ is not a dict object but rather a proxy object, so any changes made on copy may have unexpected effects on os.environ

    Instead of copy.copy(os.environ) method os.environ.copy() should be used.

    See https://bugs.python.org/issue15373 for details.

    Closes #1301

  • Do not display no-absolute-import warning multiple times per file.

  • trailing-comma-tuple refactor check now extends to assignment with

    more than one element (such as lists)

    Closes #1713

  • Fixing u'' string in superfluous-parens message

    Closes #1420

  • abstract-class-instantiated is now emitted for all inference paths.

    Closes #1673

  • Add set of predefined naming style to ease configuration of checking naming conventions.

    Closes #1013

  • Added a new check, keyword-arg-before-vararg

    This is emitted for function definitions in which keyword arguments are placed before variable positional arguments (*args).

    This may lead to args list getting modified if keyword argument's value is not provided in the function call assuming it will take default value provided in the definition.

  • The invalid-name check contains the name of the template that caused the failure

    Closes #1176

  • Using the -j flag won't start more child linters than needed.

    Closes #1614

  • Fix a false positive with bad-python3-import on relative imports

    Closes #1608

  • Added a new Python 3 check, non-ascii-bytes-literals

    Closes #1545

  • Added a couple of new Python 3 checks for accessing dict methods in non-iterable context

  • Protocol checks (not-a-mapping, not-an-iterable and co.) aren't emitted on classes with dynamic getattr

  • Added a new warning, 'bad-thread-instantiation'

    This message is emitted when the threading.Thread class does not receive the target argument, but receives just one argument, which is by default the group parameter.

    Closes #1327

  • In non-quiet mode, absolute path of used config file is logged to standard error.

    Closes #1519

  • Raise meaningful exception for invalid reporter class being selected

    When unknown reporter class will be selected as Pylint reporter, meaningful error message would be raised instead of bare ImportError or AttribueError related to module or reporter class being not found.

    Closes #1388

  • Added a new Python 3 check for accessing removed functions from itertools like izip or ifilterfalse

  • Added a new Python 3 check for accessing removed fields from the types module like UnicodeType or XRangeType

  • Added a new Python 3 check for declaring a method next that would have been treated as an iterator in Python 2 but a normal function in Python 3.

  • Added a new key-value pair in json output. The key is message-id and the value is the message id.

    Closes #1512

  • Added a new Python 3.0 check for raising a StopIteration inside a generator. The check about raising a StopIteration inside a generator is also valid if the exception raised inherit from StopIteration.

    Closes #1385

  • Added a new warning, raising-format-tuple, to detect multi-argument exception construction instead of message string formatting.

  • Added a new check for method of logging module that concatenate string via + operator

    Closes #1479

  • Added parameter for limiting number of suggestions in spellchecking checkers

  • Fix a corner-case in consider-using-ternary checker.

    When object A used in X and A or B was falsy in boolean context, Pylint incorrectly emitted non-equivalent ternary-based suggestion. After a change message is correctly not emitted for this case.

    Closes #1559

  • Added suggestion-mode configuration flag. When flag is enabled, informational message is emitted instead of cryptic error message for attributes accessed on c-extensions.

    Closes #1466

  • Fix a false positive useless-super-delegation message when parameters default values are different from those used in the base class.

    Closes #1085

  • Disabling 'wrong-import-order', 'wrong-import-position', or 'ungrouped-imports' for a single line now prevents that line from triggering violations on subsequent lines.

    Closes #1336

  • Added a new Python check for inconsistent return statements inside method or function.

    Closes #1267

  • Fix superfluous-parens false positive related to handling logical statements involving in operator.

    Closes #574

  • function-redefined message is no longer emitted for functions and methods which names matches dummy variable name regular expression.

    Closes #1369

  • Fix missing-param-doc and missing-type-doc false positives when mixing Args and Keyword Args in Google docstring.

    Closes #1409

  • Fix missing-docstring false negatives when modules, classes, or methods consist of compound statements that exceed the docstring-min-length

  • Fix useless-else-on-loop false positives when break statements are deeply nested inside loop.

    Closes #1661

  • Fix no wrong-import-order message emitted on ordering of first and third party libraries. With this fix, pylint distinguishes third and first party modules when checking import order.

    Closes #1702

  • Fix pylint disable=fixme directives ignored for comments following the last statement in a file.

    Closes #1681

  • Fix line-too-long message deactivated by wrong disable directive. The directive disable=fixme doesn't deactivate anymore the emission of line-too-long message for long commented lines.

    Closes #1741

  • If the rcfile specified on the command line doesn't exist, then an IOError exception is raised.

    Closes #1747

  • Fix the wrong scope of the disable= directive after a commented line. For example when a disable=line-too-long directive is at the end of a long commented line, it no longer disables the emission of line-too-long message for lines that follow.

    Closes #1742