12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- """
- 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'
|