mirror of
https://github.com/python/cpython.git
synced 2025-08-30 13:38:43 +00:00
Use ABCs to validate documented restriction to Sets or Sequences.
This commit is contained in:
parent
9aa53c2f01
commit
886687dcda
1 changed files with 4 additions and 3 deletions
|
@ -43,6 +43,7 @@ from math import log as _log, exp as _exp, pi as _pi, e as _e, ceil as _ceil
|
||||||
from math import sqrt as _sqrt, acos as _acos, cos as _cos, sin as _sin
|
from math import sqrt as _sqrt, acos as _acos, cos as _cos, sin as _sin
|
||||||
from os import urandom as _urandom
|
from os import urandom as _urandom
|
||||||
from binascii import hexlify as _hexlify
|
from binascii import hexlify as _hexlify
|
||||||
|
import collections as _collections
|
||||||
|
|
||||||
__all__ = ["Random","seed","random","uniform","randint","choice","sample",
|
__all__ = ["Random","seed","random","uniform","randint","choice","sample",
|
||||||
"randrange","shuffle","normalvariate","lognormvariate",
|
"randrange","shuffle","normalvariate","lognormvariate",
|
||||||
|
@ -296,10 +297,10 @@ class Random(_random.Random):
|
||||||
# preferred since the list takes less space than the
|
# preferred since the list takes less space than the
|
||||||
# set and it doesn't suffer from frequent reselections.
|
# set and it doesn't suffer from frequent reselections.
|
||||||
|
|
||||||
if isinstance(population, (set, frozenset)):
|
if isinstance(population, _collections.Set):
|
||||||
population = tuple(population)
|
population = tuple(population)
|
||||||
if not hasattr(population, '__getitem__') or hasattr(population, 'keys'):
|
if not isinstance(population, _collections.Sequence):
|
||||||
raise TypeError("Population must be a sequence or set. For dicts, use dict.keys().")
|
raise TypeError("Population must be a sequence or Set. For dicts, use list(d).")
|
||||||
random = self.random
|
random = self.random
|
||||||
n = len(population)
|
n = len(population)
|
||||||
if not 0 <= k <= n:
|
if not 0 <= k <= n:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue