summaryrefslogtreecommitdiff
path: root/astroid/brain
diff options
context:
space:
mode:
authorMark Byrne <31762852+mbyrnepr2@users.noreply.github.com>2022-11-04 11:03:50 +0100
committerGitHub <noreply@github.com>2022-11-04 11:03:50 +0100
commit2188731d071ab981d4d8c78c93c6c1e65104b5ae (patch)
treecdd9b91297ce6ff8b4ec48a7ced6102ec81d1321 /astroid/brain
parentb8691c48ef30d94a9c045e0c9a2e0b9a103c4777 (diff)
downloadastroid-git-2188731d071ab981d4d8c78c93c6c1e65104b5ae.tar.gz
Infer the `length` argument of the `random.sample` function. (#1862)
Refs PyCQA/pylint#7706
Diffstat (limited to 'astroid/brain')
-rw-r--r--astroid/brain/brain_random.py10
1 files changed, 5 insertions, 5 deletions
diff --git a/astroid/brain/brain_random.py b/astroid/brain/brain_random.py
index e66aa81a..a580ff70 100644
--- a/astroid/brain/brain_random.py
+++ b/astroid/brain/brain_random.py
@@ -42,10 +42,10 @@ def infer_random_sample(node, context=None):
if len(node.args) != 2:
raise UseInferenceDefault
- length = node.args[1]
- if not isinstance(length, Const):
+ inferred_length = helpers.safe_infer(node.args[1], context=context)
+ if not isinstance(inferred_length, Const):
raise UseInferenceDefault
- if not isinstance(length.value, int):
+ if not isinstance(inferred_length.value, int):
raise UseInferenceDefault
inferred_sequence = helpers.safe_infer(node.args[0], context=context)
@@ -55,12 +55,12 @@ def infer_random_sample(node, context=None):
if not isinstance(inferred_sequence, ACCEPTED_ITERABLES_FOR_SAMPLE):
raise UseInferenceDefault
- if length.value > len(inferred_sequence.elts):
+ if inferred_length.value > len(inferred_sequence.elts):
# In this case, this will raise a ValueError
raise UseInferenceDefault
try:
- elts = random.sample(inferred_sequence.elts, length.value)
+ elts = random.sample(inferred_sequence.elts, inferred_length.value)
except ValueError as exc:
raise UseInferenceDefault from exc