v4.0.0
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-nameonattrsclasses withClassVarannotated 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_memberfromastroid.brain.brain_numpy_utils. -
To alleviate circular imports, the
managerargument 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
patharg inmodpath_from_file_with_callbackto be higher thansys.path -
Following a deprecation period, the
futureargument was removed fromstatement()andframe(). -
Improve consistency of
JoinedStrinference by not raisingInferenceErrorand
returning eitherUninferableor 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
propertydecoratorsCloses #10377
-
Modify
astroid.basesandtests.test_nodesto reflect thatenum.propertywas added in Python 3.11, not 3.10 -
Fix incorrect result in
_get_relative_base_pathwhen 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.TemplateStrandast.Interpolationadded in Python 3.14.Refs #2789
-
Add support for type parameter defaults added in Python 3.13.
-
Improve
as_string()representation forTypeVar,ParamSpecandTypeVarTuplenodes, as well as
type parameter inClassDef,FuncDefandTypeAliasnodes (PEP 695). -
Astroid now correctly supports the
exceptionsattribute ofExceptionGroup.Closes pylint-dev/pylint#8985
Closes pylint-dev/pylint#10558 -
Deprecate importing node classes from
astroiddirectly. This will be removed in v5.
It's recommended to import them fromastroid.nodesinstead.Refs #2837