github pylint-dev/astroid v4.0.0

19 hours ago

What's New in astroid 4.0.0?

Release date: 2025-10-05

  • Support constraints from ternary expressions in inference.

    Closes pylint-dev/pylint#9729

  • Handle deprecated bool(NotImplemented) cast in const nodes.

  • Add support for boolean truthiness constraints (x, not x) in inference.

    Closes pylint-dev/pylint#9515

  • Fix false positive invalid-name on attrs classes with ClassVar annotated variables.

    Closes pylint-dev/pylint#10525

  • Prevent crash when parsing deeply nested parentheses causing MemoryError in python's built-in ast.

    Closes #2643

  • Fix crash when inferring namedtuple with invalid field name looking like f-string formatting.

    Closes #2519

  • Fix false positive no-member in except * handler.

    Closes pylint-dev/pylint#9056

  • Fix crash when comparing invalid dict literal

    Closes #2522

  • Removed internal functions infer_numpy_member, name_looks_like_numpy_member, and
    attribute_looks_like_numpy_member from astroid.brain.brain_numpy_utils.

  • To alleviate circular imports, the manager argument to AstroidBuilder() is now required.

  • Constants now have a parent of nodes.SYNTHETIC_ROOT.

  • Fix crashes with large positive and negative list multipliers.

    Closes #2521
    Closes #2523

  • Fix precedence of path arg in modpath_from_file_with_callback to be higher than sys.path

  • Following a deprecation period, the future argument was removed from statement() and frame().

  • Improve consistency of JoinedStr inference by not raising InferenceError and
    returning either Uninferable or a fully resolved Const.

    Closes #2621

  • Fix crash when typing._alias() call is missing arguments.

    Closes #2513

  • Remove support for Python 3.9 (and constant PY310_PLUS).

  • Include subclasses of standard property classes as property decorators

    Closes #10377

  • Modify astroid.bases and tests.test_nodes to reflect that enum.property was added in Python 3.11, not 3.10

  • Fix incorrect result in _get_relative_base_path when the target directory name starts with the base path

    Closes #2608

  • The brain for nose was dropped. nose has been deprecated for 10 years and the brain required some maintenance.

    Refs #2765

  • Fix a crash when the root of a node is not a module but is unknown.

    Closes #2672

  • Add basic support for ast.TemplateStr and ast.Interpolationadded in Python 3.14.

    Refs #2789

  • Add support for type parameter defaults added in Python 3.13.

  • Improve as_string() representation for TypeVar, ParamSpec and TypeVarTuple nodes, as well as
    type parameter in ClassDef, FuncDef and TypeAlias nodes (PEP 695).

  • Astroid now correctly supports the exceptions attribute of ExceptionGroup.

    Closes pylint-dev/pylint#8985
    Closes pylint-dev/pylint#10558

  • Deprecate importing node classes from astroid directly. This will be removed in v5.
    It's recommended to import them from astroid.nodes instead.

    Refs #2837

Don't miss a new astroid release

NewReleases is sending notifications on new releases.