Skip to content

hash

django_spire.contrib.sync.core.hash

RecordHasher

Source code in django_spire/contrib/sync/core/hash.py
def __init__(
    self,
    identity_field: str,
    compare_fields: list[str] | None = None,
) -> None:
    if not identity_field:
        message = 'identity_field must be a non-empty string'
        raise InvalidParameterError(message)

    if compare_fields is not None:
        for field_name in compare_fields:
            if not field_name:
                message = (
                    'compare_fields must not contain '
                    'empty strings'
                )

                raise InvalidParameterError(message)

    self._compare_fields = compare_fields
    self._identity_field = identity_field
    self._schema_tag = self._compute_schema_tag()

hash

Source code in django_spire/contrib/sync/core/hash.py
def hash(self, record: dict[str, Any]) -> str:
    data = self._canonical(record)
    body = hashlib.sha256(data).hexdigest()

    return f'{self._schema_tag}:{body}'