Handle Uninferable when calling bool_value
diff --git a/astroid/brain/brain_dataclasses.py b/astroid/brain/brain_dataclasses.py index e6794be..58ae82f 100644 --- a/astroid/brain/brain_dataclasses.py +++ b/astroid/brain/brain_dataclasses.py
@@ -80,7 +80,7 @@ break for keyword in decorator.keywords: if keyword.arg == "kw_only": - kw_only_decorated = keyword.value.bool_value() + kw_only_decorated = keyword.value.bool_value() is True init_str = _generate_dataclass_init( node, @@ -156,7 +156,7 @@ # Check for keyword arguments of the form init=False return not any( keyword.arg == "init" - and not keyword.value.bool_value() # type: ignore[union-attr] # value is never None + and keyword.value.bool_value() is False # type: ignore[union-attr] # value is never None for keyword in found.keywords ) @@ -272,7 +272,7 @@ if is_field: # Skip any fields that have `init=False` if any( - keyword.arg == "init" and not keyword.value.bool_value() + keyword.arg == "init" and (keyword.value.bool_value() is False) for keyword in value.keywords # type: ignore[union-attr] # value is never None ): # Also remove the name from the previous arguments to be inserted later @@ -342,7 +342,7 @@ if is_field: kw_only = [k for k in value.keywords if k.arg == "kw_only"] # type: ignore[union-attr] if kw_only: - if kw_only[0].value.bool_value(): + if kw_only[0].value.bool_value() is True: kw_only_params.append(param_str) else: params.append(param_str)
diff --git a/astroid/brain/brain_namedtuple_enum.py b/astroid/brain/brain_namedtuple_enum.py index 2cbb170..7163e86 100644 --- a/astroid/brain/brain_namedtuple_enum.py +++ b/astroid/brain/brain_namedtuple_enum.py
@@ -204,9 +204,10 @@ ) assert isinstance(func, nodes.NodeNG) try: - rename = next( + rename_arg_bool_value = next( call_site.infer_argument(func, "rename", context or InferenceContext()) ).bool_value() + rename = rename_arg_bool_value is True except (InferenceError, StopIteration): rename = False
diff --git a/astroid/nodes/node_classes.py b/astroid/nodes/node_classes.py index a45b5e3..0d3a425 100644 --- a/astroid/nodes/node_classes.py +++ b/astroid/nodes/node_classes.py
@@ -3121,8 +3121,11 @@ except (InferenceError, StopIteration): both_branches = True else: - if not isinstance(test, util.UninferableBase): - if test.bool_value(): + test_bool_value = test.bool_value() + if not isinstance(test, util.UninferableBase) and not isinstance( + test_bool_value, util.UninferableBase + ): + if test_bool_value: yield from self.body.infer(context=lhs_context) else: yield from self.orelse.infer(context=rhs_context)