"""Internal module for checking aiohttp compatibility of async modules"""
import logging
from typing import Callable


def _print_warning_log(message: str) -> None:
    logging.getLogger(__name__).warning(message)


def validate_aiohttp_version(
    aiohttp_version: str,
    print_warning: Callable[[str], None] = _print_warning_log,
):
    if aiohttp_version is not None:
        elements = aiohttp_version.split(".")
        if len(elements) >= 3:
            # patch version can be a non-numeric value
            major, minor, patch = int(elements[0]), int(elements[1]), elements[2]
            if major <= 2 or (
                major == 3 and (minor == 6 or (minor == 7 and patch == "0"))
            ):
                print_warning(
                    "We highly recommend upgrading aiohttp to 3.7.3 or higher versions."
                    "An older version of the library may not work with the Slack server-side in the future."
                )
