code: def _get_metadata(field, expr, metadata_expr, no_metadata_rule):
      
      if isinstance(metadata_expr, bz.Expr) or metadata_expr is None:
          return metadata_expr
  
      try:
          return expr._child['_'.join(((expr._name or ''), field))]
      except (ValueError, AttributeError):
          if no_metadata_rule == 'raise':
              raise ValueError(
                  "no %s table could be reflected for %s" % (field, expr)
              )
          elif no_metadata_rule == 'warn':
              warnings.warn(NoMetaDataWarning(expr, field), stacklevel=4)
      return None
docs: Find the correct metadata expression for the expression.
  
      Parameters
      ----------
      field : {'deltas', 'checkpoints'}
          The kind of metadata expr to lookup.
      expr : Expr
          The baseline expression.
      metadata_expr : Expr, 'auto', or None
          The metadata argument. If this is 'auto', then the metadata table will
          be searched for by walking up the expression tree. If this cannot be
          reflected, then an action will be taken based on the
          ``no_metadata_rule``.
      no_metadata_rule : {'warn', 'raise', 'ignore'}
          How to handle the case where the metadata_expr='auto' but no expr
          could be found.
  
      Returns
      -------
      metadata : Expr or None
          The deltas or metadata table to use.