def METHOD_NAME(tabular_policy, q_value_calculator):
  """Creates a function to evaluate our policy."""
  def evaluate_policy(policy_values):
    """Evaluates a tabular policy; intended to be used as a tf.py_function."""
    tabular_policy.action_probability_array = policy_values
    evaluations = [
        q_value_calculator(player, tabular_policy,
                           tabular_policy.states_per_player[player])
        for player in range(_NUM_PLAYERS)
    ]
    nash_conv = np.float64(sum([evaluations[p].exploitability for p in [0, 1]]))
    q_values = np.concatenate(
        [np.array(evaluations[p].values_vs_br, np.float64) for p in [0, 1]])
    cf_reach_probabilities = np.concatenate([
        np.array(evaluations[p].counterfactual_reach_probs_vs_br, np.float64)
        for p in [0, 1]
    ])
    return nash_conv, q_values, cf_reach_probabilities
  return evaluate_policy