"""
Backward compatibility for homebrew builds on macOS.
"""


import sys
import os
import functools
import subprocess
import sysconfig


@functools.lru_cache()
def enabled():
    """
    Only enabled for Python 3.9 framework homebrew builds
    except ensurepip and venv.
    """
    PY39 = (3, 9) < sys.version_info < (3, 10)
    framework = sys.platform == "darwin" and sys._framework
    homebrew = "Cellar" in sysconfig.get_config_var("projectbase")
    venv = sys.prefix != sys.base_prefix
    ensurepip = os.environ.get("ENSUREPIP_OPTIONS")
    return PY39 and framework and homebrew and not venv and not ensurepip


schemes = dict(
    osx_framework_library=dict(
        stdlib="{installed_base}/{platlibdir}/python{py_version_short}",
        platstdlib="{platbase}/{platlibdir}/python{py_version_short}",
        purelib="{homebrew_prefix}/lib/python{py_version_short}/site-packages",
        platlib="{homebrew_prefix}/{platlibdir}/python{py_version_short}/site-packages",
        include="{installed_base}/include/python{py_version_short}{abiflags}",
        platinclude="{installed_platbase}/include/python{py_version_short}{abiflags}",
        scripts="{homebrew_prefix}/bin",
        data="{homebrew_prefix}",
    )
)


@functools.lru_cache()
def vars():
    if not enabled():
        return {}
    homebrew_prefix = subprocess.check_output(["brew", "--prefix"], text=True).strip()
    return locals()


def scheme(name):
    """
    Override the selected scheme for posix_prefix.
    """
    if not enabled() or not name.endswith("_prefix"):
        return name
    return "osx_framework_library"
