Skip to content

Commit 2bca4f5

Browse files
zenlyjDanielNoord
authored andcommitted
Handle Uninferable when calling bool_value
1 parent 3db2bd9 commit 2bca4f5

File tree

3 files changed

+11
-7
lines changed

3 files changed

+11
-7
lines changed

astroid/brain/brain_dataclasses.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ def dataclass_transform(node: nodes.ClassDef) -> None:
8080
break
8181
for keyword in decorator.keywords:
8282
if keyword.arg == "kw_only":
83-
kw_only_decorated = keyword.value.bool_value()
83+
kw_only_decorated = keyword.value.bool_value() is True
8484

8585
init_str = _generate_dataclass_init(
8686
node,
@@ -156,7 +156,7 @@ def _check_generate_dataclass_init(node: nodes.ClassDef) -> bool:
156156
# Check for keyword arguments of the form init=False
157157
return not any(
158158
keyword.arg == "init"
159-
and not keyword.value.bool_value() # type: ignore[union-attr] # value is never None
159+
and keyword.value.bool_value() is False # type: ignore[union-attr] # value is never None
160160
for keyword in found.keywords
161161
)
162162

@@ -272,7 +272,7 @@ def _generate_dataclass_init(
272272
if is_field:
273273
# Skip any fields that have `init=False`
274274
if any(
275-
keyword.arg == "init" and not keyword.value.bool_value()
275+
keyword.arg == "init" and (keyword.value.bool_value() is False)
276276
for keyword in value.keywords # type: ignore[union-attr] # value is never None
277277
):
278278
# Also remove the name from the previous arguments to be inserted later
@@ -342,7 +342,7 @@ def _generate_dataclass_init(
342342
if is_field:
343343
kw_only = [k for k in value.keywords if k.arg == "kw_only"] # type: ignore[union-attr]
344344
if kw_only:
345-
if kw_only[0].value.bool_value():
345+
if kw_only[0].value.bool_value() is True:
346346
kw_only_params.append(param_str)
347347
else:
348348
params.append(param_str)

astroid/brain/brain_namedtuple_enum.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,9 +204,10 @@ def infer_named_tuple(
204204
)
205205
assert isinstance(func, nodes.NodeNG)
206206
try:
207-
rename = next(
207+
rename_arg_bool_value = next(
208208
call_site.infer_argument(func, "rename", context or InferenceContext())
209209
).bool_value()
210+
rename = rename_arg_bool_value is True
210211
except (InferenceError, StopIteration):
211212
rename = False
212213

astroid/nodes/node_classes.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3121,8 +3121,11 @@ def _infer(
31213121
except (InferenceError, StopIteration):
31223122
both_branches = True
31233123
else:
3124-
if not isinstance(test, util.UninferableBase):
3125-
if test.bool_value():
3124+
test_bool_value = test.bool_value()
3125+
if not isinstance(test, util.UninferableBase) and not isinstance(
3126+
test_bool_value, util.UninferableBase
3127+
):
3128+
if test_bool_value:
31263129
yield from self.body.infer(context=lhs_context)
31273130
else:
31283131
yield from self.orelse.infer(context=rhs_context)

0 commit comments

Comments
 (0)