Comment #12 on issue 2014 by smichr: sympy.solvers.solvers.solve should
also allow frozenset to hold equations
http://code.google.com/p/sympy/issues/detail?id=2014
I'm +1/2 with comments below. I have often thought that listing all
iterable types was kind of a clunky way to test for iterability. The
proposed change seems sound. Sometimes type of arguments are used to
trigger different types of handling in a routine but I don't think those
kinds of changes are being made here.
I notice that
stride = kwargs.pop('stride', 0.25)
try: stride = eval(stride)
except: pass
- if isinstance(stride, (list, tuple)):
+ if hasattr(stride, '__len__'):
assert len(stride) == 3
self._stride = stride
else:
Is similar to the change made in dot with the difference that here it has
not been confirmed that stride is an iterable so it is conceivable that
stride could be anything that has a length e.g. a dictionary or a string.
So to maintain the same strictness a test that it be an iterable should be
made.
This raises the more general issue: dictionaries support iteration, too,
but replacing a list, set or tuple with a dictionary will give unintended
results when it is iterated. To maintain the same strictness a double test,
hasattr(obj, '__iter__') and hasattr(obj, '__len__'), otherwise we are
introducing a new "feature." Does anyone else see implications for allowing
the iterable to be the keys of a dictionary?
Checking tow attributes is still faster, too, than testing for a type in a
list of length greater than 1.
timeit('hasattr([], "__iter__") and hasattr([],"__len__")')
1.1612908903226611
timeit('type([]) in [list, tuple]')
1.18388733763652
timeit('type([]) in [tuple, list]')
1.2167714053043142
timeit('type([]) in [set, tuple, list]')
1.3359323601184201
--
You received this message because you are subscribed to the Google Groups
"sympy-issues" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sympy-issues?hl=en.