What's New in Pylint 3.3

:Release:3.3 :Date: 2024-09-20

Summary -- Release highlights

What's new in Pylint 3.3.8?

Release date: 2025-08-09

This patch release includes an exceptional fix for a false negative issue. For details, see: https://github.com/pylint-dev/pylint/pull/10482#issuecomment-3164514082

False Positives Fixed

False Negatives Fixed

Other Bug Fixes

  • Fix a bug in Pyreverse where aggregations and associations were included in diagrams regardless of the selected --filter-mode (such as PUB_ONLY, ALL, etc.).

    Closes #10373 (#10373)

  • Fix double underscores erroneously rendering as bold in pyreverse's Mermaid output.

    Closes #10402 (#10402)

What's new in Pylint 3.3.7?

Release date: 2025-05-04

False Positives Fixed

  • Comparisons between two calls to type() won't raise an unidiomatic-typecheck / C0123 warning anymore, consistent with the behavior applied only for == previously.

    Closes #10161 (#10161)

Other Bug Fixes

  • Fixed a crash when importing a class decorator that did not exist with the same name as a class attribute after the class definition.

    Closes #10105 (#10105)

  • Fix a crash caused by malformed format strings when using .format with keyword arguments.

    Closes #10282 (#10282)

  • Using a slice as a class decorator now raises a not-callable / E1102 message instead of crashing. A lot of checks that dealt with decorators (too many to list) are now shortcut if the decorator can't immediately be inferred to a function or class definition.

    Closes #10334 (#10334)

Other Changes

  • The algorithm used for no-member / E1101 suggestions is now more efficient and cuts the calculation when the distance score is already above the threshold.

    Refs #10277 (#10277)

What's new in Pylint 3.3.6?

Release date: 2025-03-20

False Positives Fixed

What's new in Pylint 3.3.5?

Release date: 2025-03-09

False Positives Fixed

Other Bug Fixes

Other Changes

  • Upload release assets to PyPI via Trusted Publishing.

    Closes #10256 (#10256)

What's new in Pylint 3.3.4?

Release date: 2025-01-28

Other Bug Fixes

  • Fixes "skipped files" count calculation; the previous method was displaying an arbitrary number.

    Closes #10073 (#10073)

  • Fixes a crash that occurred when pylint was run in a container on a host with cgroupsv2 and restrictions on CPU usage.

    Closes #10103 (#10103)

  • Relaxed the requirements for isort so pylint can benefit from isort 6.

    Closes #10203 (#10203)

What's new in Pylint 3.3.3?

Release date: 2024-12-23

False Positives Fixed

Other Bug Fixes

  • Fix Unable to import 'collections.abc' (import-error) on Python 3.13.1.

    Closes #10112 (#10112)

What's new in Pylint 3.3.2?

Release date: 2024-12-01

False Positives Fixed

Other Bug Fixes

  • Fixes the issue with --source-root option not working when the source files are in a subdirectory of the source root (e.g. when using a /src layout).

    Closes #10026 (#10026)

What's new in Pylint 3.3.1?

Release date: 2024-09-24

False Positives Fixed

  • Fix regression causing some f-strings to not be inferred as strings.

    Closes #9947 (#9947)

What's new in Pylint 3.3.0?

Release date: 2024-09-20

Changes requiring user actions

  • We migrated symilar to argparse, from getopt, so the error and help output changed (for the better). We exit with 2 instead of sometime 1, sometime 2. The error output is not captured by the runner anymore. It's not possible to use a value for the boolean options anymore (--ignore-comments 1 should become --ignore-comments).

    Refs #9731 (#9731)

New Features

  • Add new declare-non-slot / E0245 error which reports when a class has a __slots__ member and a type hint on the class is not present in __slots__.

    Refs #9499 (#9499)

New Checks

False Negatives Fixed

Other Bug Fixes

  • --enable with --disable=all now produces an error, when an unknown msg code is used. Internal pylint messages are no longer affected by --disable=all.

    Closes #9403 (#9403)

  • Impossible to compile regexes for paths in the configuration or argument given to pylint won't crash anymore but raise an argparse error and display the error message from re.compile instead.

    Closes #9680 (#9680)

  • Fix a bug where a tox.ini file with pylint configuration was ignored and it exists in the current directory.

    .cfg and .ini files containing a Pylint configuration may now use a section named [pylint]. This enhancement impacts the scenario where these file types are used as defaults when they are present and have not been explicitly referred to, using the --rcfile option.

    Closes #9727 (#9727)

  • Improve file discovery for directories that are not python packages.

    Closes #9764 (#9764)

Other Changes

  • Remove support for launching pylint with Python 3.8. Code that supports Python 3.8 can still be linted with the --py-version=3.8 setting.

    Refs #9774 (#9774)

  • Add support for Python 3.13.

    Refs #9852 (#9852)

Internal Changes

  • All variables, classes, functions and file names containing the word 'similar', when it was, in fact, referring to 'symilar' (the standalone program for the duplicate-code check) were renamed to 'symilar'.

    Closes #9734 (#9734)

  • Remove old-style classes (Python 2) code and remove check for new-style class since everything is new-style in Python 3. Updated doc for exception checker to remove reference to new style class.

    Refs #9925 (#9925)