@deprecate_kwarg(old_arg_name='<STR_LIT>', new_arg_name='<STR_LIT>')<EOL><INDENT>def drop(self, codes, level=None, errors='<STR_LIT>'):<DEDENT>
if level is not None:<EOL><INDENT>return self._drop_from_level(codes, level)<EOL><DEDENT>try:<EOL><INDENT>if not isinstance(codes, (np.ndarray, Index)):<EOL><INDENT>codes = com.index_labels_to_array(codes)<EOL><DEDENT>indexer = self.get_indexer(codes)<EOL>mask = indexer == -<NUM_LIT:1><EOL>if mask.any():<EOL><INDENT>if errors != '<STR_LIT:ignore>':<EOL><INDENT>raise ValueError('<STR_LIT>' %<EOL>codes[mask])<EOL><DEDENT><DEDENT><DEDENT>except Exception:<EOL><INDENT>pass<EOL><DEDENT>inds = []<EOL>for level_codes in codes:<EOL><INDENT>try:<EOL><INDENT>loc = self.get_loc(level_codes)<EOL>if isinstance(loc, int):<EOL><INDENT>inds.append(loc)<EOL><DEDENT>elif isinstance(loc, slice):<EOL><INDENT>inds.extend(lrange(loc.start, loc.stop))<EOL><DEDENT>elif com.is_bool_indexer(loc):<EOL><INDENT>if self.lexsort_depth == <NUM_LIT:0>:<EOL><INDENT>warnings.warn('<STR_LIT>'<EOL>'<STR_LIT>'<EOL>'<STR_LIT>',<EOL>PerformanceWarning,<EOL>stacklevel=<NUM_LIT:3>)<EOL><DEDENT>loc = loc.nonzero()[<NUM_LIT:0>]<EOL>inds.extend(loc)<EOL><DEDENT>else:<EOL><INDENT>msg = '<STR_LIT>'.format(type(loc))<EOL>raise AssertionError(msg)<EOL><DEDENT><DEDENT>except KeyError:<EOL><INDENT>if errors != '<STR_LIT:ignore>':<EOL><INDENT>raise<EOL><DEDENT><DEDENT><DEDENT>return self.delete(inds)<EOL>
Make new MultiIndex with passed list of codes deleted

Parameters
----------
codes : array-like
    Must be a list of tuples
level : int or level name, default None

Returns
-------
dropped : MultiIndex