This line creates a callable to compute the ratio: pymc3/metropolis.py at v3.11.2 · pymc-devs/pymc3 · GitHub
It is a function that takes both x' and x: pymc3/metropolis.py at v3.11.2 · pymc-devs/pymc3 · GitHub
and
pymc3/metropolis.py at v3.11.2 · pymc-devs/pymc3 · GitHub
That’s why you get two evaluations in every iteration already without blocked sampling.