1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
"""Gravatar avatar URLs (https://gravatar.com)."""
from __future__ import annotations
import hashlib
from urllib.parse import urlencode
_GRAVATAR_BASE = "https://www.gravatar.com/avatar"
def gravatar_url(email: str, *, size: int = 64) -> str:
"""Return a Gravatar image URL for ``email`` (``d=404`` when no profile exists)."""
normalized = email.strip().lower().encode("utf-8")
digest = hashlib.md5(normalized).hexdigest() # noqa: S324
params = urlencode({"s": str(size), "d": "404"})
return f"{_GRAVATAR_BASE}/{digest}?{params}"