Update util.py - fix ensure_tuple instance check

doing isinstance(obj, Sequence) makes calls with keys of dict impossible
Example:
Returns 
```
d = {'a':'a', 'b':'b'}
table.upsert(values, d.keys())
```
`dict_keys(['a', 'b'])` is not of instance Sequence, but Iterable, therefore `ensure_tuple(dict_keys(['a', 'b']))` returns (dict_keys(['a', 'b']),)
which leads to invalid iteration.
This commit is contained in:
mwmajewsk 2018-06-20 22:44:49 +02:00 committed by GitHub
parent 38a59b921e
commit bcd20c7eca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,6 +1,6 @@
import six
from hashlib import sha1
from collections import OrderedDict, Sequence
from collections import OrderedDict, Iterable
from six.moves.urllib.parse import urlparse
QUERY_STEP = 1000
@ -99,7 +99,7 @@ def ensure_tuple(obj):
"""Try and make the given argument into a tuple."""
if obj is None:
return tuple()
if isinstance(obj, Sequence) and not isinstance(obj, six.string_types):
if isinstance(obj, Iterable) and not isinstance(obj, six.string_types):
return tuple(obj)
return obj,