| ------------------ |
| Pylint's ChangeLog |
| ------------------ |
| |
| What's New in Pylint 2.3.0? |
| =========================== |
| |
| Release date: TBA |
| |
| * Fixed false positives for ``no-self-argument`` and ``unsubscriptable-object`` when using ``__class_getitem__`` (new in Python 3.7) |
| |
| Close #2416 |
| |
| * Support ``Ellipsis`` as a synonym for ``pass`` statements. |
| |
| Close #2718 |
| |
| * ``fixme`` gets triggered only on comments. |
| |
| Close #2321 |
| |
| * Fixed a false positive for ``unused-variable`` and ``nonlocal`` assignments |
| |
| Close #2671 |
| |
| * Added ``load_configuration()`` hook for plugins |
| |
| New optional hook for plugins is added: ``load_configuration()``. |
| This hook is executed after configuration is loaded to prevent |
| overwriting plugin specific configuration via user-based |
| configuration. |
| |
| Close #2635 |
| |
| * Fix missing-raises-doc false positive (W9006) |
| |
| Close #1502 |
| |
| * Exempt starred unpacking from ``*-not-iterating`` Python 3 checks |
| |
| Close #2651 |
| |
| * Make ``compare-to-zero`` less zealous by checking against equality and identity |
| |
| Close #2645 |
| |
| * Add ``no-else-raise`` warning (R1720) |
| |
| Close #2558 |
| |
| * Exempt ``yield from`` from ``*-not-iterating`` Python 3 checks. |
| |
| Close #2643 |
| |
| * Fix incorrect generation of ``no-else-return`` warnings (R1705) |
| |
| Fixed issue where ``if`` statements with nested ``if`` statements |
| were incorrectly being flagged as ``no-else-return`` in some cases and |
| not being flagged as ``no-else-return`` in other cases. Added tests |
| for verification and updated pylint source files to eliminate newly |
| exposed warnings. |
| |
| * Fix false positive with `not-async-context-manager` caused by not understanding `contextlib.asynccontextmanager` |
| |
| Close #2440 |
| |
| * Refactor ``bad-reversed-sequence`` to account for more objects that can define ``__reversed__`` |
| |
| One such object would be an enum class, for which ``__reversed__`` yields each individual enum. |
| As such, the check for ``bad-reversed-sequence`` needs to not differentiate between classes |
| and instances when it comes for checking of ``__reversed__`` presence. |
| |
| Close #2598 |
| |
| * Added ``wrong-exception-operation`` |
| |
| Used when an operation is done against an exception, but the operation |
| is not valid for the exception in question. Usually emitted when having |
| binary operations between exceptions in except handlers. |
| |
| Close #2494 |
| |
| * ``no-member`` is emitted for enums when they lack a member |
| |
| Previously we weren't doing this because we detected a |
| ``__getattr__`` implementation on the ``Enum`` class |
| (and this check is skipped for classes with ``__getattr__``), |
| but that is fine for Enums, given that they are inferred in a customised |
| way in astroid. |
| |
| Close #2565 |
| |
| * Generalize ``chained-comparison`` |
| |
| Previous version incorrectly detects `a < b < c and b < d` and fails to |
| detect `a < b < c and c < d`. |
| |
| * Avoid popping __main__ when using multiple jobs |
| |
| Close #2689 |
| |
| * Add a new option 'check-str-concat-over-line-jumps' to check 'implicit-str-concat-in-sequence' |
| |
| What's New in Pylint 2.2.2? |
| =========================== |
| |
| Release date: 2018-11-28 |
| |
| * Change the ``logging-format-style`` to use name identifier instead of their |
| corresponding Python identifiers |
| |
| This is to prevent users having to think about escaping the default value for |
| ``logging-format-style`` in the generated config file. Also our config parsing |
| utilities don't quite support escaped values when it comes to ``choices`` detection, |
| so this would have needed various hacks around that. |
| |
| Closes #2614 |
| |
| |
| What's New in Pylint 2.2.1? |
| =========================== |
| |
| Release date: 2018-11-27 |
| |
| * Fix a crash caused by `implicit-str-concat-in-sequence` and multi-bytes characters. |
| |
| Closes #2610 |
| |
| What's New in Pylint 2.2? |
| ========================= |
| |
| Release date: 2018-11-25 |
| |
| * Consider ``range()`` objects for ``undefined-loop-variable`` leaking from iteration. |
| |
| Close #2533 |
| |
| * ``deprecated-method`` can use the attribute name for identifying a deprecated method |
| |
| Previously we were using the fully qualified name, which we still do, but the fully |
| qualified name for some ``unittest`` deprecated aliases leads to a generic |
| deprecation function. Instead on relying on that, we now also rely on the attribute |
| name, which should solve some false positives. |
| |
| Close #1653 |
| Close #1946 |
| |
| * Fix compatibility with changes to stdlib tokenizer. |
| |
| * ``pylint`` is less eager to consume the whole line for pragmas |
| |
| Close #2485 |
| |
| * Obtain the correct number of CPUs for virtualized or containerized environments. |
| |
| Close #2519 |
| |
| * Change ``unbalanced-tuple-unpacking`` back to a warning. |
| |
| It used to be a warning until a couple of years ago, after it was promoted to |
| an error. But the check might be suggesting the wrong thing in some cases, |
| for instance when checking against ``sys.argv`` which cannot be known at static |
| analysis time. Given it might rely on potential unknown data, it's best to |
| have it as a warning. |
| |
| Close #2522 |
| |
| * Remove ``enumerate`` usage suggestion when defining ``__iter__`` (C0200) |
| |
| Close #2477 |
| |
| * Emit ``too-many-starred-assignment`` only when the number of Starred nodes is per assignment elements |
| |
| Close #2513 |
| |
| * `try-except-raise` checker now handles multilevel inheritance hirerachy for exceptions correctly. |
| |
| Close #2484 |
| |
| * Add a new check, ``simplifiable-if-expression`` for expressions like ``True if cond else False``. |
| |
| Close #2487 |
| |
| * ``too-few-public-methods`` is not reported for ``typing.NamedTuple`` |
| |
| Close #2459 |
| |
| * ```too-few-public-methods`` is not reported for dataclasses created with options. |
| |
| Close #2488 |
| |
| * Remove wrong modules from 'bad-python3-import'. |
| |
| Close #2453 |
| |
| * The ``json`` reporter prints an empty list when no messages are emitted |
| |
| Close #2446 |
| |
| * Add a new check, ``duplicate-string-formatting-argument`` |
| |
| This new check is emitted whenever a duplicate string formatting argument |
| is found. |
| |
| Close #497 |
| |
| * ``assignment-from-no-return`` is not emitted for coroutines. |
| |
| Close #1715 |
| |
| * Report format string type mismatches. |
| |
| * ``consider-using-ternary`` and ``simplified-boolean-expression`` no longer emit for sequence based checks |
| |
| Close #2473 |
| |
| * Handle ``AstroidSyntaxError`` when trying to import a module. |
| |
| Close #2313 |
| |
| * Allow ``__module__`` to be redefined at a class level. Close #2451 |
| |
| * ``pylint`` used to emit a ``unused-variable`` error if unused import was found in the function. Now instead of |
| ``unused-variable``, ``unused-import`` is emitted. |
| |
| Close #2421 |
| |
| * Handle asyncio.coroutine when looking for ``not-an-iterable`` check. |
| |
| Close #996 |
| |
| * The ``locally-enabled`` check is gone. |
| |
| Close #2442 |
| |
| * Infer decorated methods when looking for method-hidden |
| |
| Close #2369 |
| |
| * Pick the latest value from the inferred values when looking for ``raising-non-exception`` |
| |
| Close #2431 |
| |
| * Extend the TYPE_CHECKING guard to TYPE_CHECKING name as well, not just the attribute |
| |
| Close #2411 |
| |
| * Ignore import x.y.z as z cases for checker `useless-import-alias`. |
| |
| Close #2309 |
| |
| * Fix false positive ``undefined-variable`` and ``used-before-assignment`` with nonlocal keyword usage. |
| |
| Close #2049 |
| |
| * Stop ``protected-access`` exception for missing class attributes |
| |
| * Don't emit `assignment-from-no-return` for decorated function nodes |
| |
| Close #2385 |
| |
| * `unnecessary-pass` is now also emitted when a function or class contains only docstring and pass statement. |
| |
| In Python, stubbed functions often have a body that contains just a single `pass` statement, |
| indicating that the function doesn't do anything. However, a stubbed function can also have just a |
| docstring, and function with a docstring and no body also does nothing. |
| |
| Close #2208 |
| |
| * ``duplicate-argument-name`` is emitted for more than one duplicate argument per function |
| |
| Close #1712 |
| |
| * Allow double indentation levels for more distinguishable indentations |
| |
| Close #741 |
| |
| * Consider tuples in exception handler for ``try-except-raise``. |
| Close #2389 |
| |
| * Fix astroid.ClassDef check in checkers.utils.is_subclass_of |
| |
| * Fix wildcard imports being ignored by the import checker |
| |
| * Fix external/internal distinction being broken in the import graph |
| |
| * Fix wildcard import check not skipping `__init__.py` |
| |
| Close #2430 |
| |
| * Add new option to logging checker, ``logging_format_style`` |
| |
| * Fix --ignore-imports to understand multi-line imports |
| |
| Close #1422 |
| Close #2019 |
| |
| * Add a new check 'implicit-str-concat-in-sequence' to spot string concatenation inside lists, sets & tuples. |
| |
| * ``literal-comparison`` is now emitted for 0 and 1 literals. |
| |
| What's New in Pylint 2.1.1? |
| =========================== |
| |
| Release date: 2018-08-07 |
| |
| * fix pylint crash due to ``misplaced-format-function`` not correctly handling class attribute. |
| Close #2384 |
| |
| * Do not emit \*-builtin for Python 3 builtin checks when the builtin is used inside a try-except |
| |
| Close PyCQA/pylint#2228 |
| |
| * ``simplifiable-if-statement`` not emitted when dealing with subscripts |
| |
| What's New in Pylint 2.1? |
| ========================= |
| |
| Release date: 2018-08-01 |
| * `trailing-comma-tuple` gets emitted for ``yield`` statements as well. |
| |
| Close #2363 |
| |
| * Get only the arguments of the scope function for `redefined-argument-from-local` |
| |
| Close #2364 |
| |
| * Add a check `misplaced-format-function` which is emitted if format function is used on |
| non str object. |
| |
| Close #2200 |
| |
| * `chain.from_iterable` no longer emits `dict-{}-not-iterating` when dealing with dict values and keys |
| |
| * Demote the `try-except-raise` message from an error to a warning (E0705 -> W0706) |
| |
| Close #2323 |
| |
| * Correctly handle the new name of the Python implementation of the `abc` module. |
| |
| Close PyCQA/astroid#2288 |
| |
| * Modules with `__getattr__` are exempted by default from `no-member` |
| |
| There's no easy way to figure out if a module has a particular member when |
| the said module uses `__getattr__`, which is a new addition to Python 3.7. |
| Instead we assume the safe thing to do, in the same way we do for classes, |
| and skip those modules from checking. |
| |
| Close #2331 |
| |
| * Fix a false positive `invalid name` message when method or attribute name is longer then 30 characters. |
| |
| Close #2047 |
| |
| * Include the type of the next branch in `no-else-return` |
| |
| Close #2295 |
| |
| * Fix inconsistent behaviour for bad-continuation on first line of file |
| |
| Close #2281 |
| |
| * Fix not being able to disable certain messages on the last line through |
| the global disable option |
| |
| Close #2278 |
| |
| * Don't emit `useless-return` when we have a single statement that is the return itself |
| |
| We still want to be explicit when a function is supposed to return |
| an optional value; even though `pass` could still work, it's not explicit |
| enough and the function might look like it's missing an implementation. |
| Close #2300 |
| |
| * Fix false-positive undefined-variable for self referential class name in lamdbas |
| |
| Close #704 |
| |
| * Don't crash when `pylint` is unable to infer the value of an argument to `next()` |
| |
| Close #2316 |
| |
| * Don't emit `not-an-iterable` when dealing with async iterators. |
| |
| But do emit it when using the usual iteration protocol against |
| async iterators. |
| |
| Close #2311 |
| |
| * Can specify a default docstring type for when the check cannot guess the type |
| |
| Close #1169 |
| |
| |
| What's New in Pylint 2.0? |
| ========================= |
| |
| Release date: 2018-07-15 |
| * `try-except-raise` should not be emitted if there are any parent exception class handlers. |
| |
| Close #2284 |
| |
| * `trailing-comma-tuple` can be emitted for `return` statements as well. |
| |
| Close #2269 |
| |
| * Fix a false positive ``inconsistent-return-statements`` message when exception is raised |
| inside an else statement. |
| |
| Close #1782 |
| |
| * `ImportFrom` nodes correctly use the full name for the import sorting checks. |
| |
| Close #2181 |
| |
| * [].extend and similar builtin operations don't emit `dict-*-not-iterating` with the Python 3 porting checker |
| |
| Close #2187 |
| |
| * Add a check `consider-using-dict-comprehension` which is emitted if for dict initialization |
| the old style with list comprehensions is used. |
| |
| * Add a check `consider-using-set-comprehension` which is emitted if for set initialization |
| the old style with list comprehensions is used. |
| |
| * `logging-not-lazy` is emitted whenever pylint infers that a string is built with addition |
| |
| Close #2193 |
| |
| * Add a check `chained-comparison` which is emitted if a boolean operation can be simplified |
| by chaining some of its operations. |
| e.g "a < b and b < c", can be simplified as "a < b < c". |
| |
| Close #2032 |
| |
| * Add a check `consider-using-in` for comparisons of a variable against |
| multiple values with "==" and "or"s instead of checking if the variable |
| is contained "in" a tuple of those values. |
| |
| * `in` is considered iterating context for some of the Python 3 porting checkers |
| |
| Close #2186 |
| |
| * Add `--ignore-none` flag to control if pylint should warn about `no-member` where the owner is None |
| |
| * Fix a false positive related to `too-many-arguments` and bounded `__get__` methods |
| |
| Close #2172 |
| |
| * `mcs` as the first parameter of metaclass's `__new__` method was replaced by `cls` |
| |
| Close #2028 |
| |
| * `assignment-from-no-return` considers methods as well. |
| |
| Close #2081 |
| |
| * Support typing.TYPE_CHECKING for *unused-import* errors |
| |
| Close #1948 |
| |
| * Inferred classes at a function level no longer emit `invalid-name` |
| when they don't respect the variable regular expression |
| |
| Close #1049 |
| |
| * Added basic support for postponed evaluation of function annotations. |
| |
| Close #2069 |
| |
| * Fix a bug with `missing-kwoa` and variadics parameters |
| |
| Close #1111 |
| |
| * `simplifiable-if-statement` takes in account only when assigning to same targets |
| |
| Close #1984 |
| |
| * Make ``len-as-condition`` test more cases, such as ``len() < 1`` or ``len <= 0`` |
| |
| * Fix false-positive ``line-too-long`` message emission for |
| commented line at the end of a module |
| |
| Close #1950 |
| |
| * Fix false-positive ``bad-continuation`` for with statements |
| |
| Close #461 |
| |
| * Don't warn about `stop-iteration-return` when using `next()` over `itertools.count` |
| |
| Close #2158 |
| |
| * Add a check `consider-using-get` for unidiomatic usage of value/default-retrieval |
| for a key from a dictionary |
| |
| Close #2076 |
| |
| * invalid-slice-index is not emitted when the slice is used as index for a complex object. |
| |
| We only use a handful of known objects (list, set and friends) to figure out if |
| we should emit invalid-slice-index when the slice is used to subscript an object. |
| |
| * Don't emit `unused-import` anymore for typing imports used in type comments. |
| |
| * Add a new check 'useless-import-alias'. |
| |
| Close #2052 |
| |
| * Add `comparison-with-callable` to warn for comparison with bare callable, without calling it. |
| |
| Close #2082 |
| |
| * Don't warn for ``missing-type-doc`` and/or ``missing-return-type-doc``, if type |
| annotations exist on the function signature for a parameter and/or return type. |
| Close #2083 |
| |
| * Add `--exit-zero` option for continuous integration scripts to more |
| easily call Pylint in environments that abort when a program returns a |
| non-zero (error) status code. |
| |
| Close #2042 |
| |
| * Warn if the first argument of an instance/ class method gets assigned |
| |
| Close #977 |
| |
| * New check `comparison-with-itself` to check comparison between same value. |
| |
| Close #2051 |
| |
| * Add a new warning, 'logging-fstring-interpolation', emitted when f-string |
| is used within logging function calls. |
| |
| Close #1998 |
| |
| * Don't show 'useless-super-delegation' if the subclass method has different type annotations. |
| |
| Close #1923 |
| |
| * Add `unhashable-dict-key` check. |
| |
| Closes #586 |
| |
| * Don't warn that a global variable is unused if it is defined by an import |
| |
| Close #1453 |
| |
| * Skip wildcard import check for `__init__.py`. |
| |
| Close #2026 |
| |
| * The Python 3 porting mode can now run with Python 3 as well. |
| |
| * `too-few-public-methods` is not emitted for dataclasses. |
| |
| Close #1793 |
| |
| * New verbose mode option, enabled with `--verbose` command line flag, to |
| display of extra non-checker-related output. It is disabled by default. |
| |
| Close #1863 |
| |
| * `undefined-loop-variable` takes in consideration non-empty iterred objects before emitting |
| |
| Close #2039 |
| |
| * Add support for numpydoc optional return value names. |
| |
| Close #2030 |
| |
| * `singleton-comparison` accounts for negative checks |
| |
| Close #2037 |
| |
| * Add a check `consider-using-in` for comparisons of a variable against |
| multiple values with "==" and "or"s instead of checking if the variable |
| is contained "in" a tuple of those values. |
| |
| Close #1977 |
| |
| * defaultdict and subclasses of dict are now handled for dict-iter-* checks |
| |
| Close #2005 |
| |
| * `logging-format-interpolation` also emits when f-strings are used instead of % syntax. |
| |
| Close #1788 |
| |
| * Don't trigger misplaced-bare-raise when the raise is in a finally clause |
| |
| Close #1924 |
| |
| * Add a new check, `possibly-unused-variable`. |
| |
| This is similar to `unused-variable`, the only difference is that it is |
| emitted when we detect a locals() call in the scope of the unused variable. |
| The `locals()` call could potentially use the said variable, by consuming |
| all values that are present up to the point of the call. This new check |
| allows to disable this error when the user intentionally uses `locals()` |
| to consume everything. |
| |
| Close #1909. |
| |
| * `no-else-return` accounts for multiple cases |
| |
| The check was a bit overrestrictive because we were checking for |
| return nodes in the .orelse node. At that point though the if statement |
| can be refactored to not have the orelse. This improves the detection of |
| other cases, for instance it now detects TryExcept nodes that are part of |
| the .else branch. |
| |
| Close #1852 |
| |
| * Added two new checks, `invalid-envvar-value` and `invalid-envvar-default`. |
| |
| The former is trigger whenever pylint detects that environment variable manipulation |
| functions uses a different type than strings, while the latter is emitted whenever |
| the said functions are using a default variable of different type than expected. |
| |
| * Add a check `consider-using-join` for concatenation of strings using str.join(sequence) |
| |
| Close #1952 |
| |
| * Add a check `consider-swap-variables` for swapping variables with tuple unpacking |
| |
| Close #1922 |
| |
| * Add new checker `try-except-raise` that warns the user if an except handler block |
| has a ``raise`` statement as its first operator. The warning is shown when there is |
| a bare raise statement, effectively re-raising the exception that was caught or the |
| type of the exception being raised is the same as the one being handled. |
| |
| * Don't crash on invalid strings when checking for `logging-format-interpolation` |
| |
| Close #1944 |
| |
| * Exempt `__doc__` from triggering a `redefined-builtin` |
| |
| `__doc__` can be used to specify a docstring for a module without |
| passing it as a first-statement string. |
| |
| * Fix false positive bad-whitespace from function arguments with default |
| values and annotations |
| |
| Close #1831 |
| |
| * Fix stop-iteration-return false positive when next builtin has a |
| default value in a generator |
| |
| Close #1830 |
| |
| * Fix emission of false positive ``no-member`` message for class with "private" attributes whose name is mangled. |
| |
| Close #1643 |
| |
| * Fixed a crash which occurred when `Uninferable` wasn't properly handled in `stop-iteration-return` |
| |
| Close #1779 |
| |
| * Use the proper node to get the name for redefined functions (#1792) |
| |
| Close #1774 |
| |
| * Don't crash when encountering bare raises while checking inconsistent returns |
| |
| Close #1773 |
| |
| * Fix a false positive ``inconsistent-return-statements`` message when if statement is inside try/except. |
| |
| Close #1770 |
| |
| * Fix a false positive ``inconsistent-return-statements`` message when while loop are used. |
| |
| Close #1772 |
| |
| * Correct column number for whitespace conventions. |
| |
| Previously the column was stuck at 0 |
| |
| Close #1649 |
| |
| * Fix ``unused-argument`` false positives with overshadowed variable in |
| dictionary comprehension. |
| |
| Close #1731 |
| |
| * Fix false positive ``inconsistent-return-statements`` message when never |
| returning functions are used (i.e sys.exit for example). |
| |
| Close #1771 |
| |
| * Fix error when checking if function is exception, as in ``bad-exception-context``. |
| |
| * Fix false positive ``inconsistent-return-statements`` message when a |
| function is defined under an if statement. |
| |
| Close #1794 |
| |
| * New ``useless-return`` message when function or method ends with a "return" or |
| "return None" statement and this is the only return statement in the body. |
| |
| * Fix false positive ``inconsistent-return-statements`` message by |
| avoiding useless exception inference if the exception is not handled. |
| |
| Close #1794 (second part) |
| |
| * Fix bad thread instantiation check when target function is provided in args. |
| |
| Close #1840 |
| |
| * Fixed false positive when a numpy Attributes section follows a Parameters |
| section |
| |
| Close #1867 |
| |
| * Fix incorrect file path when file absolute path contains multiple ``path_strip_prefix`` strings. |
| |
| Close #1120 |
| |
| * Fix false positive undefined-variable for lambda argument in class definitions |
| |
| Close #1824 |
| |
| * Add of a new checker that warns the user if some messages are enabled or disabled |
| by id instead of symbol. |
| |
| Close #1599 |
| |
| * Suppress false-positive ``not-callable`` messages from certain |
| staticmethod descriptors |
| |
| Close #1699 |
| |
| * Fix indentation handling with tabs |
| |
| Close #1148 |
| |
| * Fix false-positive ``bad-continuation`` error |
| |
| Close #638 |
| |
| * Fix false positive unused-variable in lambda default arguments |
| |
| Close #1921 |
| Close #1552 |
| Close #1099 |
| Close #210 |
| |
| * Updated the default report format to include paths that can be clicked on in some terminals (e.g. iTerm). |
| |
| * Fix inline def behavior with ``too-many-statements`` checker |
| |
| Close #1978 |
| |
| * Fix `KeyError` raised when using docparams and NotImplementedError is documented. |
| |
| Close #2102 |
| |
| * Fix 'method-hidden' raised when assigning to a property or data descriptor. |
| |
| * Fix emitting ``useless-super-delegation`` when changing the default value of keyword arguments. |
| |
| Close #2022 |
| |
| * Expand ignored-argument-names include starred arguments and keyword arguments |
| |
| Close #2214 |
| |
| * Fix false-postive undefined-variable in nested lambda |
| |
| Close #760 |
| |
| * Fix false-positive ``bad-whitespace`` message for typing annoatations |
| with ellipses in them |
| |
| Close 1992 |
| |
| What's New in Pylint 1.9? |
| ========================= |
| |
| Release date: 2018-05-15 |
| |
| * Added two new Python 3 porting checks, `exception-escape` and `comprehension-escape` |
| |
| These two are emitted whenever pylint detects that a variable defined in the |
| said blocks is used outside of the given block. On Python 3 these values are deleted. |
| |
| * Added a new `deprecated-sys-function`, emitted when accessing removed sys members. |
| |
| * Added `xreadlines-attribute`, emitted when the `xreadlines()` attribute is accessed. |
| |
| * The Python 3 porting mode can now run with Python 3 as well. |
| |
| * docparams extension allows abstract methods to document what overriding |
| implementations should return, and to raise NotImplementedError without |
| documenting it. |
| |
| Closes #2044 |
| |
| * Special methods do not count towards `too-few-methods`, |
| and are considered part of the public API. |
| |
| * Enum classes do not trigger `too-few-methods` |
| |
| Close #605 |
| |
| * Added a new Python 2/3 check for accessing `operator.div`, which is removed in Python 3 |
| |
| Close #1936 |
| |
| * Added a new Python 2/3 check for accessing removed urllib functions |
| |
| Close #1997 |
| |
| |
| 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. |
| |
| Close #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) |
| |
| Close #1713 |
| |
| * Fixing u'' string in superfluous-parens message |
| |
| Close #1420 |
| |
| * `abstract-class-instantiated` is now emitted for all inference paths. |
| |
| Close #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 |
| |
| Close #1176 |
| |
| * Using the -j flag won't start more child linters than needed. |
| |
| Contributed by Roman Ivanov in #1614 |
| |
| * Fix a false positive with bad-python3-import on relative imports |
| |
| Close #1608 |
| |
| * Added a new Python 3 check, ``non-ascii-bytes-literals`` |
| |
| Close #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. |
| |
| Close #1327 |
| |
| * In non-quiet mode, absolute path of used config file is logged to |
| standard error. |
| Close #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. |
| Close #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. |
| Close #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. |
| Close #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 |
| Close #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. |
| Close #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. |
| Close #1466 |
| |
| * Fix a false positive ``useless-super-delegation`` message when |
| parameters default values are different from those used in the base class. |
| Close #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. |
| |
| Close #1336 |
| |
| * Added a new Python check for inconsistent return statements inside method or function. |
| Close #1267 |
| |
| * Fix ``superfluous-parens`` false positive related to handling logical statements |
| involving ``in`` operator. |
| |
| Close #574 |
| |
| * ``function-redefined`` message is no longer emitted for functions and |
| methods which names matches dummy variable name regular expression. |
| Close #1369 |
| |
| * Fix ``missing-param-doc`` and ``missing-type-doc`` false positives when |
| mixing ``Args`` and ``Keyword Args`` in Google docstring. |
| Close #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. |
| Close #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. |
| Close #1702 |
| |
| * Fix ``pylint disable=fixme`` directives ignored for comments following the |
| last statement in a file. |
| Close #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. |
| Close #1741 |
| |
| * If the rcfile specified on the command line doesn't exist, then an |
| IOError exception is raised. |
| Close #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. |
| Close #1742 |
| |
| What's New in Pylint 1.7.1? |
| =========================== |
| |
| Release date: 2017-04-17 |
| |
| * Fix a false positive which occurred when an exception was reraised |
| |
| Close #1419 |
| |
| * Fix a false positive of ``disallow-trailing-tuple`` |
| |
| The check was improved by verifying for non-terminating newlines, which |
| should exempt function calls and function definitions from the check |
| Close #1424 |
| |
| |
| What's New in Pylint 1.7? |
| ========================= |
| |
| Release date: 2017-04-13 |
| |
| * Don't emit missing-final-newline or trailing-whitespace for formfeeds (page breaks). |
| |
| Close #1218 and #1219 |
| |
| * Don't emit by default no-member if we have opaque inference objects in the inference results |
| |
| This is controlled through the new flag ignore-on-opaque-inference, which is by |
| default True. The inference can return multiple potential results while |
| evaluating a Python object, but some branches might not be evaluated, which |
| results in partial inference. In that case, it might be useful to still emit |
| no-member and other checks for the rest of the inferred objects. |
| |
| * Added new message `assign-to-new-keyword` to warn about assigning to names which |
| will become a keyword in future Python releases. |
| |
| Close #1351 |
| |
| * Split the 'missing or differing' in parameter documentation in different error. |
| 'differing-param-doc' covers the differing part of the old 'missing-param-doc', |
| and 'differing-type-doc' covers the differing part of the old 'missing-type-doc' |
| |
| Close #1342 |
| |
| * Added a new error, 'used-prior-global-declaration', which is emitted when a name |
| is used prior a global declaration in a function. This causes a SyntaxError in |
| Python 3.6 |
| |
| Close #1257 |
| |
| * The protocol checks are emitting their messages when a special method is set to None. |
| |
| Close #1263 |
| |
| * Properly detect if imported name is assigned to same name in different |
| scope. |
| |
| Close #636, #848, #851, and #900 |
| |
| * Require one space for annotations with type hints, as per PEP 8. |
| |
| * 'trailing-comma-tuple' check was added |
| |
| This message is emitted when pylint finds an one-element tuple, |
| created by a stray comma. This can suggest a potential problem in the |
| code and it is recommended to use parantheses in order to emphasise the |
| creation of a tuple, rather than relying on the comma itself. |
| |
| * Don't emit not-callable for instances with unknown bases. |
| |
| Close #1213 |
| |
| * Treat keyword only arguments the same as positional arguments with regard to unused-argument check |
| |
| * Don't try to access variables defined in a separate scope when checking for ``protected-access`` |
| |
| * Added new check to detect incorrect usage of len(SEQUENCE) inside |
| test conditions. |
| |
| * Added new extension to detect comparisons against empty string constants |
| |
| * Added new extension to detect comparisons of integers against zero |
| |
| * Added new error conditions for 'bad-super-call' |
| |
| Now detects ``super(type(self), self)`` and ``super(self.__class__, self)`` |
| which can lead to recursion loop in derived classes. |
| |
| * PyLinter.should_analyze_file has a new optional parameter, called `is_argument` |
| |
| Close #1079 |
| |
| * Add attribute hints for missing members |
| |
| Closes #1035 |
| |
| * Add a new warning, 'redefined-argument-from-local' |
| |
| Closes #649 |
| |
| * Support inline comments for comma separated values in the config file |
| |
| Closes #1024 |
| |
| * epylint.py_run's *script* parameter was removed. |
| |
| * epylint.py_run now uses ``shell=False`` for running the underlying process. |
| |
| Closes #441 |
| |
| * Added a new warning, 'useless-super-delegation' |
| |
| Close 839. |
| |
| * Added a new error, 'invalid-metaclass', raised when |
| we can detect that a class is using an improper metaclass. |
| |
| Close #579 |
| |
| * Added a new refactoring message, 'literal-comparison'. |
| |
| Close #786 |
| |
| * arguments-differ takes in consideration kwonlyargs and variadics |
| |
| Close #983 |
| |
| * Removed --optimized-ast. Part of #975. |
| |
| * Removed --files-output option. Part of #975. |
| |
| * Removed pylint-gui from the package. |
| |
| * Removed the HTML reporter. Part of #975. |
| |
| * ignored-argument-names is now used for ignoring arguments for unused-variable check. |
| |
| This option was used for ignoring arguments when computing the correct number of arguments |
| a function should have, but for handling the arguments with regard |
| to unused-variable check, dummy-variables-rgx was used instead. Now, ignored-argument-names |
| is used for its original purpose and also for ignoring the matched arguments for |
| the unused-variable check. This offers a better control of what should be ignored |
| and how. |
| Also, the same option was moved from the design checker to the variables checker, |
| which means that the option now appears under the ``[VARIABLES]`` section inside |
| the configuration file. |
| Close #862. |
| |
| * Fix a false positive for keyword variadics with regard to keyword only arguments. |
| |
| If a keyword only argument was necessary for a function, but that function was called |
| with keyword variadics (\**kwargs), then we were emitting a missing-kwoa false positive, |
| which is now fixed. |
| |
| Close #934. |
| |
| * Fix some false positives with unknown sized variadics. |
| |
| Close #878 |
| |
| * Added a new extension, check_docstring, for checking PEP 257 conventions. |
| |
| Closes #868. |
| |
| * config files with BOM markers can now be read. |
| |
| Close #864. |
| |
| * epylint.py_run does not crash on big files, using .communicate() instead of .wait() |
| |
| Close #599 |
| |
| * Disable reports by default and show the evaluation score by default |
| |
| As per discussion from issue #746, the reports were disabled by |
| default in order to simplify the interaction between the tool |
| and the users. The score is still shown by default, as a way of |
| closely measuring when it increases or decreases due to changes |
| brought to the code. |
| |
| * Disable the information category messages by default. |
| |
| This is a step towards making pylint more sane, as |
| per the discussion from issue #746. |
| |
| * Catch more cases as not proper iterables for __slots__ with |
| regard to invalid-slots pattern. Closes issue #775. |
| |
| * empty indent strings are rejected. |
| |
| * Added a new error, 'relative-beyond-top-level', which is emitted |
| when a relative import was attempted beyond the top level package. |
| |
| Closes issue #588. |
| |
| * Added a new warning, 'unsupported-assignment-operation', which is |
| emitted when item assignment is tried on an object which doesn't |
| have this ability. Closes issue #591. |
| |
| * Added a new warning, 'unsupported-delete-operation', which is |
| emitted when item deletion is tried on an object which doesn't |
| have this ability. Closes issue #592. |
| |
| * Fix a false positive of 'redundant-returns-doc', occurred when the documented |
| function was using *yield* instead of *return*. |
| |
| Closes issue #984. |
| |
| * Fix false positives of 'missing-[raises|params|type]-doc' due to not |
| recognizing keyword synonyms supported by Sphinx. |
| |
| * Added a new refactoring message, 'consider-merging-isinstance', which is |
| emitted whenever we can detect that consecutive isinstance calls can be |
| merged together. |
| |
| Closes issue #968 |
| |
| * Fix a false positive of 'missing-param-doc' and 'missing-type-doc', |
| occurred when a class docstring uses the 'For the parameters, see' |
| magic string but the class __init__ docstring does not, or vice versa. |
| |
| * `redefined-outer-name` is now also emitted when a nested loop's target |
| variable is the same as a target variable in an outer loop. |
| |
| Closes issue #911. |
| |
| * Added proper exception type inference for 'missing-raises-doc'. |
| |
| * Added InvalidMessageError exception class to replace asserts in |
| pylint.utils. |
| |
| * More thorough validation in MessagesStore.register_messages() to avoid |
| one message accidentally overwriting another. |
| |
| * InvalidMessageError, UnknownMessage, and EmptyReport exceptions are |
| moved to the new pylint.exceptions submodule. |
| |
| * UnknownMessage and EmptyReport are renamed to UnknownMessageError and |
| EmptyReportError. |
| |
| * Warnings 'missing-returns-type-doc' and 'missing-yields-type-doc' |
| have each been split into two warnings - 'missing-[return|yield]-doc' |
| and 'missing-[return|yield]-type-doc'. |
| |
| * Added epytext support to docparams extension. |
| |
| Closes #1029. |
| |
| * Support having plugins with the same name and with options defined |
| |
| Closes #1018 |
| |
| * Sort configuration options in a section |
| |
| Closes #1087 |
| |
| * Added a new Python 3 warning around implementing '__div__', '__idiv__', or |
| '__rdiv__' as those methods are phased out in Python 3. |
| |
| * Added a new warning, 'overlapping-except', which is |
| emitted when two exceptions in the same except-clause are aliases |
| for each other or one exceptions is an ancestor of another. |
| |
| * Avoid crashing on ill-formatted strings when checking for string formatting errors. |
| |
| * Added a new Python 3 warning for calling 'str.encode' or 'str.decode' with a non-text |
| encoding. |
| |
| * Added new coding convention message, 'single-string-used-for-slots'. |
| |
| Closes #1166 |
| |
| * Added a new Python 3 check for accessing 'sys.maxint' which was removed in Python 3 in favor |
| of 'sys.maxsize' |
| |
| * Added a new Python 3 check for bad imports. |
| |
| * Added a new Python 3 check for accessing deprecated string functions. |
| |
| * Do not warn about unused arguments or function being redefined in singledispatch |
| registered implementations. |
| |
| Closes #1032 and #1034 |
| |
| * Added refactoring message 'no-else-return'. |
| |
| * Improve unused-variable checker to warn about unused variables in module scope. |
| |
| Closes #919 |
| |
| * Ignore modules import as _ when checking for unused imports. |
| |
| Closes #1190 |
| |
| * Improve handing of Python 3 classes with metaclasses declared in nested scopes. |
| |
| Closes #1177 |
| |
| * Added refactoring message 'consider-using-ternary'. |
| |
| Closes #1204 |
| |
| * Bug-fix for false-positive logging-format-interpolation` when format specifications |
| are used in formatted string. |
| |
| Fixes #572 |
| |
| * Added a new switch ``single-line-class-stmt`` to allow single-line declaration |
| of empty class bodies. |
| |
| Closes #738 |
| |
| * Protected access in form `type(self)._attribute` are now allowed. |
| |
| Fixes #1031 |
| |
| * Let the user modify msg-template when Pylint is called from a Python script |
| |
| Fixes #1269 |
| |
| * Imports checker supports new switch ``allow-wildcard-with-all`` which disables |
| warning on wildcard import when imported module defines `__all__` variable. |
| |
| Fixes #831 |
| |
| * `too-many-format-args` and `too-few-format-args` are emitted correctly when |
| starred expression are used in RHS tuple. |
| |
| Fixes #957 |
| |
| * `cyclic-import` checker supports local disable clauses. When one |
| of cycle imports was done in scope where disable clause was active, |
| cycle is not reported as violation. |
| |
| Fixes #59 |
| |
| |
| What's new in Pylint 1.6.3? |
| =========================== |
| |
| Release date: 2016-07-18 |
| |
| * Do not crash when inferring uninferable exception types for docparams extension |
| |
| Close #998 |
| |
| |
| What's new in Pylint 1.6.2? |
| =========================== |
| |
| Release date: TBA |
| |
| * Do not crash when printing the help of options with default regular expressions |
| |
| Close #990 |
| |
| * More granular versions for deprecated modules. |
| |
| Close #991 |
| |
| |
| What's new in Pylint 1.6.1? |
| =========================== |
| |
| Release date: 2016-07-07 |
| |
| * Use environment markers for supporting conditional dependencies. |
| |
| |
| What's New in Pylint 1.6.0? |
| =========================== |
| |
| Release date: 2016-07-03 |
| |
| * Added a new extension, `pylint.extensions.mccabe`, for warning |
| about complexity in code. |
| |
| * Deprecate support for --optimize-ast. Part of #975. |
| |
| * Deprecate support for the HTML output. Part of #975. |
| |
| * Deprecate support for --output-files. Part of #975. |
| |
| * Fixed a documentation error for the check_docs extension. Fixes #735. |
| |
| * Made the list of property-defining decorators configurable. |
| |
| * Fix a bug where the top name of a qualified import was detected as unused variable. |
| |
| Close #923. |
| |
| * bad-builtin is now an extension check. |
| |
| * generated-members support qualified name through regular expressions. |
| |
| For instance, one can specify a regular expression as --generated-members=astroid.node_classes.* |
| for ignoring every no-member error that is accessed as in `astroid.node_classes.missing.object`. |
| |
| * Add the ability to ignore files based on regex matching, with the new ``--ignore-patterns`` |
| option. |
| |
| This addresses issue #156 by allowing for multiple ignore patterns |
| to be specified. Rather than clobber the existing ignore option, we |
| introduced a new one called ignore-patterns. |
| |
| * Added a new error, 'trailing-newlines', which is emitted when a file |
| has trailing new lines. |
| |
| Closes issue #682. |
| |
| * Add a new option, 'redefining-builtins-modules', for controlling the modules |
| which can redefine builtins, such as six.moves and future.builtins. |
| |
| Close #464. |
| |
| * 'reimported' is emitted when the same name is imported from different module. |
| |
| Close #162. |
| |
| * Add a new recommendation checker, 'consider-iterating-dictionary', which is emitted |
| which is emitted when a dictionary is iterated through .keys(). |
| |
| Close #699 |
| |
| * Use the configparser backport for Python 2 |
| |
| This fixes a problem we were having with comments inside values, which is fixed |
| in Python 3's configparser. |
| Close #828 |
| |
| * A new error was added, 'invalid-length-returned', when the `__len__` |
| special method returned something else than a non-negative number. |
| |
| Close issue #557 |
| |
| * Switch to using isort internally for wrong-import-order. |
| |
| Closes #879. |
| |
| * check_docs extension can find constructor parameters in __init__. |
| |
| Closes #887. |
| |
| * Don't warn about invalid-sequence-index if the indexed object has unknown base |
| classes. |
| |
| Closes #867 |
| |
| * Don't crash when checking, for super-init-not-called, a method defined in an if block. |
| |
| * Do not emit import-error or no-name-in-module for fallback import blocks by default. |
| |
| Until now, we warned with these errors when a fallback import block (a TryExcept block |
| that contained imports for Python 2 and 3) was found, but this gets cumbersome when |
| trying to write compatible code. As such, we don't check these blocks by default, |
| but the analysis can be enforced by using the new ``--analyse-fallback-block`` flag. |
| |
| Close #769. |
| |
| |
| What's New in Pylint 1.5.5? |
| =========================== |
| |
| Release date: 2016-03-21 |
| |
| |
| * Let visit_importfrom from Python 3 porting checker be called when everything is disabled |
| |
| Because the visit method was filtering the patterns it was expecting to be activated, |
| it didn't run when everything but one pattern was disabled, leading to spurious false |
| positives |
| |
| Close #852 |
| |
| * Don't emit unsubscriptable-value for classes with unknown |
| base classes. |
| |
| Close #776. |
| |
| * Use an OrderedDict for storing the configuration elements |
| |
| This fixes an issue related to impredictible order of the disable / enable |
| elements from a config file. In certain cases, the disable was coming before |
| the enable which resulted in classes of errors to be enabled, even though the intention |
| was to disable them. The best example for this was in the context of running multiple |
| processes, each one of it having different enables / disables that affected the output. |
| |
| Close #815 |
| |
| * Don't consider bare and broad except handlers as ignoring NameError, |
| AttributeError and similar exceptions, in the context of checkers for |
| these issues. |
| |
| Closes issue #826 |
| |
| |
| What's New in Pylint 1.5.4? |
| =========================== |
| |
| Release date: 2016-01-15 |
| |
| |
| * Merge StringMethodChecker with StringFormatChecker. This fixes a |
| bug where disabling all the messages and enabling only a handful of |
| messages from the StringFormatChecker would have resulted in no |
| messages at all. |
| |
| * Don't apply unneeded-not over sets. |
| |
| |
| What's New in Pylint 1.5.3? |
| =========================== |
| |
| Release date: 2016-01-11 |
| |
| * 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. |
| |
| |
| What's New in Pylint 1.5.2? |
| =========================== |
| |
| Release date: 2015-12-21 |
| |
| * Don't crash if graphviz is not installed, instead emit a |
| warning letting the user to know. |
| |
| Closes issue #168. |
| |
| * Accept only functions and methods for the deprecated-method checker. |
| |
| This prevents a crash which can occur when an object doesn't have |
| .qname() method after the inference. |
| |
| * Don't emit super-on-old-class on classes with unknown bases. |
| Closes issue #721. |
| |
| * Allow statements in `if` or `try` blocks containing imports. |
| |
| Closes issue #714. |
| |
| |
| What's New in Pylint 1.5.1? |
| =========================== |
| |
| Release date: 2015-12-02 |
| |
| |
| * Fix a crash which occurred when old visit methods are encountered |
| in plugin modules. Closes issue #711. |
| |
| * Add wrong-import-position to check_messages's decorator arguments |
| for ImportChecker.leave_module |
| This fixes an esoteric bug which occurs when ungrouped-imports and |
| wrong-import-order are disabled and pylint is executed on multiple files. |
| What happens is that without wrong-import-position in check_messages, |
| leave_module will never be called, which means that the first non-import node |
| from other files might leak into the current file, |
| leading to wrong-import-position being emitted by pylint. |
| |
| * Fix a crash which occurred when old visit methods are encountered |
| in plugin modules. Closes issue #711. |
| |
| * Don't emit import-self and cyclic-import for relative imports |
| of modules with the same name as the package itself. |
| Closes issues #708 and #706. |
| |
| |
| What's New in Pylint 1.5.0? |
| =========================== |
| |
| Release date: 2015-11-29 |
| |
| |
| * Added multiple warnings related to imports. 'wrong-import-order' |
| is emitted when PEP 8 recommendations regarding imports are not |
| respected (that is, standard imports should be followed by third-party |
| imports and then by local imports). 'ungrouped-imports' is emitted |
| when imports from the same package or module are not placed |
| together, but scattered around in the code. 'wrong-import-position' |
| is emitted when code is mixed with imports, being recommended for the |
| latter to be at the top of the file, in order to figure out easier by |
| a human reader what dependencies a module has. |
| Closes issue #692. |
| |
| * Added a new refactoring warning, 'unneeded-not', emitted |
| when an expression with the not operator could be simplified. |
| Closes issue #670. |
| |
| * Added a new refactoring warning, 'simplifiable-if-statement', |
| used when an if statement could be reduced to a boolean evaluation |
| of its test. Closes issue #698. |
| |
| * Added a new refactoring warning, 'too-many-boolean-expressions', |
| used when an if statement contains too many boolean expressions, |
| which makes the code less maintainable and harder to understand. |
| Closes issue #677. |
| |
| * Property methods are shown as attributes instead of functions in |
| pyreverse class diagrams. Closes Issue #284 |
| |
| * Add a new refactoring error, 'too-many-nested-blocks', which is emitted |
| when a function or a method has too many nested blocks, which makes the |
| code less readable and harder to understand. Closes issue #668. |
| |
| * Add a new error, 'unsubscriptable-object', that is emitted when |
| value used in subscription expression doesn't support subscription |
| (i.e. doesn't define __getitem__ method). |
| |
| * Don't warn about abstract classes instantiated in their own |
| body. Closes issue #627. |
| |
| * Obsolete options are not present by default in the generated |
| configuration file. Closes issue #632. |
| |
| * non-iterator-returned can detect classes with iterator-metaclasses. |
| Closes issue #679. |
| |
| * Add a new error, 'unsupported-membership-test', emitted when value |
| to the right of the 'in' operator doesn't support membership test |
| protocol (i.e. doesn't define __contains__/__iter__/__getitem__) |
| |
| * Add new errors, 'not-an-iterable', emitted when non-iterable value |
| is used in an iterating context (starargs, for-statement, |
| comprehensions, etc), and 'not-a-mapping', emitted when non-mapping |
| value is used in a mapping context. Closes issue #563. |
| |
| * Make 'no-self-use' checker not emit a warning if there is a 'super()' |
| call inside the method. |
| Closes issue #667. |
| |
| * Add checker to identify multiple imports on one line. |
| Closes issue #598. |
| |
| * Fix unused-argument false positive when the "+=" operator is used. |
| Closes issue #518. |
| |
| * Don't emit import-error for ignored modules. PyLint will not emit import |
| errors for any import which is, or is a subpackage of, a module in |
| the ignored-modules list. Closes issue #223. |
| |
| * Fix unused-import false positive when the import is used in a |
| class assignment. Closes issue #475 |
| |
| * Add a new error, 'not-context-manager', emitted when something |
| that doesn't implement __enter__ and __exit__ is used in a with |
| statement. |
| |
| * Add a new warning, 'confusing-with-statement', emitted by the |
| base checker, when an ambiguous looking with statement is used. |
| For example `with open() as first, second` which looks like a |
| tuple assignment but is actually 2 context managers. |
| |
| * Add a new warning, 'duplicate-except', emitted when there is an |
| exception handler which handles an exception type that was handled |
| before. Closes issue #485. |
| |
| * A couple of warnings got promoted to errors, since they could uncover |
| potential bugs in the code. These warnings are: assignment-from-none, |
| unbalanced-tuple-unpacking, unpacking-non-sequence, non-iterator-returned. |
| Closes issue #388. |
| |
| * Allow ending a pragma control with a semicolon. In this way, users |
| can continue a pragma control with a reason for why it is used, |
| as in `# pylint: disable=old-style-class;reason=...`. |
| Closes issue #449. |
| |
| * --jobs can be used with --load-plugins now. Closes issue #456. |
| |
| * Improve the performance of --jobs when dealing only with a package |
| name. Closes issue #479. |
| |
| * Don't emit an unused-wildcard-import when the imported name comes |
| from another module and it is in fact a __future__ name. |
| |
| * The colorized reporter now works on Windows. Closes issue #96. |
| |
| * Remove pointless-except warning. It was previously disabled by |
| default and it wasn't very useful. Closes issue #506. |
| |
| * Fix a crash on Python 3 related to the string checker, which |
| crashed when it encountered a bytes string with a .format |
| method called. |
| |
| * Don't warn about no-self-use for builtin properties. |
| |
| * Fix a false positive for bad-reversed-sequence, when a subclass |
| of a `dict` provides a __reversed__ method. |
| |
| * Change the default no-docstring-rgx so missing-docstring isn't |
| emitted for private functions. |
| |
| * Don't emit redefined-outer-name for __future__ directives. |
| Closes issue #520. |
| |
| * Provide some hints for the bad-builtin message. Closes issue #522. |
| |
| * When checking for invalid arguments to a callable, in typecheck.py, |
| look up for the __init__ in case the found __new__ comes from builtins. |
| |
| Since the __new__ comes from builtins, it will not have attached any |
| information regarding what parameters it expects, so the check |
| will be useless. Retrieving __init__ in that case will at least |
| detect a couple of false negatives. Closes issue #429. |
| |
| * Don't emit no-member for classes with unknown bases. |
| |
| Since we don't know what those bases might add, we simply ignore |
| the error in this case. |
| |
| * Lookup in the implicit metaclass when checking for no-member, |
| if the class in question has an implicit metaclass, which is |
| True for new style classes. Closes issue #438. |
| |
| * Add two new warnings, duplicate-bases and inconsistent-mro. |
| |
| duplicate-bases is emitted when a class has the same bases |
| listed more than once in its bases definition, while inconsistent-mro |
| is emitted when no sane mro hierarchy can be determined. Closes issue #526. |
| |
| * Remove interface-not-implemented warning. Closes issue #532. |
| |
| * Remove the rest of interface checks: interface-is-not-class, |
| missing-interface-method, unresolved-interface. The reason is that |
| its better to start recommending ABCs instead of the old Zope era |
| of interfaces. One side effect of this change is that ignore-iface-methods |
| becomes a noop, it's deprecated and it will be removed at some time. |
| |
| * Emit a proper deprecation warning for reporters.BaseReporter.add_message. |
| |
| The alternative way is to use handle_message. add_message will be removed in |
| Pylint 1.6. |
| |
| * Added new module 'extensions' for optional checkers with the test |
| directory 'test/extensions' and documentation file 'doc/extensions.rst'. |
| |
| * Added new checker 'extensions.check_docs' that verifies parameter |
| documention in Sphinx, Google, and Numpy style. |
| |
| * Detect undefined variable cases, where the "definition" of an undefined |
| variable was in del statement. Instead of emitting used-before-assignment, |
| which is totally misleading, it now emits undefined-variable. |
| Closes issue #528. |
| |
| * Don't emit attribute-defined-outside-init and access-member-before-definition |
| for mixin classes. Actual errors can occur in mixin classes, but this is |
| controlled by the ignore-mixin-members option. Closes issue #412. |
| |
| * Improve the detection of undefined variables and variables used before |
| assignment for variables used as default arguments to function, |
| where the variable was first defined in the class scope. |
| Closes issue #342 and issue #404. |
| |
| * Add a new warning, 'unexpected-special-method-signature', which is emitted |
| when a special method (dunder method) doesn't have the expected signature, |
| which can lead to actual errors in the application code. |
| Closes issue #253. |
| |
| * Remove 'bad-context-manager' due to the inclusion of 'unexpected-special-method-signature'. |
| |
| * Don't emit no-name-in-module if the import is guarded by an ImportError, Exception or |
| a bare except clause. |
| |
| * Don't emit no-member if the attribute access node is protected by an |
| except handler, which handles AttributeError, Exception or it is a |
| bare except. |
| |
| * Don't emit import-error if the import is guarded by an ImportError, Exception or a |
| bare except clause. |
| |
| * Don't emit undefined-variable if the node is guarded by a NameError, Exception |
| or bare except clause. |
| |
| * Add a new warning, 'using-constant-test', which is emitted when a conditional |
| statement (If, IfExp) uses a test which is always constant, such as numbers, |
| classes, functions etc. This is most likely an error from the user's part. |
| Closes issue #524. |
| |
| * Don't emit 'raising-non-exception' when the exception has unknown |
| bases. We don't know what those bases actually are and it's better |
| to assume that the user knows what he is doing rather than emitting |
| a message which can be considered a false positive. |
| |
| * Look for a .pylintrc configuration file in the current folder, |
| if pylintrc is not found. Dotted pylintrc files will not be searched |
| in the parents of the current folder, as it is done for pylintrc. |
| |
| * Add a new error, 'invalid-unary-type-operand', emitted when |
| an unary operand is used on something which doesn't support that |
| operation (for instance, using the unary bitwise inversion operator |
| on an instance which doesn't implement __invert__). |
| |
| * Take in consideration differences between arguments of various |
| type of functions (classmethods, staticmethods, properties) |
| when checking for `arguments-differ`. Closes issue #548. |
| |
| * astroid.inspector was moved to pylint.pyreverse, since it belongs |
| there and it doesn't need to be in astroid. |
| |
| * astroid.utils.LocalsVisitor was moved to pylint.pyreverse.LocalsVisitor. |
| |
| * pylint.checkers.utils.excepts_import_error was removed. |
| Use pylint.chekcers.utils.error_of_type instead. |
| |
| * Don't emit undefined-all-variables for nodes which can't be |
| inferred (YES nodes). |
| |
| * yield-outside-func is also emitted for `yield from`. |
| |
| * Add a new error, 'too-many-star-expressions', emitted when |
| there are more than one starred expression (`*x`) in an assignment. |
| The warning is emitted only on Python 3. |
| |
| * Add a new error, 'invalid-star-assignment-target', emitted when |
| a starred expression (`*x`) is used as the lhs side of an assignment, |
| as in `*x = [1, 2]`. This is not a SyntaxError on Python 3 though. |
| |
| * Detect a couple of objects which can't be base classes (bool, |
| slice, range and memoryview, which weren't detected until now). |
| |
| * Add a new error for the Python 3 porting checker, `import-star-module-level`, |
| which is used when a star import is detected in another scope than the |
| module level, which is an error on Python 3. Using this will emit a |
| SyntaxWarning on Python 2. |
| |
| * Add a new error, 'star-needs-assignment-target', emitted on Python 3 when |
| a Starred expression (`*x`) is not used in an assignment target. This is not |
| caught when parsing the AST on Python 3, so it needs to be a separate check. |
| |
| * Add a new error, 'unsupported-binary-operation', emitted when |
| two a binary arithmetic operation is executed between two objects |
| which don't support it (a number plus a string for instance). |
| This is currently disabled, since the it exhibits way too many false |
| positives, but it will be reenabled as soon as possible. |
| |
| * New imported features from astroid into pyreverse: pyreverse.inspector.Project, |
| pyreverse.inspector.project_from_files and pyreverse.inspector.interfaces. |
| |
| These were moved since they didn't belong in astroid. |
| |
| * Enable misplaced-future for Python 3. Closes issue #580. |
| |
| * Add a new error, 'nonlocal-and-global', which is emitted when a |
| name is found to be both nonlocal and global in the same scope. |
| Closes issue #581. |
| |
| * ignored-classes option can work with qualified names (ignored-classes=optparse.Values) |
| Closes issue #297. |
| |
| * ignored-modules can work with qualified names as well as with Unix pattern |
| matching for recursive ignoring. Closes issues #244. |
| |
| * Improve detection of relative imports in non-packages, as well as importing |
| missing modules with a relative import from a package. |
| |
| * Don't emit no-init if not all the bases from a class are known. |
| Closes issue #604. |
| |
| * --no-space-check option accepts `empty-line` as a possible option. |
| Closes issue #541. |
| |
| * --generate-rcfile generates by default human readable symbols |
| for the --disable option. Closes issue #608. |
| |
| * Improved the not-in-loop checker to properly detect more cases. |
| |
| * Add a new error, 'continue-in-finally', which is emitted when |
| the `continue` keyword is found inside a `finally` clause, which |
| is a SyntaxError. |
| |
| * The --zope flag is deprecated and it is slated for removal |
| in Pylint 1.6. |
| |
| The reason behind this removal is the fact that it's a specialized |
| flag and there are solutions for the original problem: |
| use --generated-members with the members that causes problems |
| when using Zope or add AST transforms tailored to the zope |
| project. |
| |
| At the same time, --include-ids and --symbols will also be removed |
| in Pylint 1.6. Closes issue #570. |
| |
| * missing-module-attribute was removed and the corresponding |
| CLI option, required-attributes, which is slated for removal |
| in Pylint 1.6. |
| |
| * missing-reversed-argument was removed. |
| |
| The reason behind this is that this kind of errors should be |
| detected by the type checker for *all* the builtins and not |
| as a special case for the reversed builtin. This will happen |
| shortly in the future. |
| |
| * --comment flag is obsolete and it will be removed in Pylint 1.6. |
| |
| * --profile flag is obsolete and it will be removed in Pylint 1.6. |
| |
| * Add a new error, 'misplaced-bare-raise'. |
| |
| The error is used when a bare raise is not used inside an except clause. |
| This can generate a RuntimeError in Python, if there are no active exceptions |
| to be reraised. While it works in Python 2 due to the fact that the exception |
| leaks outside of the except block, it's nevertheless a behaviour that |
| a user shouldn't depend upon, since it's not obvious to the reader of the code |
| what exception will be raised and it will not be compatible with Python 3 anyhow. |
| Closes issue #633. |
| |
| * Bring logilab-common's ureports into pylint.reporters. |
| |
| With this change, we moved away from depending on logilab-common, |
| having in Pylint all the components that were used from logilab-common. |
| The API should be considered an implementation detail and can change at |
| some point in the future. |
| Closes issue #621. |
| |
| * `reimported` is emitted for reimported objects on the same line. |
| |
| Closes issue #639. |
| |
| * Abbreviations of command line options are not supported anymore. |
| |
| Using abbreviations for CLI options was never considered to be |
| a feature of pylint, this fact being only a side effect of using optparse. |
| As this was the case, using --load-plugin or other abbreviation |
| for --load-plugins never actually worked, while it also didn't raise |
| an error. Closes issue #424. |
| |
| * Add a new error, 'nonlocal-without-binding' |
| |
| The error is emitted on Python 3 when a nonlocal name is not bound |
| to any variable in the parents scopes. Closes issue #582. |
| |
| * 'deprecated-module' can be shown for modules which aren't |
| available. Closes issue #362. |
| |
| * Don't consider a class abstract if its members can't |
| be properly inferred. |
| |
| This fixes a false positive related to abstract-class-instantiated. |
| Closes issue #648. |
| |
| * Add a new checker for the async features added by PEP 492. |
| |
| * Add a new error, 'yield-inside-async-function', emitted on |
| Python 3.5 and upwards when the `yield` statement is found inside |
| a new coroutine function (PEP 492). |
| |
| * Add a new error, 'not-async-context-manager', emitted when |
| an async context manager block is used with an object which doesn't |
| support this protocol (PEP 492). |
| |
| * Add a new convention warning, 'singleton-comparison', emitted when |
| comparison to True, False or None is found. |
| |
| * Don't emit 'assigning-non-slot' for descriptors. Closes issue #652. |
| |
| * Add a new error, 'repeated-keyword', when a keyword argument is passed |
| multiple times into a function call. |
| |
| This is similar with redundant-keyword-arg, but it's mildly different |
| that it needs to be a separate error. |
| |
| * --enable=all can now be used. Closes issue #142. |
| |
| * Add a new convention message, 'misplaced-comparison-constant', |
| emitted when a constant is placed in the left hand side of a comparison, |
| as in '5 == func()'. This is also called Yoda condition, since the |
| flow of code reminds of the Star Wars green character, conditions usually |
| encountered in languages with variabile assignments in conditional |
| statements. |
| |
| * Add a new convention message, 'consider-using-enumerate', which is |
| emitted when code that uses `range` and `len` for iterating is encountered. |
| Closes issue #684. |
| |
| * Added two new refactoring messages, 'no-classmethod-decorator' and |
| 'no-staticmethod-decorator', which are emitted when a static method or a class |
| method is declared without using decorators syntax. |
| |
| Closes issue #675. |
| |
| |
| |
| What's New in Pylint 1.4.3? |
| =========================== |
| |
| Release date: 2015-03-14 |
| |
| |
| * Remove three warnings: star-args, abstract-class-little-used, |
| abstract-class-not-used. These warnings don't add any real value |
| and they don't imply errors or problems in the code. |
| |
| * Added a new option for controlling the peephole optimizer in astroid. |
| The option ``--optimize-ast`` will control the peephole optimizer, |
| which is used to optimize a couple of AST subtrees. The current problem |
| solved by the peephole optimizer is when multiple joined strings, |
| with the addition operator, are encountered. If the numbers of such |
| strings is high enough, Pylint will then fail with a maximum recursion |
| depth exceeded error, due to its visitor architecture. The peephole |
| just transforms such calls, if it can, into the final resulting string |
| and this exhibit a problem, because the visit_binop method stops being |
| called (in the optimized AST it will be a Const node). |
| |
| |
| What's New in Pylint 1.4.2? |
| =========================== |
| |
| Release date: 2015-03-11 |
| |
| * Don't require a docstring for empty modules. Closes issue #261. |
| |
| * Fix a false positive with `too-few-format-args` string warning, |
| emitted when the string format contained a normal positional |
| argument ('{0}'), mixed with a positional argument which did |
| an attribute access ('{0.__class__}'). |
| Closes issue #463. |
| |
| * Take in account all the methods from the ancestors |
| when checking for too-few-public-methods. Closes issue #471. |
| |
| * Catch enchant errors and emit 'invalid-characters-in-docstring' |
| when checking for spelling errors. Closes issue #469. |
| |
| * Use all the inferred statements for the super-init-not-called |
| check. Closes issue #389. |
| |
| * Add a new warning, 'unichr-builtin', emitted by the Python 3 |
| porting checker, when the unichr builtin is found. Closes issue #472. |
| |
| * Add a new warning, 'intern-builtin', emitted by the Python 3 |
| porting checker, when the intern builtin is found. Closes issue #473. |
| |
| * Add support for editable installations. |
| |
| * The HTML output accepts the `--msg-template` option. Patch by |
| Dan Goldsmith. |
| |
| * Add 'map-builtin-not-iterating' (replacing 'implicit-map-evaluation'), |
| 'zip-builtin-not-iterating', 'range-builtin-not-iterating', and |
| 'filter-builtin-not-iterating' which are emitted by `--py3k` when the |
| appropriate built-in is not used in an iterating context (semantics |
| taken from 2to3). |
| |
| * Add a new warning, 'unidiomatic-typecheck', emitted when an explicit |
| typecheck uses type() instead of isinstance(). For example, |
| `type(x) == Y` instead of `isinstance(x, Y)`. Patch by Chris Rebert. |
| Closes issue #299. |
| |
| * Add support for combining the Python 3 checker mode with the --jobs |
| flag (--py3k and --jobs). Closes issue #467. |
| |
| * Add a new warning for the Python 3 porting checker, 'using-cmp-argument', |
| emitted when the `cmp` argument for the `list.sort` or `sorted builtin` |
| is encountered. |
| |
| * Make the --py3k flag commutative with the -E flag. Also, this patch |
| fixes the leaks of error messages from the Python 3 checker when |
| the errors mode was activated. Closes issue #437. |
| |
| |
| What's New in Pylint 1.4.1? |
| =========================== |
| |
| Release date: 2015-01-16 |
| |
| * Look only in the current function's scope for bad-super-call. |
| Closes issue #403. |
| |
| * Check the return of properties when checking for not-callable. |
| Closes issue #406. |
| |
| * Warn about using the input() or round() built-ins for Python 3. |
| Closes issue #411. |
| |
| * Proper abstract method lookup while checking for |
| abstract-class-instantiated. Closes issue #401. |
| |
| * Use a mro traversal for finding abstract methods. Closes issue #415. |
| |
| * Fix a false positive with catching-non-exception and tuples of |
| exceptions. |
| |
| * Fix a false negative with raising-non-exception, when the raise used |
| an uninferrable exception context. |
| |
| * Fix a false positive on Python 2 for raising-bad-type, when |
| raising tuples in the form 'raise (ZeroDivisionError, None)'. |
| |
| * Fix a false positive with invalid-slots-objects, where the slot entry |
| was a unicode string on Python 2. Closes issue #421. |
| |
| * Add a new warning, 'redundant-unittest-assert', emitted when using |
| unittest's methods assertTrue and assertFalse with constant value |
| as argument. Patch by Vlad Temian. |
| |
| * Add a new JSON reporter, usable through -f flag. |
| |
| * Add the method names for the 'signature-differs' and 'argument-differs' |
| warnings. Closes issue #433. |
| |
| * Don't compile test files when installing. |
| |
| * Fix a crash which occurred when using multiple jobs and the files |
| given as argument didn't exist at all. |
| |
| |
| What's New in Pylint 1.4.0? |
| ============================ |
| |
| Release date: 2014-11-23 |
| |
| |
| * Added new options for controlling the loading of C extensions. |
| By default, only C extensions from the stdlib will be loaded |
| into the active Python interpreter for inspection, because they |
| can run arbitrary code on import. The option |
| `--extension-pkg-whitelist` can be used to specify modules |
| or packages that are safe to load. |
| |
| * Change default max-line-length to 100 rather than 80 |
| |
| * Drop BaseRawChecker class which were only there for backward |
| compat for a while now |
| |
| * Don't try to analyze string formatting with objects coming from |
| function arguments. Closes issue #373. |
| |
| * 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. |
| |
| * Add new '-j' option for running checks in sub-processes. |
| |
| * 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 occurred 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. |
| |
| * Extend the cases where 'undefined-variable' and 'used-before-assignment' |
| can be detected. Closes issue #291. |
| |
| * Add support for customising callback identifiers, by adding a new |
| '--callbacks' command line option. Closes issue #326. |
| |
| * Add a new warning, 'logging-format-interpolation', emitted when .format() |
| string interpolation is used within logging function calls. |
| |
| * Don't emit 'unbalanced-tuple-unpacking' when the rhs of the assignment |
| is a variable length argument. Closes issue #329. |
| |
| * Add a new warning, 'inherit-non-class', emitted when a class inherits |
| from something which is not a class. Closes issue #331. |
| |
| * Fix another false positives with 'undefined-variable', where the variable |
| can be found as a class assignment and used in a function annotation. |
| Closes issue #342. |
| |
| * Handle assignment of the string format method to a variable. |
| Closes issue #351. |
| |
| * Support wheel packaging format for PyPi. Closes issue #334. |
| |
| * Check that various built-ins that do not exist in Python 3 are not |
| used: apply, basestring, buffer, cmp, coerce, execfile, file, long |
| raw_input, reduce, StandardError, unicode, reload and xrange. |
| |
| * Warn for magic methods which are not used in any way in Python 3: |
| __coerce__, __delslice__, __getslice__, __setslice__, __cmp__, |
| __oct__, __nonzero__ and __hex__. |
| |
| * Don't emit 'assigning-non-slot' when the assignment is for a property. |
| Closes issue #359. |
| |
| * Fix for regression: '{path}' was no longer accepted in '--msg-template'. |
| |
| * Report the percentage of all messages, not just for errors and warnings. |
| Closes issue #319. |
| |
| * 'too-many-public-methods' is reported only for methods defined in a class, |
| not in its ancestors. Closes issue #248. |
| |
| * 'too-many-lines' disable pragma can be located on any line, not only the |
| first. Closes issue #321. |
| |
| * Warn in Python 2 when an import statement is found without a |
| corresponding `from __future__ import absolute_import`. |
| |
| * Warn in Python 2 when a non-floor division operation is found without |
| a corresponding `from __future__ import division`. |
| |
| * Add a new option, 'exclude-protected', for excluding members |
| from the protected-access warning. Closes issue #48. |
| |
| * Warn in Python 2 when using dict.iter*(), dict.view*(); none of these |
| methods are available in Python 3. |
| |
| * Warn in Python 2 when calling an object's next() method; Python 3 uses |
| __next__() instead. |
| |
| * Warn when assigning to __metaclass__ at a class scope; in Python 3 a |
| metaclass is specified as an argument to the 'class' statement. |
| |
| * Warn when performing parameter tuple unpacking; it is not supported in |
| Python 3. |
| |
| * 'abstract-class-instantiated' is also emitted for Python 2. |
| It was previously disabled. |
| |
| * Add 'long-suffix' error, emitted when encountering the long suffix |
| on numbers. |
| |
| * Add support for disabling a checker, by specifying an 'enabled' |
| attribute on the checker class. |
| |
| * Add a new CLI option, --py3k, for enabling Python 3 porting mode. This |
| mode will disable all other checkers and will emit warnings and |
| errors for constructs which are invalid or removed in Python 3. |
| |
| * Add 'old-octal-literal' to Python 3 porting checker, emitted when |
| encountering octals with the old syntax. |
| |
| * Add 'implicit-map-evaluation' to Python 3 porting checker, emitted |
| when encountering the use of map builtin, without explicit evaluation. |
| |
| |
| |
| What's New in Pylint 1.3.0? |
| =========================== |
| |
| Release date: 2014-07-26 |
| |
| * 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. |
| |
| |
| What's New in Pylint 1.2.1? |
| =========================== |
| |
| Release date: 2014-04-30 |
| |
| * 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). |
| |
| |
| What's New in Pylint 1.2.0? |
| =========================== |
| |
| Release date: 2014-04-18 |
| |
| * 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) |
| |
| |
| What's New in Pylint 1.1.0? |
| =========================== |
| |
| Release date: 2013-12-22 |
| |
| * Add new check for use of deprecated pragma directives "pylint:disable-msg" |
| or "pylint:enable-msg" (I0022, deprecated-pragma) which was previously |
| emitted 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 emitted 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) |
| |
| |
| What's New in Pylint 1.0.0? |
| =========================== |
| |
| Release date: 2013-08-06 |
| |
| |
| * 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 |
| |
| |
| What's New in Pylint 0.28.0? |
| ============================ |
| |
| Release date: 2013-04-25 |
| |
| * 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] |
| |
| |
| What's New in Pylint 0.27.0? |
| ============================ |
| |
| Release date: 2013-02-26 |
| |
| * #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 <F5> 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 |
| preceded 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) |
| |
| |
| What's New in Pylint 0.26.0? |
| ============================ |
| |
| Release date: 2012-10-05 |
| |
| * #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) |
| |
| |
| What's New in Pylint 0.25.2? |
| ============================ |
| |
| Release date: 2012-07-17 |
| |
| * #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 emitted 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 |
| |
| |
| What's New in Pylint 0.25.1? |
| ============================ |
| |
| Release date: 2011-12-08 |
| |
| * #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. |
| |
| |
| What's New in Pylint 0.25.0? |
| ============================ |
| |
| Release date: 2011-10-7 |
| |
| * #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 |
| |
| |
| What's New in Pylint 0.24.0? |
| ============================ |
| |
| Release date: 2011-07-18 |
| |
| * #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 |
| |
| |
| What's New in Pylint 0.23.0? |
| ============================ |
| |
| Release date: 2011-01-11 |
| |
| * 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. |
| |
| |
| What's New in Pylint 0.22.0? |
| ============================ |
| |
| Release date: 2010-11-15 |
| |
| * python versions: minimal python3.x support; drop python < 2.5 support |
| |
| |
| What's New in Pylint 0.21.4? |
| ============================ |
| |
| Release date: 2010-10-27 |
| |
| * fix #48066: pylint crashes when redirecting output containing non-ascii characters |
| |
| * fix #19799: "pylint -blah" exit with status 2 |
| |
| * update documentation |
| |
| |
| What's New in Pylint 0.21.3? |
| ============================ |
| |
| Release date: 2010-09-28 |
| |
| * 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. |
| |
| |
| What's New in Pylint 0.21.2? |
| ============================ |
| |
| Release date: 2010-08-26 |
| |
| * fix #36193: import checker raise exception on cyclic import |
| |
| * fix #28796: regression in --generated-members introduced pylint 0.20 |
| |
| * some documentation cleanups |
| |
| |
| What's New in Pylint 0.21.1? |
| ============================ |
| |
| Release date: 2010-06-04 |
| |
| * 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) |
| |
| |
| What's New in Pylint 0.21.0? |
| ============================ |
| |
| Release date: 2010-05-11 |
| |
| * 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 |
| |
| |
| |
| What's New in Pylint 0.20.0? |
| ============================ |
| |
| Release date: 2010-03-01 |
| |
| * 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 |
| |
| |
| What's New in Pylint 0.19.0? |
| ============================ |
| |
| Release date: 2009-12-18 |
| |
| * implement #18947, #5561: checker for function arguments |
| |
| * include James Lingard string format checker |
| |
| * include simple message (ids) listing by Vincent Ferotin (#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 Ferotin) |
| |
| |
| What's New in Pylint 0.18.0? |
| ============================ |
| |
| Release date: 2009-03-25 |
| |
| * 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 |
| |
| |
| What's New in Pylint 0.17.0? |
| ============================ |
| |
| Release date: 2009-03-19 |
| |
| * 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 |
| |
| |
| What's New in Pylint 0.16.0? |
| ============================ |
| |
| Release date: 2009-01-28 |
| |
| * 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 |
| |
| |
| What's New in Pylint 0.15.2? |
| ============================ |
| |
| Release date: 2008-10-13 |
| |
| * 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 |
| |
| |
| What's New in Pylint 0.15.1? |
| ============================ |
| |
| Release date: 2008-09-15 |
| |
| * 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 |
| |
| |
| What's New in Pylint 0.15.0? |
| ============================ |
| |
| Release date: 2008-09-10 |
| |
| * 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 |
| |
| |
| What's New in Pylint 0.14.0? |
| ============================ |
| |
| Release date: 2008-01-14 |
| |
| * 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) |
| |
| |
| What's New in Pylint 0.13.2? |
| ============================ |
| |
| Release date: 2007-06-07 |
| |
| * 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 |
| |
| |
| |
| What's New in Pylint 0.13.1? |
| ============================ |
| |
| Release date: 2007-03-02 |
| |
| * fix some unexplained 0.13.0 packaging issue which led to a bunch of |
| files missing from the distribution |
| |
| |
| |
| What's New in Pylint 0.13.0? |
| ============================ |
| |
| Release date: 2007-02-28 |
| |
| * 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 |
| |
| |
| What's New in Pylint 0.12.2? |
| ============================ |
| |
| Release date: 2006-11-23 |
| |
| * 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 |
| |
| |
| What's New in Pylint 0.12.1? |
| ============================ |
| |
| |
| Release date: 2006-09-25 |
| |
| * 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__ |
| |
| |
| What's New in Pylint 0.12.0? |
| ============================ |
| |
| |
| Release date: 2006-08-10 |
| |
| * usability changes: |
| |
| * parseable, html and color options are now handled by a single |
| output-format option |
| |
| * enable-<checkerid> 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 |
| |
| |
| What's New in Pylint 0.11.0? |
| ============================ |
| |
| Release date: 2006-04-19 |
| |
| * 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 |
| |
| |
| What's New in Pylint 0.10.0? |
| ============================ |
| |
| Release date: 2006-03-06 |
| |
| * 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 |
| |
| |
| What's New in Pylint 0.9.0? |
| ============================ |
| |
| Release date: 2006-01-10 |
| |
| * 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 |
| |
| |
| What's New in Pylint 0.8.1? |
| ============================ |
| |
| |
| Release date: 2005-11-07 |
| |
| * 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) |
| |
| |
| What's New in Pylint 0.8.0? |
| ============================ |
| |
| Release date: 2005-10-21 |
| |
| * 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) |
| |
| |
| What's New in Pylint 0.7.0? |
| ============================ |
| |
| |
| Release date: 2005-05-27 |
| |
| * 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 |
| |
| |
| What's New in Pylint 0.6.4? |
| =========================== |
| |
| |
| Release date: 2005-04-14 |
| |
| * 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 |
| |
| |
| What's New in Pylint 0.6.3? |
| =========================== |
| |
| Release date: 2005-02-24 |
| |
| * 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 |
| |
| |
| What's New in Pylint 0.6.2? |
| ============================ |
| |
| |
| Release date: 2005-02-16 |
| |
| * 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 |
| |
| |
| What's New in Pylint 0.6.1? |
| =========================== |
| |
| Release date: 2005-02-04 |
| |
| * 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) |
| |
| |
| What's New in Pylint 0.6.0? |
| =========================== |
| |
| Release date: 2005-01-20 |
| |
| * 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 |
| |
| |
| What's New in Pylint 0.5.0? |
| =========================== |
| |
| Release date: 2004-10-19 |
| |
| * avoid importing 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 |
| |
| |
| What's New in Pylint 0.4.2? |
| =========================== |
| |
| Release date: 2004-07-08 |
| |
| * fix pylint emacs mode |
| |
| * fix classes checkers to handler twisted interfaces |
| |
| |
| What's New in Pylint 0.4.1? |
| =========================== |
| |
| Release date: 2004-05-14 |
| |
| * 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 |
| |
| |
| What's New in Pylint 0.4.0? |
| =========================== |
| |
| Release date: 2004-05-10 |
| |
| * 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 |
| |
| |
| What's New in Pylint 0.3.3? |
| =========================== |
| |
| Release date: 2004-02-17 |
| |
| * 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 |
| |
| |
| |
| What's New in Pylint 0.3.2? |
| =========================== |
| |
| Release date: 2003-12-23 |
| |
| * 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 |
| |
| |
| |
| What's New in Pylint 0.3.1? |
| =========================== |
| |
| |
| Release date: 2003-12-05 |
| |
| * bug fix in format and classes checkers |
| |
| * remove print statement from imports checkers |
| |
| * provide a simple tk gui, essentially useful for windows users |
| |
| |
| |
| What's New in Pylint 0.3.0? |
| =========================== |
| |
| |
| Release date: 2003-11-20 |
| |
| * 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 (controlled 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 |
| |
| |
| |
| What's New in Pylint 0.2.1? |
| =========================== |
| |
| |
| Release date: 2003-10-10 |
| |
| * 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 |
| |
| |
| What's New in Pylint 0.2.0? |
| =========================== |
| |
| |
| Release date: 2003-09-12 |
| |
| * 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 |
| |
| |
| What's New in Pylint 0.1.2? |
| =========================== |
| |
| |
| Release date: 2003-06-18 |
| |
| * bug fix release |
| |
| * remove dependency to pyreverse |
| |
| |
| What's New in Pylint 0.1.1? |
| =========================== |
| |
| |
| Release date: 2003-06-01 |
| |
| * much more functionalities ! |
| |
| |
| What's New in Pylint 0.1? |
| =========================== |
| |
| Release date: 2003-05-19 |
| |
| * initial release |