Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wrong Python version used when virtualenvs.create=false combined with use-poetry-python #10226

Open
edmorley opened this issue Feb 25, 2025 · 1 comment
Labels
kind/bug Something isn't working as expected status/triage This issue needs to be triaged

Comments

@edmorley
Copy link
Contributor

edmorley commented Feb 25, 2025

Description

When using POETRY_VIRTUALENVS_CREATE="false" combined with POETRY_VIRTUALENVS_USE_POETRY_PYTHON="true", if a project's declared requires-python doesn't match the Python used by Poetry, then poetry sync won't fail with a "version not compatible error" (as expected), but instead will proceed to sync using the wrong Python version.

This leads to confusing UX for end users of Heroku, if the version specified via their .python-version file (which is what controls the Python version installed for their app) doesn't match the Python versions in their pyproject.toml.

I believe this is because the conditional here needs additional handling for the value of create_venv (which is the value of virtualenvs.create):

if specific_python_requested and use_poetry_python:
raise NoCompatiblePythonVersionFoundError(
self._poetry.package.python_versions,
python.patch_version.to_string(),
)

Steps to reproduce

  1. Create a Dockerfile with the below contents.
  2. docker build . --progress plain --no-cache

(Note: I've created this Dockerfile as the easiest way to provide a minimal testcase; on Heroku we actually don't use Docker like this and install things in a slightly different way)

FROM heroku/heroku:24-build
ARG TARGETARCH
USER root

WORKDIR /testcase

RUN mkdir -p /testcase/.heroku/python \
  && curl -sSf "https://heroku-buildpack-python.s3.us-east-1.amazonaws.com/python-3.13.1-ubuntu-24.04-${TARGETARCH}.tar.zst" \
  | tar -x --zstd -C /testcase/.heroku/python
ENV PATH="/testcase/.heroku/python/bin:${PATH}"
ENV LD_LIBRARY_PATH="/testcase/.heroku/python/lib"

RUN which -a python3
RUN /usr/bin/python3 --version
RUN python3 --version

ENV POETRY_HOME="/testcase/.heroku/poetry"
ENV PATH="${POETRY_HOME}/bin:${PATH}"
RUN curl -sSL https://install.python-poetry.org | python3 - --version 2.1.1

COPY <<EOF pyproject.toml
[project]
name = "testcase-poetry"
version = "0.1.0"
requires-python = "3.12.*"
dependencies = [
    "typing-extensions"
]
[tool.poetry]
package-mode = false
EOF

COPY <<EOF poetry.lock
[[package]]
name = "typing-extensions"
version = "4.12.2"
description = "Backported and Experimental Type Hints for Python 3.8+"
optional = false
python-versions = ">=3.8"
groups = ["main"]
files = [
    {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"},
    {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"},
]
[metadata]
lock-version = "2.1"
python-versions = "3.12.*"
content-hash = "30427e182c131408fcdf15a6838a771f7e7c1e67fa6e0c33ccc82194052de8df"
EOF

ENV POETRY_VIRTUALENVS_CREATE="false"
ENV POETRY_VIRTUALENVS_USE_POETRY_PYTHON="true"

RUN poetry install --verbose
RUN python3.13 -c 'import typing_extensions; print(typing_extensions)'

Expected

For poetry sync to exit non-zero, with an error message that makes it clear that the Python version is incompatible (since the Poetry Python, which is also the first python on PATH, is 3.13, but yet the requires-python lists Python 3.12) - so end users know they need to fix their project's requires-python or else change the Python in the environment.

ie: The NoCompatiblePythonVersionFoundError error here

Actual

poetry sync outputs:

The currently activated Python version 3.13.1 is not supported by the project (3.12.*).
Trying to find and use a compatible version.
Using python3.12 (3.12.3)

...where Python 3.12 is actually the distro Python, not the Poetry Python - meaning Poetry has ignored what was configured via POETRY_VIRTUALENVS_USE_POETRY_PYTHON="true", and tried to find its own Python instead (which is something we don't want it to do).

In addition, even though Poetry said it was using Python 3.12, it actually goes on to use Poetry Python after all, and so installs the project into a Python 3.13 environment, even though the project isn't compatible with 3.13. As confirmed by the print(typing_extensions) step returning:

<module 'typing_extensions' from '/testcase/.heroku/python/lib/python3.13/site-packages/typing_extensions.py'>

This means the end-user build would appear to succeed, only for the app to potentially crash at run-time when the image is rolled out.

Workarounds

I couldn't find any.

Poetry Installation Method

install.python-poetry.org

Operating System

Debian

Poetry Version

2.1.1

Poetry Configuration

POETRY_VIRTUALENVS_CREATE="false"
POETRY_VIRTUALENVS_USE_POETRY_PYTHON="true"

Python Sysconfig

sysconfig.log
Platform: "linux-aarch64"
Python version: "3.13"
Current installation scheme: "posix_prefix"

Paths: 
    data = "/testcase/.heroku/python"
    include = "/testcase/.heroku/python/include/python3.13"
    platinclude = "/testcase/.heroku/python/include/python3.13"
    platlib = "/testcase/.heroku/python/lib/python3.13/site-packages"
    platstdlib = "/testcase/.heroku/python/lib/python3.13"
    purelib = "/testcase/.heroku/python/lib/python3.13/site-packages"
    scripts = "/testcase/.heroku/python/bin"
    stdlib = "/testcase/.heroku/python/lib/python3.13"

Variables: 
    ABIFLAGS = ""
    ABI_THREAD = ""
    AC_APPLE_UNIVERSAL_BUILD = "0"
    AIX_BUILDDATE = "0"
    AIX_GENUINE_CPLUSPLUS = "0"
    ALIGNOF_LONG = "8"
    ALIGNOF_MAX_ALIGN_T = "16"
    ALIGNOF_SIZE_T = "8"
    ALT_SOABI = "0"
    ANDROID_API_LEVEL = "0"
    APP_STORE_COMPLIANCE_PATCH = ""
    AR = "ar"
    ARFLAGS = "rcs"
    BASECFLAGS = "-fno-strict-overflow -Wsign-compare"
    BASECPPFLAGS = ""
    BASEMODLIBS = ""
    BINDIR = "/tmp/python/bin"
    BINLIBDEST = "/tmp/python/lib/python3.13"
    BLDLIBRARY = "-L. -lpython3.13"
    BLDSHARED = "gcc -shared -Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -Wl,-z,relro -Wl,--strip-all"
    BOOTSTRAP_HEADERS = "\"
    BUILDEXE = ""
    BUILDPYTHON = "python"
    BUILD_GNU_TYPE = "aarch64-unknown-linux-gnu"
    BUILD_SCRIPTS_DIR = "build/scripts-3.13"
    BYTESTR_DEPS = "\"
    CC = "gcc"
    CCSHARED = "-fPIC"
    CFLAGS = "-fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall   -g -O2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -ffile-prefix-map=/tmp/src=. -flto=auto -ffat-lto-objects -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard"
    CFLAGSFORSHARED = "-fPIC"
    CFLAGS_ALIASING = ""
    CODECS_COMMON_HEADERS = "./Modules/cjkcodecs/multibytecodec.h ./Modules/cjkcodecs/cjkcodecs.h"
    COMPILEALL_OPTS = "-j0"
    CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in"
    CONFIGURE_CFLAGS = ""
    CONFIGURE_CFLAGS_NODIST = "-fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden"
    CONFIGURE_CPPFLAGS = ""
    CONFIGURE_LDFLAGS = ""
    CONFIGURE_LDFLAGS_NODIST = "-fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g"
    CONFIGURE_LDFLAGS_NOLTO = "-fno-lto"
    CONFIG_ARGS = "'--build=aarch64-linux-gnu' '--enable-loadable-sqlite-extensions' '--enable-optimizations' '--enable-option-checking=fatal' '--prefix=/tmp/python' '--with-ensurepip=no' '--with-system-expat' '--enable-shared' '--with-lto' '--without-static-libpython' '--disable-test-modules' 'build_alias=aarch64-linux-gnu'"
    CONFINCLUDEDIR = "/tmp/python/include"
    CONFINCLUDEPY = "/tmp/python/include/python3.13"
    COREPYTHONPATH = ""
    COVERAGE_INFO = "/tmp/src/coverage.info"
    COVERAGE_LCOV_OPTIONS = "--rc lcov_branch_coverage=1"
    COVERAGE_REPORT = "/tmp/src/lcov-report"
    COVERAGE_REPORT_OPTIONS = "--rc lcov_branch_coverage=1 --branch-coverage --title "CPython 3.13 LCOV report [commit $(shell )]""
    CPPFLAGS = "-I. -I./Include"
    CXX = "g++"
    DESTDIRS = "/tmp/python /tmp/python/lib /tmp/python/lib/python3.13 /tmp/python/lib/python3.13/lib-dynload"
    DESTLIB = "/tmp/python/lib/python3.13"
    DESTPATH = ""
    DESTSHARED = "/tmp/python/lib/python3.13/lib-dynload"
    DFLAGS = ""
    DIRMODE = "755"
    DIST = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy"
    DISTDIRS = "Include Lib Misc Ext-dummy"
    DISTFILES = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in"
    DLINCLDIR = "."
    DLLLIBRARY = ""
    DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0"
    DOUBLE_IS_BIG_ENDIAN_IEEE754 = "0"
    DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "1"
    DSYMUTIL = ""
    DSYMUTIL_PATH = ""
    DTRACE = ""
    DTRACE_DEPS = "\"
    DTRACE_HEADERS = ""
    DTRACE_OBJS = ""
    DYNLOADFILE = "dynload_shlib.o"
    ENABLE_IPV6 = "1"
    ENSUREPIP = "no"
    EXE = ""
    EXEMODE = "755"
    EXENAME = "/tmp/python/bin/python3.13"
    EXPORTSFROM = ""
    EXPORTSYMS = ""
    EXTRATESTOPTS = ""
    EXT_SUFFIX = ".cpython-313-aarch64-linux-gnu.so"
    FILEMODE = "644"
    FREEZE_MODULE = "./_bootstrap_python ./Programs/_freeze_module.py"
    FREEZE_MODULE_BOOTSTRAP = "./Programs/_freeze_module"
    FREEZE_MODULE_BOOTSTRAP_DEPS = "Programs/_freeze_module"
    FREEZE_MODULE_DEPS = "_bootstrap_python ./Programs/_freeze_module.py"
    FROZEN_FILES_IN = "\"
    FROZEN_FILES_OUT = "\"
    GETPGRP_HAVE_ARG = "0"
    GITBRANCH = ""
    GITTAG = ""
    GITVERSION = ""
    GNULD = "yes"
    HAVE_ACCEPT = "1"
    HAVE_ACCEPT4 = "1"
    HAVE_ACOSH = "1"
    HAVE_ADDRINFO = "1"
    HAVE_ALARM = "1"
    HAVE_ALIGNED_REQUIRED = "0"
    HAVE_ALLOCA_H = "1"
    HAVE_ALTZONE = "0"
    HAVE_ASINH = "1"
    HAVE_ASM_TYPES_H = "1"
    HAVE_ATANH = "1"
    HAVE_BIND = "1"
    HAVE_BIND_TEXTDOMAIN_CODESET = "1"
    HAVE_BLUETOOTH_BLUETOOTH_H = "0"
    HAVE_BLUETOOTH_H = "0"
    HAVE_BROKEN_MBSTOWCS = "0"
    HAVE_BROKEN_NICE = "0"
    HAVE_BROKEN_PIPE_BUF = "0"
    HAVE_BROKEN_POLL = "0"
    HAVE_BROKEN_POSIX_SEMAPHORES = "0"
    HAVE_BROKEN_PTHREAD_SIGMASK = "0"
    HAVE_BROKEN_SEM_GETVALUE = "0"
    HAVE_BROKEN_UNSETENV = "0"
    HAVE_BUILTIN_ATOMIC = "1"
    HAVE_BZLIB_H = "1"
    HAVE_CHFLAGS = "0"
    HAVE_CHMOD = "1"
    HAVE_CHOWN = "1"
    HAVE_CHROOT = "1"
    HAVE_CLOCK = "1"
    HAVE_CLOCK_GETRES = "1"
    HAVE_CLOCK_GETTIME = "1"
    HAVE_CLOCK_NANOSLEEP = "1"
    HAVE_CLOCK_SETTIME = "1"
    HAVE_CLOCK_T = "1"
    HAVE_CLOSEFROM = "1"
    HAVE_CLOSE_RANGE = "1"
    HAVE_COMPUTED_GOTOS = "1"
    HAVE_CONFSTR = "1"
    HAVE_CONIO_H = "0"
    HAVE_CONNECT = "1"
    HAVE_COPY_FILE_RANGE = "1"
    HAVE_CTERMID = "1"
    HAVE_CTERMID_R = "0"
    HAVE_CURSES_FILTER = "1"
    HAVE_CURSES_H = "1"
    HAVE_CURSES_HAS_KEY = "1"
    HAVE_CURSES_IMMEDOK = "1"
    HAVE_CURSES_IS_PAD = "1"
    HAVE_CURSES_IS_TERM_RESIZED = "1"
    HAVE_CURSES_RESIZETERM = "1"
    HAVE_CURSES_RESIZE_TERM = "1"
    HAVE_CURSES_SYNCOK = "1"
    HAVE_CURSES_TYPEAHEAD = "1"
    HAVE_CURSES_USE_ENV = "1"
    HAVE_CURSES_WCHGAT = "1"
    HAVE_DB_H = "1"
    HAVE_DECL_RTLD_DEEPBIND = "1"
    HAVE_DECL_RTLD_GLOBAL = "1"
    HAVE_DECL_RTLD_LAZY = "1"
    HAVE_DECL_RTLD_LOCAL = "1"
    HAVE_DECL_RTLD_MEMBER = "0"
    HAVE_DECL_RTLD_NODELETE = "1"
    HAVE_DECL_RTLD_NOLOAD = "1"
    HAVE_DECL_RTLD_NOW = "1"
    HAVE_DECL_TZNAME = "0"
    HAVE_DEVICE_MACROS = "1"
    HAVE_DEV_PTC = "0"
    HAVE_DEV_PTMX = "1"
    HAVE_DIRECT_H = "0"
    HAVE_DIRENT_D_TYPE = "1"
    HAVE_DIRENT_H = "1"
    HAVE_DIRFD = "1"
    HAVE_DLFCN_H = "1"
    HAVE_DLOPEN = "1"
    HAVE_DUP = "1"
    HAVE_DUP2 = "1"
    HAVE_DUP3 = "1"
    HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH = "0"
    HAVE_DYNAMIC_LOADING = "1"
    HAVE_EDITLINE_READLINE_H = "0"
    HAVE_ENDIAN_H = "1"
    HAVE_EPOLL = "1"
    HAVE_EPOLL_CREATE1 = "1"
    HAVE_ERF = "1"
    HAVE_ERFC = "1"
    HAVE_ERRNO_H = "1"
    HAVE_EVENTFD = "1"
    HAVE_EXECV = "1"
    HAVE_EXPLICIT_BZERO = "1"
    HAVE_EXPLICIT_MEMSET = "0"
    HAVE_EXPM1 = "1"
    HAVE_FACCESSAT = "1"
    HAVE_FCHDIR = "1"
    HAVE_FCHMOD = "1"
    HAVE_FCHMODAT = "1"
    HAVE_FCHOWN = "1"
    HAVE_FCHOWNAT = "1"
    HAVE_FCNTL_H = "1"
    HAVE_FDATASYNC = "1"
    HAVE_FDOPENDIR = "1"
    HAVE_FDWALK = "0"
    HAVE_FEXECVE = "1"
    HAVE_FFI_CLOSURE_ALLOC = "1"
    HAVE_FFI_PREP_CIF_VAR = "1"
    HAVE_FFI_PREP_CLOSURE_LOC = "1"
    HAVE_FLOCK = "1"
    HAVE_FORK = "1"
    HAVE_FORK1 = "0"
    HAVE_FORKPTY = "1"
    HAVE_FPATHCONF = "1"
    HAVE_FSEEK64 = "0"
    HAVE_FSEEKO = "1"
    HAVE_FSTATAT = "1"
    HAVE_FSTATVFS = "1"
    HAVE_FSYNC = "1"
    HAVE_FTELL64 = "0"
    HAVE_FTELLO = "1"
    HAVE_FTIME = "1"
    HAVE_FTRUNCATE = "1"
    HAVE_FUTIMENS = "1"
    HAVE_FUTIMES = "1"
    HAVE_FUTIMESAT = "1"
    HAVE_GAI_STRERROR = "1"
    HAVE_GCC_ASM_FOR_MC68881 = "0"
    HAVE_GCC_ASM_FOR_X64 = "0"
    HAVE_GCC_ASM_FOR_X87 = "0"
    HAVE_GCC_UINT128_T = "1"
    HAVE_GDBM_DASH_NDBM_H = "0"
    HAVE_GDBM_H = "1"
    HAVE_GDBM_NDBM_H = "0"
    HAVE_GETADDRINFO = "1"
    HAVE_GETC_UNLOCKED = "1"
    HAVE_GETEGID = "1"
    HAVE_GETENTROPY = "1"
    HAVE_GETEUID = "1"
    HAVE_GETGID = "1"
    HAVE_GETGRENT = "1"
    HAVE_GETGRGID = "1"
    HAVE_GETGRGID_R = "1"
    HAVE_GETGRNAM_R = "1"
    HAVE_GETGROUPLIST = "1"
    HAVE_GETGROUPS = "1"
    HAVE_GETHOSTBYADDR = "1"
    HAVE_GETHOSTBYNAME = "1"
    HAVE_GETHOSTBYNAME_R = "1"
    HAVE_GETHOSTBYNAME_R_3_ARG = "0"
    HAVE_GETHOSTBYNAME_R_5_ARG = "0"
    HAVE_GETHOSTBYNAME_R_6_ARG = "1"
    HAVE_GETHOSTNAME = "1"
    HAVE_GETITIMER = "1"
    HAVE_GETLOADAVG = "1"
    HAVE_GETLOGIN = "1"
    HAVE_GETNAMEINFO = "1"
    HAVE_GETPAGESIZE = "1"
    HAVE_GETPEERNAME = "1"
    HAVE_GETPGID = "1"
    HAVE_GETPGRP = "1"
    HAVE_GETPID = "1"
    HAVE_GETPPID = "1"
    HAVE_GETPRIORITY = "1"
    HAVE_GETPROTOBYNAME = "1"
    HAVE_GETPWENT = "1"
    HAVE_GETPWNAM_R = "1"
    HAVE_GETPWUID = "1"
    HAVE_GETPWUID_R = "1"
    HAVE_GETRANDOM = "1"
    HAVE_GETRANDOM_SYSCALL = "1"
    HAVE_GETRESGID = "1"
    HAVE_GETRESUID = "1"
    HAVE_GETRUSAGE = "1"
    HAVE_GETSERVBYNAME = "1"
    HAVE_GETSERVBYPORT = "1"
    HAVE_GETSID = "1"
    HAVE_GETSOCKNAME = "1"
    HAVE_GETSPENT = "1"
    HAVE_GETSPNAM = "1"
    HAVE_GETUID = "1"
    HAVE_GETWD = "1"
    HAVE_GLIBC_MEMMOVE_BUG = "0"
    HAVE_GRANTPT = "1"
    HAVE_GRP_H = "1"
    HAVE_HSTRERROR = "1"
    HAVE_HTOLE64 = "1"
    HAVE_IF_NAMEINDEX = "1"
    HAVE_INET_ATON = "1"
    HAVE_INET_NTOA = "1"
    HAVE_INET_PTON = "1"
    HAVE_INITGROUPS = "1"
    HAVE_INTTYPES_H = "1"
    HAVE_IO_H = "0"
    HAVE_IPA_PURE_CONST_BUG = "0"
    HAVE_KILL = "1"
    HAVE_KILLPG = "1"
    HAVE_KQUEUE = "0"
    HAVE_LANGINFO_H = "1"
    HAVE_LARGEFILE_SUPPORT = "0"
    HAVE_LCHFLAGS = "0"
    HAVE_LCHMOD = "0"
    HAVE_LCHOWN = "1"
    HAVE_LIBB2 = "0"
    HAVE_LIBDB = "1"
    HAVE_LIBDL = "1"
    HAVE_LIBDLD = "0"
    HAVE_LIBIEEE = "0"
    HAVE_LIBINTL_H = "1"
    HAVE_LIBRESOLV = "0"
    HAVE_LIBSENDFILE = "0"
    HAVE_LIBSQLITE3 = "1"
    HAVE_LIBUTIL_H = "0"
    HAVE_LINK = "1"
    HAVE_LINKAT = "1"
    HAVE_LINUX_AUXVEC_H = "1"
    HAVE_LINUX_CAN_BCM_H = "1"
    HAVE_LINUX_CAN_H = "1"
    HAVE_LINUX_CAN_J1939_H = "1"
    HAVE_LINUX_CAN_RAW_FD_FRAMES = "1"
    HAVE_LINUX_CAN_RAW_H = "1"
    HAVE_LINUX_CAN_RAW_JOIN_FILTERS = "1"
    HAVE_LINUX_FS_H = "1"
    HAVE_LINUX_LIMITS_H = "1"
    HAVE_LINUX_MEMFD_H = "1"
    HAVE_LINUX_NETLINK_H = "1"
    HAVE_LINUX_QRTR_H = "1"
    HAVE_LINUX_RANDOM_H = "1"
    HAVE_LINUX_SOUNDCARD_H = "1"
    HAVE_LINUX_TIPC_H = "1"
    HAVE_LINUX_VM_SOCKETS_H = "1"
    HAVE_LINUX_WAIT_H = "1"
    HAVE_LISTEN = "1"
    HAVE_LOCKF = "1"
    HAVE_LOG1P = "1"
    HAVE_LOG2 = "1"
    HAVE_LOGIN_TTY = "1"
    HAVE_LONG_DOUBLE = "1"
    HAVE_LSTAT = "1"
    HAVE_LUTIMES = "1"
    HAVE_LZMA_H = "0"
    HAVE_MADVISE = "1"
    HAVE_MAKEDEV = "1"
    HAVE_MBRTOWC = "1"
    HAVE_MEMFD_CREATE = "1"
    HAVE_MEMRCHR = "1"
    HAVE_MINIX_CONFIG_H = "0"
    HAVE_MKDIRAT = "1"
    HAVE_MKFIFO = "1"
    HAVE_MKFIFOAT = "1"
    HAVE_MKNOD = "1"
    HAVE_MKNODAT = "1"
    HAVE_MKTIME = "1"
    HAVE_MMAP = "1"
    HAVE_MREMAP = "1"
    HAVE_NANOSLEEP = "1"
    HAVE_NCURSES = "0"
    HAVE_NCURSESW = "1"
    HAVE_NCURSESW_CURSES_H = "1"
    HAVE_NCURSESW_NCURSES_H = "1"
    HAVE_NCURSESW_PANEL_H = "1"
    HAVE_NCURSES_CURSES_H = "0"
    HAVE_NCURSES_H = "1"
    HAVE_NCURSES_NCURSES_H = "0"
    HAVE_NCURSES_PANEL_H = "0"
    HAVE_NDBM_H = "0"
    HAVE_NDIR_H = "0"
    HAVE_NETCAN_CAN_H = "0"
    HAVE_NETDB_H = "1"
    HAVE_NETINET_IN_H = "1"
    HAVE_NETLINK_NETLINK_H = "0"
    HAVE_NETPACKET_PACKET_H = "1"
    HAVE_NET_ETHERNET_H = "1"
    HAVE_NET_IF_H = "1"
    HAVE_NICE = "1"
    HAVE_NON_UNICODE_WCHAR_T_REPRESENTATION = "0"
    HAVE_OPENAT = "1"
    HAVE_OPENDIR = "1"
    HAVE_OPENPTY = "1"
    HAVE_PANEL = "0"
    HAVE_PANELW = "1"
    HAVE_PANEL_H = "1"
    HAVE_PATHCONF = "1"
    HAVE_PAUSE = "1"
    HAVE_PIPE = "1"
    HAVE_PIPE2 = "1"
    HAVE_PLOCK = "0"
    HAVE_POLL = "1"
    HAVE_POLL_H = "1"
    HAVE_POSIX_FADVISE = "1"
    HAVE_POSIX_FALLOCATE = "1"
    HAVE_POSIX_OPENPT = "1"
    HAVE_POSIX_SPAWN = "1"
    HAVE_POSIX_SPAWNP = "1"
    HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSEFROM_NP = "1"
    HAVE_PREAD = "1"
    HAVE_PREADV = "1"
    HAVE_PREADV2 = "1"
    HAVE_PRLIMIT = "1"
    HAVE_PROCESS_H = "0"
    HAVE_PROCESS_VM_READV = "1"
    HAVE_PROTOTYPES = "1"
    HAVE_PTHREAD_CONDATTR_SETCLOCK = "1"
    HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP = "0"
    HAVE_PTHREAD_DESTRUCTOR = "0"
    HAVE_PTHREAD_GETCPUCLOCKID = "1"
    HAVE_PTHREAD_H = "1"
    HAVE_PTHREAD_INIT = "0"
    HAVE_PTHREAD_KILL = "1"
    HAVE_PTHREAD_SIGMASK = "1"
    HAVE_PTHREAD_STUBS = "0"
    HAVE_PTSNAME = "1"
    HAVE_PTSNAME_R = "1"
    HAVE_PTY_H = "1"
    HAVE_PWRITE = "1"
    HAVE_PWRITEV = "1"
    HAVE_PWRITEV2 = "1"
    HAVE_READLINE_READLINE_H = "0"
    HAVE_READLINK = "1"
    HAVE_READLINKAT = "1"
    HAVE_READV = "1"
    HAVE_REALPATH = "1"
    HAVE_RECVFROM = "1"
    HAVE_RENAMEAT = "1"
    HAVE_RL_APPEND_HISTORY = "1"
    HAVE_RL_CATCH_SIGNAL = "1"
    HAVE_RL_COMPDISP_FUNC_T = "1"
    HAVE_RL_COMPLETION_APPEND_CHARACTER = "1"
    HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "1"
    HAVE_RL_COMPLETION_MATCHES = "1"
    HAVE_RL_COMPLETION_SUPPRESS_APPEND = "1"
    HAVE_RL_PRE_INPUT_HOOK = "1"
    HAVE_RL_RESIZE_TERMINAL = "1"
    HAVE_RTPSPAWN = "0"
    HAVE_SCHED_GET_PRIORITY_MAX = "1"
    HAVE_SCHED_H = "1"
    HAVE_SCHED_RR_GET_INTERVAL = "1"
    HAVE_SCHED_SETAFFINITY = "1"
    HAVE_SCHED_SETPARAM = "1"
    HAVE_SCHED_SETSCHEDULER = "1"
    HAVE_SEM_CLOCKWAIT = "1"
    HAVE_SEM_GETVALUE = "1"
    HAVE_SEM_OPEN = "1"
    HAVE_SEM_TIMEDWAIT = "1"
    HAVE_SEM_UNLINK = "1"
    HAVE_SENDFILE = "1"
    HAVE_SENDTO = "1"
    HAVE_SETEGID = "1"
    HAVE_SETEUID = "1"
    HAVE_SETGID = "1"
    HAVE_SETGROUPS = "1"
    HAVE_SETHOSTNAME = "1"
    HAVE_SETITIMER = "1"
    HAVE_SETJMP_H = "1"
    HAVE_SETLOCALE = "1"
    HAVE_SETNS = "1"
    HAVE_SETPGID = "1"
    HAVE_SETPGRP = "1"
    HAVE_SETPRIORITY = "1"
    HAVE_SETREGID = "1"
    HAVE_SETRESGID = "1"
    HAVE_SETRESUID = "1"
    HAVE_SETREUID = "1"
    HAVE_SETSID = "1"
    HAVE_SETSOCKOPT = "1"
    HAVE_SETUID = "1"
    HAVE_SETVBUF = "1"
    HAVE_SHADOW_H = "1"
    HAVE_SHM_OPEN = "1"
    HAVE_SHM_UNLINK = "1"
    HAVE_SHUTDOWN = "1"
    HAVE_SIGACTION = "1"
    HAVE_SIGALTSTACK = "1"
    HAVE_SIGFILLSET = "1"
    HAVE_SIGINFO_T_SI_BAND = "1"
    HAVE_SIGINTERRUPT = "1"
    HAVE_SIGNAL_H = "1"
    HAVE_SIGPENDING = "1"
    HAVE_SIGRELSE = "1"
    HAVE_SIGTIMEDWAIT = "1"
    HAVE_SIGWAIT = "1"
    HAVE_SIGWAITINFO = "1"
    HAVE_SNPRINTF = "1"
    HAVE_SOCKADDR_ALG = "1"
    HAVE_SOCKADDR_SA_LEN = "0"
    HAVE_SOCKADDR_STORAGE = "1"
    HAVE_SOCKET = "1"
    HAVE_SOCKETPAIR = "1"
    HAVE_SOCKLEN_T = "1"
    HAVE_SPAWN_H = "1"
    HAVE_SPLICE = "1"
    HAVE_SSIZE_T = "1"
    HAVE_STATVFS = "1"
    HAVE_STAT_TV_NSEC = "1"
    HAVE_STAT_TV_NSEC2 = "0"
    HAVE_STDINT_H = "1"
    HAVE_STDIO_H = "1"
    HAVE_STDLIB_H = "1"
    HAVE_STD_ATOMIC = "1"
    HAVE_STRFTIME = "1"
    HAVE_STRINGS_H = "1"
    HAVE_STRING_H = "1"
    HAVE_STRLCPY = "1"
    HAVE_STROPTS_H = "0"
    HAVE_STRSIGNAL = "1"
    HAVE_STRUCT_PASSWD_PW_GECOS = "1"
    HAVE_STRUCT_PASSWD_PW_PASSWD = "1"
    HAVE_STRUCT_STAT_ST_BIRTHTIME = "0"
    HAVE_STRUCT_STAT_ST_BLKSIZE = "1"
    HAVE_STRUCT_STAT_ST_BLOCKS = "1"
    HAVE_STRUCT_STAT_ST_FLAGS = "0"
    HAVE_STRUCT_STAT_ST_GEN = "0"
    HAVE_STRUCT_STAT_ST_RDEV = "1"
    HAVE_STRUCT_TM_TM_ZONE = "1"
    HAVE_SYMLINK = "1"
    HAVE_SYMLINKAT = "1"
    HAVE_SYNC = "1"
    HAVE_SYSCONF = "1"
    HAVE_SYSEXITS_H = "1"
    HAVE_SYSLOG_H = "1"
    HAVE_SYSTEM = "1"
    HAVE_SYS_AUDIOIO_H = "0"
    HAVE_SYS_AUXV_H = "1"
    HAVE_SYS_BSDTTY_H = "0"
    HAVE_SYS_DEVPOLL_H = "0"
    HAVE_SYS_DIR_H = "0"
    HAVE_SYS_ENDIAN_H = "0"
    HAVE_SYS_EPOLL_H = "1"
    HAVE_SYS_EVENTFD_H = "1"
    HAVE_SYS_EVENT_H = "0"
    HAVE_SYS_FILE_H = "1"
    HAVE_SYS_IOCTL_H = "1"
    HAVE_SYS_KERN_CONTROL_H = "0"
    HAVE_SYS_LOADAVG_H = "0"
    HAVE_SYS_LOCK_H = "0"
    HAVE_SYS_MEMFD_H = "0"
    HAVE_SYS_MKDEV_H = "0"
    HAVE_SYS_MMAN_H = "1"
    HAVE_SYS_MODEM_H = "0"
    HAVE_SYS_NDIR_H = "0"
    HAVE_SYS_PARAM_H = "1"
    HAVE_SYS_POLL_H = "1"
    HAVE_SYS_RANDOM_H = "1"
    HAVE_SYS_RESOURCE_H = "1"
    HAVE_SYS_SELECT_H = "1"
    HAVE_SYS_SENDFILE_H = "1"
    HAVE_SYS_SOCKET_H = "1"
    HAVE_SYS_SOUNDCARD_H = "1"
    HAVE_SYS_STATVFS_H = "1"
    HAVE_SYS_STAT_H = "1"
    HAVE_SYS_SYSCALL_H = "1"
    HAVE_SYS_SYSMACROS_H = "1"
    HAVE_SYS_SYS_DOMAIN_H = "0"
    HAVE_SYS_TERMIO_H = "0"
    HAVE_SYS_TIMERFD_H = "1"
    HAVE_SYS_TIMES_H = "1"
    HAVE_SYS_TIME_H = "1"
    HAVE_SYS_TYPES_H = "1"
    HAVE_SYS_UIO_H = "1"
    HAVE_SYS_UN_H = "1"
    HAVE_SYS_UTSNAME_H = "1"
    HAVE_SYS_WAIT_H = "1"
    HAVE_SYS_XATTR_H = "1"
    HAVE_TCGETPGRP = "1"
    HAVE_TCSETPGRP = "1"
    HAVE_TEMPNAM = "1"
    HAVE_TERMIOS_H = "1"
    HAVE_TERM_H = "1"
    HAVE_TIMEGM = "1"
    HAVE_TIMERFD_CREATE = "1"
    HAVE_TIMES = "1"
    HAVE_TMPFILE = "1"
    HAVE_TMPNAM = "1"
    HAVE_TMPNAM_R = "1"
    HAVE_TM_ZONE = "1"
    HAVE_TRUNCATE = "1"
    HAVE_TTYNAME = "1"
    HAVE_TZNAME = "0"
    HAVE_UMASK = "1"
    HAVE_UNAME = "1"
    HAVE_UNISTD_H = "1"
    HAVE_UNLINKAT = "1"
    HAVE_UNLOCKPT = "1"
    HAVE_UNSHARE = "1"
    HAVE_USABLE_WCHAR_T = "1"
    HAVE_UTIL_H = "0"
    HAVE_UTIMENSAT = "1"
    HAVE_UTIMES = "1"
    HAVE_UTIME_H = "1"
    HAVE_UTMP_H = "1"
    HAVE_UUID_CREATE = "0"
    HAVE_UUID_ENC_BE = "0"
    HAVE_UUID_GENERATE_TIME_SAFE = "1"
    HAVE_UUID_H = "1"
    HAVE_UUID_UUID_H = "0"
    HAVE_VFORK = "1"
    HAVE_WAIT = "1"
    HAVE_WAIT3 = "1"
    HAVE_WAIT4 = "1"
    HAVE_WAITID = "1"
    HAVE_WAITPID = "1"
    HAVE_WCHAR_H = "1"
    HAVE_WCSCOLL = "1"
    HAVE_WCSFTIME = "1"
    HAVE_WCSXFRM = "1"
    HAVE_WMEMCMP = "1"
    HAVE_WORKING_TZSET = "1"
    HAVE_WRITEV = "1"
    HAVE_ZLIB_COPY = "1"
    HAVE_ZLIB_H = "0"
    HAVE__GETPTY = "0"
    HAVE___UINT128_T = "1"
    HOSTRUNNER = ""
    HOST_GNU_TYPE = "aarch64-unknown-linux-gnu"
    INCLDIRSTOMAKE = "/tmp/python/include /tmp/python/include /tmp/python/include/python3.13 /tmp/python/include/python3.13"
    INCLUDEDIR = "/tmp/python/include"
    INCLUDEPY = "/tmp/python/include/python3.13"
    INSTALL = "/usr/bin/install -c"
    INSTALL_DATA = "/usr/bin/install -c -m 644"
    INSTALL_MIMALLOC = "yes"
    INSTALL_PROGRAM = "/usr/bin/install -c"
    INSTALL_SCRIPT = "/usr/bin/install -c"
    INSTALL_SHARED = "/usr/bin/install -c -m 755"
    INSTSONAME = "libpython3.13.so.1.0"
    IO_H = "Modules/_io/_iomodule.h"
    IO_OBJS = "\"
    IPHONEOS_DEPLOYMENT_TARGET = ""
    JIT_DEPS = "\"
    LDCXXSHARED = "g++ -shared -Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -Wl,-z,relro -Wl,--strip-all"
    LDFLAGS = "-Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -Wl,-z,relro -Wl,--strip-all"
    LDLIBRARY = "libpython3.13.so"
    LDLIBRARYDIR = ""
    LDSHARED = "gcc -shared -Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -Wl,-z,relro -Wl,--strip-all"
    LDVERSION = "3.13"
    LIBC = ""
    LIBDEST = "/tmp/python/lib/python3.13"
    LIBDIR = "/tmp/python/lib"
    LIBEXPAT_A = "Modules/expat/libexpat.a"
    LIBEXPAT_CFLAGS = "-fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall   -g -O2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -ffile-prefix-map=/tmp/src=. -flto=auto -ffat-lto-objects -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -fprofile-use -fprofile-correction -I./Include/internal -I./Include/internal/mimalloc -I. -I./Include -fPIC -fPIC"
    LIBEXPAT_HEADERS = "\"
    LIBEXPAT_OBJS = "\"
    LIBHACL_CFLAGS = "-I./Modules/_hacl/include -D_BSD_SOURCE -D_DEFAULT_SOURCE -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall   -g -O2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -ffile-prefix-map=/tmp/src=. -flto=auto -ffat-lto-objects -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -fprofile-use -fprofile-correction -I./Include/internal -I./Include/internal/mimalloc -I. -I./Include -fPIC -fPIC"
    LIBHACL_HEADERS = "\"
    LIBHACL_SHA2_A = "Modules/_hacl/libHacl_Hash_SHA2.a"
    LIBHACL_SHA2_HEADERS = "\"
    LIBHACL_SHA2_OBJS = "\"
    LIBM = "-lm"
    LIBMPDEC_A = "Modules/_decimal/libmpdec/libmpdec.a"
    LIBMPDEC_CFLAGS = "-I./Modules/_decimal/libmpdec -DCONFIG_64=1 -DANSI=1 -DHAVE_UINT128_T=1 -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall   -g -O2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -ffile-prefix-map=/tmp/src=. -flto=auto -ffat-lto-objects -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -fprofile-use -fprofile-correction -I./Include/internal -I./Include/internal/mimalloc -I. -I./Include -fPIC -fPIC"
    LIBMPDEC_HEADERS = "\"
    LIBMPDEC_OBJS = "\"
    LIBOBJDIR = "Python/"
    LIBOBJS = ""
    LIBPC = "/tmp/python/lib/pkgconfig"
    LIBPL = "/tmp/python/lib/python3.13/config-3.13-aarch64-linux-gnu"
    LIBPYTHON = ""
    LIBRARY = "libpython3.13.a"
    LIBRARY_DEPS = "libpython3.13.so libpython3.so"
    LIBRARY_OBJS = "\"
    LIBRARY_OBJS_OMIT_FROZEN = "\"
    LIBS = "-ldl"
    LIBSUBDIRS = "asyncio \"
    LINKCC = "gcc"
    LINKFORSHARED = "-Xlinker -export-dynamic"
    LINK_PYTHON_DEPS = "libpython3.13.so libpython3.so"
    LINK_PYTHON_OBJS = "-L. -lpython3.13"
    LIPO_32BIT_FLAGS = ""
    LIPO_INTEL64_FLAGS = ""
    LLVM_PROF_ERR = "no"
    LLVM_PROF_FILE = ""
    LLVM_PROF_MERGER = "true"
    LN = "ln"
    LOCALMODLIBS = ""
    MACHDEP = "linux"
    MACHDEP_OBJS = ""
    MACHDESTLIB = "/tmp/python/lib/python3.13"
    MACOSX_DEPLOYMENT_TARGET = ""
    MAJOR_IN_MKDEV = "0"
    MAJOR_IN_SYSMACROS = "1"
    MAKESETUP = "./Modules/makesetup"
    MANDIR = "/tmp/python/share/man"
    MIMALLOC_HEADERS = "\"
    MKDIR_P = "/usr/bin/mkdir -p"
    MODBUILT_NAMES = "array  _asyncio  _bisect  _contextvars  _csv  _heapq  _json  _lsprof  _opcode  _pickle  _queue  _random  _struct  _interpreters  _interpchannels  _interpqueues  _zoneinfo  math  cmath  _statistics  _datetime  _decimal  binascii  _bz2  _lzma  zlib  _dbm  _gdbm  readline  _md5  _sha1  _sha2  _sha3  _blake2  pyexpat  _elementtree  _codecs_cn  _codecs_hk  _codecs_iso2022  _codecs_jp  _codecs_kr  _codecs_tw  _multibytecodec  unicodedata  fcntl  grp  mmap  _posixsubprocess  resource  select  _socket  syslog  termios  _posixshmem  _multiprocessing  _ctypes  _curses  _curses_panel  _sqlite3  _ssl  _hashlib  _uuid  atexit  faulthandler  posix  _signal  _tracemalloc  _suggestions  _codecs  _collections  errno  _io  itertools  _sre  _sysconfig  _thread  time  _typing  _weakref  _abc  _functools  _locale  _operator  _stat  _symtable  pwd"
    MODDISABLED_NAMES = ""
    MODLIBS = ""
    MODOBJS = "Modules/atexitmodule.o  Modules/faulthandler.o  Modules/posixmodule.o  Modules/signalmodule.o  Modules/_tracemalloc.o  Modules/_suggestions.o  Modules/_codecsmodule.o  Modules/_collectionsmodule.o  Modules/errnomodule.o  Modules/_io/_iomodule.o Modules/_io/iobase.o Modules/_io/fileio.o Modules/_io/bytesio.o Modules/_io/bufferedio.o Modules/_io/textio.o Modules/_io/stringio.o  Modules/itertoolsmodule.o  Modules/_sre/sre.o  Modules/_sysconfig.o  Modules/_threadmodule.o  Modules/timemodule.o  Modules/_typingmodule.o  Modules/_weakref.o  Modules/_abc.o  Modules/_functoolsmodule.o  Modules/_localemodule.o  Modules/_operator.o  Modules/_stat.o  Modules/symtablemodule.o  Modules/pwdmodule.o"
    MODSHARED_NAMES = "array _asyncio _bisect _contextvars _csv _heapq _json _lsprof _opcode _pickle _queue _random _struct _interpreters _interpchannels _interpqueues _zoneinfo math cmath _statistics _datetime _decimal binascii _bz2 _lzma zlib _dbm _gdbm readline _md5 _sha1 _sha2 _sha3 _blake2 pyexpat _elementtree _codecs_cn _codecs_hk _codecs_iso2022 _codecs_jp _codecs_kr _codecs_tw _multibytecodec unicodedata fcntl grp mmap _posixsubprocess resource select _socket syslog termios _posixshmem _multiprocessing _ctypes _curses _curses_panel _sqlite3 _ssl _hashlib _uuid"
    MODULE_ARRAY_STATE = "yes"
    MODULE_ATEXIT_LDFLAGS = ""
    MODULE_BINASCII_CFLAGS = "-DUSE_ZLIB_CRC32"
    MODULE_BINASCII_LDFLAGS = "-lz"
    MODULE_BINASCII_STATE = "yes"
    MODULE_CMATH_DEPS = "./Modules/_math.h"
    MODULE_CMATH_LDFLAGS = "-lm"
    MODULE_CMATH_STATE = "yes"
    MODULE_DEPS_SHARED = "Modules/config.c"
    MODULE_DEPS_STATIC = "Modules/config.c"
    MODULE_ERRNO_LDFLAGS = ""
    MODULE_FAULTHANDLER_LDFLAGS = ""
    MODULE_FCNTL_LDFLAGS = ""
    MODULE_FCNTL_STATE = "yes"
    MODULE_GRP_STATE = "yes"
    MODULE_ITERTOOLS_LDFLAGS = ""
    MODULE_MATH_DEPS = "./Modules/_math.h"
    MODULE_MATH_LDFLAGS = "-lm"
    MODULE_MATH_STATE = "yes"
    MODULE_MMAP_STATE = "yes"
    MODULE_OBJS = "\"
    MODULE_POSIX_LDFLAGS = ""
    MODULE_PWD_LDFLAGS = ""
    MODULE_PWD_STATE = "yes"
    MODULE_PYEXPAT_CFLAGS = ""
    MODULE_PYEXPAT_DEPS = ""
    MODULE_PYEXPAT_LDFLAGS = "-lexpat"
    MODULE_PYEXPAT_STATE = "yes"
    MODULE_READLINE_CFLAGS = "-D_DEFAULT_SOURCE"
    MODULE_READLINE_LDFLAGS = "-lreadline"
    MODULE_READLINE_STATE = "yes"
    MODULE_RESOURCE_STATE = "yes"
    MODULE_SELECT_STATE = "yes"
    MODULE_SYSLOG_STATE = "yes"
    MODULE_TERMIOS_STATE = "yes"
    MODULE_TIME_LDFLAGS = ""
    MODULE_TIME_STATE = "yes"
    MODULE_UNICODEDATA_DEPS = "./Modules/unicodedata_db.h ./Modules/unicodename_db.h"
    MODULE_UNICODEDATA_STATE = "yes"
    MODULE_XXLIMITED_35_STATE = "disabled"
    MODULE_XXLIMITED_STATE = "disabled"
    MODULE_XXSUBTYPE_STATE = "disabled"
    MODULE_ZLIB_CFLAGS = ""
    MODULE_ZLIB_LDFLAGS = "-lz"
    MODULE_ZLIB_STATE = "yes"
    MODULE__ABC_LDFLAGS = ""
    MODULE__ASYNCIO_STATE = "yes"
    MODULE__BISECT_STATE = "yes"
    MODULE__BLAKE2_CFLAGS = ""
    MODULE__BLAKE2_DEPS = "./Modules/_blake2/impl/blake2-config.h ./Modules/_blake2/impl/blake2-impl.h ./Modules/_blake2/impl/blake2.h ./Modules/_blake2/impl/blake2b-load-sse2.h ./Modules/_blake2/impl/blake2b-load-sse41.h ./Modules/_blake2/impl/blake2b-ref.c ./Modules/_blake2/impl/blake2b-round.h ./Modules/_blake2/impl/blake2b.c ./Modules/_blake2/impl/blake2s-load-sse2.h ./Modules/_blake2/impl/blake2s-load-sse41.h ./Modules/_blake2/impl/blake2s-load-xop.h ./Modules/_blake2/impl/blake2s-ref.c ./Modules/_blake2/impl/blake2s-round.h ./Modules/_blake2/impl/blake2s.c ./Modules/_blake2/blake2module.h ./Modules/hashlib.h"
    MODULE__BLAKE2_LDFLAGS = ""
    MODULE__BLAKE2_STATE = "yes"
    MODULE__BZ2_CFLAGS = ""
    MODULE__BZ2_LDFLAGS = "-lbz2"
    MODULE__BZ2_STATE = "yes"
    MODULE__CODECS_CN_DEPS = "./Modules/cjkcodecs/mappings_cn.h ./Modules/cjkcodecs/multibytecodec.h ./Modules/cjkcodecs/cjkcodecs.h"
    MODULE__CODECS_CN_STATE = "yes"
    MODULE__CODECS_HK_DEPS = "./Modules/cjkcodecs/mappings_hk.h  ./Modules/cjkcodecs/multibytecodec.h ./Modules/cjkcodecs/cjkcodecs.h"
    MODULE__CODECS_HK_STATE = "yes"
    MODULE__CODECS_ISO2022_DEPS = "./Modules/cjkcodecs/mappings_jisx0213_pair.h ./Modules/cjkcodecs/alg_jisx0201.h ./Modules/cjkcodecs/emu_jisx0213_2000.h ./Modules/cjkcodecs/multibytecodec.h ./Modules/cjkcodecs/cjkcodecs.h"
    MODULE__CODECS_ISO2022_STATE = "yes"
    MODULE__CODECS_JP_DEPS = "./Modules/cjkcodecs/mappings_jisx0213_pair.h ./Modules/cjkcodecs/alg_jisx0201.h ./Modules/cjkcodecs/emu_jisx0213_2000.h ./Modules/cjkcodecs/mappings_jp.h ./Modules/cjkcodecs/multibytecodec.h ./Modules/cjkcodecs/cjkcodecs.h"
    MODULE__CODECS_JP_STATE = "yes"
    MODULE__CODECS_KR_DEPS = "./Modules/cjkcodecs/mappings_kr.h ./Modules/cjkcodecs/multibytecodec.h ./Modules/cjkcodecs/cjkcodecs.h"
    MODULE__CODECS_KR_STATE = "yes"
    MODULE__CODECS_LDFLAGS = ""
    MODULE__CODECS_TW_DEPS = "./Modules/cjkcodecs/mappings_tw.h ./Modules/cjkcodecs/multibytecodec.h ./Modules/cjkcodecs/cjkcodecs.h"
    MODULE__CODECS_TW_STATE = "yes"
    MODULE__COLLECTIONS_LDFLAGS = ""
    MODULE__CONTEXTVARS_STATE = "yes"
    MODULE__CSV_STATE = "yes"
    MODULE__CTYPES_CFLAGS = "-fno-strict-overflow"
    MODULE__CTYPES_DEPS = "./Modules/_ctypes/ctypes.h"
    MODULE__CTYPES_LDFLAGS = "-lffi  -ldl"
    MODULE__CTYPES_MALLOC_CLOSURE = ""
    MODULE__CTYPES_STATE = "yes"
    MODULE__CTYPES_TEST_STATE = "disabled"
    MODULE__CURSES_CFLAGS = "-D_DEFAULT_SOURCE"
    MODULE__CURSES_DEPS = "./Include/py_curses.h"
    MODULE__CURSES_LDFLAGS = "-lncursesw -ltinfo"
    MODULE__CURSES_PANEL_CFLAGS = "-D_DEFAULT_SOURCE  -D_DEFAULT_SOURCE"
    MODULE__CURSES_PANEL_DEPS = "./Include/py_curses.h"
    MODULE__CURSES_PANEL_LDFLAGS = "-lpanelw  -lncursesw -ltinfo"
    MODULE__CURSES_PANEL_STATE = "yes"
    MODULE__CURSES_STATE = "yes"
    MODULE__DATETIME_DEPS = "./Include/datetime.h"
    MODULE__DATETIME_LDFLAGS = "-lm"
    MODULE__DATETIME_STATE = "yes"
    MODULE__DBM_CFLAGS = "-DUSE_BERKDB"
    MODULE__DBM_LDFLAGS = "-ldb"
    MODULE__DBM_STATE = "yes"
    MODULE__DECIMAL_CFLAGS = "-I./Modules/_decimal/libmpdec -DCONFIG_64=1 -DANSI=1 -DHAVE_UINT128_T=1"
    MODULE__DECIMAL_DEPS = "./Modules/_decimal/docstrings.h \ Modules/_decimal/libmpdec/libmpdec.a"
    MODULE__DECIMAL_LDFLAGS = "-lm Modules/_decimal/libmpdec/libmpdec.a"
    MODULE__DECIMAL_STATE = "yes"
    MODULE__ELEMENTTREE_CFLAGS = ""
    MODULE__ELEMENTTREE_DEPS = "./Modules/pyexpat.c"
    MODULE__ELEMENTTREE_STATE = "yes"
    MODULE__FUNCTOOLS_LDFLAGS = ""
    MODULE__GDBM_CFLAGS = ""
    MODULE__GDBM_LDFLAGS = "-lgdbm"
    MODULE__GDBM_STATE = "yes"
    MODULE__HASHLIB_CFLAGS = ""
    MODULE__HASHLIB_DEPS = "./Modules/hashlib.h"
    MODULE__HASHLIB_LDFLAGS = "-lcrypto"
    MODULE__HASHLIB_STATE = "yes"
    MODULE__HEAPQ_STATE = "yes"
    MODULE__INTERPCHANNELS_STATE = "yes"
    MODULE__INTERPQUEUES_STATE = "yes"
    MODULE__INTERPRETERS_STATE = "yes"
    MODULE__IO_CFLAGS = "-I./Modules/_io"
    MODULE__IO_DEPS = "./Modules/_io/_iomodule.h"
    MODULE__IO_LDFLAGS = ""
    MODULE__IO_STATE = "yes"
    MODULE__JSON_STATE = "yes"
    MODULE__LOCALE_LDFLAGS = ""
    MODULE__LSPROF_STATE = "yes"
    MODULE__LZMA_CFLAGS = ""
    MODULE__LZMA_LDFLAGS = "-llzma"
    MODULE__LZMA_STATE = "yes"
    MODULE__MD5_CFLAGS = "-I./Modules/_hacl/include -I./Modules/_hacl/internal -D_BSD_SOURCE -D_DEFAULT_SOURCE"
    MODULE__MD5_DEPS = "./Modules/hashlib.h \ Modules/_hacl/Hacl_Hash_MD5.h Modules/_hacl/Hacl_Hash_MD5.c"
    MODULE__MD5_STATE = "yes"
    MODULE__MULTIBYTECODEC_DEPS = "./Modules/cjkcodecs/multibytecodec.h"
    MODULE__MULTIBYTECODEC_STATE = "yes"
    MODULE__MULTIPROCESSING_CFLAGS = "-I./Modules/_multiprocessing"
    MODULE__MULTIPROCESSING_STATE = "yes"
    MODULE__OPCODE_STATE = "yes"
    MODULE__OPERATOR_LDFLAGS = ""
    MODULE__PICKLE_STATE = "yes"
    MODULE__POSIXSHMEM_CFLAGS = "-I./Modules/_multiprocessing"
    MODULE__POSIXSHMEM_LDFLAGS = ""
    MODULE__POSIXSHMEM_STATE = "yes"
    MODULE__POSIXSUBPROCESS_STATE = "yes"
    MODULE__QUEUE_STATE = "yes"
    MODULE__RANDOM_STATE = "yes"
    MODULE__SCPROXY_STATE = "n/a"
    MODULE__SHA1_CFLAGS = "-I./Modules/_hacl/include -I./Modules/_hacl/internal -D_BSD_SOURCE -D_DEFAULT_SOURCE"
    MODULE__SHA1_DEPS = "./Modules/hashlib.h \ Modules/_hacl/Hacl_Hash_SHA1.h Modules/_hacl/Hacl_Hash_SHA1.c"
    MODULE__SHA1_STATE = "yes"
    MODULE__SHA2_CFLAGS = "-I./Modules/_hacl/include -I./Modules/_hacl/internal -D_BSD_SOURCE -D_DEFAULT_SOURCE"
    MODULE__SHA2_DEPS = "./Modules/hashlib.h \ Modules/_hacl/libHacl_Hash_SHA2.a"
    MODULE__SHA2_STATE = "yes"
    MODULE__SHA3_DEPS = "./Modules/hashlib.h \ Modules/_hacl/Hacl_Hash_SHA3.h Modules/_hacl/Hacl_Hash_SHA3.c"
    MODULE__SHA3_STATE = "yes"
    MODULE__SIGNAL_LDFLAGS = ""
    MODULE__SOCKET_DEPS = "./Modules/socketmodule.h ./Modules/addrinfo.h ./Modules/getaddrinfo.c ./Modules/getnameinfo.c"
    MODULE__SOCKET_STATE = "yes"
    MODULE__SQLITE3_CFLAGS = "-I./Modules/_sqlite"
    MODULE__SQLITE3_DEPS = "./Modules/_sqlite/connection.h ./Modules/_sqlite/cursor.h ./Modules/_sqlite/microprotocols.h ./Modules/_sqlite/module.h ./Modules/_sqlite/prepare_protocol.h ./Modules/_sqlite/row.h ./Modules/_sqlite/util.h"
    MODULE__SQLITE3_LDFLAGS = "-lsqlite3"
    MODULE__SQLITE3_STATE = "yes"
    MODULE__SRE_LDFLAGS = ""
    MODULE__SSL_CFLAGS = ""
    MODULE__SSL_DEPS = "./Modules/_ssl.h ./Modules/_ssl/cert.c ./Modules/_ssl/debughelpers.c ./Modules/_ssl/misc.c ./Modules/_ssl_data_111.h ./Modules/_ssl_data_300.h ./Modules/socketmodule.h"
    MODULE__SSL_LDFLAGS = "-lssl -lcrypto"
    MODULE__SSL_STATE = "yes"
    MODULE__STATISTICS_LDFLAGS = "-lm"
    MODULE__STATISTICS_STATE = "yes"
    MODULE__STAT_LDFLAGS = ""
    MODULE__STRUCT_STATE = "yes"
    MODULE__SUGGESTIONS_LDFLAGS = ""
    MODULE__SYMTABLE_LDFLAGS = ""
    MODULE__SYSCONFIG_LDFLAGS = ""
    MODULE__TESTBUFFER_STATE = "disabled"
    MODULE__TESTCAPI_DEPS = "./Modules/_testcapi/parts.h ./Modules/_testcapi/util.h"
    MODULE__TESTCAPI_STATE = "disabled"
    MODULE__TESTCLINIC_LIMITED_STATE = "disabled"
    MODULE__TESTCLINIC_STATE = "disabled"
    MODULE__TESTEXTERNALINSPECTION_STATE = "disabled"
    MODULE__TESTIMPORTMULTIPLE_STATE = "disabled"
    MODULE__TESTINTERNALCAPI_DEPS = "./Modules/_testinternalcapi/parts.h"
    MODULE__TESTINTERNALCAPI_STATE = "disabled"
    MODULE__TESTLIMITEDCAPI_DEPS = "./Modules/_testlimitedcapi/testcapi_long.h ./Modules/_testlimitedcapi/parts.h ./Modules/_testlimitedcapi/util.h"
    MODULE__TESTLIMITEDCAPI_STATE = "disabled"
    MODULE__TESTMULTIPHASE_STATE = "disabled"
    MODULE__TESTSINGLEPHASE_STATE = "disabled"
    MODULE__THREAD_LDFLAGS = ""
    MODULE__TKINTER_STATE = "missing"
    MODULE__TRACEMALLOC_LDFLAGS = ""
    MODULE__TYPING_LDFLAGS = ""
    MODULE__TYPING_STATE = "yes"
    MODULE__UUID_CFLAGS = "-I/usr/include/uuid"
    MODULE__UUID_LDFLAGS = "-luuid"
    MODULE__UUID_STATE = "yes"
    MODULE__WEAKREF_LDFLAGS = ""
    MODULE__XXTESTFUZZ_STATE = "disabled"
    MODULE__ZONEINFO_STATE = "yes"
    MULTIARCH = "aarch64-linux-gnu"
    MULTIARCH_CPPFLAGS = "-DMULTIARCH=\"aarch64-linux-gnu\""
    MVWDELCH_IS_EXPRESSION = "1"
    NO_AS_NEEDED = "-Wl,--no-as-needed"
    OBJECT_OBJS = "\"
    OPT = "-DNDEBUG -g -O3 -Wall"
    PACKAGE_BUGREPORT = "0"
    PACKAGE_NAME = "0"
    PACKAGE_STRING = "0"
    PACKAGE_TARNAME = "0"
    PACKAGE_URL = "0"
    PACKAGE_VERSION = "0"
    PARSER_HEADERS = "\"
    PARSER_OBJS = "\ \ \ Parser/myreadline.o"
    PEGEN_HEADERS = "\"
    PEGEN_OBJS = "\"
    PGO_PROF_GEN_FLAG = "-fprofile-generate"
    PGO_PROF_USE_FLAG = "-fprofile-use -fprofile-correction"
    PLATLIBDIR = "lib"
    POBJS = "\"
    POSIX_SEMAPHORES_NOT_ENABLED = "0"
    PROFILE_TASK = "-m test --pgo --timeout="
    PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "1"
    PTHREAD_SYSTEM_SCHED_SUPPORTED = "1"
    PURIFY = ""
    PY3LIBRARY = "libpython3.so"
    PYLONG_BITS_IN_DIGIT = "0"
    PYTHON = "python"
    PYTHONFRAMEWORK = ""
    PYTHONFRAMEWORKDIR = "no-framework"
    PYTHONFRAMEWORKINSTALLDIR = ""
    PYTHONFRAMEWORKINSTALLNAMEPREFIX = ""
    PYTHONFRAMEWORKPREFIX = ""
    PYTHONPATH = ""
    PYTHON_FOR_BUILD = "./python -E"
    PYTHON_FOR_BUILD_DEPS = "python"
    PYTHON_FOR_FREEZE = "./_bootstrap_python"
    PYTHON_FOR_REGEN = ""
    PYTHON_HEADERS = "\"
    PYTHON_OBJS = "\"
    PY_BUILTIN_HASHLIB_HASHES = ""md5,sha1,sha2,sha3,blake2""
    PY_BUILTIN_MODULE_CFLAGS = "-fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall   -g -O2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -ffile-prefix-map=/tmp/src=. -flto=auto -ffat-lto-objects -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -fprofile-use -fprofile-correction -I./Include/internal -I./Include/internal/mimalloc -I. -I./Include -fPIC -DPy_BUILD_CORE_BUILTIN"
    PY_CFLAGS = "-fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall   -g -O2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -ffile-prefix-map=/tmp/src=. -flto=auto -ffat-lto-objects -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard"
    PY_CFLAGS_NODIST = "-fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -fprofile-use -fprofile-correction -I./Include/internal -I./Include/internal/mimalloc"
    PY_COERCE_C_LOCALE = "1"
    PY_CORE_CFLAGS = "-fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall   -g -O2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -ffile-prefix-map=/tmp/src=. -flto=auto -ffat-lto-objects -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -fprofile-use -fprofile-correction -I./Include/internal -I./Include/internal/mimalloc -I. -I./Include -fPIC -DPy_BUILD_CORE"
    PY_CORE_LDFLAGS = "-Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -Wl,-z,relro -Wl,--strip-all -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g"
    PY_CPPFLAGS = "-I. -I./Include"
    PY_ENABLE_SHARED = "1"
    PY_HAVE_PERF_TRAMPOLINE = "1"
    PY_LDFLAGS = "-Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -Wl,-z,relro -Wl,--strip-all"
    PY_LDFLAGS_NODIST = "-fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g"
    PY_LDFLAGS_NOLTO = "-Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -Wl,-z,relro -Wl,--strip-all -fno-lto"
    PY_SQLITE_ENABLE_LOAD_EXTENSION = "1"
    PY_SQLITE_HAVE_SERIALIZE = "1"
    PY_SSL_DEFAULT_CIPHERS = "1"
    PY_SSL_DEFAULT_CIPHER_STRING = "0"
    PY_STDMODULE_CFLAGS = "-fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall   -g -O2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -ffile-prefix-map=/tmp/src=. -flto=auto -ffat-lto-objects -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -fprofile-use -fprofile-correction -I./Include/internal -I./Include/internal/mimalloc -I. -I./Include -fPIC"
    PY_SUPPORT_TIER = "2"
    Py_DEBUG = "0"
    Py_ENABLE_SHARED = "1"
    Py_GIL_DISABLED = "0"
    Py_HASH_ALGORITHM = "0"
    Py_RL_STARTUP_HOOK_TAKES_ARGS = "1"
    Py_STATS = "0"
    Py_SUNOS_VERSION = "0"
    Py_TRACE_REFS = "0"
    QUICKTESTOPTS = "-x test_subprocess test_io \"
    READELF = "@READELF@"
    RESSRCDIR = ""
    RETSIGTYPE = "void"
    RUNSHARED = "LD_LIBRARY_PATH=/tmp/src"
    SCRIPTDIR = "/tmp/python/lib"
    SCRIPT_IDLE = "build/scripts-3.13/idle3.13"
    SCRIPT_PYDOC = "build/scripts-3.13/pydoc3.13"
    SETPGRP_HAVE_ARG = "0"
    SHAREDMODS = "Modules/array.cpython-313-aarch64-linux-gnu.so Modules/_asyncio.cpython-313-aarch64-linux-gnu.so Modules/_bisect.cpython-313-aarch64-linux-gnu.so Modules/_contextvars.cpython-313-aarch64-linux-gnu.so Modules/_csv.cpython-313-aarch64-linux-gnu.so Modules/_heapq.cpython-313-aarch64-linux-gnu.so Modules/_json.cpython-313-aarch64-linux-gnu.so Modules/_lsprof.cpython-313-aarch64-linux-gnu.so Modules/_opcode.cpython-313-aarch64-linux-gnu.so Modules/_pickle.cpython-313-aarch64-linux-gnu.so Modules/_queue.cpython-313-aarch64-linux-gnu.so Modules/_random.cpython-313-aarch64-linux-gnu.so Modules/_struct.cpython-313-aarch64-linux-gnu.so Modules/_interpreters.cpython-313-aarch64-linux-gnu.so Modules/_interpchannels.cpython-313-aarch64-linux-gnu.so Modules/_interpqueues.cpython-313-aarch64-linux-gnu.so Modules/_zoneinfo.cpython-313-aarch64-linux-gnu.so Modules/math.cpython-313-aarch64-linux-gnu.so Modules/cmath.cpython-313-aarch64-linux-gnu.so Modules/_statistics.cpython-313-aarch64-linux-gnu.so Modules/_datetime.cpython-313-aarch64-linux-gnu.so Modules/_decimal.cpython-313-aarch64-linux-gnu.so Modules/binascii.cpython-313-aarch64-linux-gnu.so Modules/_bz2.cpython-313-aarch64-linux-gnu.so Modules/_lzma.cpython-313-aarch64-linux-gnu.so Modules/zlib.cpython-313-aarch64-linux-gnu.so Modules/_dbm.cpython-313-aarch64-linux-gnu.so Modules/_gdbm.cpython-313-aarch64-linux-gnu.so Modules/readline.cpython-313-aarch64-linux-gnu.so Modules/_md5.cpython-313-aarch64-linux-gnu.so Modules/_sha1.cpython-313-aarch64-linux-gnu.so Modules/_sha2.cpython-313-aarch64-linux-gnu.so Modules/_sha3.cpython-313-aarch64-linux-gnu.so Modules/_blake2.cpython-313-aarch64-linux-gnu.so Modules/pyexpat.cpython-313-aarch64-linux-gnu.so Modules/_elementtree.cpython-313-aarch64-linux-gnu.so Modules/_codecs_cn.cpython-313-aarch64-linux-gnu.so Modules/_codecs_hk.cpython-313-aarch64-linux-gnu.so Modules/_codecs_iso2022.cpython-313-aarch64-linux-gnu.so Modules/_codecs_jp.cpython-313-aarch64-linux-gnu.so Modules/_codecs_kr.cpython-313-aarch64-linux-gnu.so Modules/_codecs_tw.cpython-313-aarch64-linux-gnu.so Modules/_multibytecodec.cpython-313-aarch64-linux-gnu.so Modules/unicodedata.cpython-313-aarch64-linux-gnu.so Modules/fcntl.cpython-313-aarch64-linux-gnu.so Modules/grp.cpython-313-aarch64-linux-gnu.so Modules/mmap.cpython-313-aarch64-linux-gnu.so Modules/_posixsubprocess.cpython-313-aarch64-linux-gnu.so Modules/resource.cpython-313-aarch64-linux-gnu.so Modules/select.cpython-313-aarch64-linux-gnu.so Modules/_socket.cpython-313-aarch64-linux-gnu.so Modules/syslog.cpython-313-aarch64-linux-gnu.so Modules/termios.cpython-313-aarch64-linux-gnu.so Modules/_posixshmem.cpython-313-aarch64-linux-gnu.so Modules/_multiprocessing.cpython-313-aarch64-linux-gnu.so Modules/_ctypes.cpython-313-aarch64-linux-gnu.so Modules/_curses.cpython-313-aarch64-linux-gnu.so Modules/_curses_panel.cpython-313-aarch64-linux-gnu.so Modules/_sqlite3.cpython-313-aarch64-linux-gnu.so Modules/_ssl.cpython-313-aarch64-linux-gnu.so Modules/_hashlib.cpython-313-aarch64-linux-gnu.so Modules/_uuid.cpython-313-aarch64-linux-gnu.so"
    SHELL = "/bin/sh -e"
    SHLIBS = "-ldl"
    SHLIB_SUFFIX = ".so"
    SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0"
    SITEPATH = ""
    SIZEOF_DOUBLE = "8"
    SIZEOF_FLOAT = "4"
    SIZEOF_FPOS_T = "16"
    SIZEOF_INT = "4"
    SIZEOF_LONG = "8"
    SIZEOF_LONG_DOUBLE = "16"
    SIZEOF_LONG_LONG = "8"
    SIZEOF_OFF_T = "8"
    SIZEOF_PID_T = "4"
    SIZEOF_PTHREAD_KEY_T = "4"
    SIZEOF_PTHREAD_T = "8"
    SIZEOF_SHORT = "2"
    SIZEOF_SIZE_T = "8"
    SIZEOF_TIME_T = "8"
    SIZEOF_UINTPTR_T = "8"
    SIZEOF_VOID_P = "8"
    SIZEOF_WCHAR_T = "4"
    SIZEOF__BOOL = "1"
    SOABI = "cpython-313-aarch64-linux-gnu"
    SRCDIRS = "Modules   Modules/_blake2   Modules/_ctypes   Modules/_decimal   Modules/_decimal/libmpdec   Modules/_hacl   Modules/_io   Modules/_multiprocessing   Modules/_sqlite   Modules/_sre   Modules/_testcapi   Modules/_testinternalcapi   Modules/_testlimitedcapi   Modules/_xxtestfuzz   Modules/cjkcodecs   Modules/expat   Objects   Objects/mimalloc   Objects/mimalloc/prim   Parser   Parser/tokenizer   Parser/lexer   Programs   Python   Python/frozen_modules"
    SRC_GDB_HOOKS = "./Tools/gdb/libpython.py"
    STATIC_LIBPYTHON = "0"
    STDC_HEADERS = "1"
    STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */"
    STRIPFLAG = "-s"
    SUBDIRS = ""
    SUBDIRSTOO = "Include Lib Misc"
    SYSLIBS = "-lm"
    SYS_SELECT_WITH_SYS_TIME = "1"
    TESTOPTS = ""
    TESTPATH = ""
    TESTPYTHON = "LD_LIBRARY_PATH=/tmp/src ./python -E"
    TESTPYTHONOPTS = ""
    TESTRUNNER = "LD_LIBRARY_PATH=/tmp/src ./python -E -m test"
    TESTSUBDIRS = "idlelib/idle_test \"
    TESTTIMEOUT = ""
    TEST_MODULES = "no"
    THREAD_STACK_SIZE = "0"
    TIMEMODULE_LIB = "0"
    TM_IN_SYS_TIME = "0"
    TOKENIZER_HEADERS = "\"
    TOKENIZER_OBJS = "\"
    TZPATH = "/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo"
    UNICODE_DEPS = "\"
    UNIVERSALSDK = ""
    UPDATE_FILE = "./Tools/build/update_file.py"
    USE_COMPUTED_GOTOS = "0"
    VERSION = "3.13"
    WASM_ASSETS_DIR = "./tmp/python"
    WASM_STDLIB = "./tmp/python/lib/python3.13/os.py"
    WHEEL_PKG_DIR = ""
    WINDOW_HAS_FLAGS = "0"
    WITH_DECIMAL_CONTEXTVAR = "1"
    WITH_DOC_STRINGS = "1"
    WITH_DTRACE = "0"
    WITH_DYLD = "0"
    WITH_EDITLINE = "0"
    WITH_FREELISTS = "1"
    WITH_LIBINTL = "0"
    WITH_MIMALLOC = "1"
    WITH_NEXT_FRAMEWORK = "0"
    WITH_PYMALLOC = "1"
    WITH_VALGRIND = "0"
    X87_DOUBLE_ROUNDING = "0"
    XCFOLDER = ""
    XCRESULT = "/aarch64-linux-gnu.xcresult"
    XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax"
    abi_thread = ""
    abiflags = ""
    abs_builddir = "/tmp/src"
    abs_srcdir = "/tmp/src"
    base = "/testcase/.heroku/python"
    datarootdir = "/tmp/python/share"
    exec_prefix = "/tmp/python"
    implementation = "Python"
    implementation_lower = "python"
    installed_base = "/testcase/.heroku/python"
    installed_platbase = "/testcase/.heroku/python"
    platbase = "/testcase/.heroku/python"
    platlibdir = "lib"
    prefix = "/tmp/python"
    projectbase = "/testcase/.heroku/python/bin"
    py_version = "3.13.1"
    py_version_nodot = "313"
    py_version_nodot_plat = ""
    py_version_short = "3.13"
    srcdir = "/testcase/.heroku/python/lib/python3.13/config-3.13-aarch64-linux-gnu"
    userbase = "/root/.local"

Example pyproject.toml

[project]
name = "testcase-poetry"
version = "0.1.0"
requires-python = "3.12.*"
dependencies = [
    "typing-extensions"
]

[tool.poetry]
package-mode = false

Poetry Runtime Logs

poetry-runtime.log
RUN poetry install -vvv
The currently activated Python version 3.13.1 is not supported by the project (3.12.*).
Trying to find and use a compatible version. 
[findpython:findpython] Provider AsdfProvider is not available
[findpython:findpython] Provider PyenvProvider is not available
[findpython:findpython] Provider WinregProvider is not available
[findpython:findpython] Provider MacOSProvider is not available
[findpython:findpython] Running script: ['/testcase/.heroku/python/bin/python3.13', '-EsSc', 'import platform; print(platform.python_version())']
[findpython:findpython] Running script: ['/usr/bin/python3.12', '-EsSc', 'import platform; print(platform.python_version())']
[findpython:findpython] Running script: ['/bin/python3.12', '-EsSc', 'import platform; print(platform.python_version())']
[findpython:findpython] Running script: ['/testcase/.heroku/python/bin/python3', '-EsSc', 'import platform; print(platform.python_version())']
[findpython:findpython] Running script: ['/testcase/.heroku/python/bin/python', '-EsSc', 'import platform; print(platform.python_version())']
[findpython:findpython] Running script: ['/usr/bin/python3', '-EsSc', 'import platform; print(platform.python_version())']
[findpython:findpython] Running script: ['/bin/python3', '-EsSc', 'import platform; print(platform.python_version())']
Using python3.12 (3.12.3)
Skipping virtualenv creation, as specified in config file.
Checking keyring availability: Checking if keyring is available
[keyring:keyring.backend] Loading KWallet
[keyring:keyring.backend] Loading SecretService
[keyring:keyring.backend] Loading Windows
[keyring:keyring.backend] Loading chainer
[keyring:keyring.backend] Loading libsecret
[keyring:keyring.backend] Loading macOS
Backend 'fail Keyring' is not suitable
No valid keyring backend was found
Unavailable
Installing dependencies from lock file

Finding the necessary packages for the current system

Package operations: 1 install, 0 updates, 0 removals

- Installing typing-extensions (4.12.2)
Creating new session for pypi.org
[urllib3:urllib3.connectionpool] Starting new HTTPS connection (1): pypi.org:443
[urllib3:urllib3.connectionpool] https://pypi.org:443 "GET /pypi/typing-extensions/4.12.2/json HTTP/1.1" 200 1979
[filelock:filelock] Attempting to acquire lock 281472933620640 on /root/.cache/pypoetry/cache/repositories/PyPI/_http/0/6/f/5/e/06f5e6ff249dca41a6c62a58477ec555f09d75c84fb8ea39a2015bd2.lock
[filelock:filelock] Lock 281472933620640 acquired on /root/.cache/pypoetry/cache/repositories/PyPI/_http/0/6/f/5/e/06f5e6ff249dca41a6c62a58477ec555f09d75c84fb8ea39a2015bd2.lock
[filelock:filelock] Attempting to release lock 281472933620640 on /root/.cache/pypoetry/cache/repositories/PyPI/_http/0/6/f/5/e/06f5e6ff249dca41a6c62a58477ec555f09d75c84fb8ea39a2015bd2.lock
[filelock:filelock] Lock 281472933620640 released on /root/.cache/pypoetry/cache/repositories/PyPI/_http/0/6/f/5/e/06f5e6ff249dca41a6c62a58477ec555f09d75c84fb8ea39a2015bd2.lock
Creating new session for files.pythonhosted.org
[urllib3:urllib3.connectionpool] Starting new HTTPS connection (1): files.pythonhosted.org:443
[urllib3:urllib3.connectionpool] https://files.pythonhosted.org:443 "GET /packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl HTTP/1.1" 200 37438
[filelock:filelock] Attempting to acquire lock 281472946600720 on /root/.cache/pypoetry/cache/repositories/_default_cache/_http/2/0/1/c/f/201cfecff7dfec815e95834c6faa15cb5c9fe16a1ee6050aabeb620b.lock
[filelock:filelock] Lock 281472946600720 acquired on /root/.cache/pypoetry/cache/repositories/_default_cache/_http/2/0/1/c/f/201cfecff7dfec815e95834c6faa15cb5c9fe16a1ee6050aabeb620b.lock
[filelock:filelock] Attempting to release lock 281472946600720 on /root/.cache/pypoetry/cache/repositories/_default_cache/_http/2/0/1/c/f/201cfecff7dfec815e95834c6faa15cb5c9fe16a1ee6050aabeb620b.lock
[filelock:filelock] Lock 281472946600720 released on /root/.cache/pypoetry/cache/repositories/_default_cache/_http/2/0/1/c/f/201cfecff7dfec815e95834c6faa15cb5c9fe16a1ee6050aabeb620b.lock
@edmorley edmorley added kind/bug Something isn't working as expected status/triage This issue needs to be triaged labels Feb 25, 2025
@finswimmer
Copy link
Member

finswimmer commented Feb 26, 2025

Hey @edmorley,

I'm afraid we choose the wrong (or at least a misleading) wording for the use-poetry-python option.

In Poetry 2 we make the behavior of virtualenvs.prefer-active-python the default and were looking for an option one can use to switch to the default behavior of Poetry 1. This is what virtualenvs.use-poetry-python is actually doing. The default behavior of Poetry 1 was to prefer the Python version of the Poetry installation and if this one doesn't match the required one searching for other executables.

I wonder what would be the correct fix here 🤔 Changing the behavior of use-poetry-python to what one would expect? Change the name (e.g. prefer-poetry-python)? Clarify the behavior in the docs? @abn, @Secrus, @radoering: Do you have opinions?

fin swimmer

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/bug Something isn't working as expected status/triage This issue needs to be triaged
Projects
None yet
Development

No branches or pull requests

2 participants