from __future__ import annotations

from configparser import ConfigParser
from typing import TYPE_CHECKING

import pytest

if TYPE_CHECKING:
    from collections.abc import Callable
    from pathlib import Path


@pytest.fixture
def mk_ini_conf(tmp_path: Path) -> Callable[[str], ConfigParser]:
    def _func(raw: str) -> ConfigParser:
        filename = tmp_path / "demo.ini"
        filename.write_bytes(raw.encode("utf-8"))  # win32: avoid CR normalization - what you pass is what you get
        parser = ConfigParser(interpolation=None)
        with filename.open() as file_handler:
            parser.read_file(file_handler)
        return parser

    return _func
