Edit on GitHub

sqlmesh.utils.hashing

 1from __future__ import annotations
 2
 3import hashlib
 4import typing as t
 5import zlib
 6
 7
 8def crc32(data: t.Iterable[t.Optional[str]]) -> str:
 9    return str(zlib.crc32(_safe_concat(data)))
10
11
12def md5(data: t.Iterable[t.Optional[str]]) -> str:
13    return hashlib.md5(_safe_concat(data)).hexdigest()
14
15
16def hash_data(data: t.Iterable[t.Optional[str]]) -> str:
17    return crc32(data)
18
19
20def _safe_concat(data: t.Iterable[t.Optional[str]]) -> bytes:
21    return ";".join("" if d is None else d for d in data).encode("utf-8")
def crc32(data: Iterable[Union[str, NoneType]]) -> str:
 9def crc32(data: t.Iterable[t.Optional[str]]) -> str:
10    return str(zlib.crc32(_safe_concat(data)))
def md5(data: Iterable[Union[str, NoneType]]) -> str:
13def md5(data: t.Iterable[t.Optional[str]]) -> str:
14    return hashlib.md5(_safe_concat(data)).hexdigest()
def hash_data(data: Iterable[Union[str, NoneType]]) -> str:
17def hash_data(data: t.Iterable[t.Optional[str]]) -> str:
18    return crc32(data)