code: def markov(
      fn: Iterable[int] = ...,
      history: int = 1,
      keep: bool = False,
      dim: Optional[int] = None,
      name: Optional[str] = None,
  ) -> MarkovMessenger:
      ...
  
imports: import collections
  import functools
  from typing import Callable, Iterable, Optional, TypeVar, Union, overload
  from typing_extensions import ParamSpec
  from pyro.poutine import util
  from .block_messenger import BlockMessenger
  from .broadcast_messenger import BroadcastMessenger
  from .collapse_messenger import CollapseMessenger
  from .condition_messenger import ConditionMessenger
  from .do_messenger import DoMessenger
  from .enum_messenger import EnumMessenger
  from .escape_messenger import EscapeMessenger
  from .infer_config_messenger import InferConfigMessenger
  from .lift_messenger import LiftMessenger
  from .markov_messenger import MarkovMessenger
  from .mask_messenger import MaskMessenger
  from .reparam_messenger import ReparamMessenger
  from .replay_messenger import ReplayMessenger
  from .runtime import NonlocalExit
  from .scale_messenger import ScaleMessenger
  from .seed_messenger import SeedMessenger
  from .substitute_messenger import SubstituteMessenger
  from .trace_messenger import TraceMessenger
  from .uncondition_messenger import UnconditionMessenger
label_desc: Use image node_id 21 for calling a global function with example usage: markov(fn, history, keep, dim, name) without return types