"""Official Python QRCode PNG Generator (data:image/png;base64).

Uses standard 'qrcode' and 'PIL/Pillow' libraries to output a 100% valid,
scannable, standard PNG QR code image data URL for TOTP authenticator apps.
"""

import base64
import io
import logging

logger = logging.getLogger(__name__)


def generate_qr_png_data_url(text: str) -> str:
    """Generate a standard PNG QR code base64 data URL for a given string."""
    import qrcode

    qr = qrcode.QRCode(
        version=None,
        error_correction=qrcode.constants.ERROR_CORRECT_M,
        box_size=10,
        border=4,
    )
    qr.add_data(text)
    qr.make(fit=True)
    img = qr.make_image(fill_color="black", back_color="white")

    buf = io.BytesIO()
    img.save(buf, format="PNG")
    b64_png = base64.b64encode(buf.getvalue()).decode("ascii")
    return f"data:image/png;base64,{b64_png}"


# Backward compatibility alias
generate_qr_svg = generate_qr_png_data_url
