start-pack
This commit is contained in:
commit
3e1fa59b3d
5723 changed files with 757971 additions and 0 deletions
26
myenv/lib/python3.12/site-packages/django/utils/hashable.py
Normal file
26
myenv/lib/python3.12/site-packages/django/utils/hashable.py
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
from collections.abc import Iterable
|
||||
|
||||
|
||||
def make_hashable(value):
|
||||
"""
|
||||
Attempt to make value hashable or raise a TypeError if it fails.
|
||||
|
||||
The returned value should generate the same hash for equal values.
|
||||
"""
|
||||
if isinstance(value, dict):
|
||||
return tuple(
|
||||
[
|
||||
(key, make_hashable(nested_value))
|
||||
for key, nested_value in sorted(value.items())
|
||||
]
|
||||
)
|
||||
# Try hash to avoid converting a hashable iterable (e.g. string, frozenset)
|
||||
# to a tuple.
|
||||
try:
|
||||
hash(value)
|
||||
except TypeError:
|
||||
if isinstance(value, Iterable):
|
||||
return tuple(map(make_hashable, value))
|
||||
# Non-hashable, non-iterable.
|
||||
raise
|
||||
return value
|
||||
Loading…
Add table
Add a link
Reference in a new issue