-
-
Notifications
You must be signed in to change notification settings - Fork 12.2k
ndarray should derive from collections.abc.Sequence? #2776
Copy link
Copy link
Open
Description
@juliantaylor raised this in a pandas issue.
The example from the ticket:
import numpy as np
import random
random.sample(np.array([1,2,3]),1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/user1/py33/lib/python3.3/random.py", line 298, in sample
raise TypeError("Population must be a sequence or set. For dicts, use list(d).")
TypeError: Population must be a sequence or set. For dicts, use list(d).This occurs on 3.3 with 1.7.0rc1.dev-3a52aa0, and on 3.2 with 1.6.2.
2.7 is unaffected of course.
The relavent code from cpython/Lib/random.py:297
from collections.abc import Set as _Set, Sequence as _Sequence
def sample(self, population, k):
# ...
if not isinstance(population, _Sequence):
raise TypeError("Population must be a sequence or set. For dicts, use list(d).")I couldn't grep another location in the stdlib with a similar test, but lib2to3
did show an assumed equivalence:
lib2to3/fixes/fix_operator.py
5:operator.isSequenceType(obj) -> isinstance(obj, collections.Sequence)
in 2.7
In [6]: operator.isSequenceType(np.array([1]))
Out[6]: Truebut in 3.3/3.2
>>> isinstance(np.array([1]), collections.Sequence)
FalseReactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels