From 9cbdac8fd82379b2e6803ef0bd14baaca49f6d0c Mon Sep 17 00:00:00 2001 From: mattip Date: Tue, 23 Feb 2021 18:58:45 +0200 Subject: [PATCH 1/8] sync sysconfig/site.py with PyPy to add an implementation key --- Lib/site.py | 22 +++++++++++++++++---- Lib/sysconfig.py | 51 ++++++++++++++++++++++++++++-------------------- 2 files changed, 48 insertions(+), 25 deletions(-) diff --git a/Lib/site.py b/Lib/site.py index 5f1b31e73d90ad6..3c1228b11259668 100644 --- a/Lib/site.py +++ b/Lib/site.py @@ -75,6 +75,8 @@ import _sitebuiltins import io +is_pypy = '__pypy__' in sys.builtin_module_names + # Prefixes for site-packages; add additional prefixes like /usr/local here PREFIXES = [sys.prefix, sys.exec_prefix] # Enable per user site-packages directory @@ -258,6 +260,13 @@ def check_enableusersite(): # # See https://bugs.python.org/issue29585 +# Copy of sysconfig._get_implementation() +def _get_implementation(): + if is_pypy: + return 'PyPy' + return 'Python' + + # Copy of sysconfig._getuserbase() def _getuserbase(): env_base = os.environ.get("PYTHONUSERBASE", None) @@ -273,7 +282,7 @@ def joinuser(*args): if os.name == "nt": base = os.environ.get("APPDATA") or "~" - return joinuser(base, "Python") + return joinuser(base, _get_implementation()) if sys.platform == "darwin" and sys._framework: return joinuser("~", "Library", sys._framework, @@ -286,14 +295,16 @@ def joinuser(*args): def _get_path(userbase): version = sys.version_info + implementation = _get_implementation() + implementation_lower = implementation.lower() if os.name == 'nt': ver_nodot = sys.winver.replace('.', '') - return f'{userbase}\\Python{ver_nodot}\\site-packages' + return f'{userbase}\\{implementation}{ver_nodot}\\site-packages' if sys.platform == 'darwin' and sys._framework: - return f'{userbase}/lib/python/site-packages' + return f'{userbase}/lib/{implementation_lower}/site-packages' - return f'{userbase}/lib/python{version[0]}.{version[1]}/site-packages' + return f'{userbase}/lib/{implementation_lower}{version[0]}.{version[1]}/site-packages' def getuserbase(): @@ -409,6 +420,9 @@ def setcopyright(): builtins.credits = _sitebuiltins._Printer( "credits", "Jython is maintained by the Jython developers (www.jython.org).") + elif is_pypy: + credits = "PyPy is maintained by the PyPy developers: http://pypy.org/" + license = "See https://foss.heptapod.net/pypy/pypy/src/default/LICENSE" else: builtins.credits = _sitebuiltins._Printer("credits", """\ Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py index 507c51f7642376b..6f66c0aeaea35db 100644 --- a/Lib/sysconfig.py +++ b/Lib/sysconfig.py @@ -25,24 +25,24 @@ _INSTALL_SCHEMES = { 'posix_prefix': { - 'stdlib': '{installed_base}/{platlibdir}/python{py_version_short}', - 'platstdlib': '{platbase}/{platlibdir}/python{py_version_short}', - 'purelib': '{base}/lib/python{py_version_short}/site-packages', - 'platlib': '{platbase}/{platlibdir}/python{py_version_short}/site-packages', + 'stdlib': '{installed_base}/{platlibdir}/{implementation_lower}{py_version_short}', + 'platstdlib': '{platbase}/{platlibdir}/{implementation_lower}{py_version_short}', + 'purelib': '{base}/lib/{implementation_lower}{py_version_short}/site-packages', + 'platlib': '{platbase}/{platlibdir}/{implementation_lower}{py_version_short}/site-packages', 'include': - '{installed_base}/include/python{py_version_short}{abiflags}', + '{installed_base}/include/{implementation_lower}{py_version_short}{abiflags}', 'platinclude': - '{installed_platbase}/include/python{py_version_short}{abiflags}', + '{installed_platbase}/include/{implementation_lower}{py_version_short}{abiflags}', 'scripts': '{base}/bin', 'data': '{base}', }, 'posix_home': { - 'stdlib': '{installed_base}/lib/python', - 'platstdlib': '{base}/lib/python', - 'purelib': '{base}/lib/python', - 'platlib': '{base}/lib/python', - 'include': '{installed_base}/include/python', - 'platinclude': '{installed_base}/include/python', + 'stdlib': '{installed_base}/lib/{implementation_lower}', + 'platstdlib': '{base}/lib/{implementation_lower}', + 'purelib': '{base}/lib/{implementation_lower}', + 'platlib': '{base}/lib/{implementation_lower}', + 'include': '{installed_base}/include/{implementation_lower}', + 'platinclude': '{installed_base}/include/{implementation_lower}', 'scripts': '{base}/bin', 'data': '{base}', }, @@ -98,19 +98,19 @@ def joinuser(*args): 'data': '{userbase}', }, 'posix_user': { - 'stdlib': '{userbase}/{platlibdir}/python{py_version_short}', - 'platstdlib': '{userbase}/{platlibdir}/python{py_version_short}', - 'purelib': '{userbase}/lib/python{py_version_short}/site-packages', - 'platlib': '{userbase}/{platlibdir}/python{py_version_short}/site-packages', - 'include': '{userbase}/include/python{py_version_short}', + 'stdlib': '{userbase}/{platlibdir}/{implementation_lower}{py_version_short}', + 'platstdlib': '{userbase}/{platlibdir}/{implementation_lower}{py_version_short}', + 'purelib': '{userbase}/lib/{implementation_lower}{py_version_short}/site-packages', + 'platlib': '{userbase}/{platlibdir}/{implementation_lower}{py_version_short}/site-packages', + 'include': '{userbase}/include/{implementation_lower}{py_version_short}', 'scripts': '{userbase}/bin', 'data': '{userbase}', }, 'osx_framework_user': { - 'stdlib': '{userbase}/lib/python', - 'platstdlib': '{userbase}/lib/python', - 'purelib': '{userbase}/lib/python/site-packages', - 'platlib': '{userbase}/lib/python/site-packages', + 'stdlib': '{userbase}/lib/{implementation_lower}', + 'platstdlib': '{userbase}/lib/{implementation_lower}', + 'purelib': '{userbase}/lib/{implementation_lower}/site-packages', + 'platlib': '{userbase}/lib/{implementation_lower}/site-packages', 'include': '{userbase}/include', 'scripts': '{userbase}/bin', 'data': '{userbase}', @@ -131,6 +131,13 @@ def joinuser(*args): _USER_BASE = None +# NOTE: site.py has copy of this function. +# Sync it when modify this function. +def _get_implementation(): + if '__pypy__' in sys.builtin_module_names: + return 'PyPy' + return 'Python' + def _safe_realpath(path): try: return realpath(path) @@ -569,6 +576,8 @@ def get_config_vars(*args): except AttributeError: # sys.abiflags may not be defined on all platforms. _CONFIG_VARS['abiflags'] = '' + _CONFIG_VARS['implementation'] = _get_implementation() + _CONFIG_VARS['implementation_lower'] = _get_implementation().lower() try: _CONFIG_VARS['py_version_nodot_plat'] = sys.winver.replace('.', '') except AttributeError: From 9ea9f2be43156a82f8499a1a4b79712b54805ee2 Mon Sep 17 00:00:00 2001 From: mattip Date: Wed, 24 Feb 2021 19:10:58 +0200 Subject: [PATCH 2/8] redo setcopyright() --- Lib/site.py | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/Lib/site.py b/Lib/site.py index 3c1228b11259668..2520e902f85ff75 100644 --- a/Lib/site.py +++ b/Lib/site.py @@ -416,28 +416,35 @@ def setquit(): def setcopyright(): """Set 'copyright' and 'credits' in builtins""" builtins.copyright = _sitebuiltins._Printer("copyright", sys.copyright) + files, dirs = [], [] + # Not all modules are required to have a __file__ attribute. See + # PEP 420 for more details. + if hasattr(os, '__file__'): + here = os.path.dirname(os.__file__) + files.extend(["LICENSE.txt", "LICENSE"]) + dirs.extend([os.path.join(here, os.pardir), here, os.curdir]) + if sys.platform[:4] == 'java': builtins.credits = _sitebuiltins._Printer( "credits", "Jython is maintained by the Jython developers (www.jython.org).") + builtins.license = _sitebuiltins._Printer("license", + "See https://www.python.org/psf/license/", + files, dirs) elif is_pypy: - credits = "PyPy is maintained by the PyPy developers: http://pypy.org/" - license = "See https://foss.heptapod.net/pypy/pypy/src/default/LICENSE" - else: + builtins.credits = _sitebuiltins._Printer("credits", """\ + PyPy is maintained by the PyPy developers and contributors (http://pypy.org) + It is heavily based on CPython and the great work of the Python community.""") + builtins.license = _sitebuiltins._Printer("license", + "See https://foss.heptapod.net/pypy/pypy/src/default/LICENSE", + files, dirs) + else: # CPython builtins.credits = _sitebuiltins._Printer("credits", """\ Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands for supporting Python development. See www.python.org for more information.""") - files, dirs = [], [] - # Not all modules are required to have a __file__ attribute. See - # PEP 420 for more details. - if hasattr(os, '__file__'): - here = os.path.dirname(os.__file__) - files.extend(["LICENSE.txt", "LICENSE"]) - dirs.extend([os.path.join(here, os.pardir), here, os.curdir]) - builtins.license = _sitebuiltins._Printer( - "license", - "See https://www.python.org/psf/license/", - files, dirs) + builtins.license = _sitebuiltins._Printer("license", + "See https://www.python.org/psf/license/", + files, dirs) def sethelper(): From da72a5207bb9c726925d43d16d95f2522b8ab086 Mon Sep 17 00:00:00 2001 From: "blurb-it[bot]" <43283697+blurb-it[bot]@users.noreply.github.com> Date: Sun, 28 Feb 2021 18:32:47 +0000 Subject: [PATCH 3/8] =?UTF-8?q?=F0=9F=93=9C=F0=9F=A4=96=20Added=20by=20blu?= =?UTF-8?q?rb=5Fit.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../NEWS.d/next/Library/2021-02-28-18-32-46.bpo-43307.rS-YLT.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 Misc/NEWS.d/next/Library/2021-02-28-18-32-46.bpo-43307.rS-YLT.rst diff --git a/Misc/NEWS.d/next/Library/2021-02-28-18-32-46.bpo-43307.rS-YLT.rst b/Misc/NEWS.d/next/Library/2021-02-28-18-32-46.bpo-43307.rS-YLT.rst new file mode 100644 index 000000000000000..f0700c029646ea5 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-02-28-18-32-46.bpo-43307.rS-YLT.rst @@ -0,0 +1 @@ +Extend the ``INSTALL_SCHEMA`` in sysconfig.py to handle additional python implementations (like PyPy) \ No newline at end of file From f57911c870e8316409869ceda285681204492dba Mon Sep 17 00:00:00 2001 From: mattip Date: Sun, 28 Feb 2021 17:54:36 +0200 Subject: [PATCH 4/8] fixes from review --- Lib/site.py | 10 +++++----- Lib/sysconfig.py | 48 ++++++++++++++++++++++++------------------------ 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/Lib/site.py b/Lib/site.py index 2520e902f85ff75..ac3ba1f09826af2 100644 --- a/Lib/site.py +++ b/Lib/site.py @@ -75,7 +75,7 @@ import _sitebuiltins import io -is_pypy = '__pypy__' in sys.builtin_module_names +_is_pypy = '__pypy__' in sys.builtin_module_names # Prefixes for site-packages; add additional prefixes like /usr/local here PREFIXES = [sys.prefix, sys.exec_prefix] @@ -260,9 +260,9 @@ def check_enableusersite(): # # See https://bugs.python.org/issue29585 -# Copy of sysconfig._get_implementation() -def _get_implementation(): - if is_pypy: +# Copy of sysconfig._get_impllibdir() +def _get_impllibdir(): + if _is_pypy: return 'PyPy' return 'Python' @@ -431,7 +431,7 @@ def setcopyright(): builtins.license = _sitebuiltins._Printer("license", "See https://www.python.org/psf/license/", files, dirs) - elif is_pypy: + elif _is_pypy: builtins.credits = _sitebuiltins._Printer("credits", """\ PyPy is maintained by the PyPy developers and contributors (http://pypy.org) It is heavily based on CPython and the great work of the Python community.""") diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py index 6f66c0aeaea35db..a4f0e9b0e084f17 100644 --- a/Lib/sysconfig.py +++ b/Lib/sysconfig.py @@ -25,24 +25,24 @@ _INSTALL_SCHEMES = { 'posix_prefix': { - 'stdlib': '{installed_base}/{platlibdir}/{implementation_lower}{py_version_short}', - 'platstdlib': '{platbase}/{platlibdir}/{implementation_lower}{py_version_short}', - 'purelib': '{base}/lib/{implementation_lower}{py_version_short}/site-packages', - 'platlib': '{platbase}/{platlibdir}/{implementation_lower}{py_version_short}/site-packages', + 'stdlib': '{installed_base}/{platlibdir}/{impllibdir_lower}{py_version_short}', + 'platstdlib': '{platbase}/{platlibdir}/{impllibdir_lower}{py_version_short}', + 'purelib': '{base}/lib/{impllibdir_lower}{py_version_short}/site-packages', + 'platlib': '{platbase}/{platlibdir}/{impllibdir_lower}{py_version_short}/site-packages', 'include': - '{installed_base}/include/{implementation_lower}{py_version_short}{abiflags}', + '{installed_base}/include/{impllibdir_lower}{py_version_short}{abiflags}', 'platinclude': - '{installed_platbase}/include/{implementation_lower}{py_version_short}{abiflags}', + '{installed_platbase}/include/{impllibdir_lower}{py_version_short}{abiflags}', 'scripts': '{base}/bin', 'data': '{base}', }, 'posix_home': { - 'stdlib': '{installed_base}/lib/{implementation_lower}', - 'platstdlib': '{base}/lib/{implementation_lower}', - 'purelib': '{base}/lib/{implementation_lower}', - 'platlib': '{base}/lib/{implementation_lower}', - 'include': '{installed_base}/include/{implementation_lower}', - 'platinclude': '{installed_base}/include/{implementation_lower}', + 'stdlib': '{installed_base}/lib/{impllibdir_lower}', + 'platstdlib': '{base}/lib/{impllibdir_lower}', + 'purelib': '{base}/lib/{impllibdir_lower}', + 'platlib': '{base}/lib/{impllibdir_lower}', + 'include': '{installed_base}/include/{impllibdir_lower}', + 'platinclude': '{installed_base}/include/{impllibdir_lower}', 'scripts': '{base}/bin', 'data': '{base}', }, @@ -98,19 +98,19 @@ def joinuser(*args): 'data': '{userbase}', }, 'posix_user': { - 'stdlib': '{userbase}/{platlibdir}/{implementation_lower}{py_version_short}', - 'platstdlib': '{userbase}/{platlibdir}/{implementation_lower}{py_version_short}', - 'purelib': '{userbase}/lib/{implementation_lower}{py_version_short}/site-packages', - 'platlib': '{userbase}/{platlibdir}/{implementation_lower}{py_version_short}/site-packages', - 'include': '{userbase}/include/{implementation_lower}{py_version_short}', + 'stdlib': '{userbase}/{platlibdir}/{impllibdir_lower}{py_version_short}', + 'platstdlib': '{userbase}/{platlibdir}/{impllibdir_lower}{py_version_short}', + 'purelib': '{userbase}/lib/{impllibdir_lower}{py_version_short}/site-packages', + 'platlib': '{userbase}/{platlibdir}/{impllibdir_lower}{py_version_short}/site-packages', + 'include': '{userbase}/include/{impllibdir_lower}{py_version_short}', 'scripts': '{userbase}/bin', 'data': '{userbase}', }, 'osx_framework_user': { - 'stdlib': '{userbase}/lib/{implementation_lower}', - 'platstdlib': '{userbase}/lib/{implementation_lower}', - 'purelib': '{userbase}/lib/{implementation_lower}/site-packages', - 'platlib': '{userbase}/lib/{implementation_lower}/site-packages', + 'stdlib': '{userbase}/lib/{impllibdir_lower}', + 'platstdlib': '{userbase}/lib/{impllibdir_lower}', + 'purelib': '{userbase}/lib/{impllibdir_lower}/site-packages', + 'platlib': '{userbase}/lib/{impllibdir_lower}/site-packages', 'include': '{userbase}/include', 'scripts': '{userbase}/bin', 'data': '{userbase}', @@ -133,7 +133,7 @@ def joinuser(*args): # NOTE: site.py has copy of this function. # Sync it when modify this function. -def _get_implementation(): +def _get_impllibdir(): if '__pypy__' in sys.builtin_module_names: return 'PyPy' return 'Python' @@ -576,8 +576,8 @@ def get_config_vars(*args): except AttributeError: # sys.abiflags may not be defined on all platforms. _CONFIG_VARS['abiflags'] = '' - _CONFIG_VARS['implementation'] = _get_implementation() - _CONFIG_VARS['implementation_lower'] = _get_implementation().lower() + _CONFIG_VARS['impllibdir'] = _get_impllibdir() + _CONFIG_VARS['impllibdir_lower'] = _get_impllibdir().lower() try: _CONFIG_VARS['py_version_nodot_plat'] = sys.winver.replace('.', '') except AttributeError: From 2f794692c3c784026aebb40fa8f20074a6586f23 Mon Sep 17 00:00:00 2001 From: mattip Date: Sun, 28 Feb 2021 20:49:39 +0200 Subject: [PATCH 5/8] more name substitutions --- Lib/site.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Lib/site.py b/Lib/site.py index ac3ba1f09826af2..5a2f2331ec6f294 100644 --- a/Lib/site.py +++ b/Lib/site.py @@ -282,7 +282,7 @@ def joinuser(*args): if os.name == "nt": base = os.environ.get("APPDATA") or "~" - return joinuser(base, _get_implementation()) + return joinuser(base, _get_impllibdir()) if sys.platform == "darwin" and sys._framework: return joinuser("~", "Library", sys._framework, @@ -295,7 +295,7 @@ def joinuser(*args): def _get_path(userbase): version = sys.version_info - implementation = _get_implementation() + implementation = _get_impllibdir() implementation_lower = implementation.lower() if os.name == 'nt': ver_nodot = sys.winver.replace('.', '') From e74b9c1efa75728c4ad8676745158fd3a8c45526 Mon Sep 17 00:00:00 2001 From: mattip Date: Sun, 28 Feb 2021 21:56:48 +0200 Subject: [PATCH 6/8] fixes from review --- Lib/site.py | 22 +++++++++------ Lib/sysconfig.py | 71 ++++++++++++++++++++++++++---------------------- 2 files changed, 51 insertions(+), 42 deletions(-) diff --git a/Lib/site.py b/Lib/site.py index 5a2f2331ec6f294..511d33d426bd411 100644 --- a/Lib/site.py +++ b/Lib/site.py @@ -261,10 +261,15 @@ def check_enableusersite(): # See https://bugs.python.org/issue29585 # Copy of sysconfig._get_impllibdir() -def _get_impllibdir(): - if _is_pypy: +def _get_impllibdir(os_name): + if not _is_pypy and os_name != 'nt': + return 'python' + elif not _is_pypy and os_name == 'nt': + return 'Python' + elif _is_pypy and os_name != 'nt': + return 'pypy' + elif _is_pypy and os_name == 'nt': return 'PyPy' - return 'Python' # Copy of sysconfig._getuserbase() @@ -282,7 +287,7 @@ def joinuser(*args): if os.name == "nt": base = os.environ.get("APPDATA") or "~" - return joinuser(base, _get_impllibdir()) + return joinuser(base, _get_impllibdir(os.name)) if sys.platform == "darwin" and sys._framework: return joinuser("~", "Library", sys._framework, @@ -295,16 +300,15 @@ def joinuser(*args): def _get_path(userbase): version = sys.version_info - implementation = _get_impllibdir() - implementation_lower = implementation.lower() + impllib = _get_impllibdir(os.name) if os.name == 'nt': ver_nodot = sys.winver.replace('.', '') - return f'{userbase}\\{implementation}{ver_nodot}\\site-packages' + return f'{userbase}\\{impllib}{ver_nodot}\\site-packages' if sys.platform == 'darwin' and sys._framework: - return f'{userbase}/lib/{implementation_lower}/site-packages' + return f'{userbase}/lib/{impllib}/site-packages' - return f'{userbase}/lib/{implementation_lower}{version[0]}.{version[1]}/site-packages' + return f'{userbase}/lib/{impllib}{version[0]}.{version[1]}/site-packages' def getuserbase(): diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py index a4f0e9b0e084f17..5ab4d21576c60dc 100644 --- a/Lib/sysconfig.py +++ b/Lib/sysconfig.py @@ -25,24 +25,24 @@ _INSTALL_SCHEMES = { 'posix_prefix': { - 'stdlib': '{installed_base}/{platlibdir}/{impllibdir_lower}{py_version_short}', - 'platstdlib': '{platbase}/{platlibdir}/{impllibdir_lower}{py_version_short}', - 'purelib': '{base}/lib/{impllibdir_lower}{py_version_short}/site-packages', - 'platlib': '{platbase}/{platlibdir}/{impllibdir_lower}{py_version_short}/site-packages', + 'stdlib': '{installed_base}/{platlibdir}/{impllibdir}{py_version_short}', + 'platstdlib': '{platbase}/{platlibdir}/{impllibdir}{py_version_short}', + 'purelib': '{base}/lib/{impllibdir}{py_version_short}/site-packages', + 'platlib': '{platbase}/{platlibdir}/{impllibdir}{py_version_short}/site-packages', 'include': - '{installed_base}/include/{impllibdir_lower}{py_version_short}{abiflags}', + '{installed_base}/include/{impllibdir}{py_version_short}{abiflags}', 'platinclude': - '{installed_platbase}/include/{impllibdir_lower}{py_version_short}{abiflags}', + '{installed_platbase}/include/{impllibdir}{py_version_short}{abiflags}', 'scripts': '{base}/bin', 'data': '{base}', }, 'posix_home': { - 'stdlib': '{installed_base}/lib/{impllibdir_lower}', - 'platstdlib': '{base}/lib/{impllibdir_lower}', - 'purelib': '{base}/lib/{impllibdir_lower}', - 'platlib': '{base}/lib/{impllibdir_lower}', - 'include': '{installed_base}/include/{impllibdir_lower}', - 'platinclude': '{installed_base}/include/{impllibdir_lower}', + 'stdlib': '{installed_base}/lib/{impllibdir}', + 'platstdlib': '{base}/lib/{impllibdir}', + 'purelib': '{base}/lib/{impllibdir}', + 'platlib': '{base}/lib/{impllibdir}', + 'include': '{installed_base}/include/{impllibdir}', + 'platinclude': '{installed_base}/include/{impllibdir}', 'scripts': '{base}/bin', 'data': '{base}', }, @@ -75,7 +75,7 @@ def joinuser(*args): if os.name == "nt": base = os.environ.get("APPDATA") or "~" - return joinuser(base, "Python") + return joinuser(base, _get_impllibdir(os.name)) if sys.platform == "darwin" and sys._framework: return joinuser("~", "Library", sys._framework, @@ -89,28 +89,28 @@ def joinuser(*args): _INSTALL_SCHEMES |= { # NOTE: When modifying "purelib" scheme, update site._get_path() too. 'nt_user': { - 'stdlib': '{userbase}/Python{py_version_nodot_plat}', - 'platstdlib': '{userbase}/Python{py_version_nodot_plat}', - 'purelib': '{userbase}/Python{py_version_nodot_plat}/site-packages', - 'platlib': '{userbase}/Python{py_version_nodot_plat}/site-packages', - 'include': '{userbase}/Python{py_version_nodot_plat}/Include', - 'scripts': '{userbase}/Python{py_version_nodot_plat}/Scripts', + 'stdlib': '{userbase}/{impllibdir}{py_version_nodot_plat}', + 'platstdlib': '{userbase}/{impllibdir}{py_version_nodot_plat}', + 'purelib': '{userbase}/{impllibdir}{py_version_nodot_plat}/site-packages', + 'platlib': '{userbase}/{impllibdir}{py_version_nodot_plat}/site-packages', + 'include': '{userbase}/{impllibdir}{py_version_nodot_plat}/Include', + 'scripts': '{userbase}/{impllibdir}{py_version_nodot_plat}/Scripts', 'data': '{userbase}', }, 'posix_user': { - 'stdlib': '{userbase}/{platlibdir}/{impllibdir_lower}{py_version_short}', - 'platstdlib': '{userbase}/{platlibdir}/{impllibdir_lower}{py_version_short}', - 'purelib': '{userbase}/lib/{impllibdir_lower}{py_version_short}/site-packages', - 'platlib': '{userbase}/{platlibdir}/{impllibdir_lower}{py_version_short}/site-packages', - 'include': '{userbase}/include/{impllibdir_lower}{py_version_short}', + 'stdlib': '{userbase}/{platlibdir}/{impllibdir}{py_version_short}', + 'platstdlib': '{userbase}/{platlibdir}/{impllibdir}{py_version_short}', + 'purelib': '{userbase}/lib/{impllibdir}{py_version_short}/site-packages', + 'platlib': '{userbase}/{platlibdir}/{impllibdir}{py_version_short}/site-packages', + 'include': '{userbase}/include/{impllibdir}{py_version_short}', 'scripts': '{userbase}/bin', 'data': '{userbase}', }, 'osx_framework_user': { - 'stdlib': '{userbase}/lib/{impllibdir_lower}', - 'platstdlib': '{userbase}/lib/{impllibdir_lower}', - 'purelib': '{userbase}/lib/{impllibdir_lower}/site-packages', - 'platlib': '{userbase}/lib/{impllibdir_lower}/site-packages', + 'stdlib': '{userbase}/lib/{impllibdir}', + 'platstdlib': '{userbase}/lib/{impllibdir}', + 'purelib': '{userbase}/lib/{impllibdir}/site-packages', + 'platlib': '{userbase}/lib/{impllibdir}/site-packages', 'include': '{userbase}/include', 'scripts': '{userbase}/bin', 'data': '{userbase}', @@ -133,10 +133,16 @@ def joinuser(*args): # NOTE: site.py has copy of this function. # Sync it when modify this function. -def _get_impllibdir(): - if '__pypy__' in sys.builtin_module_names: +def _get_impllibdir(os_name): + if not _is_pypy and os_name != 'nt': + return 'python' + elif not _is_pypy and os_name == 'nt': + return 'Python' + elif _is_pypy and os_name != 'nt': + return 'pypy' + elif _is_pypy and os_name == 'nt': return 'PyPy' - return 'Python' + def _safe_realpath(path): try: @@ -576,8 +582,7 @@ def get_config_vars(*args): except AttributeError: # sys.abiflags may not be defined on all platforms. _CONFIG_VARS['abiflags'] = '' - _CONFIG_VARS['impllibdir'] = _get_impllibdir() - _CONFIG_VARS['impllibdir_lower'] = _get_impllibdir().lower() + _CONFIG_VARS['impllibdir'] = _get_impllibdir(os.name) try: _CONFIG_VARS['py_version_nodot_plat'] = sys.winver.replace('.', '') except AttributeError: From 60ac2b12b49c8e25976deac033f073617e8da734 Mon Sep 17 00:00:00 2001 From: mattip Date: Sun, 28 Feb 2021 23:14:01 +0200 Subject: [PATCH 7/8] add _is_pypy to sysconfig.py --- Lib/sysconfig.py | 1 + 1 file changed, 1 insertion(+) diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py index 5ab4d21576c60dc..a5fad4be4f3adb4 100644 --- a/Lib/sysconfig.py +++ b/Lib/sysconfig.py @@ -130,6 +130,7 @@ def joinuser(*args): _CONFIG_VARS = None _USER_BASE = None +_is_pypy = '__pypy__' in sys.builtin_module_names # NOTE: site.py has copy of this function. # Sync it when modify this function. From 566b1a51a78c5a4bfbcf46cede712fff0dfdcb3b Mon Sep 17 00:00:00 2001 From: mattip Date: Sun, 28 Feb 2021 23:50:49 +0200 Subject: [PATCH 8/8] reorder --- Lib/sysconfig.py | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py index a5fad4be4f3adb4..f2834527d68a93d 100644 --- a/Lib/sysconfig.py +++ b/Lib/sysconfig.py @@ -59,6 +59,21 @@ } +_is_pypy = '__pypy__' in sys.builtin_module_names + +# NOTE: site.py has copy of this function. +# Sync it when modify this function. +def _get_impllibdir(os_name): + if not _is_pypy and os_name != 'nt': + return 'python' + elif not _is_pypy and os_name == 'nt': + return 'Python' + elif _is_pypy and os_name != 'nt': + return 'pypy' + elif _is_pypy and os_name == 'nt': + return 'PyPy' + + # NOTE: site.py has copy of this function. # Sync it when modify this function. def _getuserbase(): @@ -130,20 +145,6 @@ def joinuser(*args): _CONFIG_VARS = None _USER_BASE = None -_is_pypy = '__pypy__' in sys.builtin_module_names - -# NOTE: site.py has copy of this function. -# Sync it when modify this function. -def _get_impllibdir(os_name): - if not _is_pypy and os_name != 'nt': - return 'python' - elif not _is_pypy and os_name == 'nt': - return 'Python' - elif _is_pypy and os_name != 'nt': - return 'pypy' - elif _is_pypy and os_name == 'nt': - return 'PyPy' - def _safe_realpath(path): try: