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
onattrs
classes withClassVar
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
fromastroid.brain.brain_numpy_utils
. -
To alleviate circular imports, the
manager
argument toAstroidBuilder()
is now required. -
Constants now have a parent of
nodes.SYNTHETIC_ROOT
. -
Fix crashes with large positive and negative list multipliers.
-
Fix precedence of
path
arg inmodpath_from_file_with_callback
to be higher thansys.path
-
Following a deprecation period, the
future
argument was removed fromstatement()
andframe()
. -
Improve consistency of
JoinedStr
inference by not raisingInferenceError
and
returning eitherUninferable
or a fully resolvedConst
.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
decoratorsCloses #10377
-
Modify
astroid.bases
andtests.test_nodes
to reflect thatenum.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 pathCloses #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
andast.Interpolation
added in Python 3.14.Refs #2789
-
Add support for type parameter defaults added in Python 3.13.
-
Improve
as_string()
representation forTypeVar
,ParamSpec
andTypeVarTuple
nodes, as well as
type parameter inClassDef
,FuncDef
andTypeAlias
nodes (PEP 695). -
Astroid now correctly supports the
exceptions
attribute ofExceptionGroup
.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 fromastroid.nodes
instead.Refs #2837