mpdecimal should be a hard dependency.
In 3.12, python hangs if you do
import sys; sys.set_int_max_str_digits(0); 10**10000
It took me a few hours of debugging and a bogus upstream report to figure out that it's due to the missing mpdecimal dependency, which is now used for large integer operations. The optdepend description 'for decimal' doesn't make it at all obvious.
mpdecimal is a tiny library which is needed for core module functionality (and it is generally bundled, we are explicitly removing it from the source tree in favor of the external library), it should be a full dependency.