code: def __new__(cls, *args, **kwargs):
      blocked = kwargs.get("blocked")
      if blocked is None:
          # Try to look up default value from class
          blocked = getattr(cls, "default_blocked", True)
          kwargs["blocked"] = blocked
  
      model = modelcontext(kwargs.get("model"))
      kwargs.update({"model": model})
  
      # vars can either be first arg or a kwarg
      if "vars" not in kwargs and len(args) >= 1:
          vars = args[0]
          args = args[1:]
      elif "vars" in kwargs:
          vars = kwargs.pop("vars")
      else:  # Assume all model variables
          vars = model.value_vars
  
      if not isinstance(vars, (tuple, list)):
          vars = [vars]
  
      if len(vars) == 0:
          raise ValueError("No free random variables to sample.")
  
      # Auto-fill stats metadata attributes from whichever was given.
      stats_dtypes, stats_dtypes_shapes = infer_warn_stats_info(
          cls.stats_dtypes,
          cls.stats_dtypes_shapes,
          cls.__name__,
      )
  
      if not blocked and len(vars) > 1:
          # In this case we create a separate sampler for each var
          # and append them to a CompoundStep
          steps = []
          for var in vars:
              step = super().__new__(cls)
              step.stats_dtypes = stats_dtypes
              step.stats_dtypes_shapes = stats_dtypes_shapes
              # If we don't return the instance we have to manually
              # call __init__
              step.__init__([var], *args, **kwargs)
              # Hack for creating the class correctly when unpickling.
              step.__newargs = ([var],) + args, kwargs
              steps.append(step)
  
          return CompoundStep(steps)
      else:
          step = super().__new__(cls)
          step.stats_dtypes = stats_dtypes
          step.stats_dtypes_shapes = stats_dtypes_shapes
          # Hack for creating the class correctly when unpickling.
          step.__newargs = (vars,) + args, kwargs
          return step
  
imports: import warnings
  from abc import ABC, abstractmethod
  from enum import IntEnum, unique
  from typing import Any, Dict, Iterable, List, Mapping, Sequence, Tuple, Union
  import numpy
  from pytensor.graph.basic import Variable
  from pymc.blocking import PointType, StatDtype, StatsDict, StatShape, StatsType
  from pymc.model import modelcontext
label_desc: Use image node_id 1 for calling the BlockedStep obj's underlying member method code with example usage: obj.__new__(cls) and returns: CompoundStep, step