code: def wrappers(fn):
      """Helper decorator, all wrapper functions applied to modify input (matrix
      with missing values) and output (matrix with imputed values)
  
      NOTE: `handle_df` has to be last as it needs to be in the outer loop (first
      entry point) since every other function assumes you're getting an np.array
      as input
      """
      return u.thread(
          fn,  # function that's getting wrapped
          add_inplace_option,  # allow choosing reference/copy
          conform_output,  # allow enforcing of some spec on returned outputs
          handle_df,  # if df type, cast to np.array on in and df on out
      )
  
file_path: impyute/impyute/ops/wrapper.py
imports: from functools import wraps
  import numpy
  from .None import error
  from .None import matrix
  from .None import util
label_desc: Use image node_id 5 for calling a global function with example usage: wrappers(fn) and returns: u