def METHOD_NAME(
    self,
    sampler: "sampler.MetropolisSampler",  # noqa: F821
    machine: nn.Module,
    params: PyTree,
    sampler_state: "sampler.SamplerState",  # noqa: F821
    key: PRNGKeyT,
    σ: jnp.ndarray,
) -> tuple[jnp.ndarray, Optional[jnp.ndarray]]:
    r"""
    Proposes a new configuration set of configurations $\sigma'$ starting from the current
    chain configurations :math:`\sigma`.
    The new configurations :math:`\sigma'` should be a matrix with the same dimension as
    :math:`\sigma`.
    This function should return a tuple. where the first element are the new configurations
    $\sigma'$ and the second element is either `None` or an array of length `σ.shape[0]`
    containing an optional log-correction factor. The correction factor should be non-zero
    when the transition rule is non-symmetrical.
    Arguments:
        sampler: The Metropolis sampler.
        machine: A Flax module with the forward pass of the log-pdf.
        params: The PyTree of parameters of the model.
        sampler_state: The current state of the sampler. Should not modify it.
        key: A Jax PRNGKey to use to generate new random configurations.
        σ: The current configurations stored in a 2D matrix.
    Returns:
       A tuple containing the new configurations :math:`\sigma'` and the optional vector of
       log corrections to the transition probability.
    """
    pass