[Python-checkins] r69935 - python/branches/py3k/Lib/random.py

raymond.hettinger python-checkins at python.org
Tue Feb 24 12:27:15 CET 2009


Author: raymond.hettinger
Date: Tue Feb 24 12:27:15 2009
New Revision: 69935
Log:
Use ABCs to validate documented restriction to Sets or Sequences.
Modified:
 python/branches/py3k/Lib/random.py
Modified: python/branches/py3k/Lib/random.py
==============================================================================
--- python/branches/py3k/Lib/random.py	(original)
+++ python/branches/py3k/Lib/random.py	Tue Feb 24 12:27:15 2009
@@ -43,6 +43,7 @@
 from math import sqrt as _sqrt, acos as _acos, cos as _cos, sin as _sin
 from os import urandom as _urandom
 from binascii import hexlify as _hexlify
+import collections as _collections
 
 __all__ = ["Random","seed","random","uniform","randint","choice","sample",
 "randrange","shuffle","normalvariate","lognormvariate",
@@ -296,10 +297,10 @@
 # preferred since the list takes less space than the
 # set and it doesn't suffer from frequent reselections.
 
- if isinstance(population, (set, frozenset)):
+ if isinstance(population, _collections.Set):
 population = tuple(population)
- if not hasattr(population, '__getitem__') or hasattr(population, 'keys'):
- raise TypeError("Population must be a sequence or set. For dicts, use dict.keys().")
+ if not isinstance(population, _collections.Sequence):
+ raise TypeError("Population must be a sequence or Set. For dicts, use list(d).")
 random = self.random
 n = len(population)
 if not 0 <= k <= n:


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /