code: def ensure_yx_order(func):
      
      @functools.wraps(func)
      def wrapper(*args, **kwargs):
          # Check what order we're given
          dim_order = kwargs.pop('dim_order', None)
          x_first = _is_x_first_dim(dim_order)
  
          # If x is the first dimension, flip (transpose) every array within the function args.
          if x_first:
              args = tuple(_check_and_flip(arr) for arr in args)
              for k, v in kwargs:
                  kwargs[k] = _check_and_flip(v)
  
          ret = func(*args, **kwargs)
  
          # If we flipped on the way in, need to flip on the way out so that output array(s)
          # match the dimension order of the original input.
          if x_first:
              return _check_and_flip(ret)
          else:
              return ret
  
      # Inject a docstring for the dim_order argument into the function's docstring.
      dim_order_doc = """
      dim_order : str or ``None``, optional
          The ordering of dimensions in passed in arrays. Can be one of ``None``, ``'xy'``,
          or ``'yx'``. ``'xy'`` indicates that the dimension corresponding to x is the leading
          dimension, followed by y. ``'yx'`` indicates that x is the last dimension, preceded
          by y. ``None`` indicates that the default ordering should be assumed,
          which is 'yx'. Can only be passed as a keyword argument, i.e.
          func(..., dim_order='xy')."""
  
      # Find the first blank line after the start of the parameters section
      params = wrapper.__doc__.find('Parameters')
      blank = wrapper.__doc__.find('\n\n', params)
      wrapper.__doc__ = wrapper.__doc__[:blank] + dim_order_doc + wrapper.__doc__[blank:]
  
      return wrapper
docs: Wrap a function to ensure all array arguments are y, x ordered, based on kwarg.