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

Poetry forgetting some dependencies (mix of extras, groups and version markers) #9634

Open
ewjoachim opened this issue Aug 16, 2024 · 6 comments
Labels
kind/bug Something isn't working as expected status/triage This issue needs to be triaged

Comments

@ewjoachim
Copy link

ewjoachim commented Aug 16, 2024

Description

I am the maintainer of a package, procrastinate. Procrastinate is compatible with py3.8+
This package provides an optional Sphinx extension, so the package has sphinx as an extra dependency.

[tool.poetry.dependencies]
python = "^3.8"
sphinx = { version = "*", optional = true }

[tool.poetry.extras]
sphinx = ["sphinx"]

Procrastinate, independently, also has a doc that is built with sphinx.
Building procrastinate's own doc needs Sphinx v8 (but the Sphinx extension provided by Procrastinate does not)
Sphinx v8 only supports py3.10+
Consequently, Procrastinate has an optional dependency group that includes sphinx with v8+ (only for py3.10+) (the doc is built with a modern python, so all is well)

[tool.poetry.group.docs]
optional = true

[tool.poetry.group.docs.dependencies]
Sphinx = { version = ">=8", python = ">=3.10" }

On Sphinx v7, Sphinx has a dependency to importlib-metadata but only for py < 3.10
On v8, they dropped this dependency, given py < 3.10 isn't required anymore.

"importlib-metadata>=6.0; python_version < '3.10'",

https://github.com/sphinx-doc/sphinx/blob/v7.4.7/pyproject.toml#L74C6-L74C24

When installing my env with py3.8, poetry says that importlib-metadata is Skipped for the following reason: Not required, and so it's not installed, but it IS required (and it fails at runtime because it's not there)

$ poetry env use 3.8
$ poetry install --sync --all-extras
$ poetry install --sync --all-extras --without docs  # same issue
$ poetry run python -c 'import importlib_metadata'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'importlib_metadata'

(below is a simple reproducer pyproject.toml that showcases the issue)

Interestingly: here we have the issue without the docs group. If I remove the docs group from pyproject.toml, then it works normally.
importlib-metadata is a part of poetry.lock, and sphinx appears twice in poetry.lock (once with v7 and once with v8), as expected.

Workarounds

None identified

Poetry Installation Method

pipx

Operating System

Mac OS 14.2.1 (23C71) (Sonoma)

Poetry Version

Poetry (version 1.8.3)

Poetry Configuration

cache-dir = "/Users/joachim/Library/Caches/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"  # /Users/joachim/Library/Caches/pypoetry/virtualenvs
virtualenvs.prefer-active-python = false
virtualenvs.prompt = "{project_name}-py{python_version}"
warnings.export = true

Python Sysconfig

Platform: "macosx-14-arm64"
Python version: "3.8"
Current installation scheme: "posix_prefix"

Paths:
	data = "/Users/joachim/Library/Caches/pypoetry/virtualenvs/test-sphinx-qoVNV-Y4-py3.8"
	include = "/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/include/python3.8"
	platinclude = "/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/include/python3.8"
	platlib = "/Users/joachim/Library/Caches/pypoetry/virtualenvs/test-sphinx-qoVNV-Y4-py3.8/lib/python3.8/site-packages"
	platstdlib = "/Users/joachim/Library/Caches/pypoetry/virtualenvs/test-sphinx-qoVNV-Y4-py3.8/lib/python3.8"
	purelib = "/Users/joachim/Library/Caches/pypoetry/virtualenvs/test-sphinx-qoVNV-Y4-py3.8/lib/python3.8/site-packages"
	scripts = "/Users/joachim/Library/Caches/pypoetry/virtualenvs/test-sphinx-qoVNV-Y4-py3.8/bin"
	stdlib = "/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/lib/python3.8"

Variables:
	ABIFLAGS = ""
	AC_APPLE_UNIVERSAL_BUILD = "0"
	AIX_GENUINE_CPLUSPLUS = "0"
	ALT_SOABI = "0"
	ANDROID_API_LEVEL = "0"
	AR = "ar"
	ARFLAGS = "rcs"
	BASECFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic"
	BASECPPFLAGS = ""
	BASEMODLIBS = ""
	BINDIR = "/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/bin"
	BINLIBDEST = "/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/lib/python3.8"
	BLDLIBRARY = ""
	BLDSHARED = "clang -bundle -undefined dynamic_lookup -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk"
	BUILDEXE = ".exe"
	BUILDPYTHON = "python.exe"
	BUILD_GNU_TYPE = "arm-apple-darwin23.4.0"
	BYTESTR_DEPS = "\"
	CC = "clang"
	CCSHARED = ""
	CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk"
	CFLAGSFORSHARED = ""
	CFLAGS_ALIASING = "-fno-strict-aliasing"
	CFLAGS_NODIST = ""
	CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in"
	CONFIGURE_CFLAGS = "-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk"
	CONFIGURE_CFLAGS_NODIST = "-I/opt/homebrew/include -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration"
	CONFIGURE_CPPFLAGS = "-I/opt/homebrew/include"
	CONFIGURE_LDFLAGS = "-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk"
	CONFIGURE_LDFLAGS_NODIST = "-L/opt/homebrew/lib -Wl,-rpath,/opt/homebrew/lib"
	CONFIG_ARGS = "'--prefix=/opt/homebrew/opt/[email protected]' '--enable-ipv6' '--datarootdir=/opt/homebrew/opt/[email protected]/share' '--datadir=/opt/homebrew/opt/[email protected]/share' '--enable-loadable-sqlite-extensions' '--without-ensurepip' '--with-openssl=/opt/homebrew/opt/openssl@3' '--with-system-libmpdec' '--enable-framework=/opt/homebrew/opt/[email protected]/Frameworks' '--with-dtrace' 'MACOSX_DEPLOYMENT_TARGET=14' '--with-tcltk-includes=-I/opt/homebrew/opt/tcl-tk/include/tcl-tk' '--with-tcltk-libs=-L/opt/homebrew/opt/tcl-tk/lib -ltcl8.6 -ltk8.6' 'CFLAGS=-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk' 'CFLAGS_NODIST=-I/opt/homebrew/include' 'LDFLAGS=-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk' 'LDFLAGS_NODIST=-L/opt/homebrew/lib -Wl,-rpath,/opt/homebrew/lib' 'CPPFLAGS=-I/opt/homebrew/include' 'CC=clang' 'PKG_CONFIG_PATH=/opt/homebrew/opt/mpdecimal/lib/pkgconfig:/opt/homebrew/opt/openssl@3/lib/pkgconfig:/opt/homebrew/opt/readline/lib/pkgconfig:/opt/homebrew/opt/sqlite/lib/pkgconfig:/opt/homebrew/opt/tcl-tk/lib/pkgconfig:/opt/homebrew/opt/xz/lib/pkgconfig' 'PKG_CONFIG_LIBDIR=/usr/lib/pkgconfig:/opt/homebrew/Library/Homebrew/os/mac/pkgconfig/14'"
	CONFINCLUDEDIR = "/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/include"
	CONFINCLUDEPY = "/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/include/python3.8"
	COREPYTHONPATH = ""
	COVERAGE_INFO = "/private/tmp/pythonA3.8-20240319-4779-5q5ywm/Python-3.8.19/coverage.info"
	COVERAGE_REPORT = "/private/tmp/pythonA3.8-20240319-4779-5q5ywm/Python-3.8.19/lcov-report"
	COVERAGE_REPORT_OPTIONS = "--no-branch-coverage --title "CPython lcov report""
	CPPFLAGS = "-I. -I./Include -I/opt/homebrew/include"
	CXX = "clang++"
	DESTDIRS = "/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8 /opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/lib /opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/lib/python3.8 /opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/lib/python3.8/lib-dynload"
	DESTLIB = "/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/lib/python3.8"
	DESTPATH = ""
	DESTSHARED = "/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/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/sbin/dtrace"
	DTRACE_DEPS = "\"
	DTRACE_HEADERS = "Include/pydtrace_probes.h"
	DTRACE_OBJS = ""
	DYNLOADFILE = "dynload_shlib.o"
	ENABLE_IPV6 = "1"
	ENSUREPIP = "no"
	EXE = ""
	EXEMODE = "755"
	EXTRATESTOPTS = ""
	EXTRA_CFLAGS = ""
	EXT_SUFFIX = ".cpython-38-darwin.so"
	FILEMODE = "644"
	FLOAT_WORDS_BIGENDIAN = "0"
	FLOCK_NEEDS_LIBBSD = "0"
	GETPGRP_HAVE_ARG = "0"
	GETTIMEOFDAY_NO_TZ = "0"
	GITBRANCH = ""
	GITTAG = ""
	GITVERSION = ""
	GNULD = "no"
	HAVE_ACCEPT4 = "0"
	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 = "0"
	HAVE_ATANH = "1"
	HAVE_BIND_TEXTDOMAIN_CODESET = "0"
	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 = "1"
	HAVE_BROKEN_UNSETENV = "0"
	HAVE_BUILTIN_ATOMIC = "1"
	HAVE_CHFLAGS = "1"
	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 = "0"
	HAVE_CRYPT_H = "0"
	HAVE_CRYPT_R = "0"
	HAVE_CTERMID = "1"
	HAVE_CTERMID_R = "1"
	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 = "0"
	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 = "0"
	HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH = "1"
	HAVE_DYNAMIC_LOADING = "1"
	HAVE_ENDIAN_H = "0"
	HAVE_EPOLL = "0"
	HAVE_EPOLL_CREATE1 = "0"
	HAVE_ERF = "1"
	HAVE_ERFC = "1"
	HAVE_ERRNO_H = "1"
	HAVE_EXECV = "1"
	HAVE_EXPLICIT_BZERO = "0"
	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 = "0"
	HAVE_FDOPENDIR = "1"
	HAVE_FDWALK = "0"
	HAVE_FEXECVE = "0"
	HAVE_FINITE = "0"
	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 = "0"
	HAVE_GAI_STRERROR = "1"
	HAVE_GAMMA = "0"
	HAVE_GCC_ASM_FOR_MC68881 = "0"
	HAVE_GCC_ASM_FOR_X64 = "0"
	HAVE_GCC_ASM_FOR_X87 = "0"
	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 = "1"
	HAVE_GETHOSTBYNAME_R = "0"
	HAVE_GETHOSTBYNAME_R_3_ARG = "0"
	HAVE_GETHOSTBYNAME_R_5_ARG = "0"
	HAVE_GETHOSTBYNAME_R_6_ARG = "0"
	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 = "0"
	HAVE_GETRANDOM_SYSCALL = "0"
	HAVE_GETRESGID = "0"
	HAVE_GETRESUID = "0"
	HAVE_GETSID = "1"
	HAVE_GETSPENT = "0"
	HAVE_GETSPNAM = "0"
	HAVE_GETTIMEOFDAY = "1"
	HAVE_GETWD = "1"
	HAVE_GLIBC_MEMMOVE_BUG = "0"
	HAVE_GRP_H = "1"
	HAVE_HSTRERROR = "1"
	HAVE_HTOLE64 = "0"
	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 = "1"
	HAVE_LANGINFO_H = "1"
	HAVE_LARGEFILE_SUPPORT = "0"
	HAVE_LCHFLAGS = "1"
	HAVE_LCHMOD = "1"
	HAVE_LCHOWN = "1"
	HAVE_LGAMMA = "1"
	HAVE_LIBDL = "1"
	HAVE_LIBDLD = "0"
	HAVE_LIBIEEE = "0"
	HAVE_LIBINTL_H = "0"
	HAVE_LIBREADLINE = "1"
	HAVE_LIBRESOLV = "0"
	HAVE_LIBSENDFILE = "0"
	HAVE_LIBUTIL_H = "0"
	HAVE_LINK = "1"
	HAVE_LINKAT = "1"
	HAVE_LINUX_CAN_BCM_H = "0"
	HAVE_LINUX_CAN_H = "0"
	HAVE_LINUX_CAN_RAW_FD_FRAMES = "0"
	HAVE_LINUX_CAN_RAW_H = "0"
	HAVE_LINUX_MEMFD_H = "0"
	HAVE_LINUX_NETLINK_H = "0"
	HAVE_LINUX_QRTR_H = "0"
	HAVE_LINUX_RANDOM_H = "0"
	HAVE_LINUX_TIPC_H = "0"
	HAVE_LINUX_VM_SOCKETS_H = "0"
	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 = "0"
	HAVE_MEMORY_H = "1"
	HAVE_MEMRCHR = "0"
	HAVE_MKDIRAT = "1"
	HAVE_MKFIFO = "1"
	HAVE_MKFIFOAT = "1"
	HAVE_MKNOD = "1"
	HAVE_MKNODAT = "1"
	HAVE_MKTIME = "1"
	HAVE_MMAP = "1"
	HAVE_MREMAP = "0"
	HAVE_NCURSES_H = "1"
	HAVE_NDIR_H = "0"
	HAVE_NETPACKET_PACKET_H = "0"
	HAVE_NET_IF_H = "1"
	HAVE_NICE = "1"
	HAVE_OPENAT = "1"
	HAVE_OPENPTY = "1"
	HAVE_PATHCONF = "1"
	HAVE_PAUSE = "1"
	HAVE_PIPE2 = "0"
	HAVE_PLOCK = "0"
	HAVE_POLL = "1"
	HAVE_POLL_H = "1"
	HAVE_POSIX_FADVISE = "0"
	HAVE_POSIX_FALLOCATE = "0"
	HAVE_POSIX_SPAWN = "1"
	HAVE_POSIX_SPAWNP = "1"
	HAVE_PREAD = "1"
	HAVE_PREADV = "1"
	HAVE_PREADV2 = "0"
	HAVE_PRLIMIT = "0"
	HAVE_PROCESS_H = "0"
	HAVE_PROTOTYPES = "1"
	HAVE_PTHREAD_CONDATTR_SETCLOCK = "0"
	HAVE_PTHREAD_DESTRUCTOR = "0"
	HAVE_PTHREAD_GETCPUCLOCKID = "0"
	HAVE_PTHREAD_H = "1"
	HAVE_PTHREAD_INIT = "0"
	HAVE_PTHREAD_KILL = "1"
	HAVE_PTHREAD_SIGMASK = "1"
	HAVE_PTY_H = "0"
	HAVE_PUTENV = "1"
	HAVE_PWRITE = "1"
	HAVE_PWRITEV = "1"
	HAVE_PWRITEV2 = "0"
	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 = "0"
	HAVE_SCHED_SETAFFINITY = "0"
	HAVE_SCHED_SETPARAM = "0"
	HAVE_SCHED_SETSCHEDULER = "0"
	HAVE_SEM_GETVALUE = "1"
	HAVE_SEM_OPEN = "1"
	HAVE_SEM_TIMEDWAIT = "0"
	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 = "0"
	HAVE_SETRESUID = "0"
	HAVE_SETREUID = "1"
	HAVE_SETSID = "1"
	HAVE_SETUID = "1"
	HAVE_SETVBUF = "1"
	HAVE_SHADOW_H = "0"
	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 = "0"
	HAVE_SIGWAIT = "1"
	HAVE_SIGWAITINFO = "0"
	HAVE_SNPRINTF = "1"
	HAVE_SOCKADDR_ALG = "0"
	HAVE_SOCKADDR_SA_LEN = "1"
	HAVE_SOCKADDR_STORAGE = "1"
	HAVE_SOCKETPAIR = "1"
	HAVE_SPAWN_H = "1"
	HAVE_SSIZE_T = "1"
	HAVE_STATVFS = "1"
	HAVE_STAT_TV_NSEC = "0"
	HAVE_STAT_TV_NSEC2 = "1"
	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 = "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 = "1"
	HAVE_STRUCT_STAT_ST_BLKSIZE = "1"
	HAVE_STRUCT_STAT_ST_BLOCKS = "1"
	HAVE_STRUCT_STAT_ST_FLAGS = "1"
	HAVE_STRUCT_STAT_ST_GEN = "1"
	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 = "0"
	HAVE_SYS_EVENT_H = "1"
	HAVE_SYS_FILE_H = "1"
	HAVE_SYS_IOCTL_H = "1"
	HAVE_SYS_KERN_CONTROL_H = "1"
	HAVE_SYS_LOADAVG_H = "0"
	HAVE_SYS_LOCK_H = "1"
	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 = "0"
	HAVE_SYS_SOCKET_H = "1"
	HAVE_SYS_STATVFS_H = "1"
	HAVE_SYS_STAT_H = "1"
	HAVE_SYS_SYSCALL_H = "1"
	HAVE_SYS_SYSMACROS_H = "0"
	HAVE_SYS_SYS_DOMAIN_H = "1"
	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 = "0"
	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 = "1"
	HAVE_UTIMENSAT = "1"
	HAVE_UTIMES = "1"
	HAVE_UTIME_H = "1"
	HAVE_UUID_CREATE = "0"
	HAVE_UUID_ENC_BE = "0"
	HAVE_UUID_GENERATE_TIME_SAFE = "0"
	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 = "arm-apple-darwin23.4.0"
	INCLDIRSTOMAKE = "/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/include /opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/include /opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/include/python3.8 /opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/include/python3.8"
	INCLUDEDIR = "/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/include"
	INCLUDEPY = "/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/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 = "Python.framework/Versions/3.8/Python"
	IO_H = "Modules/_io/_iomodule.h"
	IO_OBJS = "\"
	LDCXXSHARED = "clang++ -bundle -undefined dynamic_lookup"
	LDFLAGS = "-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk"
	LDFLAGS_NODIST = ""
	LDLIBRARY = "Python.framework/Versions/3.8/Python"
	LDLIBRARYDIR = ""
	LDSHARED = "clang -bundle -undefined dynamic_lookup -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk"
	LDVERSION = "3.8"
	LIBC = ""
	LIBDEST = "/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/lib/python3.8"
	LIBDIR = "/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/lib"
	LIBFFI_INCLUDEDIR = ""
	LIBM = ""
	LIBOBJDIR = "Python/"
	LIBOBJS = ""
	LIBPC = "/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/lib/pkgconfig"
	LIBPL = "/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/lib/python3.8/config-3.8-darwin"
	LIBPYTHON = ""
	LIBRARY = "libpython3.8.a"
	LIBRARY_OBJS = "\"
	LIBRARY_OBJS_OMIT_FROZEN = "\"
	LIBS = "-ldl   -framework CoreFoundation"
	LIBSUBDIRS = "tkinter tkinter/test tkinter/test/test_tkinter \"
	LINKCC = "clang"
	LINKFORSHARED = "-Wl,-stack_size,1000000  -framework CoreFoundation /opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/Python"
	LIPO_32BIT_FLAGS = ""
	LIPO_INTEL64_FLAGS = ""
	LLVM_PROF_ERR = "no"
	LLVM_PROF_FILE = "LLVM_PROFILE_FILE="code-%p.profclangr""
	LLVM_PROF_MERGER = "/usr/bin/xcrun llvm-profdata merge -output=code.profclangd *.profclangr"
	LN = "ln"
	LOCALMODLIBS = ""
	MACHDEP = "darwin"
	MACHDEP_OBJS = ""
	MACHDESTLIB = "/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/lib/python3.8"
	MACOSX_DEPLOYMENT_TARGET = "14"
	MAINCC = "clang"
	MAJOR_IN_MKDEV = "0"
	MAJOR_IN_SYSMACROS = "0"
	MAKESETUP = "./Modules/makesetup"
	MANDIR = "/opt/homebrew/opt/[email protected]/share/man"
	MKDIR_P = "./install-sh -c -d"
	MODBUILT_NAMES = "posix  errno  pwd  _sre  _codecs  _weakref  _functools  _operator  _collections  _abc  itertools  atexit  _signal  _stat  time  _thread  _locale  _io  faulthandler  _tracemalloc  _symtable  xxsubtype"
	MODDISABLED_NAMES = ""
	MODLIBS = ""
	MODOBJS = "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/xxsubtype.o"
	MODULE_OBJS = "\"
	MULTIARCH = "darwin"
	MULTIARCH_CPPFLAGS = "-DMULTIARCH=\"darwin\""
	MVWDELCH_IS_EXPRESSION = "1"
	NO_AS_NEEDED = ""
	OBJECT_OBJS = "\"
	OPENSSL_INCLUDES = "-I/opt/homebrew/opt/openssl@3/include"
	OPENSSL_LDFLAGS = "-L/opt/homebrew/opt/openssl@3/lib"
	OPENSSL_LIBS = "-lssl -lcrypto"
	OPT = "-DNDEBUG -g -fwrapv -O3 -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-instr-generate"
	PGO_PROF_USE_FLAG = "-fprofile-instr-use=code.profclangd"
	POBJS = "\"
	POSIX_SEMAPHORES_NOT_ENABLED = "0"
	PROFILE_TASK = "-m test --pgo"
	PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "0"
	PTHREAD_SYSTEM_SCHED_SUPPORTED = "0"
	PURIFY = ""
	PY3LIBRARY = ""
	PYLONG_BITS_IN_DIGIT = "0"
	PYTHON = "python"
	PYTHONFRAMEWORK = "Python"
	PYTHONFRAMEWORKDIR = "Python.framework"
	PYTHONFRAMEWORKINSTALLDIR = "/opt/homebrew/opt/[email protected]/Frameworks/Python.framework"
	PYTHONFRAMEWORKPREFIX = "/opt/homebrew/opt/[email protected]/Frameworks"
	PYTHONPATH = ""
	PYTHON_FOR_BUILD = "./python.exe -E"
	PYTHON_FOR_REGEN = "python3"
	PYTHON_HEADERS = "\"
	PYTHON_OBJS = "\"
	PY_BUILTIN_MODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk -I/opt/homebrew/include -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration  -I./Include/internal -I. -I./Include -I/opt/homebrew/include -DPy_BUILD_CORE_BUILTIN"
	PY_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk"
	PY_CFLAGS_NODIST = "-I/opt/homebrew/include -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 -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk -I/opt/homebrew/include -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration  -I./Include/internal -I. -I./Include -I/opt/homebrew/include -DPy_BUILD_CORE"
	PY_CORE_LDFLAGS = "-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk -L/opt/homebrew/lib -Wl,-rpath,/opt/homebrew/lib"
	PY_CPPFLAGS = "-I. -I./Include -I/opt/homebrew/include"
	PY_FORMAT_SIZE_T = ""z""
	PY_LDFLAGS = "-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk"
	PY_LDFLAGS_NODIST = "-L/opt/homebrew/lib -Wl,-rpath,/opt/homebrew/lib"
	PY_SSL_DEFAULT_CIPHERS = "1"
	PY_SSL_DEFAULT_CIPHER_STRING = "0"
	PY_STDMODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk -I/opt/homebrew/include -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration  -I./Include/internal -I. -I./Include -I/opt/homebrew/include"
	Py_DEBUG = "0"
	Py_ENABLE_SHARED = "0"
	Py_HASH_ALGORITHM = "0"
	Py_TRACE_REFS = "0"
	QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \"
	READELF = ":"
	RESSRCDIR = "Mac/Resources/framework"
	RETSIGTYPE = "void"
	RUNSHARED = "DYLD_FRAMEWORK_PATH=/private/tmp/pythonA3.8-20240319-4779-5q5ywm/Python-3.8.19"
	SCRIPTDIR = "/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/lib"
	SETPGRP_HAVE_ARG = "0"
	SGI_ABI = "@SGI_ABI@"
	SHELL = "/bin/sh"
	SHLIBS = "-ldl   -framework CoreFoundation"
	SHLIB_SUFFIX = ".so"
	SHM_NEEDS_LIBRT = "0"
	SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0"
	SITEPATH = ""
	SIZEOF_DOUBLE = "8"
	SIZEOF_FLOAT = "4"
	SIZEOF_FPOS_T = "8"
	SIZEOF_INT = "4"
	SIZEOF_LONG = "8"
	SIZEOF_LONG_DOUBLE = "8"
	SIZEOF_LONG_LONG = "8"
	SIZEOF_OFF_T = "8"
	SIZEOF_PID_T = "4"
	SIZEOF_PTHREAD_KEY_T = "8"
	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-darwin.so"
	SOABI = "cpython-38-darwin"
	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 = ""
	SYS_SELECT_WITH_SYS_TIME = "1"
	TCLTK_INCLUDES = "-I/opt/homebrew/opt/tcl-tk/include/tcl-tk"
	TCLTK_LIBS = "-L/opt/homebrew/opt/tcl-tk/lib -ltcl8.6 -ltk8.6"
	TESTOPTS = ""
	TESTPATH = ""
	TESTPYTHON = "DYLD_FRAMEWORK_PATH=/private/tmp/pythonA3.8-20240319-4779-5q5ywm/Python-3.8.19 ./python.exe"
	TESTPYTHONOPTS = ""
	TESTRUNNER = "DYLD_FRAMEWORK_PATH=/private/tmp/pythonA3.8-20240319-4779-5q5ywm/Python-3.8.19 ./python.exe ./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 ./Tools/scripts/update_file.py"
	USE_COMPUTED_GOTOS = "0"
	VERSION = "3.8"
	WINDOW_HAS_FLAGS = "1"
	WITH_DECIMAL_CONTEXTVAR = "1"
	WITH_DOC_STRINGS = "1"
	WITH_DTRACE = "1"
	WITH_DYLD = "1"
	WITH_LIBINTL = "0"
	WITH_NEXT_FRAMEWORK = "1"
	WITH_PYMALLOC = "1"
	WITH_VALGRIND = "0"
	X87_DOUBLE_ROUNDING = "0"
	XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax"
	abiflags = ""
	abs_builddir = "/private/tmp/pythonA3.8-20240319-4779-5q5ywm/Python-3.8.19"
	abs_srcdir = "/private/tmp/pythonA3.8-20240319-4779-5q5ywm/Python-3.8.19"
	base = "/Users/joachim/Library/Caches/pypoetry/virtualenvs/test-sphinx-qoVNV-Y4-py3.8"
	datarootdir = "/opt/homebrew/opt/[email protected]/share"
	exec_prefix = "/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8"
	installed_base = "/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8"
	installed_platbase = "/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8"
	platbase = "/Users/joachim/Library/Caches/pypoetry/virtualenvs/test-sphinx-qoVNV-Y4-py3.8"
	prefix = "/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.8"
	projectbase = "/opt/homebrew/Cellar/[email protected]/3.8.19/Frameworks/Python.framework/Versions/3.8/bin"
	py_version = "3.8.19"
	py_version_nodot = "38"
	py_version_short = "3.8"
	srcdir = "/opt/homebrew/Cellar/[email protected]/3.8.19/Frameworks/Python.framework/Versions/3.8/lib/python3.8/config-3.8-darwin"
	userbase = "/Users/joachim/Library/Python/3.8"

Example pyproject.toml

[tool.poetry]
name = "test-sphinx"
version = "0.1.0"
description = ""
authors = ["Your Name <[email protected]>"]
package-mode = false

[tool.poetry.dependencies]
python = "^3.8"
sphinx = { version = "*", optional = true }

[tool.poetry.extras]
sphinx = ["sphinx"]

[tool.poetry.group.docs.dependencies]
Sphinx = { version = ">=8", python = ">=3.10" }

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

Poetry Runtime Logs

(see `Installing importlib-metadata (8.2.0): Skipped for the following reason: Not required`)


Using virtualenv: /Users/joachim/Library/Caches/pypoetry/virtualenvs/test-sphinx-qoVNV-Y4-py3.8
Installing dependencies from lock file

Finding the necessary packages for the current system

Package operations: 0 installs, 0 updates, 0 removals, 24 skipped

  - Installing zipp (3.20.0): Pending...
  - Installing zipp (3.20.0): Skipped for the following reason: Not required
  - Installing importlib-metadata (8.2.0): Pending...
  - Installing importlib-metadata (8.2.0): Skipped for the following reason: Not required
  - Installing alabaster (0.7.13): Pending...
  - Installing alabaster (0.7.13): Skipped for the following reason: Already installed
  - Installing babel (2.16.0): Pending...
  - Installing babel (2.16.0): Skipped for the following reason: Already installed
  - Installing certifi (2024.7.4): Pending...
  - Installing certifi (2024.7.4): Skipped for the following reason: Already installed
  - Installing charset-normalizer (3.3.2): Pending...
  - Installing charset-normalizer (3.3.2): Skipped for the following reason: Already installed
  - Installing docutils (0.20.1): Pending...
  - Installing docutils (0.20.1): Skipped for the following reason: Already installed
  - Installing idna (3.7): Pending...
  - Installing idna (3.7): Skipped for the following reason: Already installed
  - Installing imagesize (1.4.1): Pending...
  - Installing imagesize (1.4.1): Skipped for the following reason: Already installed
  - Installing jinja2 (3.1.4): Pending...
  - Installing jinja2 (3.1.4): Skipped for the following reason: Already installed
  - Installing markupsafe (2.1.5): Pending...
  - Installing markupsafe (2.1.5): Skipped for the following reason: Already installed
  - Installing packaging (24.1): Pending...
  - Installing packaging (24.1): Skipped for the following reason: Already installed
  - Installing pygments (2.18.0): Pending...
  - Installing pygments (2.18.0): Skipped for the following reason: Already installed
  - Installing pytz (2024.1): Pending...
  - Installing pytz (2024.1): Skipped for the following reason: Already installed
  - Installing requests (2.32.3): Pending...
  - Installing requests (2.32.3): Skipped for the following reason: Already installed
  - Installing snowballstemmer (2.2.0): Pending...
  - Installing snowballstemmer (2.2.0): Skipped for the following reason: Already installed
  - Installing sphinx (7.1.2): Pending...
  - Installing sphinx (7.1.2): Skipped for the following reason: Already installed
  - Installing sphinxcontrib-applehelp (1.0.4): Pending...
  - Installing sphinxcontrib-applehelp (1.0.4): Skipped for the following reason: Already installed
  - Installing sphinxcontrib-devhelp (1.0.2): Pending...
  - Installing sphinxcontrib-devhelp (1.0.2): Skipped for the following reason: Already installed
  - Installing sphinxcontrib-htmlhelp (2.0.1): Pending...
  - Installing sphinxcontrib-htmlhelp (2.0.1): Skipped for the following reason: Already installed
  - Installing sphinxcontrib-jsmath (1.0.1): Pending...
  - Installing sphinxcontrib-jsmath (1.0.1): Skipped for the following reason: Already installed
  - Installing sphinxcontrib-qthelp (1.0.3): Pending...
  - Installing sphinxcontrib-qthelp (1.0.3): Skipped for the following reason: Already installed
  - Installing sphinxcontrib-serializinghtml (1.1.5): Pending...
  - Installing sphinxcontrib-serializinghtml (1.1.5): Skipped for the following reason: Already installed
  - Installing urllib3 (2.2.2): Pending...
  - Installing urllib3 (2.2.2): Skipped for the following reason: Already installed
@ewjoachim ewjoachim added kind/bug Something isn't working as expected status/triage This issue needs to be triaged labels Aug 16, 2024
@dimbleby
Copy link
Contributor

dimbleby commented Aug 16, 2024

this is a variation on "recording package.optional in poetry.lock is a bad idea". #3188 is another example.

in this case it is get_extra_package_names() that does not recognise that importlib-metadata is required by the sphinx extra: because it sees that extra and assumes that the first sphinx it finds will be just fine for the rest of its analysis. But the first sphinx it finds is the newer one that does not need importlib-metadata, and after that it never considers the other.

the Right Way to fix this IMO is not to put optional in the lockfile at all: this is a misunderstanding of what the lockfile really is. Rather the installer-solver ought to start out knowing what extras it is solving for, and just return the right answer.

I expect that sorting that out will be quite the tangle for someone.

@radoering
Copy link
Member

Might be fixed in the main branch.

1.8.3:

$ poetry install --dry-run --all-extras | grep importlib-metadata
  - Installing importlib-metadata (8.2.0): Skipped for the following reason: Not required

main:

$ poetry install --dry-run --all-extras | grep importlib-metadata
  - Installing importlib-metadata (8.2.0)

@dimbleby
Copy link
Contributor

Pretty sure it isn't, maybe the luck of which sphinx happens to show up first during get_extra_package_names() is unstable

@dimbleby
Copy link
Contributor

Apparently I knew about this at #6372 (comment)

@ewjoachim ewjoachim changed the title Poetry forgetting some dependencies (mix of extras, groups and version markers Poetry forgetting some dependencies (mix of extras, groups and version markers) Aug 25, 2024
@Secrus
Copy link
Member

Secrus commented Oct 13, 2024

I am going to consider this a solved issue.

@Secrus Secrus closed this as not planned Won't fix, can't repro, duplicate, stale Oct 13, 2024
@dimbleby
Copy link
Contributor

This is not a solved issue

@Secrus Secrus reopened this Oct 13, 2024
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

4 participants