| ------------------ |
| Pylint's ChangeLog |
| ------------------ |
| |
| |
| |
| What's New in Pylint 2.12.0? |
| ============================ |
| Release date: TBA |
| |
| .. |
| Put new features here and also in 'doc/whatsnew/2.12.rst' |
| |
| |
| |
| What's New in Pylint 2.11.2? |
| ============================ |
| Release date: TBA |
| |
| |
| |
| What's New in Pylint 2.11.1? |
| ============================ |
| Release date: 2021-09-16 |
| |
| .. |
| Put bug fixes that should not wait for a new minor version here |
| |
| * ``unspecified-encoding`` now checks the encoding of ``pathlib.Path()`` correctly |
| |
| Closes #5017 |
| |
| |
| What's New in Pylint 2.11.0? |
| ============================ |
| Release date: 2021-09-16 |
| |
| * The python3 porting mode checker and it's ``py3k`` option were removed. You can still find it in older pylint |
| versions. |
| |
| * ``raising-bad-type`` is now properly emitted when raising a string |
| |
| * Added new extension ``SetMembershipChecker`` with ``use-set-for-membership`` check: |
| Emitted when using an in-place defined ``list`` or ``tuple`` to do a membership test. ``sets`` are better optimized for that. |
| |
| Closes #4776 |
| |
| |
| * Added ``py-version`` config key (if ``[MASTER]`` section). Used for version dependant checks. |
| Will default to whatever Python version pylint is executed with. |
| |
| * ``CodeStyleChecker`` |
| |
| * Added ``consider-using-assignment-expr``: Emitted when an assignment is directly followed by an if statement |
| and both can be combined by using an assignment expression ``:=``. Requires Python 3.8 |
| |
| Closes #4862 |
| |
| * Added ``consider-using-f-string``: Emitted when .format() or '%' is being used to format a string. |
| |
| Closes #3592 |
| |
| * Fix false positive for ``consider-using-with`` if a context manager is assigned to a |
| variable in different paths of control flow (e. g. if-else clause). |
| |
| Closes #4751 |
| |
| * https is now prefered in the documentation and http://pylint.pycqa.org correctly redirect to https://pylint.pycqa.org |
| |
| Closes #3802 |
| |
| * Fix false positive for ``function-redefined`` for simple type annotations |
| |
| Closes #4936 |
| |
| * Fix false positive for ``protected-access`` if a protected member is used in type hints of function definitions |
| |
| * Fix false positive ``dict-iter-missing-items`` for dictionaries only using tuples as keys |
| |
| Closes #3282 |
| |
| * The ``unspecified-encoding`` checker now also checks calls to ``pathlib.Path().read_text()`` |
| and ``pathlib.Path().write_text()`` |
| |
| Closes #4945 |
| |
| * Fix false positive ``superfluous-parens`` for tuples created with inner tuples |
| |
| Closes #4907 |
| |
| * Fix false positive ``unused-private-member`` for accessing attributes in a class using ``cls`` |
| |
| Closes #4849 |
| |
| * Fix false positive ``unused-private-member`` for private staticmethods accessed in classmethods. |
| |
| Closes #4849 |
| |
| * Extended ``consider-using-in`` check to work for attribute access. |
| |
| * Setting ``min-similarity-lines`` to 0 now makes the similarty checker stop checking for duplicate code |
| |
| Closes #4901 |
| |
| * Fix a bug where pylint complained if the cache's parent directory does not exist |
| |
| Closes #4900 |
| |
| * The ``global-variable-not-assigned`` checker now catches global variables that are never reassigned in a |
| local scope and catches (reassigned) functions |
| |
| Closes #1375 |
| Closes #330 |
| |
| * Fix false positives for invalid-all-format that are lists or tuples at runtime |
| |
| Closes #4711 |
| |
| * Fix ``no-self-use`` and ``docparams extension`` for async functions and methods. |
| |
| * Add documentation for ``pyreverse`` and ``symilar`` |
| |
| Closes #4616 |
| |
| * Non symbolic messages with the wrong capitalisation now correctly trigger ``use-symbolic-message-instead`` |
| |
| Closes #5000 |
| |
| * The ``consider-iterating-dictionary`` checker now also considers membership checks |
| |
| Closes #4069 |
| |
| * The ``invalid-name`` message is now more detailed when using multiple naming style regexes. |
| |
| |
| What's New in Pylint 2.10.2? |
| ============================ |
| Release date: 2021-08-21 |
| |
| * We now use platformdirs instead of appdirs since the latter is not maintained. |
| |
| Closes #4886 |
| |
| * Fix a crash in the checker raising ``shallow-copy-environ`` when failing to infer |
| on ``copy.copy`` |
| |
| Closes #4891 |
| |
| |
| |
| What's New in Pylint 2.10.1? |
| ============================ |
| Release date: 2021-08-20 |
| |
| * pylint does not crash when PYLINT_HOME does not exist. |
| |
| Closes #4883 |
| |
| |
| What's New in Pylint 2.10.0? |
| ============================ |
| Release date: 2021-08-20 |
| |
| * pyreverse: add option to produce colored output. |
| |
| Closes #4488 |
| |
| * pyreverse: add output in PlantUML format. |
| |
| Closes #4498 |
| |
| * ``consider-using-with`` is no longer triggered if a context manager is returned from a function. |
| |
| Closes #4748 |
| |
| * pylint does not crash with a traceback anymore when a file is problematic. It |
| creates a template text file for opening an issue on the bug tracker instead. |
| The linting can go on for other non problematic files instead of being impossible. |
| |
| * pyreverse: Show class has-a relationships inferred from the type-hint |
| |
| Closes #4744 |
| |
| * Fixed a crash when importing beyond the top level package during ``import-error`` |
| message creation |
| |
| Closes #4775 |
| |
| * Added ``ignored-parents`` option to the design checker to ignore specific |
| classes from the ``too-many-ancestors`` check (R0901). |
| |
| Partially closes #3057 |
| |
| * Added ``unspecified-encoding``: Emitted when open() is called without specifying an encoding |
| |
| Closes #3826 |
| |
| * Improved the Similarity checker performance. Fix issue with ``--min-similarity-lines`` used with ``--jobs``. |
| |
| Close #4120 |
| Close #4118 |
| |
| * Don't emit ``no-member`` error if guarded behind if statement. |
| |
| Ref #1162 |
| Closes #1990 |
| Closes #4168 |
| |
| * The default for ``PYLINTHOME`` is now the standard ``XDG_CACHE_HOME``, and pylint now uses ``appdirs``. |
| |
| Closes #3878 |
| |
| * Added ``use-list-literal``: Emitted when ``list()`` is called with no arguments instead of using ``[]`` |
| |
| Closes #4365 |
| |
| * Added ``use-dict-literal``: Emitted when ``dict()`` is called with no arguments instead of using ``{}`` |
| |
| Closes #4365 |
| |
| * Added optional extension ``consider-ternary-expression``: Emitted whenever a variable is assigned in both branches of an if/else block. |
| |
| Closes # 4366 |
| |
| * Added optional extension ``while-used``: Emitted whenever a ``while`` loop is used. |
| |
| Closes # 4367 |
| |
| * Added ``forgotten-debug-statement``: Emitted when ``breakpoint``, ``pdb.set_trace`` or ``sys.breakpointhook`` calls are found |
| |
| Closes #3692 |
| |
| * Fix false-positive of ``unused-private-member`` when using nested functions in a class |
| |
| Closes #4673 |
| |
| * Fix crash for ``unused-private-member`` that occurred with nested attributes. |
| |
| Closes #4755 |
| |
| * Fix a false positive for ``unused-private-member`` with class names |
| |
| Closes #4681 |
| |
| * Fix false positives for ``superfluous-parens`` with walrus operator, ternary operator and inside list comprehension. |
| |
| Closes #2818 |
| Closes #3249 |
| Closes #3608 |
| Closes #4346 |
| |
| * Added ``format-string-without-interpolation`` checker: Emitted when formatting is applied to a string without any variables to be replaced |
| |
| Closes #4042 |
| |
| * Refactor of ``--list-msgs`` & ``--list-msgs-enabled``: both options now show whether messages are emittable with the current interpreter. |
| |
| Closes #4778 |
| |
| * Fix false negative for ``used-before-assignment`` when the variable is assigned |
| in an exception handler, but used outside of the handler. |
| |
| Closes #626 |
| |
| * Added ``disable-next`` option: allows using `# pylint: disable-next=msgid` to disable a message for the following line |
| |
| Closes #1682 |
| |
| * Added ``redundant-u-string-prefix`` checker: Emitted when the u prefix is added to a string |
| |
| Closes #4102 |
| |
| * Fixed ``cell-var-from-loop`` checker: handle cell variables in comprehensions within functions, |
| and function default argument expressions. Also handle basic variable shadowing. |
| |
| Closes #2846 |
| Closes #3107 |
| |
| * Fixed bug with ``cell-var-from-loop`` checker: it no longer has false negatives when |
| both ``unused-variable`` and ``used-before-assignment`` are disabled. |
| |
| * Fix false postive for ``invalid-all-format`` if the list or tuple builtin functions are used |
| |
| Closes #4711 |
| |
| * Config files can now contain environment variables |
| |
| Closes #3839 |
| |
| * Fix false-positive ``used-before-assignment`` with an assignment expression in a ``Return`` node |
| |
| Closes #4828 |
| |
| * Added ``use-sequence-for-iteration``: Emitted when iterating over an in-place defined ``set``. |
| |
| * ``CodeStyleChecker`` |
| |
| * Limit ``consider-using-tuple`` to be emitted only for in-place defined ``lists``. |
| |
| * Emit ``consider-using-tuple`` even if list contains a ``starred`` expression. |
| |
| * Ignore decorators lines by similarities checker when ignore signatures flag enabled |
| |
| Closes #4839 |
| |
| * Allow ``true`` and ``false`` values in ``pylintrc`` for better compatibility with ``toml`` config. |
| |
| * Class methods' signatures are ignored the same way as functions' with similarities "ignore-signatures" option enabled |
| |
| Closes #4653 |
| |
| * Improve performance when inferring ``Call`` nodes, by utilizing caching. |
| |
| * Improve error message for invalid-metaclass when the node is an Instance. |
| |
| |
| What's New in Pylint 2.9.6? |
| =========================== |
| Release date: 2021-07-28 |
| |
| * Fix a false positive ``undefined-variable`` when variable name in decoration |
| matches function argument |
| |
| Closes #3791 |
| |
| |
| What's New in Pylint 2.9.5? |
| =========================== |
| Release date: 2021-07-21 |
| |
| * Fix a crash when there would be a 'TypeError object does not support |
| item assignment' in the code we parse. |
| |
| Closes #4439 |
| |
| * Fix crash if a callable returning a context manager was assigned to a list or dict item |
| |
| Closes #4732 |
| |
| * Fix a crash when a AttributeInferenceError was not handled properly when |
| failing to infer the real name of an import in astroid. |
| |
| Closes #4692 |
| |
| |
| What's New in Pylint 2.9.4? |
| =========================== |
| Release date: 2021-07-20 |
| |
| * Added ``time.clock`` to deprecated functions/methods for python 3.3 |
| |
| * Fix bug in which --fail-on can return a zero exit code even when the specified issue is present |
| |
| Closes #4296 |
| Closes #3363 |
| |
| * Fix hard failure when handling missing attribute in a class with duplicated bases |
| |
| Closes #4687 |
| |
| * Fix false-positive ``consider-using-with`` (R1732) if a ternary conditional is used together with ``with`` |
| |
| Closes #4676 |
| |
| * Fix false-positive ``deprecated-module`` when relative import uses deprecated module name. |
| |
| Closes #4629 |
| |
| * Fix false-positive ``consider-using-with`` (R1732) if ``contextlib.ExitStack`` takes care of calling the ``__exit__`` method |
| |
| Closes #4654 |
| |
| * Fix a false positive for ``unused-private-member`` when mutating a private attribute |
| with ``cls`` |
| |
| Closes #4657 |
| |
| * Fix ignored empty functions by similarities checker with "ignore-signatures" option enabled |
| |
| Closes #4652 |
| |
| * Fix false-positive of ``use-maxsplit-arg`` when index is incremented in |
| a loop |
| |
| Closes #4664 |
| |
| * Don't emit ``cyclic-import`` message if import is guarded by ``typing.TYPE_CHECKING``. |
| |
| Closes #3525 |
| |
| * Fix false-positive ``not-callable`` with alternative ``TypedDict`` syntax |
| |
| Closes #4715 |
| |
| * Clarify documentation for consider-using-from-import |
| |
| * Don't emit ``unreachable`` warning for empty generator functions |
| |
| Closes #4698 |
| |
| * Don't emit ``import-error``, ``no-name-in-module``, and ``ungrouped-imports`` |
| for imports guarded by ``sys.version_info`` or ``typing.TYPE_CHECKING``. |
| |
| Closes #3285 |
| Closes #3382 |
| |
| * Fix ``invalid-overridden-method`` with nested property |
| |
| Closes #4368 |
| |
| * Fix false-positive of ``unused-private-member`` when using ``__new__`` in a class |
| |
| Closes #4668 |
| |
| * No longer emit ``consider-using-with`` for ``ThreadPoolExecutor`` and ``ProcessPoolExecutor`` |
| as they have legitimate use cases without a ``with`` block. |
| |
| Closes #4689 |
| |
| * Fix crash when inferring variables assigned in match patterns |
| |
| Closes #4685 |
| |
| * Fix a crash when a StopIteration was raised when inferring |
| a faulty function in a context manager. |
| |
| Closes #4723 |
| |
| |
| What's New in Pylint 2.9.3? |
| =========================== |
| Release date: 2021-07-01 |
| |
| |
| * Fix a crash that happened when analysing empty function with docstring |
| in the ``similarity`` checker. |
| |
| Closes #4648 |
| |
| * The ``similarity`` checker no longer add three trailing whitespaces for |
| empty lines in its report. |
| |
| |
| What's New in Pylint 2.9.2? |
| =========================== |
| Release date: 2021-07-01 |
| |
| * Fix a crash that happened when analysing code using ``type(self)`` to access |
| a class attribute in the ``unused-private-member`` checker. |
| |
| Closes #4638 |
| |
| * Fix a false positive for ``unused-private-member`` when accessing a private variable |
| with ``self`` |
| |
| Closes #4644 |
| |
| * Fix false-positive of ``unnecessary-dict-index-lookup`` and ``consider-using-dict-items`` |
| for reassigned dict index lookups |
| |
| Closes #4630 |
| |
| |
| What's New in Pylint 2.9.1? |
| =========================== |
| Release date: 2021-06-30 |
| |
| * Upgrade astroid to 2.6.2 |
| |
| Closes #4631 |
| Closes #4633 |
| |
| |
| What's New in Pylint 2.9.0? |
| =========================== |
| Release date: 2021-06-29 |
| |
| * Python 3.10 is now supported. |
| |
| * Add type annotations to pyreverse dot files |
| |
| Closes #1548 |
| |
| * Fix missing support for detecting deprecated aliases to existing |
| functions/methods. |
| |
| Closes #4618 |
| |
| * astroid has been upgraded to 2.6.1 |
| |
| * Added various deprecated functions/methods for python 3.10, 3.7, 3.6 and 3.3 |
| |
| * Fix false positive ``useless-type-doc`` on ignored argument using ``pylint.extensions.docparams`` |
| when a function was typed using pep484 but not inside the docstring. |
| |
| Closes #4117 |
| Closes #4593 |
| |
| * ``setuptools_scm`` has been removed and replaced by ``tbump`` in order to not |
| have hidden runtime dependencies to setuptools |
| |
| * Fix a crash when a test function is decorated with ``@pytest.fixture`` and astroid can't |
| infer the name of the decorator when using ``open`` without ``with``. |
| |
| Closes #4612 |
| |
| * Added ``deprecated-decorator``: Emitted when deprecated decorator is used. |
| |
| Closes #4429 |
| |
| * Added ``ignore-paths`` behaviour. Defined regex patterns are matched against full file path. |
| |
| Close #2541 |
| |
| * Fix false negative for ``consider-using-with`` if calls like ``open()`` were used outside of assignment expressions. |
| |
| * The warning for ``arguments-differ`` now signals explicitly the difference it detected |
| by naming the argument or arguments that changed and the type of change that occurred. |
| |
| * Suppress ``consider-using-with`` inside context managers. |
| |
| Closes #4430 |
| |
| * Added ``--fail-on`` option to return non-zero exit codes regardless of ``--fail-under`` value. |
| |
| * numversion tuple contains integers again to fix multiple pylint's plugins that relied on it |
| |
| Closes #4420 |
| |
| * Fix false-positive ``too-many-ancestors`` when inheriting from builtin classes, |
| especially from the ``collections.abc`` module |
| |
| Closes #4166 |
| Closes #4415 |
| |
| * Stdlib deprecated modules check is moved to stdlib checker. New deprecated |
| modules are added. |
| |
| * Fix raising false-positive ``no-member`` on abstract properties |
| |
| * Created new error message called ``arguments-renamed`` which identifies any changes at the parameter |
| names of overridden functions. |
| |
| Closes #3536 |
| |
| * New checker ``consider-using-dict-items``. Emitted when iterating over dictionary keys and then |
| indexing the same dictionary with the key within loop body. |
| |
| Closes #3389 |
| |
| * Don't emit ``import-error`` if import guarded behind ``if sys.version_info >= (x, x)`` |
| |
| * Fix incompatibility with Python 3.6.0 caused by ``typing.Counter`` and ``typing.NoReturn`` usage |
| |
| Closes #4412 |
| |
| * New checker ``use-maxsplit-arg``. Emitted either when accessing only the first or last |
| element of ``str.split()``. |
| |
| Closes #4440 |
| |
| * Add ignore_signatures to duplicate code checker |
| |
| Closes #3619 |
| |
| * Fix documentation errors in "Block disables" paragraph of User Guide. |
| |
| * New checker ``unnecessary-dict-index-lookup``. Emitted when iterating over dictionary items |
| (key-value pairs) and accessing the value by index lookup. |
| |
| Closes #4470 |
| |
| * New checker``consider-using-from-import``. Emitted when a submodule/member of a package is imported and aliased |
| with the same name. |
| |
| Closes #2309 |
| |
| * Allow comma-separated list in ``output-format`` and separate output files for |
| each specified format. |
| |
| Closes #1798 |
| |
| * Make ``using-constant-test`` detect constant tests consisting of list literals like ``[]`` and |
| ``[1, 2, 3]``. |
| |
| * Improved error message of ``unnecessary-comprehension`` checker by providing code suggestion. |
| |
| Closes #4499 |
| |
| * New checker ``unused-private-member``. Emitted when a private member (i.e., starts with ``__``) of a class |
| is defined but not used. |
| |
| Closes #4483 |
| |
| * Fix false negative of ``consider-using-enumerate`` when iterating over an attribute. |
| |
| Closes #3657 |
| |
| * New checker ``invalid-class-object``. Emitted when a non-class is assigned to a ``__class__`` attribute. |
| |
| Closes #585 |
| |
| * Fix a crash when a plugin from the configuration could not be loaded and raise an error |
| 'bad-plugin-value' instead |
| |
| Closes #4555 |
| |
| * Added handling of floating point values when parsing configuration from pyproject.toml |
| |
| Closes #4518 |
| |
| * ``invalid-length-returned``, now also works when nothing at all is returned |
| following an upgrade in astroid. |
| |
| * ``logging-format-interpolation`` and ``logging-not-lazy``, now works on logger |
| class created from renamed logging import following an upgrade in astroid. |
| |
| * Fix false-positive ``no-member`` with generic base class |
| |
| Closes PyCQA/astroid#942 |
| |
| * Fix ``assigning-non-slot`` false-positive with base that inherits from ``typing.Generic`` |
| |
| Closes #4509 |
| Closes PyCQA/astroid#999 |
| |
| * New checker ``invalid-all-format``. Emitted when ``__all__`` has an invalid format, |
| i.e. isn't a ``tuple`` or ``list``. |
| |
| * Fix false positive ``unused-variable`` and ``undefined-variable`` with |
| Pattern Matching in Python 3.10 |
| |
| * New checker ``await-outside-async``. Emitted when await is used outside an async function. |
| |
| * Clarify documentation for ``typing`` extension. |
| |
| Closes #4545 |
| |
| * Add new extension ``CodeStyleChecker``. It includes checkers that can improve code |
| consistency. As such they don't necessarily provide a performance benefit |
| and are often times opinionated. |
| |
| * New checker ``consider-using-tuple``. Emitted when an in-place defined |
| list or set can be replaced by a tuple. |
| |
| * New checker ``consider-using-namedtuple-or-dataclass``. Emitted when dictionary values |
| can be replaced by namedtuples or dataclass instances. |
| |
| * Fix error that occurred when using ``slice`` as subscript for dict. |
| |
| * Reduce false-positives around inference of ``.value`` and ``.name`` |
| properties on ``Enum`` subclasses, following an upgrade in astroid |
| |
| Closes #1932 |
| Closes #2062 |
| |
| * Fix issue with ``cached_property`` that caused ``invalid-overridden-method`` error |
| when overriding a ``property``. |
| |
| Closes #4023 |
| |
| * Fix ``unused-import`` false positive for imported modules referenced in |
| attribute lookups in type comments. |
| |
| Closes #4603 |
| |
| |
| What's New in Pylint 2.8.3? |
| =========================== |
| Release date: 2021-05-31 |
| |
| * Astroid has been pinned to 2.5.6 for the 2.8 branch see #4527. |
| |
| |
| What's New in Pylint 2.8.2? |
| =========================== |
| Release date: 2021-04-26 |
| |
| * Keep ``__pkginfo__.numversion`` a tuple to avoid breaking pylint-django. |
| |
| Closes #4405 |
| |
| * scm_setuptools has been added to the packaging. |
| |
| * Pylint's tags are now the standard form ``vX.Y.Z`` and not ``pylint-X.Y.Z`` anymore. |
| |
| * New warning message ``deprecated-class``. This message is emitted if import or call deprecated class of the |
| standard library (like ``collections.Iterable`` that will be removed in Python 3.10). |
| |
| Closes #4388 |
| |
| |
| What's New in Pylint 2.8.1? |
| =========================== |
| Release date: 2021-04-25 |
| |
| * Add numversion back (temporarily) in ``__pkginfo__`` because it broke Pylama and revert the unnecessary |
| ``pylint.version`` breaking change. |
| |
| Closes #4399 |
| |
| |
| What's New in Pylint 2.8.0? |
| =========================== |
| Release date: 2021-04-24 |
| |
| * New refactoring message ``consider-using-with``. This message is emitted if resource-allocating functions or methods of the |
| standard library (like ``open()`` or ``threading.Lock.acquire()``) that can be used as a context manager are called without |
| a ``with`` block. |
| |
| Closes #3413 |
| |
| * Resolve false positives on unused variables in decorator functions |
| |
| Closes #4252 |
| |
| * Add new extension ``ConfusingConsecutiveElifChecker``. This optional checker emits a refactoring message (R5601 ``confusing-consecutive-elif``) |
| if if/elif statements with different indentation levels follow directly one after the other. |
| |
| * New option ``--output=<file>`` to output result to a file rather than printing to stdout. |
| |
| Closes #1070 |
| |
| * Use a prescriptive message for ``unidiomatic-typecheck`` |
| |
| Closes #3891 |
| |
| * Apply ``const-naming-style`` to module constants annotated with |
| ``typing.Final`` |
| |
| * The packaging is now done via setuptools exclusively. ``doc``, ``tests``, ``man``, ``elisp`` and ``Changelog`` are |
| not packaged anymore - reducing the size of the package by 75%. |
| |
| * Debian packaging is now (officially) done in https://salsa.debian.org/python-team/packages/pylint. |
| |
| * The 'doc' extra-require has been removed. |
| |
| * ``__pkginfo__`` now only contain ``__version__`` (also accessible with ``pylint.__version__``), other meta-information are still |
| accessible with ``from importlib import metadata;metadata.metadata('pylint')``. |
| |
| * COPYING has been renamed to LICENSE for standardization. |
| |
| * Fix false-positive ``used-before-assignment`` in function returns. |
| |
| Closes #4301 |
| |
| * Updated ``astroid`` to 2.5.3 |
| |
| Closes #2822, #4206, #4284 |
| |
| * Add ``consider-using-min-max-builtin`` check for if statement which could be replaced by Python builtin min or max |
| |
| Closes #3406 |
| |
| * Don't auto-enable postponed evaluation of type annotations with Python 3.10 |
| |
| * Update ``astroid`` to 2.5.4 |
| |
| * Add new extension ``TypingChecker``. This optional checker can detect the use of deprecated typing aliases |
| and can suggest the use of the alternative union syntax where possible. |
| (For example, 'typing.Dict' can be replaced by 'dict', and 'typing.Unions' by '|', etc.) |
| Make sure to check the config options if you plan on using it! |
| |
| * Reactivates old counts in report mode. |
| |
| Closes #3819 |
| |
| * During detection of ``inconsistent-return-statements`` consider that ``assert False`` is a return node. |
| |
| Closes #4019 |
| |
| * Run will not fail if score exactly equals ``config.fail_under``. |
| |
| * Functions that never returns may declare ``NoReturn`` as type hints, so that |
| ``inconsistent-return-statements`` is not emitted. |
| |
| Closes #4122, #4188 |
| |
| * Improved protected access checks to allow access inside class methods |
| |
| Closes #1159 |
| |
| * Fix issue with PEP 585 syntax and the use of ``collections.abc.Set`` |
| |
| * Fix issue that caused class variables annotated with ``typing.ClassVar`` to be |
| identified as class constants. Now, class variables annotated with |
| ``typing.Final`` are identified as such. |
| |
| Closes #4277 |
| |
| * Continuous integration with read the doc has been added. |
| |
| Closes #3850 |
| |
| * Don't show ``DuplicateBasesError`` for attribute access |
| |
| * Fix crash when checking ``setup.cfg`` for pylint config when there are non-ascii characters in there |
| |
| Closes #4328 |
| |
| * Allow code flanked in backticks to be skipped by spellchecker |
| |
| Closes #4319 |
| |
| * Allow Python tool directives (for black, flake8, zimports, isort, mypy, bandit, pycharm) at beginning of comments to be skipped by spellchecker |
| |
| Closes #4320 |
| |
| * Fix issue that caused emacs pylint to fail when used with tramp |
| |
| * Improve check for invalid PEP 585 syntax inside functions |
| if postponed evaluation of type annotations is enabled |
| |
| * Improve check for invalid PEP 585 syntax as default function arguments |
| |
| |
| What's New in Pylint 2.7.4? |
| =========================== |
| Release date: 2021-03-30 |
| |
| |
| * Fix a problem with disabled msgid not being ignored |
| |
| Closes #4265 |
| |
| * Fix issue with annotated class constants |
| |
| Closes #4264 |
| |
| |
| What's New in Pylint 2.7.3? |
| =========================== |
| Release date: 2021-03-29 |
| |
| * Introduce logic for checking deprecated attributes in DeprecationMixin. |
| |
| * Reduce usage of blacklist/whitelist terminology. Notably, ``extension-pkg-allow-list`` is an |
| alternative to ``extension-pkg-whitelist`` and the message ``blacklisted-name`` is now emitted as |
| ``disallowed-name``. The previous names are accepted to maintain backward compatibility. |
| |
| * Move deprecated checker to ``DeprecatedMixin`` |
| |
| Closes #4086 |
| |
| * Bump ``astroid`` version to ``2.5.2`` |
| |
| * Fix false positive for ``method-hidden`` when using private attribute and method |
| |
| Closes #3936 |
| |
| * ``use-symbolic-message-instead`` now also works on legacy messages like ``C0111`` (``missing-docstring``). |
| |
| * Remove unwanted print to stdout from ``_emit_no_member`` |
| |
| * Introduce a command-line option to specify pyreverse output directory |
| |
| Closes #4159 |
| |
| * Fix issue with Enums and ``class-attribute-naming-style=snake_case`` |
| |
| Closes #4149 |
| |
| * Add ``allowed-redefined-builtins`` option for fine tuning ``redefined-builtin`` check. |
| |
| Close #3263 |
| |
| * Fix issue when executing with ``python -m pylint`` |
| |
| Closes #4161 |
| |
| * Exempt ``typing.TypedDict`` from ``too-few-public-methods`` check. |
| |
| Closes #4180 |
| |
| * Fix false-positive ``no-member`` for typed annotations without default value. |
| |
| Closes #3167 |
| |
| * Add ``--class-const-naming-style`` for Enum constants and class variables annotated |
| with ``typing.ClassVar`` |
| |
| Closes #4181 |
| |
| * Fix astroid.Inference error for undefined-variables with ``len()``` |
| |
| Closes #4215 |
| |
| * Fix column index on FIXME warning messages |
| |
| Closes #4218 |
| |
| * Improve handling of assignment expressions, better edge case handling |
| |
| Closes #3763, #4238 |
| |
| * Improve check if class is subscriptable PEP585 |
| |
| * Fix documentation and filename handling of --import-graph |
| |
| * Fix false-positive for ``unused-import`` on class keyword arguments |
| |
| Closes #3202 |
| |
| * Fix regression with plugins on PYTHONPATH if latter is cwd |
| |
| Closes #4252 |
| |
| |
| What's New in Pylint 2.7.2? |
| =========================== |
| Release date: 2021-02-28 |
| |
| * Fix False Positive on ``Enum.__members__.items()``, ``Enum.__members__.values``, and ``Enum.__members__.keys`` |
| Closes #4123 |
| |
| * Properly strip dangerous sys.path entries (not just the first one) |
| |
| Closes #3636 |
| |
| * Workflow and packaging improvements |
| |
| |
| What's New in Pylint 2.7.1? |
| =========================== |
| Release date: 2021-02-23 |
| |
| * Expose ``UnittestLinter`` in pylint.testutils |
| |
| * Don't check directories starting with '.' when using register_plugins |
| |
| Closes #4119 |
| |
| |
| What's New in Pylint 2.7.0? |
| =========================== |
| Release date: 2021-02-21 |
| |
| * Introduce DeprecationMixin for reusable deprecation checks. |
| |
| Closes #4049 |
| |
| * Fix false positive for ``builtin-not-iterating`` when ``map`` receives iterable |
| |
| Closes #4078 |
| |
| * Python 3.6+ is now required. |
| |
| * Fix false positive for ``builtin-not-iterating`` when ``zip`` receives iterable |
| |
| * Add ``nan-comparison`` check for NaN comparisons |
| |
| * Bug fix for empty-comment message line number. |
| |
| Closes #4009 |
| |
| * Only emit ``bad-reversed-sequence`` on dictionaries if below py3.8 |
| |
| Closes #3940 |
| |
| * Handle class decorators applied to function. |
| |
| Closes #3882 |
| |
| * Add check for empty comments |
| |
| * Fix minor documentation issue in contribute.rst |
| |
| * Enums are now required to be named in UPPER_CASE by ``invalid-name``. |
| |
| Close #3834 |
| |
| * Add missing checks for deprecated functions. |
| |
| * Postponed evaluation of annotations are now recognized by default if python version is above 3.10 |
| |
| Closes #3992 |
| |
| * Fix column metadata for anomalous backslash lints |
| |
| * Drop support for Python 3.5 |
| |
| * Add support for pep585 with postponed evaluation |
| |
| Closes #3320 |
| |
| * Check alternative union syntax - PEP 604 |
| |
| Closes #4065 |
| |
| * Fix multiple false positives with assignment expressions |
| |
| Closes #3347, #3953, #3865, #3275 |
| |
| * Fix TypedDict inherit-non-class false-positive Python 3.9+ |
| |
| Closes #1927 |
| |
| * Fix issue with nested PEP 585 syntax |
| |
| * Fix issue with nested PEP 604 syntax |
| |
| * Fix a crash in ``undefined-variable`` caused by chained attributes in metaclass |
| |
| Close #3742 |
| |
| * Fix false positive for ``not-async-context-manager`` when ``contextlib.asynccontextmanager`` is used |
| |
| Close #3862 |
| |
| * Fix linter multiprocessing pool shutdown (triggered warnings when runned in parallels with other pytest plugins) |
| |
| Closes #3779 |
| |
| * Fix a false-positive emission of ``no-self-use`` and ``unused-argument`` for methods |
| of generic structural types (`Protocol[T]`) |
| |
| Closes #3885 |
| |
| * Fix bug that lead to duplicate messages when using ``--jobs 2`` or more. |
| |
| Close #3584 |
| |
| * Adds option ``check-protected-access-in-special-methods`` in the ClassChecker to activate/deactivate |
| ``protected-access`` message emission for single underscore prefixed attribute in special methods. |
| |
| Close #3120 |
| |
| * Fix vulnerable regular expressions in ``pyreverse`` |
| |
| Close #3811 |
| |
| * ``inconsistent-return-statements`` message is now emitted if one of ``try/except`` statement |
| is not returning explicitly while the other do. |
| |
| Closes #3468 |
| |
| * Fix ``useless-super-delegation`` false positive when default keyword argument is a dictionnary. |
| |
| Close #3773 |
| |
| * Fix a crash when a specified config file does not exist |
| |
| * Add support to ``ignored-argument-names`` in DocstringParameterChecker and adds ``useless-param-doc`` and ``useless-type-doc`` messages. |
| |
| Close #3800 |
| |
| * Enforce docparams consistently when docstring is not present |
| |
| Close #2738 |
| |
| * Fix ``duplicate-code`` false positive when lines only contain whitespace and non-alphanumeric characters (e.g. parentheses, bracket, comma, etc.) |
| |
| * Improve lint message for ``singleton-comparison`` with bools |
| |
| * Fix spell-checker crash on indented docstring lines that look like # comments |
| |
| Close #3786 |
| |
| * Fix AttributeError in checkers/refactoring.py |
| |
| * Improve sphinx directives spelling filter |
| |
| * Fix a bug with postponed evaluation when using aliases for annotations. |
| |
| Close #3798 |
| |
| * Fix minor documentation issues |
| |
| * Improve the performance of the line length check. |
| |
| * Removed incorrect deprecation of ``inspect.getfullargspec`` |
| |
| * Fix ``signature-differs`` false positive for functions with variadics |
| |
| Close #3737 |
| |
| * Fix a crash in ``consider-using-enumerate`` when encountering ``range()`` without arguments |
| |
| Close #3735 |
| |
| * ``len-as-conditions`` is now triggered only for classes that are inheriting directly from list, dict, or set and not implementing the ``__bool__`` function, or from generators like range or list/dict/set comprehension. This should reduce the false positives for other classes, like pandas's DataFrame or numpy's Array. |
| |
| Close #1879 |
| |
| * Fixes duplicate-errors not working with -j2+ |
| |
| Close #3314 |
| |
| * ``generated-members`` now matches the qualified name of members |
| |
| Close #2498 |
| |
| * Add check for bool function to ``len-as-condition`` |
| |
| * Add ``simplifiable-condition`` check for extraneous constants in conditionals using and/or. |
| |
| * Add ``condition-evals-to-constant`` check for conditionals using and/or that evaluate to a constant. |
| |
| Close #3407 |
| |
| * Changed setup.py to work with `distlib <https://pypi.org/project/distlib>`_ |
| |
| Close #3555 |
| |
| * New check: ``consider-using-generator`` |
| |
| This check warns when a comprehension is used inside an ``any`` or ``all`` function, |
| since it is unnecessary and should be replaced by a generator instead. |
| Using a generator would be less code and way faster. |
| |
| Close #3165 |
| |
| * Add Github Actions to replace Travis and AppVeyor in the future |
| |
| |
| What's New in Pylint 2.6.1? |
| =========================== |
| Release date: 2021-02-16 |
| |
| * Astroid version has been set as < 2.5 |
| |
| Close #4093 |
| |
| |
| What's New in Pylint 2.6.0? |
| =========================== |
| Release date: 2020-08-20 |
| |
| * Fix various scope-related bugs in ``undefined-variable`` checker |
| |
| Close #1082, #3434, #3461 |
| |
| * bad-continuation and bad-whitespace have been removed, black or another formatter can help you with this better than Pylint |
| |
| Close #246, #289, #638, #747, #1148, #1179, #1943, #2041, #2301, #2304, #2944, #3565 |
| |
| * The no-space-check option has been removed. It's no longer possible to consider empty line like a ``trailing-whitespace`` by using clever options |
| |
| Close #1368 |
| |
| * ``missing-kwoa`` is no longer emitted when dealing with overload functions |
| |
| Close #3655 |
| |
| * mixed-indentation has been removed, it is no longer useful since TabError is included directly in python3 |
| |
| Close #2984 #3573 |
| |
| * Add ``super-with-arguments`` check for flagging instances of Python 2 style super calls. |
| |
| * Add an faq detailing which messages to disable to avoid duplicates w/ other popular linters |
| |
| * Fix superfluous-parens false-positive for the walrus operator |
| |
| Close #3383 |
| |
| * Fix ``fail-under`` not accepting floats |
| |
| * Fix a bug with ``ignore-docstrings`` ignoring all lines in a module |
| |
| * Fix ``pre-commit`` config that could lead to undetected duplicate lines of code |
| |
| * Fix a crash in parallel mode when the module's filepath is not set |
| |
| Close #3564 |
| |
| * Add ``raise-missing-from`` check for exceptions that should have a cause. |
| |
| * Support both isort 4 and isort 5. If you have pinned isort 4 in your projet requirements, nothing changes. If you use isort 5, though, note that the ``known-standard-library`` option is not interpreted the same in isort 4 and isort 5 (see the migration guide in isort documentation for further details). For compatibility's sake for most pylint users, the ``known-standard-library`` option in pylint now maps to ``extra-standard-library`` in isort 5. If you really want what ``known-standard-library`` now means in isort 5, you must disable the ``wrong-import-order`` check in pylint and run isort manually with a proper isort configuration file. |
| |
| Close #3722 |
| |
| * Fix a crash caused by not guarding against ``InferenceError`` when calling ``infer_call_result`` |
| |
| Close #3690 |
| |
| * Fix a crash in parallel mode when the module's filepath is not set |
| |
| Close #3564 |
| |
| |
| What's New in Pylint 2.5.3? |
| =========================== |
| Release date: 2020-06-8 |
| |
| * Fix a regression where disable comments that have checker names with numbers in them are not parsed correctly |
| |
| Close #3666 |
| |
| * ``property-with-parameters`` properly handles abstract properties |
| |
| Close #3600 |
| |
| * ``continue-in-finally`` no longer emitted on Python 3.8 where it's now valid |
| |
| Close #3612 |
| |
| * Fix a regression where messages with dash are not fully parsed |
| |
| Close #3604 |
| |
| * In a TOML configuration file, it's now possible to use rich (non-string) types, such as list, integer or boolean instead of strings. For example, one can now define a *list* of message identifiers to enable like this:: |
| |
| enable = [ |
| "use-symbolic-message-instead", |
| "useless-suppression", |
| ] |
| |
| Close #3538 |
| |
| * Fix a regression where the score was not reported with multiple jobs |
| |
| Close #3547 |
| |
| * Protect against ``AttributeError`` when checking ``cell-var-from-loop`` |
| |
| Close #3646 |
| |
| |
| What's New in Pylint 2.5.2? |
| =========================== |
| Release date: 2020-05-05 |
| |
| * ``pylint.Run`` accepts ``do_exit`` as a deprecated parameter |
| |
| Close #3590 |
| |
| |
| What's New in Pylint 2.5.1? |
| =========================== |
| Release date: 2020-05-05 |
| |
| * Fix a crash in ``method-hidden`` lookup for unknown base classes |
| |
| Close #3527 |
| |
| * Revert pylint.Run's ``exit`` parameter to ``do_exit`` |
| |
| This has been inadvertently changed several releases ago to ``do_exit``. |
| |
| Close #3533 |
| |
| * ``no-value-for-parameter`` variadic detection has improved for assign statements |
| |
| Close #3563 |
| |
| * Allow package files to be properly discovered with multiple jobs |
| |
| Close #3524 |
| |
| * Allow linting directories without ``__init__.py`` which was a regression in 2.5. |
| |
| Close #3528 |
| |
| |
| What's New in Pylint 2.5.0? |
| =========================== |
| Release date: 2020-04-27 |
| |
| * Fix a false negative for ``undefined-variable`` when using class attribute in comprehension. |
| |
| Close #3494 |
| |
| * Fix a false positive for ``undefined-variable`` when using class attribute in decorator or as type hint. |
| |
| Close #511 |
| Close #1976 |
| |
| * Remove HTML quoting of messages in JSON output. |
| |
| Close #2769 |
| |
| * Adjust the ``invalid-name`` rule to work with non-ASCII identifiers and add the ``non-ascii-name`` rule. |
| |
| Close #2725 |
| |
| * Positional-only arguments are taken in account for ``useless-super-delegation`` |
| |
| * ``unidiomatic-typecheck`` is no longer emitted for ``in`` and ``not in`` operators |
| |
| Close #3337 |
| |
| * Positional-only argument annotations are taken in account for ``unused-import`` |
| |
| Close #3462 |
| |
| * Add a command to list available extensions. |
| |
| * Allow used variables to be properly consumed when different checks are enabled / disabled |
| |
| Close #3445 |
| |
| * Fix dangerous-default-value rule to account for keyword argument defaults |
| |
| Close #3373 |
| |
| * Fix a false positive of ``self-assigning-variable`` on tuple unpacking. |
| |
| Close #3433 |
| |
| * ``no-self-use`` is no longer emitted for typing stubs. |
| |
| Close #3439 |
| |
| * Fix a false positive for ``undefined-variable`` when ``__class__`` is used |
| |
| Close #3090 |
| |
| * Emit ``invalid-name`` for variables defined in loops at module level. |
| |
| Close #2695 |
| |
| * Add a check for cases where the second argument to ``isinstance`` is not a type. |
| |
| Close #3308 |
| |
| * Add 'notes-rgx' option, to be used for fixme check. |
| |
| Close #2874 |
| |
| * ``function-redefined`` exempts function redefined on a condition. |
| |
| Close #2410 |
| |
| * ``typing.overload`` functions are exempted from docstring checks |
| |
| Close #3350 |
| |
| * Emit ``invalid-overridden-method`` for improper async def overrides. |
| |
| Close #3355 |
| |
| * Do not allow ``python -m pylint ...`` to import user code |
| |
| ``python -m pylint ...`` adds the current working directory as the first element |
| of ``sys.path``. This opens up a potential security hole where ``pylint`` will import |
| user level code as long as that code resides in modules having the same name as stdlib |
| or pylint's own modules. |
| |
| Close #3386 |
| |
| * Add ``dummy-variables-rgx`` option for ``_redeclared-assigned-name`` check. |
| |
| Close #3341 |
| |
| * Fixed graph creation for relative paths |
| |
| * Add a check for asserts on string literals. |
| |
| Close #3284 |
| |
| * ``not in`` is considered iterating context for some of the Python 3 porting checkers. |
| |
| * A new check ``inconsistent-quotes`` was added. |
| |
| * Add a check for non string assignment to __name__ attribute. |
| |
| Close #583 |
| |
| * ``__pow__``, ``__imatmul__``, ``__trunc__``, ``__floor__``, and ``__ceil__`` are recognized as special method names. |
| |
| Close #3281 |
| |
| * Added errors for protocol functions when invalid return types are detected. |
| E0304 (invalid-bool-returned): __bool__ did not return a bool |
| E0305 (invalid-index-returned): __index__ did not return an integer |
| E0306 (invalid-repr-returned): __repr__ did not return a string |
| E0307 (invalid-str-returned): __str__ did not return a string |
| E0308 (invalid-bytes-returned): __bytes__ did not return a string |
| E0309 (invalid-hash-returned): __hash__ did not return an integer |
| E0310 (invalid-length-hint-returned): __length_hint__ did not return a non-negative integer |
| E0311 (invalid-format-returned): __format__ did not return a string |
| E0312 (invalid-getnewargs-returned): __getnewargs__ did not return a tuple |
| E0313 (invalid-getnewargs-ex-returned): __getnewargs_ex__ did not return a tuple of the form (tuple, dict) |
| |
| Close #560 |
| |
| * ``missing-*-docstring`` can look for ``__doc__`` assignments. |
| |
| Close #3301 |
| |
| * ``undefined-variable`` can now find undefined loop iterables |
| |
| Close #498 |
| |
| * ``safe_infer`` can infer a value as long as all the paths share the same type. |
| |
| Close #2503 |
| |
| * Add a --fail-under <score> flag, also configurable in a .pylintrc file. If the final score is more than the specified score, it's considered a success and pylint exits with exitcode 0. Otherwise, it's considered a failure and pylint exits with its current exitcode based on the messages issued. |
| |
| Close #2242 |
| |
| * Don't emit ``line-too-long`` for multilines when ``disable=line-too-long`` comment stands at their end |
| |
| Close #2957 |
| |
| * Fixed an ``AttributeError`` caused by improper handling of ``dataclasses`` inference in ``pyreverse`` |
| |
| Close #3256 |
| |
| * Do not exempt bare except from ``undefined-variable`` and similar checks |
| |
| If a node was wrapped in a ``TryExcept``, ``pylint`` was taking a hint |
| from the except handler when deciding to emit or not a message. |
| We were treating bare except as a fully fledged ignore but only |
| the corresponding exceptions should be handled that way (e.g. ``NameError`` or ``ImportError``) |
| |
| Close #3235 |
| |
| * No longer emit ``assignment-from-no-return`` when a function only raises an exception |
| |
| Close #3218 |
| |
| * Allow import aliases to exempt ``import-error`` when used in type annotations. |
| |
| Close #3178 |
| |
| * ``Ellipsis` is exempted from ``multiple-statements`` for function overloads. |
| |
| Close #3224 |
| |
| * No longer emit ``invalid-name`` for non-constants found at module level. |
| |
| Pylint was taking the following statement from PEP-8 too far, considering |
| all module level variables as constants, which is not what the statement is saying: |
| |
| `Constants are usually defined on a module level and written in |
| all capital letters with underscores separating words.` |
| |
| Close #3111 |
| Close #3132 |
| |
| * Allow ``implicit-str-concat-in-sequence`` to be emitted for string juxtaposition |
| |
| Close #3030 |
| |
| * ``implicit-str-concat-in-sequence`` was renamed ``implicit-str-concat`` |
| |
| * The ``json`` reporter no longer bypasses ``redirect_stdout``. Close #3227 |
| |
| * Move ``NoFileError``, ``OutputLine``, ``FunctionalTestReporter``, |
| ``FunctionalTestFile``, ``LintModuleTest`` and related methods from |
| ``test_functional.py`` to ``pylint.testutils`` to help testing for 3rd |
| party pylint plugins. |
| |
| * Can read config from a setup.cfg or pyproject.toml file. |
| |
| Close #617 |
| |
| * Fix exception-escape false positive with generators |
| |
| Close #3128 |
| |
| * ``inspect.getargvalues`` is no longer marked as deprecated. |
| |
| * A new check ``f-string-without-interpolation`` was added |
| |
| Close #3190 |
| |
| * Flag mutable ``collections.*`` utilities as dangerous defaults |
| |
| Close #3183 |
| |
| * ``docparams`` extension supports multiple types in raises sections. |
| |
| Multiple types can also be separated by commas in all valid sections. |
| |
| Closes #2729 |
| |
| * Allow parallel linting when run under Prospector |
| |
| * Fixed false positives of ``method-hidden`` when a subclass defines the method that is being hidden. |
| |
| Closes #414 |
| |
| * Python 3 porting mode is 30-50% faster on most codebases |
| |
| * Python 3 porting mode no longer swallows syntax errors |
| |
| Closes #2956 |
| |
| * Pass the actual PyLinter object to sub processes to allow using custom |
| PyLinter classes. |
| |
| PyLinter object (and all its members except reporter) needs to support |
| pickling so the PyLinter object can be passed to worker processes. |
| |
| * Clean up setup.py |
| |
| Make pytest-runner a requirement only if running tests, similar to McCabe. |
| |
| Clean up the setup.py file, resolving a number of warnings around it. |
| |
| * Handle SyntaxError in files passed via ``--from-stdin`` option |
| |
| Pylint no longer outputs a traceback, if a file, read from stdin, |
| contains a syntaxerror. |
| |
| * Fix uppercase style to disallow 3+ uppercase followed by lowercase. |
| |
| * Fixed ``undefined-variable`` and ``unused-import`` false positives |
| when using a metaclass via an attribute. |
| |
| Close #1603 |
| |
| * Emit ``unused-argument`` for functions that partially uses their argument list before raising an exception. |
| |
| Close #3246 |
| |
| * Fixed ``broad_try_clause`` extension to check try/finally statements and to |
| check for nested statements (e.g., inside of an ``if`` statement). |
| |
| * Recognize classes explicitly inheriting from ``abc.ABC`` or having an |
| ``abc.ABCMeta`` metaclass as abstract. This makes them not trigger W0223. |
| |
| Closes #3098 |
| |
| * Fix overzealous ``arguments-differ`` when overridden function uses variadics |
| |
| No message is emitted if the overriding function provides positional or |
| keyword variadics in its signature that can feasibly accept and pass on |
| all parameters given by the overridden function. |
| |
| Close #1482 |
| Close #1553 |
| |
| * Multiple types of string formatting are allowed in logging functions. |
| |
| The ``logging-fstring-interpolation`` message has been brought back to allow |
| multiple types of string formatting to be used. |
| |
| Close #3361 |
| |
| |
| What's New in Pylint 2.4.4? |
| =========================== |
| Release date: 2019-11-13 |
| |
| * Exempt all the names found in type annotations from ``unused-import`` |
| |
| The previous code was assuming that only ``typing`` names need to be |
| exempted, but we need to do that for the rest of the type comment |
| names as well. |
| |
| Close #3112 |
| |
| * Relax type import detection for names that do not come from the ``typing`` module |
| |
| Close #3191 |
| |
| |
| What's New in Pylint 2.4.3? |
| =========================== |
| Release date: 2019-10-18 |
| |
| * Fix an issue with ``unnecessary-comprehension`` in comprehensions with additional repacking of elements. |
| |
| Close #3148 |
| |
| * ``import-outside-toplevel`` is emitted for ``ImportFrom`` nodes as well. |
| |
| Close #3175 |
| |
| * Do not emit ``no-method-argument`` for functions using positional only args. |
| |
| Close #3161 |
| |
| * ``consider-using-sys-exit`` is no longer emitted when ``exit`` is imported in the local scope. |
| |
| Close #3147 |
| |
| * ``invalid-overridden-method`` takes ``abc.abstractproperty`` in account |
| |
| Close #3150 |
| |
| * Fixed ``missing-yield-type-doc`` getting incorrectly raised when |
| a generator does not document a yield type but has a type annotation. |
| |
| Closes #3185 |
| |
| * ``typing.overload`` functions are exempted from ``too-many-function-args`` |
| |
| Close #3170 |
| |
| |
| What's New in Pylint 2.4.2? |
| =========================== |
| Release date: 2019-09-30 |
| |
| |
| * ``ignored-modules`` can skip submodules. Close #3135 |
| |
| * ``self-assigning-variable`` skips class level assignments. |
| |
| Close #2930 |
| |
| * ``consider-using-sys-exit`` is exempted when ``exit()`` is imported from ``sys`` |
| |
| Close #3145 |
| |
| * Exempt annotated assignments without variable from ``class-variable-slots-conflict`` |
| |
| Close #3141 |
| |
| * Fix ``utils.is_error`` to account for functions returning early. |
| |
| This fixes a false negative with ``unused-variable`` which was no longer triggered |
| when a function raised an exception as the last instruction, but the body of the function |
| still had unused variables. |
| |
| Close #3028 |
| |
| |
| What's New in Pylint 2.4.1? |
| =========================== |
| Release date: 2019-09-25 |
| |
| |
| * Exempt type checking definitions defined in both clauses of a type checking guard |
| |
| Close #3127 |
| |
| |
| * Exempt type checking definitions inside the type check guard |
| |
| In a7f236528bb3758886b97285a56f3f9ce5b13a99 we added basic support |
| for emitting ``used-before-assignment`` if a variable was only defined |
| inside a type checking guard (using ``TYPE_CHECKING`` variable from `typing`) |
| Unfortunately that missed the case of using those type checking imports |
| inside the guard itself, which triggered spurious used-before-assignment errors. |
| |
| Close #3119 |
| |
| * Require astroid >= 2.3 to avoid any compatibility issues. |
| |
| |
| What's New in Pylint 2.4.0? |
| =========================== |
| Release date: 2019-09-24 |
| |
| * New check: ``import-outside-toplevel`` |
| |
| This check warns when modules are imported from places other than a |
| module toplevel, e.g. inside a function or a class. |
| |
| * Handle inference ambiguity for ``invalid-format-index`` |
| |
| Close #2752 |
| |
| * Removed Python 2 specific checks such as ``relative-import``, |
| ``invalid-encoded-data``, ``missing-super-argument``. |
| |
| * Support forward references for ``function-redefined`` check. |
| |
| Close #2540 |
| |
| * Handle redefinitions in case of type checking imports. |
| |
| Close #2834 |
| |
| * Added a new check, ``consider-using-sys-exit`` |
| |
| This check is emitted when we detect that a quit() or exit() is invoked |
| instead of sys.exit(), which is the preferred way of exiting in program. |
| |
| Close #2925 |
| |
| * ``useless-suppression`` check now ignores ``cyclic-import`` suppressions, |
| which could lead to false postiives due to incomplete context at the time |
| of the check. |
| |
| Close #3064 |
| |
| * Added new checks, ``no-else-break`` and ``no-else-continue`` |
| |
| These checks highlight unnecessary ``else`` and ``elif`` blocks after |
| ``break`` and ``continue`` statements. |
| |
| Close #2327 |
| |
| * Don't emit ``protected-access`` when a single underscore prefixed attribute |
| is used inside a special method |
| |
| Close #1802 |
| |
| * Fix the "statement" values in the PyLinter's stats reports by module. |
| |
| * Added a new check, ``invalid-overridden-method`` |
| |
| This check is emitted when we detect that a method is overridden |
| as a property or a property is overridden as a method. This can indicate |
| a bug in the application code that will trigger a runtime error. |
| |
| Close #2670 |
| |
| * Added a new check, ``arguments-out-of-order`` |
| |
| This check warns if you have arguments with names that match those in |
| a function's signature but you are passing them in to the function |
| in a different order. |
| |
| Close #2975 |
| |
| * Added a new check, ``redeclared-assigned-name`` |
| |
| This check is emitted when ``pylint`` detects that a name |
| was assigned one or multiple times in the same assignment, |
| which indicate a potential bug. |
| Close #2898 |
| |
| * Ignore lambda 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. |
| We already did that for function calls, but the previous fix |
| was not taking in consideration ``lambdas`` |
| |
| Close #2918 |
| |
| * Added a new check, ``self-assigning-variable`` |
| |
| This check is emitted when we detect that a variable is assigned |
| to itself, which might indicate a potential bug in the code application. |
| Close #2930 |
| |
| * Added a new check, ``property-with-parameters``. |
| |
| This check is emitted when we detect that a defined property also |
| has parameters, which are useless. |
| Close #3006 |
| |
| * Excluded protocol classes from a couple of checks. Close #3002. |
| |
| * Add a check ``unnecessary-comprehension`` that detects unnecessary comprehensions. |
| |
| This check is emitted when ``pylint`` finds list-, set- or dict-comprehensions, |
| that are unnecessary and can be rewritten with the list-, set- or dict-constructors. |
| |
| Close #2905 |
| |
| * Excluded PEP 526 instance and class variables from ``no-member``. Close #2945 |
| |
| * Excluded ``attrs`` from ``too-few-public-methods`` check. Close #2988. |
| |
| * ``unused-import`` emitted for the right import names in function scopes. |
| |
| Close #2928 |
| |
| * Dropped support for Python 3.4. |
| |
| * ``assignment-from-no-return`` not triggered for async methods. |
| |
| Close #2902 |
| |
| * Don't emit ``attribute-defined-outside-init`` for variables defined in setters. |
| |
| Close #409 |
| |
| * Syntax errors report the column number. |
| |
| Close #2914 |
| |
| * Support fully qualified typing imports for type annotations. |
| |
| Close #2915 |
| |
| * Exclude ``__dict__`` from ``attribute-defined-outside-init`` |
| |
| * Fix pointer on spelling check when the error are more than one time in the same line. |
| |
| Close #2895 |
| |
| * Fix crash happening when parent of called object cannot be determined |
| |
| * Allow of in ``GoogleDocstring.re_multiple_type`` |
| |
| * Added ``subprocess-run-check`` to handle subrocess.run without explicitly set ``check`` keyword. |
| |
| Close #2848 |
| |
| * When we can't infer bare except handlers, skip ``try-except-raise`` |
| |
| Close #2853 |
| |
| * Handle more ``unnecessary-lambda`` cases when dealing with additional kwargs in wrapped calls |
| |
| Close #2845 |
| |
| * Better postponed evaluation of annotations handling |
| |
| Close #2847 |
| |
| * Support postponed evaluation of annotations for variable annotations. |
| |
| Close #2838 |
| |
| * ``epylint.py_run`` defaults to ``python`` in case the current executable is not a Python one. |
| |
| Close #2837 |
| |
| * Ignore raw docstrings when running Similarities checker with ``ignore-docstrings=yes`` option |
| |
| * Fix crash when calling ``inherit_from_std_ex`` on a class which is its own ancestor |
| |
| Close #2680 |
| |
| * Added a new check that warns the user if a function call is used inside a test but parentheses are missing. |
| |
| Close #2658 |
| |
| * ``len-as-condition`` now only fires when a ``len(x)`` call is made without an explicit comparison |
| |
| The message and description accompanying this checker has been changed |
| reflect this new behavior, by explicitly asking to either rely on the |
| fact that empty sequence are false or to compare the length with a scalar. |
| |
| Close #2684 |
| |
| * Add ``preferred-module`` checker that notify if an import has a replacement module that should be used. |
| |
| This check is emitted when ``pylint`` finds an imported module that has a |
| preferred replacement listed in ``preferred-modules``. |
| |
| * ``assigning-non-slot`` not emitted for classes with unknown base classes. |
| |
| Close #2807 |
| |
| * ``old-division`` is not emitted for non-Const nodes. |
| |
| Close #2808 |
| |
| * Added method arguments to the dot writer for pyreverse. |
| |
| Close #2139 |
| |
| * Support for linting file from stdin. |
| |
| IDEs may benefit from the support for linting from an in-memory file. |
| |
| Close #1187 |
| |
| * Added a new check ``class-variable-slots-conflict`` |
| |
| This check is emitted when ``pylint`` finds a class variable that conflicts with a slot |
| name, which would raise a ``ValueError`` at runtime. |
| |
| * Added new check: dict-iter-missing-items (E1141) |
| |
| Close #2761 |
| |
| * Fix issue with pylint name in output of python -m pylint --version |
| |
| Close #2764 |
| |
| * Relicense logo material under the CC BY-SA 4.0 license. |
| |
| * Skip ``if`` expressions from f-strings for the ``check_elif`` checker |
| |
| Close #2816 |
| |
| * C0412 (ungrouped-import) is now compatible with isort. |
| |
| Close #2806 |
| |
| * Added new extension to detect too much code in a try clause |
| |
| Close #2877 |
| |
| * ``signature-mutators`` option was added |
| |
| With this option, users can choose to ignore ``too-many-function-args``, ``unexpected-keyword-arg``, |
| and ``no-value-for-parameter`` for functions decorated with decorators that change |
| the signature of a decorated function. |
| |
| Close #259 |
| |
| * Fixed a pragma comment on its own physical line being ignored when part |
| of a logical line with the previous physical line. |
| |
| Close #199 |
| |
| * Fixed false ``undefined-loop-variable`` for a function defined in the loop, |
| that uses the variable defined in that loop. |
| |
| Close #202 |
| |
| * Fixed ``unused-argument`` and ``function-redefined`` getting raised for |
| functions decorated with ``typing.overload``. |
| |
| Close #1581 |
| |
| * Fixed a false positive with ``consider-using-dict-comprehension`` for constructions that can't be converted to a comprehension |
| |
| Close #2963 |
| |
| * Added ``__post_init__`` to ``defining-attr-methods`` in order to avoid ``attribute-defined-outside-init`` in dataclasses. |
| |
| Close #2581 |
| |
| * Changed description of W0199 to use the term 2-item-tuple instead of 2-uple. |
| |
| * Allow a ``.`` as a prefix for Sphinx name resolution. |
| |
| * Checkers must now keep a 1 to 1 relationship between "msgid" (ie: C1234) and "symbol" (ie : human-readable-symbol) |
| * In checkers, an old_names can now be used for multiple new messages and pylint is now a little faster |
| |
| Caused by #1164. It means if you do a partial old_names for a message definition an exception will tell you that you |
| must rename the associated identification. |
| |
| * Allow the choice of f-strings as a valid way of formatting logging strings. |
| |
| Closes #2395 |
| |
| * Added ``--list-msgs-enabled`` command to list all enabled and disabled messages given the current RC file and command line arguments. |
| |
| |
| What's New in Pylint 2.3.0? |
| =========================== |
| Release date: 2019-02-27 |
| |
| * Protect against ``NonDeducibleTypeHierarchy`` when calling semi-private ``is_subtype`` |
| |
| ``astroid.helpers.is_subtype`` raises ``NonDeducibleTypeHierarchy`` when it cannot infer |
| the base classes of the given types, but that makes sense in its context given that |
| the method is mostly used to inform the inference process about the hierarchy of classes. |
| Doesn't make that much sense for ``pylint`` itself, which is why we're handling the |
| exception here, rather than in ``astroid`` |
| |
| Close PyCQA/astroid#644 |
| |
| * Added a new command line option ``list-groups`` for listing all the check groups ``pylint`` knows about. |
| |
| * Allow ``BaseException`` for emitting ``broad-except``, just like ``Exception``. |
| |
| Close #2741 |
| |
| * Fixed a crash that occurred for ``bad-str-strip-call`` when ``strip()`` received ``None`` |
| |
| Close #2743 |
| |
| * Don't emit ``*-not-iterating`` checks for builtins consumed by ``itertools`` |
| |
| Close #2731 |
| |
| * Fix a crash caused by iterating over ``Uninferable`` in a string formatting check. |
| |
| Close #2727 |
| |
| * 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' |
| |
| * Fixes for the new style logging format linter. |
| |
| The number of arguments was not handled properly, leading to an always |
| successful check. |
| |
| * Fix false positive ``not-callable`` for uninferable properties. |
| |
| * Fix false positive ``useless-else-on-loop`` if the break is deep in the else |
| of an inner loop. |
| |
| * Minor improvements to the help text for a few options. |
| |
| |
| 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-positive undefined-variable in nested lambda |
| |
| Close #760 |
| |
| * Fix false-positive ``bad-whitespace`` message for typing annoatations |
| with ellipses in them |
| |
| Close 1992 |
| |
| * Broke down "missing-docstrings" between "module", "class" and "function" |
| |
| For this to work we had to make multiple messages with the same old name |
| possible. |
| |
| Closes #1164 |
| |
| |
| 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: 2016-07-15 |
| |
| * 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. |
|