mirror of https://github.com/sgoudham/Enso-Bot.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
20 lines
541 B
Python
20 lines
541 B
Python
5 years ago
|
from django.utils.itercompat import is_iterable
|
||
|
|
||
|
|
||
|
def make_hashable(value):
|
||
|
if isinstance(value, dict):
|
||
|
return tuple([
|
||
|
(key, make_hashable(nested_value))
|
||
|
for key, nested_value in value.items()
|
||
|
])
|
||
|
# Try hash to avoid converting a hashable iterable (e.g. string, frozenset)
|
||
|
# to a tuple.
|
||
|
try:
|
||
|
hash(value)
|
||
|
except TypeError:
|
||
|
if is_iterable(value):
|
||
|
return tuple(map(make_hashable, value))
|
||
|
# Non-hashable, non-iterable.
|
||
|
raise
|
||
|
return value
|