sync moved to modules
This commit is contained in:
1 parent
1dda6ce8cc
commit
13b761a81e
50 files changed
No files matched your search
@@ -0,0 +1,38 @@
|
||||
import hashlib
|
||||
import json
|
||||
|
||||
import bson.json_util
|
||||
|
||||
from utils.fn import map_cases
|
||||
|
||||
|
||||
def hash_file(file):
|
||||
with open(file, 'rb') as f:
|
||||
data = f.read()
|
||||
return hash_data(data)
|
||||
|
||||
|
||||
def hash_data(data):
|
||||
sha = hashlib.sha256(data)
|
||||
return sha.hexdigest()
|
||||
|
||||
|
||||
def hash_str(data):
|
||||
to_json = lambda i: json.dumps(i, sort_keys=True, ensure_ascii=False, default=bson.json_util.default)
|
||||
|
||||
data = map_cases(data, [
|
||||
(lambda i: isinstance(i, dict), to_json),
|
||||
(lambda i: isinstance(i, tuple), to_json),
|
||||
(lambda i: isinstance(i, list), to_json),
|
||||
(lambda i: isinstance(i, int), int),
|
||||
(lambda i: isinstance(i, float), float),
|
||||
])
|
||||
if isinstance(data, dict):
|
||||
data = to_json(data)
|
||||
|
||||
return hash_data(str(data).encode())
|
||||
|
||||
|
||||
def md5(data: str) -> str:
|
||||
i = hashlib.md5(data.encode('utf-8'))
|
||||
return i.hexdigest()
|
||||
Reference in new issue
Block a user