# -*- coding: utf-8 -*-
"""
Configuração de stdout/stderr no Windows para evitar UnicodeEncodeError
quando o console usa codificação legada (ex.: cp1252) e o código imprime emoji/UTF-8.
"""
from __future__ import annotations

import io
import sys


def configure_stdio_safe() -> None:
    """Idempotente: pode ser chamada mais de uma vez com segurança."""
    if sys.platform != "win32":
        return

    for stream_name in ("stdout", "stderr"):
        stream = getattr(sys, stream_name, None)
        if stream is None:
            continue

        if hasattr(stream, "reconfigure"):
            try:
                stream.reconfigure(encoding="utf-8", errors="replace")
                continue
            except Exception:
                pass

        buf = getattr(stream, "buffer", None)
        if buf is None:
            continue
        try:
            linebuf = stream_name == "stdout"
            wrapped = io.TextIOWrapper(
                buf,
                encoding="utf-8",
                errors="replace",
                line_buffering=linebuf,
            )
            setattr(sys, stream_name, wrapped)
        except Exception:
            pass
