SOUPy: Stochastic PDE-constrained optimization under high-dimensional uncertainty in Python | Synapse