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.Union[str, t.Iterable[t.Optional[str]]]) -> str:
13    if isinstance(data, str):
14        data = [data]
15    return hashlib.md5(_safe_concat(data)).hexdigest()
16
17
18def hash_data(data: t.Iterable[t.Optional[str]]) -> str:
19    return crc32(data)
20
21
22def _safe_concat(data: t.Iterable[t.Optional[str]]) -> bytes:
23    return ";".join("" if d is None else d for d in data).encode("utf-8")
def crc32(data: Iterable[Optional[str]]) -> str:
 9def crc32(data: t.Iterable[t.Optional[str]]) -> str:
10    return str(zlib.crc32(_safe_concat(data)))
def md5(data: Union[str, Iterable[Optional[str]]]) -> str:
13def md5(data: t.Union[str, t.Iterable[t.Optional[str]]]) -> str:
14    if isinstance(data, str):
15        data = [data]
16    return hashlib.md5(_safe_concat(data)).hexdigest()
def hash_data(data: Iterable[Optional[str]]) -> str:
19def hash_data(data: t.Iterable[t.Optional[str]]) -> str:
20    return crc32(data)