code: def test_make_runmeta_and_point_fn(simple_model):
      with simple_model:
          step = pm.DEMetropolisZ()
      rmeta, point_fn = make_runmeta_and_point_fn(
          initial_point=simple_model.initial_point(),
          step=step,
          model=simple_model,
      )
      assert isinstance(rmeta, mcb.RunMeta)
      assert callable(point_fn)
      vars = {v.name: v for v in rmeta.variables}
      assert set(vars.keys()) == {
          "scalar",
          "vector",
          "vector_interval__",
          "matrix",
          "integer",
      }
      # NOTE: Technically the "vector" is deterministic, but from the user perspective it is not.
      #       This is merely a matter of which version of transformed variables should be traced.
      assert not vars["vector"].is_deterministic
      assert not vars["vector_interval__"].is_deterministic
      assert vars["matrix"].is_deterministic
      assert len(rmeta.sample_stats) == len(step.stats_dtypes[0])
  
      with simple_model:
          step = pm.NUTS()
      rmeta, point_fn = make_runmeta_and_point_fn(
          initial_point=simple_model.initial_point(),
          step=step,
          model=simple_model,
      )
      assert isinstance(rmeta, mcb.RunMeta)
      svars = {s.name: s for s in rmeta.sample_stats}
      # Unbeknownst to McBackend, object stats are pickled to str
      assert "sampler_0__warning" in svars
      assert svars["sampler_0__warning"].dtype == "str"
      pass
  
imports: import logging
  import arviz
  import numpy
  import pytest
  import pymc
  from pymc.backends import init_traces
  from pymc.step_methods.arraystep import ArrayStepShared
  from pymc.backends.mcbackend import ChainRecordAdapter, find_data, get_variables_and_point_fn, make_runmeta_and_point_fn
label_desc: Use image node_id 5 for calling a global function with example usage: test_make_runmeta_and_point_fn(simple_model) without return types