def interpolate_2d(values, method='<STR_LIT>', axis=<NUM_LIT:0>, limit=None, fill_value=None,<EOL>dtype=None):
transf = (lambda x: x) if axis == <NUM_LIT:0> else (lambda x: x.T)<EOL>ndim = values.ndim<EOL>if values.ndim == <NUM_LIT:1>:<EOL><INDENT>if axis != <NUM_LIT:0>:  <EOL><INDENT>raise AssertionError("<STR_LIT>"<EOL>"<STR_LIT>")<EOL><DEDENT>values = values.reshape(tuple((<NUM_LIT:1>,) + values.shape))<EOL><DEDENT>if fill_value is None:<EOL><INDENT>mask = None<EOL><DEDENT>else:  <EOL><INDENT>mask = mask_missing(transf(values), fill_value)<EOL><DEDENT>method = clean_fill_method(method)<EOL>if method == '<STR_LIT>':<EOL><INDENT>values = transf(pad_2d(<EOL>transf(values), limit=limit, mask=mask, dtype=dtype))<EOL><DEDENT>else:<EOL><INDENT>values = transf(backfill_2d(<EOL>transf(values), limit=limit, mask=mask, dtype=dtype))<EOL><DEDENT>if ndim == <NUM_LIT:1>:<EOL><INDENT>values = values[<NUM_LIT:0>]<EOL><DEDENT>return values<EOL>
Perform an actual interpolation of values, values will be make 2-d if
needed fills inplace, returns the result.