aboutsummaryrefslogtreecommitdiff
path: root/doc/whatsnew/2.5.rst
diff options
context:
space:
mode:
Diffstat (limited to 'doc/whatsnew/2.5.rst')
-rw-r--r--doc/whatsnew/2.5.rst102
1 files changed, 102 insertions, 0 deletions
diff --git a/doc/whatsnew/2.5.rst b/doc/whatsnew/2.5.rst
new file mode 100644
index 000000000..f926f5940
--- /dev/null
+++ b/doc/whatsnew/2.5.rst
@@ -0,0 +1,102 @@
+**************************
+ What's New in Pylint 2.5
+**************************
+
+:Release: 2.5
+:Date: 2020-04-27
+
+
+Summary -- Release highlights
+=============================
+
+
+New checkers
+============
+
+* A new check ``isinstance-second-argument-not-valid-type`` was added.
+
+ This check is emitted whenever **pylint** finds a call to the ``isinstance``
+ function with a second argument that is not a type. Such code is likely
+ unintended as it will cause a TypeError to be thrown at runtime error.
+
+* A new check ``assert-on-string-literal`` was added.
+
+ This check is emitted whenever **pylint** finds an assert statement
+ with a string literal as its first argument. Such assert statements
+ are probably unintended as they will always pass.
+
+* A new check ``f-string-without-interpolation`` was added.
+
+ This check is emitted whenever **pylint** detects the use of an
+ f-string without having any interpolated values in it, which means
+ that the f-string can be a normal string.
+
+* Multiple checks for invalid return types of protocol functions were added:
+
+ * ``invalid-bool-returned``: ``__bool__`` did not return a bool
+ * ``invalid-index-returned``: ``__index__`` did not return an integer
+ * ``invalid-repr-returned)``: ``__repr__`` did not return a string
+ * ``invalid-str-returned)``: ``__str__`` did not return a string
+ * ``invalid-bytes-returned)``: ``__bytes__`` did not return a string
+ * ``invalid-hash-returned)``: ``__hash__`` did not return an integer
+ * ``invalid-length-hint-returned)``: ``__length_hint__`` did not return a non-negative integer
+ * ``invalid-format-returned)``: ``__format__`` did not return a string
+ * ``invalid-getnewargs-returned)``: ``__getnewargs__`` did not return a tuple
+ * ``invalid-getnewargs-ex-returned)``: ``__getnewargs_ex__`` did not return a tuple of the form (tuple, dict)
+
+* A new check ``inconsistent-quotes`` was added.
+
+ This check is emitted when quotes delimiters (``"`` and ``'``) are not used
+ consistently throughout a module. It allows avoiding unnecessary escaping,
+ allowing, for example, ``"Don't error"`` in a module in which single-quotes
+ otherwise delimit strings so that the single quote in ``Don't`` doesn't need to be escaped.
+
+* A new check ``non-str-assignment-to-dunder-name`` was added to ensure that only strings are assigned to ``__name__`` attributes.
+
+
+Other Changes
+=============
+
+* Configuration can be read from a setup.cfg or pyproject.toml file in the current directory.
+ A setup.cfg must prepend pylintrc section names with ``pylint.``, for example ``[pylint.MESSAGES CONTROL]``.
+ A pyproject.toml file must prepend section names with ``tool.pylint.``, for example ``[tool.pylint.'MESSAGES CONTROL']``.
+ These files can also be passed in on the command line.
+
+* Add new ``good-names-rgx`` and ``bad-names-rgx`` to enable permitting or disallowing of names via regular expressions
+
+ To enable better handling of permitted/disallowed names, we added two new config options: good-names-rgxs: a comma-
+ separated list of regexes, that if a name matches will be exempt of naming-checking. bad-names-rgxs: a comma-
+ separated list of regexes, that if a name matches will be always marked as a disallowed name.
+
+* Mutable ``collections.*`` are now flagged as dangerous defaults.
+
+* Add new ``--fail-under`` flag for setting the threshold for the score to fail overall tests. If the score is over the fail-under threshold, pylint will complete SystemExit with value 0 to indicate no errors.
+
+* Added a new option ``notes-rgx`` to make fixme warnings more flexible. Now either ``notes`` or ``notes-rgx`` option can be used to detect fixme warnings.
+
+* Non-ASCII characters are now allowed by ``invalid-name``.
+
+* ``pylint`` no longer emits ``invalid-name`` for non-constants found at module level.
+
+ Pylint was considering all module level variables as constants, which is not what PEP 8 is actually mandating.
+
+* A new check ``non-ascii-name`` was added to detect identifiers with non-ASCII characters.
+
+* Overloaded typing functions no longer trigger ``no-self-use``, ``unused-argument``, ``missing-docstring`` and similar checks
+ that assumed that overloaded functions are normal functions.
+
+* ``python -m pylint`` can no longer be made to import files from the local directory.
+
+* A new command ``--list-extensions`` was added.
+
+ This command lists all extensions present in ``pylint.extensions``.
+
+* Various false positives have been fixed which you can read more about in the Changelog files.
+
+* 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.
+The type of formatting to use is chosen through enabling and disabling messages
+rather than through the logging-format-style option.
+The fstr value of the logging-format-style option is not valid.