code: def prox_l1l2(v, alpha, beta, axis=None):
      r
  
      return prox_l2(prox_l1(v, alpha), beta, axis)
docs: r"""Compute the proximal operator of the :math:`\ell_1` plus
      :math:`\ell_2` norm (compound shrinkage/soft thresholding)
      :cite:`wohlberg-2012-local` :cite:`chartrand-2013-nonconvex`
  
       .. math::
        \mathrm{prox}_{f}(\mathbf{v}) =
        \mathcal{S}_{1,2,\alpha,\beta}(\mathbf{v}) =
        \mathcal{S}_{2,\beta}(\mathcal{S}_{1,\alpha}(\mathbf{v}))
  
      where :math:`f(\mathbf{x}) = \alpha \|\mathbf{x}\|_1 +
      \beta \|\mathbf{x}\|_2`.
  
  
      Parameters
      ----------
      v : array_like
        Input array :math:`\mathbf{v}`
      alpha : float or array_like
        Parameter :math:`\alpha`
      beta : float or array_like
        Parameter :math:`\beta`
      axis : None or int or tuple of ints, optional (default None)
        Axes of `v` over which to compute the :math:`\ell_2` norm. If
        `None`, an entire multi-dimensional array is treated as a
        vector. If axes are specified, then distinct norm values are
        computed over the indices of the remaining axes of input array
        `v`, which is equivalent to the proximal operator of the sum over
        these values (i.e. an :math:`\ell_{2,1}` norm).
  
      Returns
      -------
      x : ndarray
        Output array