ChangeLog for Pylint ==================== -- * Port source code to be Python 2/3 compatible. This drops the need for 2to3, but does drop support for Python 2.5. * Each message now comes with a confidence level attached, and can be filtered base on this level. This allows to filter out all messages that were emitted even though an inference failure happened during checking. * Improved presenting unused-import message. Closes issue #293. * Add new checker for finding spelling errors. New messages: wrong-spelling-in-comment, wrong-spelling-in-docstring. New options: spelling-dict, spelling-ignore-words. * Added new checks for line endings if they are mixed (LF vs CRLF) or if they are not as expected. New messages: mixed-line-endings, unexpected-line-ending-format. New option: expected-line-ending-format. * 'dangerous-default-value' no longer evaluates the value of the arguments, which could result in long error messages or sensitive data being leaked. Closes issue #282 * Fix a false positive with string formatting checker, when encountering a string which uses only position-based arguments. Closes issue #285. * Fix a false positive with string formatting checker, when using keyword argument packing. Closes issue #288. * Proper handle class level scope for lambdas. * Handle 'too-few-format-args' or 'too-many-format-args' for format strings with both named and positional fields. Closes issue #286. * Analyze only strings by the string format checker. Closes issue #287. * Properly handle nested format string fields. Closes issue #294. * Don't emit 'attribute-defined-outside-init' if the attribute was set by a function call in a defining method. Closes issue #192. * Properly handle unicode format strings for Python 2. Closes issue #296. * Don't emit 'import-error' if an import was protected by a try-except, which excepted ImportError. * Fix an 'unused-import' false positive, when the error was emitted for all the members imported with 'from import' form. Closes issue #304. * Don't emit 'invalid-name' when assigning a name in an ImportError handler. Closes issue #302. * Don't count branches from nested functions. * Fix a false positive with 'too-few-format-args', when the format strings contains duplicate manual position arguments. Closes issue #310. * fixme regex handles comments without spaces after the hash. Closes issue #311. * Don't emit 'unused-import' when a special object is imported (__all__, __doc__ etc.). Closes issue #309. * Look in the metaclass, if defined, for members not found in the current class. Closes issue #306. * Don't emit 'protected-access' if the attribute is accessed using a property defined at the class level. * Detect calls of the parent's __init__, through a binded super() call. * Check that a class has an explicitly defined metaclass before emitting 'old-style-class' for Python 2. * Emit 'catching-non-exception' for non-class nodes. Closes issue #303. * Order of reporting is consistent. * Add a new warning, 'boolean-datetime', emitted when an instance of 'datetime.time' is used in a boolean context. Closes issue #239. * Fix a crash which ocurred while checking for 'method-hidden', when the parent frame was something different than a function. * Generate html output for missing files. Closes issue #320. * Fix a false positive with 'too-many-format-args', when the format string contains mixed attribute access arguments and manual fields. Closes issue #322. 2014-07-26 -- 1.3.0 * Allow hanging continued indentation for implicitly concatenated strings. Closes issue #232. * PyLint works under Python 2.5 again, and its test suite passes. * Fix some false positives for the cellvar-from-loop warnings. Closes issue #233. * Return new astroid class nodes when the inferencer can detect that that result of a function invocation on a type (like `type` or `abc.ABCMeta`) is requested. Closes #205. * Emit 'undefined-variable' for undefined names when using the Python 3 `metaclass=` argument. * Checkers respect priority now. Close issue #229. * Fix a false positive regarding W0511. Closes issue #149. * Fix unused-import false positive with Python 3 metaclasses (#143). * Don't warn with 'bad-format-character' when encountering the 'a' format on Python 3. * Add multiple checks for PEP 3101 advanced string formatting: 'bad-format-string', 'missing-format-argument-key', 'unused-format-string-argument', 'format-combined-specification', 'missing-format-attribute' and 'invalid-format-index'. * Issue broad-except and bare-except even if the number of except handlers is different than 1. Fixes issue #113. * Issue attribute-defined-outside-init for all cases, not just for the last assignment. Closes issue #262. * Emit 'not-callable' when calling properties. Closes issue #268. * Fix a false positive with unbalanced iterable unpacking, when encountering starred nodes. Closes issue #273. * Add new checks, 'invalid-slice-index' and 'invalid-sequence-index' for invalid sequence and slice indices. * Add 'assigning-non-slot' warning, which detects assignments to attributes not defined in slots. * Don't emit 'no-name-in-module' for ignored modules. Closes issue #223. * Fix an 'unused-variable' false positive, where the variable is assigned through an import. Closes issue #196. * Definition order is considered for classes, function arguments and annotations. Closes issue #257. * Don't emit 'unused-variable' when assigning to a nonlocal. Closes issue #275. * Do not let ImportError propagate from the import checker, leading to crash in some namespace package related cases. Closes issue #203. * Don't emit 'pointless-string-statement' for attribute docstrings. Closes issue #193. * Use the proper mode for pickle when opening and writing the stats file. Closes issue #148. * Don't emit hidden-method message when the attribute has been monkey-patched, you're on your own when you do that. * Only emit attribute-defined-outside-init for definition within the same module as the offended class, avoiding to mangle the output in some cases. * Don't emit 'unnecessary-lambda' if the body of the lambda call contains call chaining. Closes issue #243. * Don't emit 'missing-docstring' when the actual docstring uses `.format`. Closes issue #281. 2014-04-30 -- 1.2.1 * Restore the ability to specify the init-hook option via the configuration file, which was accidentally broken in 1.2.0. * Add a new warning [bad-continuation] for badly indentend continued lines. * Emit [assignment-from-none] when the function contains bare returns. Fixes BitBucket issue #191. * Added a new warning for closing over variables that are defined in loops. Fixes Bitbucket issue #176. * Do not warn about \u escapes in string literals when Unicode literals are used for Python 2.*. Fixes BitBucket issue #151. * Extend the checking for unbalanced-tuple-unpacking and unpacking-non-sequence to instance attribute unpacking as well. * Fix explicit checking of python script (1.2 regression, #219) * Restore --init-hook, renamed accidentally into --init-hooks in 1.2.0 (#211) * Add 'indexing-exception' warning, which detects that indexing an exception occurs in Python 2 (behaviour removed in Python 3). 2014-04-18 -- 1.2.0 * Pass the current python paths to pylint process when invoked via epylint. Fixes BitBucket issue #133. * Add -i / --include-ids and -s / --symbols back as completely ignored options. Fixes BitBucket issue #180. * Extend the number of cases in which logging calls are detected. Fixes bitbucket issue #182. * Improve pragma handling to not detect pylint:* strings in non-comments. Fixes BitBucket issue #79. * Do not crash with UnknownMessage if an unknown message ID/name appears in disable or enable in the configuration. Patch by Cole Robinson. Fixes bitbucket issue #170. * Add new warning 'eval-used', checking that the builtin function `eval` was used. * Make it possible to show a naming hint for invalid name by setting include-naming-hint. Also make the naming hints configurable. Fixes BitBucket issue #138. * Added support for enforcing multiple, but consistent name styles for different name types inside a single module; based on a patch written by morbo@google.com. * Also warn about empty docstrings on overridden methods; contributed by sebastianu@google.com. * Also inspect arguments to constructor calls, and emit relevant warnings; contributed by sebastianu@google.com. * Added a new configuration option logging-modules to make the list of module names that can be checked for 'logging-not-lazy' et. al. configurable; contributed by morbo@google.com. * ensure init-hooks is evaluated before other options, notably load-plugins (#166) * Python 2.5 support restored: fixed small issues preventing pylint to run on python 2.5. Bitbucket issues #50 and #62. * bitbucket #128: pylint doesn't crash when looking for used-before-assignment in context manager assignments. * Add new warning, 'bad-reversed-sequence', for checking that the reversed() builtin receive a sequence (implements __getitem__ and __len__, without being a dict or a dict subclass) or an instance which implements __reversed__. * Mark `file` as a bad function when using python2 (closes #8). * Add new warning 'bad-exception-context', checking that `raise ... from ...` uses a proper exception context (None or an exception). * Enhance the check for 'used-before-assignment' to look for 'nonlocal' uses. * Emit 'undefined-all-variable' if a package's __all__ variable contains a missing submodule (closes #126). * Add a new warning 'abstract-class-instantiated' for checking that abstract classes created with `abc` module and with abstract methods are instantied. * Do not warn about 'return-arg-in-generator' in Python 3.3+. * Do not warn about 'abstract-method' when the abstract method is implemented through assignment (#155). * Improve cyclic import detection in the case of packages, patch by Buck Golemon * Add new warnings for checking proper class __slots__: 'invalid-slots-object' and 'invalid-slots'. * Search for rc file in `~/.config/pylintrc` if `~/.pylintrc` doesn't exists (#121) * Don't register the newstyle checker w/ python >= 3 * Fix unused-import false positive w/ augment assignment (#78) * Fix access-member-before-definition false negative wrt aug assign (#164) * Do not attempt to analyze non python file, eg .so file (#122) 2013-12-22 -- 1.1.0 * Add new check for use of deprecated pragma directives "pylint:disable-msg" or "pylint:enable-msg" (I0022, deprecated-pragma) which was previously emmited as a regular warn(). * Avoid false used-before-assignment for except handler defined identifier used on the same line (#111). * Combine 'no-space-after-operator', 'no-space-after-comma' and 'no-space-before-operator' into a new warning 'bad-whitespace'. * Add a new warning 'superfluous-parens' for unnecessary parentheses after certain keywords. * Fix a potential crash in the redefine-in-handler warning if the redefined name is a nested getattr node. * Add a new option for the multi-statement warning to allow single-line if statements. * Add 'bad-context-manager' error, checking that '__exit__' special method accepts the right number of arguments. * Run pylint as a python module 'python -m pylint' (anatoly techtonik). * Check for non-exception classes inside an except clause. * epylint support options to give to pylint after the file to analyze and have basic input validation (bitbucket #53 and #54), patches provided by felipeochoa and Brian Lane. * Added a new warning, 'non-iterator-returned', for non-iterators returned by '__iter__'. * Add new checks for unpacking non-sequences in assignments (unpacking-non-sequence) as well as unbalanced tuple unpacking (unbalanced-tuple-unpacking). * useless-else-on-loop not emited if there is a break in the else clause of inner loop (#117). * don't mark `input` as a bad function when using python3 (#110). * badly-implemented-container caused several problems in its current implementation. Deactivate it until we have something better. See #112 for instance. * Use attribute regexp for properties in python3, as in python2 * Create the PYLINTHOME directory when needed, it might fail and lead to spurious warnings on import of pylint.config. * Fix setup.py so that pylint properly install on Windows when using python3 * Various documentation fixes and enhancements * Fix issue #55 (false-positive trailing-whitespace on Windows) 2013-08-06 -- 1.0.0 * Add check for the use of 'exec' function * New --msg-template option to control output, deprecating "msvc" and "parseable" output formats as well as killing `--include-ids` and `--symbols` options * Do not emit [fixme] for every line if the config value 'notes' is empty, but [fixme] is enabled. * Emit warnings about lines exceeding the column limit when those lines are inside multiline docstrings. * Do not double-check parameter names with the regex for parameters and inline variables. * Added a new warning missing-final-newline (C0304) for files missing the final newline. * Methods that are decorated as properties are now treated as attributes for the purposes of name checking. * Names of derived instance class member are not checked any more. * Names in global statements are now checked against the regular expression for constants. * For toplevel name assignment, the class name regex will be used if pylint can detect that value on the right-hand side is a class (like collections.namedtuple()). * Simplified invalid-name message * Added a new warning invalid-encoded-data (W0512) for files that contain data that cannot be decoded with the specified or default encoding. * New warning bad-open-mode (W1501) for calls to open (or file) that specify invalid open modes (Original implementation by Sasha Issayev). * New warning old-style-class (C1001) for classes that do not have any base class. * Add new name type 'class_attribute' for attributes defined in class scope. By default, allow both const and variable names. * New warning trailing-whitespace (C0303) that warns about trailing whitespace. * Added a new warning unpacking-in-except (W0712) about unpacking exceptions in handlers, which is unsupported in Python 3. * Add a configuration option for missing-docstring to optionally exempt short functions/methods/classes from the check. * Add the type of the offending node to missing-docstring and empty-docstring. * New utility classes for per-checker unittests in testutils.py * Do not warn about redefinitions of variables that match the dummy regex. * Do not treat all variables starting with _ as dummy variables, only _ itself. * Make the line-too-long warning configurable by adding a regex for lines for with the length limit should not be enforced * Do not warn about a long line if a pylint disable option brings it above the length limit * Do not flag names in nested with statements as undefined. * Added a new warning 'old-raise-syntax' for the deprecated syntax raise Exception, args * Support for PEP 3102 and new missing-kwoa (E1125) message for missing mandatory keyword argument (logilab.org's #107788) * Fix spelling of max-branchs option, now max-branches * Added a new base class and interface for checkers that work on the tokens rather than the syntax, and only tokenize the input file once. * Follow astng renaming to astroid * bitbucket #37: check for unbalanced unpacking in assignments * bitbucket #25: fix incomplete-protocol false positive for read-only containers like tuple * bitbucket #16: fix False positive E1003 on Python 3 for argument-less super() * bitbucket #6: put back documentation in source distribution * bitbucket #15: epylint shouldn't hang anymore when there is a large output on pylint'stderr * bitbucket #7: fix epylint w/ python3 * bitbucket #3: remove string module from the default list of deprecated modules 2013-04-25 -- 0.28.0 * bitbucket #1: fix "dictionary changed size during iteration" crash * #74013: new E1310[bad-str-strip-call] message warning when a call to a {l,r,}strip method contains duplicate characters (patch by Torsten Marek) * #123233: new E0108[duplicate-argument-name] message reporting duplicate argument names * #81378: emit W0120[useless-else-on-loop] for loops without break * #124660: internal dependencies should not appear in external dependencies report * #124662: fix name error causing crash when symbols are included in output messages * #123285: apply pragmas for warnings attached to lines to physical source code lines * #123259: do not emit E0105 for yield expressions inside lambdas * #123892: don't crash when attempting to show source code line that can't be encoded with the current locale settings * Simplify checks for dangerous default values by unifying tests for all different mutable compound literals. * Improve the description for E1124[redundant-keyword-arg] 2013-02-26 -- 0.27.0 * #20693: replace pylint.el by Ian Eure version (patch by J.Kotta) * #105327: add support for --disable=all option and deprecate the 'disable-all' inline directive in favour of 'skip-file' (patch by A.Fayolle) * #110840: add messages I0020 and I0021 for reporting of suppressed messages and useless suppression pragmas. (patch by Torsten Marek) * #112728: add warning E0604 for non-string objects in __all__ (patch by Torsten Marek) * #120657: add warning W0110/deprecated-lambda when a map/filter of a lambda could be a comprehension (patch by Martin Pool) * #113231: logging checker now looks at instances of Logger classes in addition to the base logging module. (patch by Mike Bryant) * #111799: don't warn about octal escape sequence, but warn about \o which is not octal in Python (patch by Martin Pool) * #110839: bind to Run button in pylint-gui * #115580: fix erroneous W0212 (access to protected member) on super call (patch by Martin Pool) * #110853: fix a crash when an __init__ method in a base class has been created by assignment rather than direct function definition (patch by Torsten Marek) * #110838: fix pylint-gui crash when include-ids is activated (patch by Omega Weapon) * #112667: fix emission of reimport warnings for mixed imports and extend the testcase (patch by Torsten Marek) * #112698: fix crash related to non-inferable __all__ attributes and invalid __all__ contents (patch by Torsten Marek) * Python 3 related fixes: * #110213: fix import of checkers broken with python 3.3, causing "No such message id W0704" breakage * #120635: redefine cmp function used in pylint.reporters * Include full warning id for I0020 and I0021 and make sure to flush warnings after each module, not at the end of the pylint run. (patch by Torsten Marek) * Changed the regular expression for inline options so that it must be preceeded by a # (patch by Torsten Marek) * Make dot output for import graph predictable and not depend on ordering of strings in hashes. (patch by Torsten Marek) * Add hooks for import path setup and move pylint's sys.path modifications into them. (patch by Torsten Marek) 2012-10-05 -- 0.26.0 * #106534: add --ignore-imports option to code similarity checking and 'symilar' command line tool (patch by Ry4an Brase) * #104571: check for anomalous backslash escape, introducing new W1401 and W1402 messages (patch by Martin Pool) * #100707: check for boolop being used as exception class, introducing new W0711 message (patch by Tim Hatch) * #4014: improve checking of metaclass methods first args, introducing new C0204 message (patch by lothiraldan@gmail.com finalized by sthenault) * #4685: check for consistency of a module's __all__ variable, introducing new E0603 message * #105337: allow custom reporter in output-format (patch by Kevin Jing Qiu) * #104420: check for protocol completness and avoid false R0903 (patch by Peter Hammond) * #100654: fix grammatical error for W0332 message (using 'l' as long int identifier) * #103656: fix W0231 false positive for missing call to object.__init__ (patch by lothiraldan@gmail.com) * #63424: fix similarity report disabling by properly renaming it to RP0801 * #103949: create a console_scripts entry point to be used by easy_install, buildout and pip * fix cross-interpreter issue (non compatible access to __builtins__) * stop including tests files in distribution, they causes crash when installed with python3 (#72022, #82417, #76910) 2012-07-17 -- 0.25.2 * #93591: Correctly emit warnings about clobbered variable names when an except handler contains a tuple of names instead of a single name. (patch by tmarek@google.com) * #7394: W0212 (access to protected member) not emited on assigments (patch by lothiraldan@gmail.com) * #18772; no prototype consistency check for mangled methods (patch by lothiraldan@gmail.com) * #92911: emit W0102 when sets are used as default arguments in functions (patch by tmarek@google.com) * #77982: do not emit E0602 for loop variables of comprehensions used as argument values inside a decorator (patch by tmarek@google.com) * #89092: don't emit E0202 (attribute hiding a method) on @property methods * #92584: fix pylint-gui crash due to internal API change * #87192: fix crash when decorators are accessed through more than one dot (for instance @a.b is fine, @a.b.c crash) * #88914: fix parsing of --generated-members options, leading to crash when using a regexp value set * fix potential crashes with utils.safe_infer raising InferenceError 2011-12-08 -- 0.25.1 * #81078: Warn if names in exception handlers clobber overwrite existing names (patch by tmarek@google.com) * #81113: Fix W0702 messages appearing with the wrong line number. (patch by tmarek@google.com) * #50461, #52020, #51222: Do not issue warnings when using 2.6's property.setter/deleter functionality (patch by dneil@google.com) * #9188, #4024: Do not trigger W0631 if a loop variable is assigned in the else branch of a for loop. 2011-10-07 -- 0.25.0 * #74742: make allowed name for first argument of class method configurable (patch by Google) * #74087: handle case where inference of a module return YES; this avoid some cases of "TypeError: '_Yes' object does not support indexing" (patch by Google) * #74745: make "too general" exception names configurable (patch by Google) * #74747: crash occurs when lookup up a special attribute in class scope (patch by google) * #76920: crash if on eg "pylint --rcfile" (patch by Torsten Marek) * #77237: warning for E0202 may be very misleading * #73941: HTML report messages table is badly rendered 2011-07-18 -- 0.24.0 * #69738: add regular expressions support for "generated-members" * ids of logging and string_format checkers have been changed: logging: 65 -> 12, string_format: 99 -> 13 Also add documentation to say that ids of range 1-50 shall be reserved to pylint internal checkers * #69993: Additional string format checks for logging module: check for missing arguments, too many arguments, or invalid string formats in the logging checker module. Contributed by Daniel Arena * #69220: add column offset to the reports. If you've a custom reporter, this change may break it has now location gain a new item giving the column offset. * #60828: Fix false positive in reimport check * #70495: absolute imports fail depending on module path (patch by Jacek Konieczny) * #22273: Fix --ignore option documentation to match reality 2011-01-11 -- 0.23.0 * documentation update, add manpages * several performance improvements * finalize python3 support * new W0106 warning 'Expression "%s" is assigned to nothing' * drop E0501 and E0502 messages about wrong source encoding: not anymore interesting since it's a syntax error for python >= 2.5 and we now only support this python version and above. * don't emit W0221 or W0222 when methods as variable arguments (eg *arg and/or **args). Patch submitted by Charles Duffy. 2010-11-15 -- 0.22.0 * python versions: minimal python3.x support; drop python < 2.5 support 2010-10-27 -- 0.21.4 * fix #48066: pylint crashes when redirecting output containing non-ascii characters * fix #19799: "pylint -blah" exit with status 2 * update documentation 2010-09-28 -- 0.21.3 * restored python 2.3 compatibility. Along with logilab-astng 0.21.3 and logilab-common 0.52, this will much probably be the latest release supporting python < 2.5. 2010-08-26 -- 0.21.2 * fix #36193: import checker raise exception on cyclic import * fix #28796: regression in --generated-members introduced pylint 0.20 * some documentation cleanups 2010-06-04 -- 0.21.1 * fix #28962: pylint crash with new options, due to missing stats data while writing the Statistics by types report * updated man page to 0.21 or greater command line usage (fix debian #582494) 2010-05-11 -- 0.21.0 * command line updated (closes #9774, #9787, #9992, #22962): * all enable-* / disable-* options have been merged into --enable / --disable * BACKWARD INCOMPATIBLE CHANGE: short name of --errors-only becomes -E, -e being affected to --enable * pylint --help output much simplified, with --long-help available to get the complete one * revisited gui, thanks to students from Toronto university (they are great contributors to this release!) * fix #21591: html reporter produces no output if reports is set to 'no' * fix #4581: not Missing docstring (C0111) warning if a method is overridden * fix #4683: Non-ASCII characters count double if utf8 encode * fix #9018: when using defining-attr-method, method order matters * fix #4595: Comma not followed by a space should not occurs on trailing comma in list/tuple/dict definition * fix #22585: [Patch] fix man warnings for pyreverse.1 manpage * fix #20067: AttributeError: 'NoneType' object has no attribute 'name' with with 2010-03-01 -- 0.20.0 * fix #19498: fix windows batch file * fix #19339: pylint.el : non existing py-mod-map (closes Debian Bug report logs - #475939) * implement #18860, new W0199 message on assert (a, b) * implement #9776, 'W0150' break or return statement in finally block may swallow exception. * fix #9263, __init__ and __new__ are checked for unused arguments * fix #20991, class scope definitions ignored in a genexpr * fix #5975, Abstract intermediate class not recognized as such * fix #5977, yield and return statement have their own counters, no more R0911 (Too many return statements) when a function have many yield stamtements * implement #5564, function / method arguments with leading "_" are ignored in arguments / local variables count. * implement #9982, E0711 specific error message when raising NotImplemented * remove --cache-size option 2009-12-18 -- 0.19.0 * implement #18947, #5561: checker for function arguments * include James Lingard string format checker * include simple message (ids) listing by Vincent Férotin (#9791) * --errors-only does not hide fatal error anymore * include james Lingard patches for ++/-- and duplicate key in dicts * include James Lingard patches for function call arguments checker * improved flymake code and doc provided by Derek Harland * refactor and fix the imports checker * fix #18862: E0601 false positive with lambda functions * fix #8764: More than one statement on a single line false positive with try/except/finally * fix #9215: false undefined variable error in lambda function * fix for w0108 false positive (Nathaniel) * fix test/fulltest.sh * #5821 added a utility function to run pylint in another process (patch provide by Vincent Férotin) 2009-03-25 -- 0.18.0 * tests ok with python 2.4, 2.5, 2.6. 2.3 not tested * fix #8687, W0613 false positive on inner function * fix #8350, C0322 false positive on multi-line string * fix #8332: set E0501 line no to the first line where non ascii character has been found * avoid some E0203 / E0602 false negatives by detecting respectively AttributeError / NameError * implements #4037: don't issue W0142 (* or ** magic) when they are barely passed from */** arguments * complete #5573: more complete list of special methods, also skip W0613 for python internal method * don't show information messages by default * integration of Yuen Ho Wong's patches on emacs lisp files 2009-03-19 -- 0.17.0 * semicolon check : move W0601 to W0301 * remove rpython : remove all rpython checker, modules and tests * astng 0.18 compatibility: support for _ast module modifies interfaces 2009-01-28 -- 0.16.0 * change [en|dis]able-msg-cat options: only accept message categories identified by their first letter (eg IRCWEF) without the need for comma as separator * add epylint.bat script to fix Windows installation * setuptools/easy_install support * include a modified version of Maarten ter Huurne patch to avoid W0613 warning on arguments from overridden method * implement #5575 drop dumb W0704 message) by adding W0704 to ignored messages by default * new W0108 message, checking for suspicious lambda (provided by Nathaniel Manista) * fix W0631, false positive reported by Paul Hachmann * fix #6951: false positive with W0104 * fix #6949 * patches by Mads Kiilerich: * implement #4691, make pylint exits with a non zero return status if any messages other then Information are issued * fix #3711, #5626 (name resolution bug w/ decorator and class members) * fix #6954 2008-10-13 -- 0.15.2 * fix #5672: W0706 weirdness ( W0706 removed ) * fix #5998: documentation points to wrong url for mailing list * fix #6022: no error message on wrong module names * fix #6040: pytest doesn't run test/func_test.py 2008-09-15 -- 0.15.1 * fix #4910: default values are missing in manpage * fix #5991: missing files in 0.15.0 tarball * fix #5993: epylint should work with python 2.3 2008-09-10 -- 0.15.0 * include pyreverse package and class diagram generation * included Stefan Rank's patch to deal with 2.4 relative import * included Robert Kirkpatrick's tutorial and typos fixes * fix bug in reenabling message * fix #2473: invoking pylint on __init__.py (hopefully) * typecheck: acquired-members option has been dropped in favor of the more generic generated-members option. If the zope option is set, the behaviour is now to add some default values to generated-members. * flymake integration: added bin/epylint and elisp/pylint-flymake.el 2008-01-14 -- 0.14.0 * fix #3733: Messages (dis)appear depending on order of file names * fix #4026: pylint.el should require compile * fix a bug in colorized reporter, spotted by Dave Borowitz * applied patch from Stefan Rank to avoid W0410 false positive when multiple "from __future__" import statements * implement #4012: flag back tick as deprecated (new W0333 message) * new ignored-class option on typecheck checker allowing to skip members checking based on class name (patch provided by Thomas W Barr) 2007-06-07 -- 0.13.2 * fix disable-checker option so that it won't accidentally enable the rpython checker which is disabled by default * added note about the gedit plugin into documentation 2007-03-02 -- 0.13.1 * fix some unexplained 0.13.0 packaging issue which led to a bunch of files missing from the distribution 2007-02-28 -- 0.13.0 * new RPython (Restricted Python) checker for PyPy fellow or people wanting to get a compiled version of their python program using the translator of the PyPy project. For more information about PyPy or RPython, visit http://codespeak.net/pypy/ * new E0104 and E0105 messages introduced to respectively warn about "return" and "yield" outside function or method * new E0106 message when "yield" and "return something" are mixed in a function or method * new W0107 message for unnecessary pass statement * new W0614 message to differentiate between unused `import X` and unused `from X import *` (#3209, patch submitted by Daniel Drake) * included Daniel Drake's patch to have a different message E1003 instead of E1001 when a missing member is found but an inference failure has been detected * msvs reporter for Visual Studio line number reporting (#3285) * allow disable-all option inline (#3218, patch submitted by Daniel Drake) * --init-hook option to call arbitrary code necessary to set environment (eg sys.path) (#3156) * One more Daniel's patch fixing a command line option parsing problem, this'll definitely be the DDrake release :) * fix #3184: crashes on "return" outside function * fix #3205: W0704 false positive * fix #3123: W0212 false positive on static method * fix #2485: W0222 false positive * fix #3259: when a message is explicitly enabled, check the checker emitting it is enabled 2006-11-23 -- 0.12.2 * fix #3143: W0233 bug w/ YES objects * fix #3119: Off-by-one error counting lines in a file * fix #3117: ease sys.stdout overriding for reporters * fix #2508: E0601 false positive with lambda * fix #3125: E1101 false positive and a message duplication. Only the last part is actually fixed since the initial false positive is due to dynamic setting of attributes on the decimal.Context class. * fix #3149: E0101 false positives and introduced E0100 for generator __init__ methods * fixed some format checker false positives 2006-09-25 -- 0.12.1 * fixed python >= 2.4 format false positive with multiple lines statement * fixed some 2.5 issues * fixed generator expression scope bug (depends on astng 0.16.1) * stop requiring __revision__ 2006-08-10 -- 0.12.0 * usability changes: - parseable, html and color options are now handled by a single output-format option - enable- and disable-all options are now handled by two (exclusive) enable-checker and disable-checker options taking a comma separated list of checker names as value - renamed debug-mode option to errors-only * started a reference user manual * new W0212 message for access to protected member from client code (close #14081) * new W0105 and W0106 messages extracted from W0104 (statement seems to have no effect) respectively when the statement is actually string (that's sometimes used instead of comments for documentation) or an empty statement generated by a useless semicolon * reclassified W0302 to C0302 * fix so that global messages are not anymore connected to the last analyzed module (close #10106) * fix some bugs related to local disabling of messages * fix cr/lf pb when generating the rc file on windows platforms 2006-04-19 -- 0.11.0 * fix crash caused by the exceptions checker in some case * fix some E1101 false positive with abstract method or classes defining __getattr__ * dirty fix to avoid "_socketobject" has not "connect" member. The actual problem is that astng isn't able to understand the code used to create socket.socket object with exec * added an option in the similarity checker to ignore docstrings, enabled by default * included patch from Benjamin Niemann to allow block level enabling/disabling of messages 2006-03-06 -- 0.10.0 * WARNING, this release include some configuration changes (see below), so you may have to check and update your own configuration file(s) if you use one * this release require the 0.15 version of astng or superior (it will save you a lot of pylint crashes...) * W0705 has been reclassified to E0701, and is now detecting more inheriting problem, and a false positive when empty except clause is following an Exception catch has been fixed (close #10422) * E0212 and E0214 (metaclass/class method should have mcs/cls as first argument have been reclassified to C0202 and C0203 since this not as well established as "self" for instance method (E0213) * W0224 has been reclassified into F0220 (failed to resolve interfaces implemented by a class) * a new typecheck checker, introducing the following checks: - E1101, access to unexistent member (implements #10430), remove the need of E0201 and so some options has been moved from the classes checker to this one - E1102, calling a non callable object - E1111 and W1111 when an assignment is done on a function call but the inferred function returns None (implements #10431) * change in the base checker: - checks module level and instance attribute names (new const-rgx and attr-rgx configuration option) (implements #10209 and #10440) - list comprehension and generator expression variables have their own regular expression (the inlinevar-rgx option) (implements #9146) - the C0101 check with its min-name-length option has been removed (this can be specified in the regxp after all...) - W0103 and W0121 are now handled by the variables checker (W0103 is now W0603 and W0604 has been splitted into different messages) - W0131 and W0132 messages have been reclassified to C0111 and C0112 respectively - new W0104 message on statement without effect * regexp support for dummy-variables (dummy-variables-rgx option replace dummy-variables) (implements #10027) * better global statement handling, see W0602, W0603, W0604 messages (implements #10344 and #10236) * --debug-mode option, disabling all checkers without error message and filtering others to only display error * fixed some R0201 (method could be a function) false positive 2006-01-10 -- 0.9.0 * a lot of updates to follow astng 0.14 API changes, so install logilab-astng 0.14 or greater before using this version of pylint * checker number 10 ! newstyle will search for problems regarding old style / new style classes usage problems (rely on astng 0.14 new style detection feature) * new 'load-plugins' options to load additional pylint plugins (usable from the command line or from a configuration file) (implements #10031) * check if a "pylintrc" file exists in the current working directory before using the one specified in the PYLINTRC environment variable or the default ~/.pylintrc or /etc/pylintrc * fixed W0706 (Identifier used to raise an exception is assigned...) false positive and reraising a catched exception instance * fixed E0611 (No name get in module blabla) false positive when accessing to a class'__dict__ * fixed some E0203 ("access to member before its definition") false positive * fixed E0214 ("metaclass method first argument should be mcs) false positive with staticmethod used on a metaclass * fixed packaging which was missing the test/regrtest_data directory * W0212 (method could be a function) has been reclassified in the REFACTOR category as R0201, and is no more considerer when a method overrides an abstract method from an ancestor class * include module name in W0401 (wildcard import), as suggested by Amaury * when using the '--parseable', path are written relative to the current working directory if in a sub-directory of it (#9789) * 'pylint --version' shows logilab-astng and logilab-common versions * fixed pylint.el to handle space in file names * misc lint style fixes 2005-11-07 -- 0.8.1 * fix "deprecated module" false positive when the code imports a module whose name starts with a deprecated module's name (close #10061) * fix "module has no name __dict__" false positive (close #10039) * fix "access to undefined variable __path__" false positive (close #10065) * fix "explicit return in __init__" false positive when return is actually in an inner function (close #10075) 2005-10-21 -- 0.8.0 * check names imported from a module exists in the module (E0611), patch contributed by Amaury Forgeot d'Arc * print a warning (W0212) for methods that could be a function (implements #9100) * new --defining-attr-methods option on classes checker * new --acquired-members option on the classes checker, used when --zope=yes to avoid false positive on acquired attributes (listed using this new option) (close #8616) * generate one E0602 for each use of an undefined variable (previously, only one for the first use but not for the following) (implements #1000) * make profile option saveable * fix Windows .bat file, patch contributed by Amaury Forgeot d'Arc * fix one more false positive for E0601 (access before definition) with for loop such as "for i in range(10): print i" (test func_noerror_defined_and_used_on_same_line) * fix false positive for E0201 (undefined member) when accessing to __name__ on a class object * fix astng checkers traversal order * fix bug in format checker when parsing a file from a platform using different new line characters (close #9239) * fix encoding detection regexp * fix --rcfile handling (support for --rcfile=file, close #9590) 2005-05-27 -- 0.7.0 * WARNING: pylint is no longer a logilab subpackage. Users may have to manually remove the old logilab/pylint directory. * introduce a new --additional-builtins option to handle user defined builtins * --reports option has now -r as short alias, and -i for --include-ids * fix a bug in the variables checker which may causing some false positives when variables are defined and used within the same statement (test func_noerror_defined_and_used_on_same_line) * this time, real fix of the "disable-msg in the config file" problem, test added to unittest_lint * fix bug with --list-messages and python -OO * fix possible false positive for W0201 2005-04-14 -- 0.6.4 * allow to parse files without extension when a path is given on the command line (test noext) * don't fail if we are unable to read an inline option (e.g. inside a module), just produce an information message (test func_i0010) * new message E0103 for break or continue outside loop (close #8883, test func_continue_not_in_loop) * fix bug in the variables checker, causing non detection of some actual name error (close #8884, test func_nameerror_on_string_substitution) * fix bug in the classes checker which was making pylint crash if "object" is assigned in a class inheriting from it (test func_noerror_object_as_class_attribute) * fix problem with the similar checker when related options are defined in a configuration file * new --generate-man option to generate pylint's man page (require the latest logilab.common (>= 0.9.3) * packaged (generated...) man page 2005-02-24 -- 0.6.3 * fix scope problem which may cause false positive and true negative on E0602 * fix problem with some options such as disable-msg causing error when they are coming from the configuration file 2005-02-16 -- 0.6.2 * fix false positive on E0201 ("access to undefined member") with metaclasses * fix false positive on E0203 ("access to member before its definition") when attributes are defined in a parent class * fix false positive on W0706 ("identifier used to raise an exception assigned to...") * fix interpretation of "\t" as value for the indent-string configuration variable * fix --rcfile so that --rcfile=pylintrc (only --rcfile pylintrc was working in earlier release) * new raw checker example in the examples/ directory 2005-02-04 -- 0.6.1 * new --rcfile option to specify the configuration file without the PYLINTRC environment variable * added an example module for a custom pylint checker (see the example/ directory) * some fixes to handle fixes in common 0.9.1 (should however still working with common 0.9.0, even if upgrade is recommended) 2005-01-20 -- 0.6.0 * refix pylint emacs mode * no more traceback when just typing "pylint" * fix a bug which may cause crashes on resolving parent classes * fix problems with the format checker: don't chock on files containing multiple CR, avoid C0322, C0323, C0324 false positives with triple quoted string with quote inside * correctly detect access to member defined latter in __init__ method * now depends on common 0.8.1 to fix problem with interface resolution (close #8606) * new --list-msgs option describing available checkers and their messages * added windows specific documentation to the README file, contributed by Brian van den Broek * updated doc/features.txt (actually this file is now generated using the --list-msgs option), more entries into the FAQ * improved tests coverage 2004-10-19 -- 0.5.0 * avoid to import analyzed modules ! * new Refactor and Convention message categories. Some Warnings have been remaped into those new categories * added "similar", a tool to find copied and pasted lines of code, both using a specific command line tool and integrated as a pylint's checker * imports checker may report import dependencies as a dot graph * new checker regrouping most Refactor detection (with some new metrics) * more command line options storable in the configuration file * fix bug with total / undocumented number of methods 2004-07-08 -- 0.4.2 * fix pylint emacs mode * fix classes checkers to handler twisted interfaces 2004-05-14 -- 0.4.1 * fix the setup.py script to allow bdist_winst (well, the generated installer has not been tested...) with the necessary logilab/__init__.py file * fix file naming convention as suggested by Andreas Amoroso * fix stupid crash bug with bad method names 2004-05-10 -- 0.4.0 * fix file path with --parsable * --parsable option has been renamed to --parseable * added patch from Andreas Amoroso to output message to files instead of standard output * added Run to the list of correct variable names * fix variable names regexp and checking of local classes names * some basic handling of metaclasses * no-docstring-rgx apply now on classes too * new option to specify a different regexp for methods than for functions * do not display the evaluation report when no statements has been analysed * fixed crash with a class nested in a method * fixed format checker to deals with triple quoted string and lines with code and comment mixed * use logilab.common.ureports to layout reports 2004-02-17 -- 0.3.3 * added a parsable text output, used when the --parsable option is provided * added an emacs mode using this output, available in the distrib's elisp directory * fixed some typos in messages * change include-ids options to yn, and allow it to be in the configuration file * do not chock on corrupted stats files * fixed bug in the format checker which may stop pylint execution * provide scripts for unix and windows to wrap the minimal pylint tk gui 2003-12-23 -- 0.3.2 * html-escape messages in the HTML reporter (bug reported by Juergen Hermann) * added "TODO" to the list of default note tags * added "rexec" to the list of default deprecated modules * fixed typos in some messages 2003-12-05 -- 0.3.1 * bug fix in format and classes checkers * remove print statement from imports checkers * provide a simple tk gui, essentially useful for windows users 2003-11-20 -- 0.3.0 * new exceptions checker, checking for string exception and empty except clauses. * imports checker checks for reimport of modules * classes checker checks for calls to ancestor's __init__ and abstract method not overridden. It doesn't complain anymore for unused import in __init__ files, and provides a new option ignore-interface-methods, useful when you're using zope Interface implementation in your project * base checker checks for black listed builtins call (controled by the bad-functions option) and for use of * and ** * format checker checks for use of <> and "l" as long int marker * major internal API changes * use the rewrite of astng, based on compiler.ast * added unique id for messages, as suggested by Wolfgang Grafen * added unique id for reports * can take multiple modules or files as argument * new options command line options : --disable-msg, --enable-msg, --help-msg, --include-ids, --reports, --disable-report, --cache-size * --version shows the version of the python interpreter * removed some options which are now replaced by [en|dis]able-msg, or disable-report * read disable-msg and enable-msg options in source files (should be in comments on the top of the file, in the form "# pylint: disable-msg=W0402" * new message for modules importing themselves instead of the "cyclic import" message * fix bug with relative and cyclic imports * fix bug in imports checker (cycle was not always detected) * still fixes in format checker : don't check comment and docstring, check first line after an indent * black and white list now apply to all identifiers, not only variables, so changed the configuration option from (good|bad)-variable-names to (good|bad)-names * added string, rexec and Bastion to the default list of deprecated modules * do not print redefinition warning for function/class/method defined in mutually exclusive branches 2003-10-10 -- 0.2.1 * added some documentation, fixed some typos * set environment variable PYLINT_IMPORT to 1 during pylint execution. * check that variables "imported" using the global statement exist * indentation problems are now warning instead of errors * fix checkers.initialize to try to load all files with a known python extension (patch from wrobell) * fix a bunch of messages * fix sample configuration file * fix the bad-construction option * fix encoding checker * fix format checker 2003-09-12 -- 0.2.0 * new source encoding / FIXME checker (pep 263) * new --zope option which trigger Zope import. Useful to check Zope products code. * new --comment option which enable the evaluation note comment (disabled by default). * a ton of bug fixes * easy functional test infrastructure 2003-06-18 -- 0.1.2 * bug fix release * remove dependency to pyreverse 2003-06-01 -- 0.1.1 * much more functionalities ! 2003-05-19 -- 0.1 * initial release