codekingpro/portable-devtools
115k
1"""2Backward compatibility for homebrew builds on macOS.3"""4 5import functools6import os7import subprocess8import sys9import sysconfig10 11 12@functools.lru_cache13def enabled():14 """15 Only enabled for Python 3.9 framework homebrew builds16 except ensurepip and venv.17 """18 PY39 = (3, 9) < sys.version_info < (3, 10)19 framework = sys.platform == 'darwin' and sys._framework20 homebrew = "Cellar" in sysconfig.get_config_var('projectbase')21 venv = sys.prefix != sys.base_prefix22 ensurepip = os.environ.get("ENSUREPIP_OPTIONS")23 return PY39 and framework and homebrew and not venv and not ensurepip24 25 26schemes = dict(27 osx_framework_library=dict(28 stdlib='{installed_base}/{platlibdir}/python{py_version_short}',29 platstdlib='{platbase}/{platlibdir}/python{py_version_short}',30 purelib='{homebrew_prefix}/lib/python{py_version_short}/site-packages',31 platlib='{homebrew_prefix}/{platlibdir}/python{py_version_short}/site-packages',32 include='{installed_base}/include/python{py_version_short}{abiflags}',33 platinclude='{installed_platbase}/include/python{py_version_short}{abiflags}',34 scripts='{homebrew_prefix}/bin',35 data='{homebrew_prefix}',36 )37)38 39 40@functools.lru_cache41def vars():42 if not enabled():43 return {}44 homebrew_prefix = subprocess.check_output(['brew', '--prefix'], text=True).strip()45 return locals()46 47 48def scheme(name):49 """50 Override the selected scheme for posix_prefix.51 """52 if not enabled() or not name.endswith('_prefix'):53 return name54 return 'osx_framework_library'55 