python-poetry / poetry

Python packaging and dependency management made easy
https://python-poetry.org
MIT License
31.51k stars 2.26k forks source link

poetry ignores dependencies of dependencies which are "ambient" (installed in current venv, but not fetched by poetry) #9774

Open ggirol-rc opened 5 days ago

ggirol-rc commented 5 days ago

Description

Consider a project consisting of a python package lib and an application app depending on lib by version number. Neither app nor lib can be downloaded from any repository, they only exist locally. If app and lib have conflicting requirements, poetry will ignore the requirements of lib.

Steps to reproduce:

1/ create an ambient virtualenv

virtualenv venv
source venv/bin/activate

2/ configure lib to depend on an old version of pydantic

[tool.poetry]
name = "lib"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
readme = "README.md"

[tool.poetry.dependencies]
python = "^3.8"
pydantic = "2.0"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

3/ install lib into the venv:

$ cd lib && poetry install    
Updating dependencies
Resolving dependencies... (0.3s)

Package operations: 4 installs, 0 updates, 0 removals

  - Installing typing-extensions (4.12.2)
  - Installing annotated-types (0.7.0)
  - Installing pydantic-core (2.0.1)
  - Installing pydantic (2.0)

Writing lock file

Installing the current project: lib (0.1.0)

4/ configure app to depend on lib==0.1.0 and a version of pydantic-settings requiring a too recent version of pydantic

[tool.poetry]
name = "app"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
readme = "README.md"

[tool.poetry.dependencies]
python = "^3.8"
lib = "0.1.0"
pydantic-settings = "^2.5.2"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

5/ resolve dependencies:

$ cd app && poetry lock -vv
Using virtualenv: /home/user/third_party/repro_poetry/venv
Updating dependencies
Resolving dependencies...
   1: fact: app is 0.1.0
   1: derived: app
   1: fact: app depends on lib (0.1.0)
   1: fact: app depends on pydantic-settings (^2.5.2)
   1: selecting app (0.1.0)
   1: derived: pydantic-settings (>=2.5.2,<3.0.0)
   1: derived: lib (==0.1.0)
   1: fact: pydantic-settings (2.5.2) depends on pydantic (>=2.7.0)
   1: fact: pydantic-settings (2.5.2) depends on python-dotenv (>=0.21.0)
   1: selecting pydantic-settings (2.5.2)
   1: derived: python-dotenv (>=0.21.0)
   1: derived: pydantic (>=2.7.0)
   1: selecting lib (0.1.0 /home/user/third_party/repro_poetry/lib)
   0: Duplicate dependencies for typing-extensions
   0: Different requirements found for typing-extensions (>=4.12.2) with markers python_version >= "3.13" and typing-extensions (>=4.6.1) with markers python_version < "3.13".
   1: Version solving took 0.120 seconds.
   1: Tried 1 solutions.
   0: Retrying dependency resolution with the following overrides ({Package('pydantic', '2.9.2'): {'typing-extensions': <Dependency typing-extensions (>=4.12.2)>}}).
   1: fact: app is 0.1.0
   1: derived: app
   1: fact: app depends on lib (0.1.0)
   1: fact: app depends on pydantic-settings (^2.5.2)
   1: selecting app (0.1.0)
   1: derived: pydantic-settings (>=2.5.2,<3.0.0)
   1: derived: lib (==0.1.0)
   1: fact: pydantic-settings (2.5.2) depends on pydantic (>=2.7.0)
   1: fact: pydantic-settings (2.5.2) depends on python-dotenv (>=0.21.0)
   1: selecting pydantic-settings (2.5.2)
   1: derived: python-dotenv (>=0.21.0)
   1: derived: pydantic (>=2.7.0)
   1: selecting lib (0.1.0 /home/user/third_party/repro_poetry/lib)
   1: fact: pydantic (2.9.2) depends on annotated-types (>=0.6.0)
   1: fact: pydantic (2.9.2) depends on pydantic-core (2.23.4)
   1: fact: pydantic (2.9.2) depends on typing-extensions (>=4.12.2)
   1: selecting pydantic (2.9.2)
   1: derived: typing-extensions (>=4.12.2)
   1: derived: pydantic-core (==2.23.4)
   1: derived: annotated-types (>=0.6.0)
   1: fact: pydantic-core (2.23.4) depends on typing-extensions (>=4.6.0,<4.7.0 || >4.7.0)
   1: selecting pydantic-core (2.23.4)
   1: selecting python-dotenv (1.0.1)
   1: fact: annotated-types (0.7.0) depends on typing-extensions (>=4.0.0)
   1: selecting annotated-types (0.7.0)
   1: selecting typing-extensions (4.12.2)
   1: Version solving took 0.212 seconds.
   1: Tried 1 solutions.
   0: Retrying dependency resolution with the following overrides ({Package('pydantic', '2.9.2'): {'typing-extensions': <Dependency typing-extensions (>=4.6.1)>}}).
   1: fact: app is 0.1.0
   1: derived: app
   1: fact: app depends on lib (0.1.0)
   1: fact: app depends on pydantic-settings (^2.5.2)
   1: selecting app (0.1.0)
   1: derived: pydantic-settings (>=2.5.2,<3.0.0)
   1: derived: lib (==0.1.0)
   1: fact: pydantic-settings (2.5.2) depends on pydantic (>=2.7.0)
   1: fact: pydantic-settings (2.5.2) depends on python-dotenv (>=0.21.0)
   1: selecting pydantic-settings (2.5.2)
   1: derived: python-dotenv (>=0.21.0)
   1: derived: pydantic (>=2.7.0)
   1: selecting lib (0.1.0 /home/user/third_party/repro_poetry/lib)
   1: fact: pydantic (2.9.2) depends on annotated-types (>=0.6.0)
   1: fact: pydantic (2.9.2) depends on pydantic-core (2.23.4)
   1: fact: pydantic (2.9.2) depends on typing-extensions (>=4.6.1)
   1: selecting pydantic (2.9.2)
   1: derived: typing-extensions (>=4.6.1)
   1: derived: pydantic-core (==2.23.4)
   1: derived: annotated-types (>=0.6.0)
   1: fact: pydantic-core (2.23.4) depends on typing-extensions (>=4.6.0,<4.7.0 || >4.7.0)
   1: selecting pydantic-core (2.23.4)
   1: derived: typing-extensions (>=4.6.0,!=4.7.0)
   1: selecting python-dotenv (1.0.1)
   1: fact: annotated-types (0.7.0) depends on typing-extensions (>=4.0.0)
   1: selecting annotated-types (0.7.0)
   1: selecting typing-extensions (4.12.2)
   1: Version solving took 0.007 seconds.
   1: Tried 1 solutions.
   0: Complete version solving took 0.340 seconds with 2 overrides
   0: Resolved with overrides: ({Package('pydantic', '2.9.2'): {'typing-extensions': <Dependency typing-extensions (>=4.12.2)>}}), ({Package('pydantic', '2.9.2'): {'typing-extensions': <Dependency typing-extensions (>=4.6.1)>}})

Writing lock file

and install it:

poetry install
Installing dependencies from lock file

Package operations: 2 installs, 2 updates, 0 removals

  - Updating pydantic-core (2.0.1 -> 2.23.4)
  - Updating pydantic (2.0 -> 2.9.2)
  - Installing python-dotenv (1.0.1)
  - Installing pydantic-settings (2.5.2)

Installing the current project: app (0.1.0)

Observed behavior:

running poetry install in app upgrades pydantic to a version compatible with its dependency to pydantic-settings but breaks the transitive dependency lib>pydantic==2.0

running poetry install in lib similarly downgrades pydantic, breaking pydantic settings

$ poetry install
Installing dependencies from lock file

Package operations: 0 installs, 2 updates, 0 removals

  - Downgrading pydantic-core (2.23.4 -> 2.0.1)
  - Downgrading pydantic (2.9.2 -> 2.0)

Installing the current project: lib (0.1.0)
$ pip check 
pydantic-settings 2.5.2 has requirement pydantic>=2.7.0, but you have pydantic 2.0.

Notice in the output of poetry lock -vv in app above, how poetry detects the presence of lib but does not mention dependencies of lib at all.

Expected behavior:

poetry should report this error when called in app:

Updating dependencies
Resolving dependencies... (0.2s)

Because lib (0.1.0) @ file:///home/user/third_party/repro_poetry/lib depends on pydantic (2.0)
 and pydantic-settings (2.5.2) depends on pydantic (>=2.7.0), lib (0.1.0) @ file:///.../repro_poetry/lib is incompatible with pydantic-settings (2.5.2).
And because no versions of pydantic-settings match >2.5.2,<3.0.0, lib (0.1.0) @ file:///.../repro_poetry/lib is incompatible with pydantic-settings (>=2.5.2,<3.0.0).
So, because app depends on both lib (0.1.0) @ file:///.../repro_poetry/lib and pydantic-settings (^2.5.2), version solving failed.

Workarounds

In app/pyproject.toml, use lib = { path = "..." } instead of lib = "0.1.0". This is not compatible with installing lib from a non-constant path nor from a wheel.

Poetry Installation Method

pip

Operating System

Ubuntu 20.04

Poetry Version

Poetry (version 1.8.4)

Poetry Configuration

cache-dir = "/home/user/.cache/pypoetry"
experimental.system-git-client = false
installer.max-workers = null
installer.modern-installation = true
installer.no-binary = null
installer.parallel = true
keyring.enabled = true
solver.lazy-wheel = true
virtualenvs.create = true
virtualenvs.in-project = null
virtualenvs.options.always-copy = false
virtualenvs.options.no-pip = false
virtualenvs.options.no-setuptools = false
virtualenvs.options.system-site-packages = false
virtualenvs.path = "{cache-dir}/virtualenvs"  # /home/user/.cache/pypoetry/virtualenvs
virtualenvs.prefer-active-python = false
virtualenvs.prompt = "{project_name}-py{python_version}"
warnings.export = true

Python Sysconfig

Platform: "linux-x86_64"
Python version: "3.8"
Current installation scheme: "posix_prefix"

Paths: 
    data = "/home/user/third_party/repro_poetry/venv"
    include = "/usr/include/python3.8"
    platinclude = "/usr/include/python3.8"
    platlib = "/home/user/third_party/repro_poetry/venv/lib/python3.8/site-packages"
    platstdlib = "/home/user/third_party/repro_poetry/venv/lib/python3.8"
    purelib = "/home/user/third_party/repro_poetry/venv/lib/python3.8/site-packages"
    scripts = "/home/user/third_party/repro_poetry/venv/bin"
    stdlib = "/usr/lib/python3.8"

Variables: 
    ABIFLAGS = ""
    AC_APPLE_UNIVERSAL_BUILD = "0"
    AIX_GENUINE_CPLUSPLUS = "0"
    ALT_SOABI = "0"
    ANDROID_API_LEVEL = "0"
    AR = "x86_64-linux-gnu-gcc-ar"
    ARFLAGS = "rcs"
    BASECFLAGS = "-Wno-unused-result -Wsign-compare"
    BASECPPFLAGS = "-IObjects -IInclude -IPython"
    BASEMODLIBS = ""
    BINDIR = "/usr/bin"
    BINLIBDEST = "/usr/lib/python3.8"
    BLDLIBRARY = "-lpython3.8"
    BLDSHARED = "x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions  -Wl,-z,relro -g -fwrapv -O2   "
    BUILDEXE = ""
    BUILDPYTHON = "python"
    BUILD_GNU_TYPE = "x86_64-pc-linux-gnu"
    BYTESTR_DEPS = "\"
    CC = "x86_64-linux-gnu-gcc -pthread"
    CCSHARED = "-fPIC"
    CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2   "
    CFLAGSFORSHARED = "-fPIC"
    CFLAGS_ALIASING = ""
    CFLAGS_NODIST = ""
    CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in"
    CONFIGURE_CFLAGS = "-g   -fstack-protector-strong -Wformat -Werror=format-security"
    CONFIGURE_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration"
    CONFIGURE_CPPFLAGS = "-Wdate-time -D_FORTIFY_SOURCE=2"
    CONFIGURE_LDFLAGS = "-Wl,-Bsymbolic-functions  -Wl,-z,relro -g -fwrapv -O2   "
    CONFIGURE_LDFLAGS_NODIST = ""
    CONFIG_ARGS = "'--enable-shared' '--prefix=/usr' '--enable-ipv6' '--enable-loadable-sqlite-extensions' '--with-dbmliborder=bdb:gdbm' '--with-computed-gotos' '--without-ensurepip' '--with-system-expat' '--with-dtrace' '--with-system-libmpdec' '--with-system-ffi' 'CC=x86_64-linux-gnu-gcc' 'CFLAGS=-g   -fstack-protector-strong -Wformat -Werror=format-security ' 'LDFLAGS=-Wl,-Bsymbolic-functions  -Wl,-z,relro -g -fwrapv -O2   ' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2'"
    CONFINCLUDEDIR = "/usr/include"
    CONFINCLUDEPY = "/usr/include/python3.8"
    COREPYTHONPATH = ""
    COVERAGE_INFO = "/build/python3.8-NMGdww/python3.8-3.8.10/build-shared/coverage.info"
    COVERAGE_REPORT = "/build/python3.8-NMGdww/python3.8-3.8.10/build-shared/lcov-report"
    COVERAGE_REPORT_OPTIONS = "--no-branch-coverage --title "CPython lcov report""
    CPPFLAGS = "-IObjects -IInclude -IPython -I. -I../Include -Wdate-time -D_FORTIFY_SOURCE=2"
    CXX = "x86_64-linux-gnu-g++ -pthread"
    DESTDIRS = "/usr /usr/lib /usr/lib/python3.8 /usr/lib/python3.8/lib-dynload"
    DESTLIB = "/usr/lib/python3.8"
    DESTPATH = ""
    DESTSHARED = "/usr/lib/python3.8/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"
    DTRACE = "/usr/bin/dtrace"
    DTRACE_DEPS = "\"
    DTRACE_HEADERS = "Include/pydtrace_probes.h"
    DTRACE_OBJS = "Python/pydtrace.o"
    DYNLOADFILE = "dynload_shlib.o"
    ENABLE_IPV6 = "1"
    ENSUREPIP = "no"
    EXE = ""
    EXEMODE = "755"
    EXTRATESTOPTS = ""
    EXT_SUFFIX = ".cpython-38-x86_64-linux-gnu.so"
    FILEMODE = "644"
    FLOAT_WORDS_BIGENDIAN = "0"
    FLOCK_NEEDS_LIBBSD = "0"
    GETPGRP_HAVE_ARG = "0"
    GETTIMEOFDAY_NO_TZ = "0"
    GITBRANCH = ""
    GITTAG = ""
    GITVERSION = ""
    GNULD = "yes"
    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_TEXTDOMAIN_CODESET = "1"
    HAVE_BLUETOOTH_BLUETOOTH_H = "1"
    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_CHFLAGS = "0"
    HAVE_CHOWN = "1"
    HAVE_CHROOT = "1"
    HAVE_CLOCK = "1"
    HAVE_CLOCK_GETRES = "1"
    HAVE_CLOCK_GETTIME = "1"
    HAVE_CLOCK_SETTIME = "1"
    HAVE_COMPUTED_GOTOS = "1"
    HAVE_CONFSTR = "1"
    HAVE_CONIO_H = "0"
    HAVE_COPYSIGN = "1"
    HAVE_COPY_FILE_RANGE = "1"
    HAVE_CRYPT_H = "1"
    HAVE_CRYPT_R = "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_DECL_ISFINITE = "1"
    HAVE_DECL_ISINF = "1"
    HAVE_DECL_ISNAN = "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_DUP2 = "1"
    HAVE_DUP3 = "1"
    HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH = "0"
    HAVE_DYNAMIC_LOADING = "1"
    HAVE_ENDIAN_H = "1"
    HAVE_EPOLL = "1"
    HAVE_EPOLL_CREATE1 = "1"
    HAVE_ERF = "1"
    HAVE_ERFC = "1"
    HAVE_ERRNO_H = "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_FINITE = "1"
    HAVE_FLOCK = "1"
    HAVE_FORK = "1"
    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_GAMMA = "1"
    HAVE_GCC_ASM_FOR_MC68881 = "0"
    HAVE_GCC_ASM_FOR_X64 = "1"
    HAVE_GCC_ASM_FOR_X87 = "1"
    HAVE_GCC_UINT128_T = "1"
    HAVE_GETADDRINFO = "1"
    HAVE_GETC_UNLOCKED = "1"
    HAVE_GETENTROPY = "1"
    HAVE_GETGRGID_R = "1"
    HAVE_GETGRNAM_R = "1"
    HAVE_GETGROUPLIST = "1"
    HAVE_GETGROUPS = "1"
    HAVE_GETHOSTBYNAME = "0"
    HAVE_GETHOSTBYNAME_R = "1"
    HAVE_GETHOSTBYNAME_R_3_ARG = "0"
    HAVE_GETHOSTBYNAME_R_5_ARG = "0"
    HAVE_GETHOSTBYNAME_R_6_ARG = "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_GETPRIORITY = "1"
    HAVE_GETPWENT = "1"
    HAVE_GETPWNAM_R = "1"
    HAVE_GETPWUID_R = "1"
    HAVE_GETRANDOM = "1"
    HAVE_GETRANDOM_SYSCALL = "1"
    HAVE_GETRESGID = "1"
    HAVE_GETRESUID = "1"
    HAVE_GETSID = "1"
    HAVE_GETSPENT = "1"
    HAVE_GETSPNAM = "1"
    HAVE_GETTIMEOFDAY = "1"
    HAVE_GETWD = "1"
    HAVE_GLIBC_MEMMOVE_BUG = "0"
    HAVE_GRP_H = "1"
    HAVE_HSTRERROR = "1"
    HAVE_HTOLE64 = "1"
    HAVE_HYPOT = "1"
    HAVE_IEEEFP_H = "0"
    HAVE_IF_NAMEINDEX = "1"
    HAVE_INET_ATON = "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_LGAMMA = "1"
    HAVE_LIBDL = "1"
    HAVE_LIBDLD = "0"
    HAVE_LIBIEEE = "0"
    HAVE_LIBINTL_H = "1"
    HAVE_LIBREADLINE = "1"
    HAVE_LIBRESOLV = "0"
    HAVE_LIBSENDFILE = "0"
    HAVE_LIBUTIL_H = "0"
    HAVE_LINK = "1"
    HAVE_LINKAT = "1"
    HAVE_LINUX_CAN_BCM_H = "1"
    HAVE_LINUX_CAN_H = "1"
    HAVE_LINUX_CAN_RAW_FD_FRAMES = "1"
    HAVE_LINUX_CAN_RAW_H = "1"
    HAVE_LINUX_MEMFD_H = "1"
    HAVE_LINUX_NETLINK_H = "1"
    HAVE_LINUX_QRTR_H = "1"
    HAVE_LINUX_RANDOM_H = "1"
    HAVE_LINUX_TIPC_H = "1"
    HAVE_LINUX_VM_SOCKETS_H = "1"
    HAVE_LOCKF = "1"
    HAVE_LOG1P = "1"
    HAVE_LOG2 = "1"
    HAVE_LONG_DOUBLE = "1"
    HAVE_LSTAT = "1"
    HAVE_LUTIMES = "1"
    HAVE_MADVISE = "1"
    HAVE_MAKEDEV = "1"
    HAVE_MBRTOWC = "1"
    HAVE_MEMFD_CREATE = "1"
    HAVE_MEMORY_H = "1"
    HAVE_MEMRCHR = "1"
    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_NCURSES_H = "1"
    HAVE_NDIR_H = "0"
    HAVE_NETPACKET_PACKET_H = "1"
    HAVE_NET_IF_H = "1"
    HAVE_NICE = "1"
    HAVE_OPENAT = "1"
    HAVE_OPENPTY = "1"
    HAVE_PATHCONF = "1"
    HAVE_PAUSE = "1"
    HAVE_PIPE2 = "1"
    HAVE_PLOCK = "0"
    HAVE_POLL = "1"
    HAVE_POLL_H = "1"
    HAVE_POSIX_FADVISE = "1"
    HAVE_POSIX_FALLOCATE = "1"
    HAVE_POSIX_SPAWN = "1"
    HAVE_POSIX_SPAWNP = "1"
    HAVE_PREAD = "1"
    HAVE_PREADV = "1"
    HAVE_PREADV2 = "1"
    HAVE_PRLIMIT = "1"
    HAVE_PROCESS_H = "0"
    HAVE_PROTOTYPES = "1"
    HAVE_PTHREAD_CONDATTR_SETCLOCK = "1"
    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_PTY_H = "1"
    HAVE_PUTENV = "1"
    HAVE_PWRITE = "1"
    HAVE_PWRITEV = "1"
    HAVE_PWRITEV2 = "1"
    HAVE_READLINK = "1"
    HAVE_READLINKAT = "1"
    HAVE_READV = "1"
    HAVE_REALPATH = "1"
    HAVE_RENAMEAT = "1"
    HAVE_RL_APPEND_HISTORY = "1"
    HAVE_RL_CATCH_SIGNAL = "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_ROUND = "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_GETVALUE = "1"
    HAVE_SEM_OPEN = "1"
    HAVE_SEM_TIMEDWAIT = "1"
    HAVE_SEM_UNLINK = "1"
    HAVE_SENDFILE = "1"
    HAVE_SETEGID = "1"
    HAVE_SETEUID = "1"
    HAVE_SETGID = "1"
    HAVE_SETGROUPS = "1"
    HAVE_SETHOSTNAME = "1"
    HAVE_SETITIMER = "1"
    HAVE_SETLOCALE = "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_SETUID = "1"
    HAVE_SETVBUF = "1"
    HAVE_SHADOW_H = "1"
    HAVE_SHM_OPEN = "1"
    HAVE_SHM_UNLINK = "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_SOCKETPAIR = "1"
    HAVE_SPAWN_H = "1"
    HAVE_SSIZE_T = "1"
    HAVE_STATVFS = "1"
    HAVE_STAT_TV_NSEC = "1"
    HAVE_STAT_TV_NSEC2 = "0"
    HAVE_STDARG_PROTOTYPES = "1"
    HAVE_STDINT_H = "1"
    HAVE_STDLIB_H = "1"
    HAVE_STD_ATOMIC = "1"
    HAVE_STRDUP = "1"
    HAVE_STRFTIME = "1"
    HAVE_STRINGS_H = "1"
    HAVE_STRING_H = "1"
    HAVE_STRLCPY = "0"
    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_SYS_AUDIOIO_H = "0"
    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_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_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_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_TGAMMA = "1"
    HAVE_TIMEGM = "1"
    HAVE_TIMES = "1"
    HAVE_TMPFILE = "1"
    HAVE_TMPNAM = "1"
    HAVE_TMPNAM_R = "1"
    HAVE_TM_ZONE = "1"
    HAVE_TRUNCATE = "1"
    HAVE_TZNAME = "0"
    HAVE_UCS4_TCL = "0"
    HAVE_UNAME = "1"
    HAVE_UNISTD_H = "1"
    HAVE_UNLINKAT = "1"
    HAVE_UNSETENV = "1"
    HAVE_USABLE_WCHAR_T = "0"
    HAVE_UTIL_H = "0"
    HAVE_UTIMENSAT = "1"
    HAVE_UTIMES = "1"
    HAVE_UTIME_H = "1"
    HAVE_UUID_CREATE = "0"
    HAVE_UUID_ENC_BE = "0"
    HAVE_UUID_GENERATE_TIME_SAFE = "1"
    HAVE_UUID_H = "0"
    HAVE_UUID_UUID_H = "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_X509_VERIFY_PARAM_SET1_HOST = "1"
    HAVE_ZLIB_COPY = "1"
    HAVE__GETPTY = "0"
    HOST_GNU_TYPE = "x86_64-pc-linux-gnu"
    INCLDIRSTOMAKE = "/usr/include /usr/include /usr/include/python3.8 /usr/include/python3.8"
    INCLUDEDIR = "/usr/include"
    INCLUDEPY = "/usr/include/python3.8"
    INSTALL = "/usr/bin/install -c"
    INSTALL_DATA = "/usr/bin/install -c -m 644"
    INSTALL_PROGRAM = "/usr/bin/install -c"
    INSTALL_SCRIPT = "/usr/bin/install -c"
    INSTALL_SHARED = "/usr/bin/install -c -m 755"
    INSTSONAME = "libpython3.8.so.1.0"
    IO_H = "Modules/_io/_iomodule.h"
    IO_OBJS = "\"
    LDCXXSHARED = "x86_64-linux-gnu-g++ -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions"
    LDFLAGS = "-Wl,-Bsymbolic-functions  -Wl,-z,relro -g -fwrapv -O2   "
    LDFLAGS_NODIST = ""
    LDLIBRARY = "libpython3.8.so"
    LDLIBRARYDIR = ""
    LDSHARED = "x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions  -Wl,-z,relro -g -fwrapv -O2   "
    LDVERSION = "3.8"
    LIBC = ""
    LIBDEST = "/usr/lib/python3.8"
    LIBDIR = "/usr/lib"
    LIBFFI_INCLUDEDIR = ""
    LIBM = "-lm"
    LIBOBJDIR = "Python/"
    LIBOBJS = ""
    LIBPC = "/usr/lib/x86_64-linux-gnu/pkgconfig"
    LIBPL = "/usr/lib/python3.8/config-3.8-x86_64-linux-gnu"
    LIBPYTHON = ""
    LIBRARY = "libpython3.8.a"
    LIBRARY_OBJS = "\"
    LIBRARY_OBJS_OMIT_FROZEN = "\"
    LIBS = "-lcrypt -lpthread -ldl  -lutil -lm"
    LIBSUBDIRS = "tkinter tkinter/test tkinter/test/test_tkinter \"
    LINKCC = "x86_64-linux-gnu-gcc -pthread"
    LINKFORSHARED = "-Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions"
    LIPO_32BIT_FLAGS = ""
    LIPO_INTEL64_FLAGS = ""
    LLVM_PROF_ERR = "no"
    LLVM_PROF_FILE = ""
    LLVM_PROF_MERGER = "true"
    LN = "ln"
    LOCALMODLIBS = "-lexpat                       -L/usr/lib -lz                       -lexpat"
    MACHDEP = "linux"
    MACHDEP_OBJS = ""
    MACHDESTLIB = "/usr/lib/python3.8"
    MACOSX_DEPLOYMENT_TARGET = ""
    MAINCC = "x86_64-linux-gnu-gcc -pthread"
    MAJOR_IN_MKDEV = "0"
    MAJOR_IN_SYSMACROS = "1"
    MAKESETUP = "../Modules/makesetup"
    MANDIR = "/usr/share/man"
    MKDIR_P = "/bin/mkdir -p"
    MODBUILT_NAMES = "array  cmath  math  _struct  _random  _elementtree  _pickle  _datetime  _bisect  _heapq  _statistics  unicodedata  fcntl  spwd  grp  select  _csv  _socket  _posixsubprocess  _md5  _sha1  _sha256  _sha512  _sha3  _blake2  syslog  binascii  zlib  posix  errno  pwd  _sre  _codecs  _weakref  _functools  _operator  _collections  _abc  itertools  atexit  _signal  _stat  time  _thread  _locale  _io  faulthandler  _tracemalloc  _symtable  pyexpat  xxsubtype"
    MODDISABLED_NAMES = ""
    MODLIBS = "-lexpat                       -L/usr/lib -lz                       -lexpat"
    MODOBJS = "$(sort   Modules/arraymodule.o  Modules/cmathmodule.o Modules/_math.o  Modules/mathmodule.o Modules/_math.o  Modules/_struct.o  Modules/_randommodule.o  Modules/_elementtree.o  Modules/_pickle.o  Modules/_datetimemodule.o  Modules/_bisectmodule.o  Modules/_heapqmodule.o  Modules/_statisticsmodule.o  Modules/unicodedata.o  Modules/fcntlmodule.o  Modules/spwdmodule.o  Modules/grpmodule.o  Modules/selectmodule.o  Modules/_csv.o  Modules/socketmodule.o  Modules/_posixsubprocess.o  Modules/md5module.o  Modules/sha1module.o  Modules/sha256module.o  Modules/sha512module.o  Modules/sha3module.o  Modules/blake2module.o Modules/blake2b_impl.o Modules/blake2s_impl.o  Modules/syslogmodule.o  Modules/binascii.o  Modules/zlibmodule.o  Modules/posixmodule.o  Modules/errnomodule.o  Modules/pwdmodule.o  Modules/_sre.o  Modules/_codecsmodule.o  Modules/_weakref.o  Modules/_functoolsmodule.o  Modules/_operator.o  Modules/_collectionsmodule.o  Modules/_abc.o  Modules/itertoolsmodule.o  Modules/atexitmodule.o  Modules/signalmodule.o  Modules/_stat.o  Modules/timemodule.o  Modules/_threadmodule.o  Modules/_localemodule.o  Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o  Modules/faulthandler.o  Modules/_tracemalloc.o Modules/hashtable.o  Modules/symtablemodule.o  Modules/pyexpat.o  Modules/xxsubtype.o)"
    MODULE_OBJS = "\"
    MULTIARCH = "x86_64-linux-gnu"
    MULTIARCH_CPPFLAGS = "-DMULTIARCH=\"x86_64-linux-gnu\""
    MVWDELCH_IS_EXPRESSION = "1"
    NO_AS_NEEDED = "-Wl,--no-as-needed"
    OBJECT_OBJS = "\"
    OPENSSL_INCLUDES = ""
    OPENSSL_LDFLAGS = ""
    OPENSSL_LIBS = "-lssl -lcrypto"
    OPT = "-DNDEBUG -g -fwrapv -O2 -Wall"
    OTHER_LIBTOOL_OPT = ""
    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 Parser/parsetok.o Parser/tokenizer.o"
    PGO_PROF_GEN_FLAG = "-fprofile-generate"
    PGO_PROF_USE_FLAG = ""
    POBJS = "\"
    POSIX_SEMAPHORES_NOT_ENABLED = "0"
    PROFILE_TASK = "-m test --pgo"
    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 = ""
    PYTHONFRAMEWORKPREFIX = ""
    PYTHONPATH = ""
    PYTHON_FOR_BUILD = "./python -E"
    PYTHON_FOR_REGEN = "python3.8"
    PYTHON_HEADERS = "\"
    PYTHON_OBJS = "\"
    PY_BUILTIN_MODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration  -I../Include/internal -IObjects -IInclude -IPython -I. -I../Include -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPy_BUILD_CORE_BUILTIN"
    PY_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2   "
    PY_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration  -I../Include/internal"
    PY_COERCE_C_LOCALE = "1"
    PY_CORE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration  -I../Include/internal -IObjects -IInclude -IPython -I. -I../Include -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPy_BUILD_CORE"
    PY_CORE_LDFLAGS = "-Wl,-Bsymbolic-functions  -Wl,-z,relro -g -fwrapv -O2   "
    PY_CPPFLAGS = "-IObjects -IInclude -IPython -I. -I../Include -Wdate-time -D_FORTIFY_SOURCE=2"
    PY_FORMAT_SIZE_T = ""z""
    PY_LDFLAGS = "-Wl,-Bsymbolic-functions  -Wl,-z,relro -g -fwrapv -O2   "
    PY_LDFLAGS_NODIST = ""
    PY_SSL_DEFAULT_CIPHERS = "1"
    PY_SSL_DEFAULT_CIPHER_STRING = "0"
    PY_STDMODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g   -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration  -I../Include/internal -IObjects -IInclude -IPython -I. -I../Include -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC"
    Py_DEBUG = "0"
    Py_ENABLE_SHARED = "1"
    Py_HASH_ALGORITHM = "0"
    Py_TRACE_REFS = "0"
    QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \"
    READELF = "readelf"
    RESSRCDIR = "Mac/Resources/framework"
    RETSIGTYPE = "void"
    RUNSHARED = "LD_LIBRARY_PATH=/build/python3.8-NMGdww/python3.8-3.8.10/build-shared"
    SCRIPTDIR = "/usr/lib"
    SETPGRP_HAVE_ARG = "0"
    SGI_ABI = "@SGI_ABI@"
    SHELL = "/bin/sh"
    SHLIBS = "-lcrypt -lpthread -ldl  -lutil -lm"
    SHLIB_SUFFIX = ".so"
    SHM_NEEDS_LIBRT = "1"
    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"
    SO = ".cpython-38-x86_64-linux-gnu.so"
    SOABI = "cpython-38-x86_64-linux-gnu"
    SRCDIRS = "Parser Objects Python Modules Modules/_io Programs"
    SRC_GDB_HOOKS = "../Tools/gdb/libpython.py"
    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"
    TCLTK_INCLUDES = ""
    TCLTK_LIBS = ""
    TESTOPTS = ""
    TESTPATH = ""
    TESTPYTHON = "LD_LIBRARY_PATH=/build/python3.8-NMGdww/python3.8-3.8.10/build-shared ./python"
    TESTPYTHONOPTS = ""
    TESTRUNNER = "LD_LIBRARY_PATH=/build/python3.8-NMGdww/python3.8-3.8.10/build-shared ./python ../Tools/scripts/run_tests.py"
    TESTTIMEOUT = "1200"
    TIMEMODULE_LIB = "0"
    TIME_WITH_SYS_TIME = "1"
    TM_IN_SYS_TIME = "0"
    UNICODE_DEPS = "\"
    UNIVERSALSDK = ""
    UPDATE_FILE = "python3.8 ../Tools/scripts/update_file.py"
    USE_COMPUTED_GOTOS = "1"
    VERSION = "3.8"
    VPATH = ".."
    WINDOW_HAS_FLAGS = "1"
    WITH_DECIMAL_CONTEXTVAR = "1"
    WITH_DOC_STRINGS = "1"
    WITH_DTRACE = "1"
    WITH_DYLD = "0"
    WITH_LIBINTL = "0"
    WITH_NEXT_FRAMEWORK = "0"
    WITH_PYMALLOC = "1"
    WITH_VALGRIND = "0"
    X87_DOUBLE_ROUNDING = "0"
    XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax"
    abiflags = ""
    abs_builddir = "/build/python3.8-NMGdww/python3.8-3.8.10/build-shared"
    abs_srcdir = "/build/python3.8-NMGdww/python3.8-3.8.10/build-shared/.."
    base = "/home/user/third_party/repro_poetry/venv"
    datarootdir = "/usr/share"
    exec_prefix = "/usr"
    installed_base = "/usr"
    installed_platbase = "/usr"
    multiarchsubdir = "/x86_64-linux-gnu"
    platbase = "/home/user/third_party/repro_poetry/venv"
    prefix = "/usr"
    projectbase = "/usr/bin"
    py_version = "3.8.10"
    py_version_nodot = "38"
    py_version_short = "3.8"
    srcdir = "/usr/lib/python3.8/config-3.8-x86_64-linux-gnu"
    userbase = "/home/user/.local"

Example pyproject.toml

See above

Poetry Runtime Logs

Loading configuration file /home/user/.config/pypoetry/config.toml
Using virtualenv: /home/user/third_party/repro_poetry/venv
Installing dependencies from lock file

Finding the necessary packages for the current system

Package operations: 0 installs, 2 updates, 0 removals, 5 skipped

  - Updating pydantic-core (2.0.1 -> 2.23.4)
Checking if keyring is available
Backend 'null Keyring' is not suitable
No valid keyring backend was found
Creating new session for pypi.org
Skipping wheel pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp310-none-win32.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp310-none-win_amd64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp311-none-win32.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp311-none-win_amd64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp312-none-win32.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp312-none-win_amd64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp313-none-win32.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp313-none-win_amd64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp38-none-win32.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp38-none-win_amd64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp39-none-win32.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-cp39-none-win_amd64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl as this is not supported by the current environment
Skipping wheel pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl as this is not supported by the current environment
  - Updating pydantic (2.0 -> 2.9.2)
  - Installing annotated-types (0.7.0): Skipped for the following reason: Already installed
  - Installing lib (0.1.0 /home/user/third_party/repro_poetry/lib): Skipped for the following reason: Already installed
  - Installing pydantic-settings (2.5.2): Skipped for the following reason: Already installed
  - Installing python-dotenv (1.0.1): Skipped for the following reason: Already installed
  - Installing typing-extensions (4.12.2): Skipped for the following reason: Already installed

Installing the current project: app (0.1.0)
  - Building package app in editable mode
  - Removed app-0.1.0.dist-info directory from /home/user/third_party/repro_poetry/venv/lib/python3.8/site-packages
  - Adding app.pth to /home/user/third_party/repro_poetry/venv/lib/python3.8/site-packages for /home/user/third_party/repro_poetry/app
  - Adding the app-0.1.0.dist-info directory to /home/user/third_party/repro_poetry/venv/lib/python3.8/site-packages
dimbleby commented 5 days ago

Please provide a way to reproduce.

The pyproject.toml you have given will not produce the behaviour you describe.

ggirol-rc commented 5 days ago

I pushed a reproducer at https://github.com/ggirol-rc/poetry_repro

you can reproduce as:

git clone https://github.com/ggirol-rc/poetry_repro
cd poetry_repro
./reproduce.sh
My output for this procedure

@dev-2004:/tmp % git clone https://github.com/ggirol-rc/poetry_repro
Cloning into 'poetry_repro'...
remote: Enumerating objects: 16, done.
remote: Counting objects: 100% (16/16), done.
remote: Compressing objects: 100% (9/9), done.
Unpacking objects: 100% (16/16), 11.03 KiB | 2.76 MiB/s, done.
remote: Total 16 (delta 4), reused 16 (delta 4), pack-reused 0 (from 0)
@dev-2004:/tmp % cd poetry_repro
@dev-2004:/tmp/poetry_repro master ± ./reproduce.sh
++ mktemp -d
+ venv=/tmp/tmp.WkYBzjLiJa
+ virtualenv /tmp/tmp.WkYBzjLiJa
created virtual environment CPython3.8.10.final.0-64 in 63ms
  creator CPython3Posix(dest=/tmp/tmp.WkYBzjLiJa, clear=False, global=False)
  seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, pkg_resources=latest, via=copy, app_data_dir=/home/ggirol/.local/share/virtualenv/seed-app-data/v1.0.1.debian.1)
  activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
+ source /tmp/tmp.WkYBzjLiJa/bin/activate
++ '[' /tmp/tmp.WkYBzjLiJa/bin/activate = ./reproduce.sh ']'
++ deactivate nondestructive
++ unset -f pydoc
++ '[' -z '' ']'
++ '[' -z '' ']'
++ '[' -n /usr/bin/bash ']'
++ hash -r
++ '[' -z '' ']'
++ unset VIRTUAL_ENV
++ '[' '!' nondestructive = nondestructive ']'
++ VIRTUAL_ENV=/tmp/tmp.WkYBzjLiJa
++ export VIRTUAL_ENV
++ _OLD_VIRTUAL_PATH=/home/ggirol/.nvm/versions/node/v20.11.0/bin:/home/ggirol/.nix-profile/bin:/nix/var/nix/profiles/default/bin:/home/ggirol/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/ggirol/.local/bin:/home/ggirol/bin/usr/bin
++ PATH=/tmp/tmp.WkYBzjLiJa/bin:/home/ggirol/.nvm/versions/node/v20.11.0/bin:/home/ggirol/.nix-profile/bin:/nix/var/nix/profiles/default/bin:/home/ggirol/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/ggirol/.local/bin:/home/ggirol/bin/usr/bin
++ export PATH
++ '[' -z '' ']'
++ '[' -z '' ']'
++ _OLD_VIRTUAL_PS1=
++ '[' x '!=' x ']'
+++ basename /tmp/tmp.WkYBzjLiJa
++ PS1='(tmp.WkYBzjLiJa) '
++ export PS1
++ alias pydoc
++ true
++ '[' -n /usr/bin/bash ']'
++ hash -r
+ pip install poetry
Collecting poetry
  Using cached poetry-1.8.4-py3-none-any.whl (249 kB)
Collecting fastjsonschema<3.0.0,>=2.18.0
  Using cached fastjsonschema-2.20.0-py3-none-any.whl (23 kB)
Collecting dulwich<0.22.0,>=0.21.2
  Using cached dulwich-0.21.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (516 kB)
Collecting keyring<25.0.0,>=24.0.0
  Using cached keyring-24.3.1-py3-none-any.whl (38 kB)
Collecting tomli<3.0.0,>=2.0.1; python_version < "3.11"
  Using cached tomli-2.0.2-py3-none-any.whl (13 kB)
Collecting crashtest<0.5.0,>=0.4.1
  Using cached crashtest-0.4.1-py3-none-any.whl (7.6 kB)
Collecting installer<0.8.0,>=0.7.0
  Using cached installer-0.7.0-py3-none-any.whl (453 kB)
Collecting poetry-plugin-export<2.0.0,>=1.6.0
  Using cached poetry_plugin_export-1.8.0-py3-none-any.whl (10 kB)
Collecting virtualenv<21.0.0,>=20.26.6
  Using cached virtualenv-20.26.6-py3-none-any.whl (6.0 MB)
Collecting pexpect<5.0.0,>=4.7.0
  Using cached pexpect-4.9.0-py2.py3-none-any.whl (63 kB)
Collecting packaging>=23.1
  Using cached packaging-24.1-py3-none-any.whl (53 kB)
Collecting platformdirs<5,>=3.0.0
  Using cached platformdirs-4.3.6-py3-none-any.whl (18 kB)
Collecting pkginfo<2.0,>=1.10
  Using cached pkginfo-1.11.2-py3-none-any.whl (31 kB)
Collecting pyproject-hooks<2.0.0,>=1.0.0
  Using cached pyproject_hooks-1.2.0-py3-none-any.whl (10 kB)
Collecting requests<3.0,>=2.26
  Using cached requests-2.32.3-py3-none-any.whl (64 kB)
Collecting cachecontrol[filecache]<0.15.0,>=0.14.0
  Using cached cachecontrol-0.14.0-py3-none-any.whl (22 kB)
Collecting tomlkit<1.0.0,>=0.11.4
  Using cached tomlkit-0.13.2-py3-none-any.whl (37 kB)
Collecting cleo<3.0.0,>=2.1.0
  Using cached cleo-2.1.0-py3-none-any.whl (78 kB)
Collecting trove-classifiers>=2022.5.19
  Using cached trove_classifiers-2024.10.16-py3-none-any.whl (13 kB)
Collecting build<2.0.0,>=1.0.3
  Using cached build-1.2.2.post1-py3-none-any.whl (22 kB)
Collecting requests-toolbelt<2.0.0,>=1.0.0
  Using cached requests_toolbelt-1.0.0-py2.py3-none-any.whl (54 kB)
Collecting importlib-metadata>=4.4; python_version < "3.10"
  Using cached importlib_metadata-8.5.0-py3-none-any.whl (26 kB)
Collecting poetry-core==1.9.1
  Using cached poetry_core-1.9.1-py3-none-any.whl (309 kB)
Collecting shellingham<2.0,>=1.5
  Using cached shellingham-1.5.4-py2.py3-none-any.whl (9.8 kB)
Collecting urllib3>=1.25
  Using cached urllib3-2.2.3-py3-none-any.whl (126 kB)
Collecting importlib-resources; python_version < "3.9"
  Using cached importlib_resources-6.4.5-py3-none-any.whl (36 kB)
Collecting SecretStorage>=3.2; sys_platform == "linux"
  Using cached SecretStorage-3.3.3-py3-none-any.whl (15 kB)
Collecting jaraco.classes
  Using cached jaraco.classes-3.4.0-py3-none-any.whl (6.8 kB)
Collecting jeepney>=0.4.2; sys_platform == "linux"
  Using cached jeepney-0.8.0-py3-none-any.whl (48 kB)
Collecting distlib<1,>=0.3.7
  Using cached distlib-0.3.9-py2.py3-none-any.whl (468 kB)
Collecting filelock<4,>=3.12.2
  Using cached filelock-3.16.1-py3-none-any.whl (16 kB)
Collecting ptyprocess>=0.5
  Using cached ptyprocess-0.7.0-py2.py3-none-any.whl (13 kB)
Collecting charset-normalizer<4,>=2
  Using cached charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (143 kB)
Collecting idna<4,>=2.5
  Using cached idna-3.10-py3-none-any.whl (70 kB)
Collecting certifi>=2017.4.17
  Using cached certifi-2024.8.30-py3-none-any.whl (167 kB)
Collecting msgpack<2.0.0,>=0.5.2
  Using cached msgpack-1.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (381 kB)
Collecting rapidfuzz<4.0.0,>=3.0.0
  Using cached rapidfuzz-3.9.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.4 MB)
Collecting zipp>=3.20
  Using cached zipp-3.20.2-py3-none-any.whl (9.2 kB)
Collecting cryptography>=2.0
  Using cached cryptography-43.0.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.0 MB)
Collecting more-itertools
  Using cached more_itertools-10.5.0-py3-none-any.whl (60 kB)
Collecting cffi>=1.12; platform_python_implementation != "PyPy"
  Using cached cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (446 kB)
Collecting pycparser
  Using cached pycparser-2.22-py3-none-any.whl (117 kB)
Installing collected packages: fastjsonschema, urllib3, dulwich, zipp, importlib-resources, importlib-metadata, jeepney, pycparser, cffi, cryptography, SecretStorage, more-itertools, jaraco.classes, keyring, tomli, crashtest, installer, poetry-core, poetry-plugin-export, distlib, platformdirs, filelock, virtualenv, ptyprocess, pexpect, packaging, pkginfo, pyproject-hooks, charset-normalizer, idna, certifi, requests, msgpack, cachecontrol, tomlkit, rapidfuzz, cleo, trove-classifiers, build, requests-toolbelt, shellingham, poetry
Successfully installed SecretStorage-3.3.3 build-1.2.2.post1 cachecontrol-0.14.0 certifi-2024.8.30 cffi-1.17.1 charset-normalizer-3.4.0 cleo-2.1.0 crashtest-0.4.1 cryptography-43.0.1 distlib-0.3.9 dulwich-0.21.7 fastjsonschema-2.20.0 filelock-3.16.1 idna-3.10 importlib-metadata-8.5.0 importlib-resources-6.4.5 installer-0.7.0 jaraco.classes-3.4.0 jeepney-0.8.0 keyring-24.3.1 more-itertools-10.5.0 msgpack-1.1.0 packaging-24.1 pexpect-4.9.0 pkginfo-1.11.2 platformdirs-4.3.6 poetry-1.8.4 poetry-core-1.9.1 poetry-plugin-export-1.8.0 ptyprocess-0.7.0 pycparser-2.22 pyproject-hooks-1.2.0 rapidfuzz-3.9.7 requests-2.32.3 requests-toolbelt-1.0.0 shellingham-1.5.4 tomli-2.0.2 tomlkit-0.13.2 trove-classifiers-2024.10.16 urllib3-2.2.3 virtualenv-20.26.6 zipp-3.20.2
+ pushd lib
/tmp/poetry_repro/lib /tmp/poetry_repro
+ poetry install
Updating dependencies
Resolving dependencies... (0.3s)

Package operations: 4 installs, 0 updates, 0 removals

  - Installing typing-extensions (4.12.2)
  - Installing annotated-types (0.7.0)
  - Installing pydantic-core (2.0.1)
  - Installing pydantic (2.0)

Writing lock file

Installing the current project: lib (0.1.0)
+ popd
/tmp/poetry_repro
+ pushd app
/tmp/poetry_repro/app /tmp/poetry_repro
+ poetry install
Updating dependencies
Resolving dependencies... (0.3s)

Package operations: 2 installs, 2 updates, 0 removals

  - Updating pydantic-core (2.0.1 -> 2.23.4)
  - Updating pydantic (2.0 -> 2.9.2)
  - Installing python-dotenv (1.0.1)
  - Installing pydantic-settings (2.6.0)

Writing lock file

Installing the current project: app (0.1.0)
+ pip check
lib 0.1.0 has requirement pydantic==2.0, but you have pydantic 2.9.2.
dimbleby commented 5 days ago

Since you do not declare lib as a path dependency I do not see how locking of app can be satisfied.

Perhaps there is some mix up with https://pypi.org/project/lib/, though since that project does not have a version 0.1.0 that also does not make sense.

I am not at a computer to check but I suspect that your repro will not give the behaviour you are reporting. You may need to clear your cache.

ggirol-rc commented 5 days ago

I pushed to the reproduction repo a commit that renames the projects so that they have names which are actually not taken in pypi, my bad.

About clearing cache, I can reproduce inside a brand new docker container:

podman run -ti ubuntu:20.04

so I doubt the problem is related to cache. This also makes me quite confident that you will be able to reproduce when you are at a computer.

dimbleby commented 5 days ago

I will not be at a computer for some time: but I continue to fail to understand how the app can succeed in locking.

The app does not declare a dependency on a local library, it declares a dependency on a non-existent project, and poetry should say so.

You will want to investigate what is in the lock file, what poetry lock does, and try to make sense of that.

ggirol-rc commented 4 days ago

Here are the parts of uniqueappname/poetry.lock which mention uniquelibname:

[[package]]
name = "uniquelibname"
version = "0.1.0"
description = ""
optional = false
python-versions = "*"
files = []
develop = true

[package.source]
type = "directory"
url = "../uniquelibname"
Full poetry.lock
# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand.

[[package]]
name = "annotated-types"
version = "0.7.0"
description = "Reusable constraint types to use with typing.Annotated"
optional = false
python-versions = ">=3.8"
files = [
    {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"},
    {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"},
]

[package.dependencies]
typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""}

[[package]]
name = "pydantic"
version = "2.9.2"
description = "Data validation using Python type hints"
optional = false
python-versions = ">=3.8"
files = [
    {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"},
    {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"},
]

[package.dependencies]
annotated-types = ">=0.6.0"
pydantic-core = "2.23.4"
typing-extensions = [
    {version = ">=4.12.2", markers = "python_version >= \"3.13\""},
    {version = ">=4.6.1", markers = "python_version < \"3.13\""},
]

[package.extras]
email = ["email-validator (>=2.0.0)"]
timezone = ["tzdata"]

[[package]]
name = "pydantic-core"
version = "2.23.4"
description = "Core functionality for Pydantic validation and serialization"
optional = false
python-versions = ">=3.8"
files = [
    {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"},
    {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"},
    {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"},
    {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"},
    {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"},
    {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"},
    {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"},
    {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"},
    {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"},
    {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"},
    {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"},
    {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"},
    {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"},
    {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"},
    {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"},
    {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"},
    {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"},
    {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"},
    {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"},
    {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"},
    {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"},
    {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"},
    {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"},
    {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"},
    {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"},
    {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"},
    {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"},
    {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"},
    {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"},
    {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"},
    {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"},
    {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"},
    {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"},
    {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"},
    {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"},
    {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"},
    {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"},
    {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"},
    {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"},
    {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"},
    {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"},
    {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"},
    {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"},
    {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"},
    {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"},
    {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"},
    {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"},
    {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"},
    {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"},
    {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"},
    {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"},
    {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"},
    {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"},
    {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"},
    {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"},
    {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"},
    {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"},
    {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"},
    {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"},
    {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"},
    {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"},
    {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"},
    {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"},
    {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"},
    {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"},
    {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"},
    {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"},
    {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"},
    {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"},
    {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"},
    {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"},
    {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"},
    {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"},
    {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"},
    {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"},
    {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"},
    {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"},
    {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"},
    {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"},
    {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"},
    {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"},
    {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"},
    {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"},
    {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"},
    {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"},
    {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"},
    {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"},
    {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"},
    {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"},
]

[package.dependencies]
typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0"

[[package]]
name = "pydantic-settings"
version = "2.6.0"
description = "Settings management using Pydantic"
optional = false
python-versions = ">=3.8"
files = [
    {file = "pydantic_settings-2.6.0-py3-none-any.whl", hash = "sha256:4a819166f119b74d7f8c765196b165f95cc7487ce58ea27dec8a5a26be0970e0"},
    {file = "pydantic_settings-2.6.0.tar.gz", hash = "sha256:44a1804abffac9e6a30372bb45f6cafab945ef5af25e66b1c634c01dd39e0188"},
]

[package.dependencies]
pydantic = ">=2.7.0"
python-dotenv = ">=0.21.0"

[package.extras]
azure-key-vault = ["azure-identity (>=1.16.0)", "azure-keyvault-secrets (>=4.8.0)"]
toml = ["tomli (>=2.0.1)"]
yaml = ["pyyaml (>=6.0.1)"]

[[package]]
name = "python-dotenv"
version = "1.0.1"
description = "Read key-value pairs from a .env file and set them as environment variables"
optional = false
python-versions = ">=3.8"
files = [
    {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"},
    {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"},
]

[package.extras]
cli = ["click (>=5.0)"]

[[package]]
name = "typing-extensions"
version = "4.12.2"
description = "Backported and Experimental Type Hints for Python 3.8+"
optional = false
python-versions = ">=3.8"
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"},
]

[[package]]
name = "uniquelibname"
version = "0.1.0"
description = ""
optional = false
python-versions = "*"
files = []
develop = true

[package.source]
type = "directory"
url = "../uniquelibname"

[metadata]
lock-version = "2.0"
python-versions = "^3.8"
content-hash = "bb37516606268bab7f7e024ef09e00ccd1480c27ec06b00b44eca8f7c25639a7"
```            
dimbleby commented 2 days ago

this is basically duplicate #8328

probably the lines of code identified in that issue should just be removed

pull request welcome, I expect