docs: def Jpjmcoeff(ls, m, shift=False) -> sympy.Expr:
      r'''Eigenvalue of the $\Op{J}_{+}$ (:class:`Jplus`) operator
  
      .. math::
  
          \Op{J}_{+} \ket{s, m} = \sqrt{s (s+1) - m (m+1)} \ket{s, m}
  
      where the multiplicity $s$ is implied by the size of the Hilbert space
      `ls`: there are $2s+1$ eigenstates with $m = -s, -s+1, \dots, s$.
  
      Args:
          ls (LocalSpace): The Hilbert space in which the $\Op{J}_{+}$ operator
              acts.
          m (str or int): If str, the label of the basis state of `hs` to which
              the operator is applied. If integer together with ``shift=True``,
              the zero-based index of the basis state. Otherwise, directly the
              quantum number $m$.
          shift (bool): If True for a integer value of `m`, treat `m` as the
              zero-based index of the basis state (i.e., shift `m` down by $s$ to
              obtain the quantum number $m$)
      '''
      assert isinstance(ls, SpinSpace)
      n = ls.dimension
      s = sympify(n - 1) / 2
      assert n == int(2 * s + 1)
      if isinstance(m, str):
          m = ls.basis_labels.index(m) - s  # m is now Sympy expression
      elif isinstance(m, int):
          if shift:
              assert 0 <= m < n
              m = m - s
      return sqrt(s * (s + 1) - m * (m + 1))