def METHOD_NAME(n_electrodes, a_spacing, in2D=False, plotIt=False):
    """
    Source list for a Wenner Array
    Parameters
    ----------
    n_electrodes : int
        Number of electrodes in the Wenner array
    a_spacing : float
        Wenner array spacing parameter *a*
    in2D : bool, default=``False``
        If ``True``, create 2D sources
    plotIt : bool, default=``False``
        If ``True``, plot the Wenner geometry
    Returns
    -------
    list of SimPEG.electromagnetics.static.resistivity.sources.Dipole
        List of sources and their associate receivers for the Wenner survey
    """
    elocs = np.arange(0, a_spacing * n_electrodes, a_spacing)
    elocs -= (n_electrodes * a_spacing - a_spacing) / 2
    space = 1
    WENNER = np.zeros((0,), dtype=int)
    for _ in range(n_electrodes):
        for jj in range(n_electrodes):
            test = np.r_[jj, jj + space, jj + space * 2, jj + space * 3]
            if np.any(test >= n_electrodes):
                break
            WENNER = np.r_[WENNER, test]
        space += 1
    WENNER = WENNER.reshape((-1, 4))
    if plotIt:
        for i, s in enumerate("rbkg"):
            plt.plot(elocs[WENNER[:, i]], s + ".")
        plt.show()
    # Create sources and receivers
    i = 0
    if in2D:
        def getLoc(ii, abmn):
            return np.r_[elocs[WENNER[ii, abmn]], 0]
    else:
        def getLoc(ii, abmn):
            return np.r_[elocs[WENNER[ii, abmn]], 0, 0]
    source_list = []
    for i in range(WENNER.shape[0]):
        rx = receivers.Dipole(
            getLoc(i, 1).reshape([1, -1]), getLoc(i, 2).reshape([1, -1])
        )
        src = sources.Dipole([rx], getLoc(i, 0), getLoc(i, 3))
        source_list += [src]
    return source_list