def _create_storer(self, group, format=None, value=None, append=False,<EOL>**kwargs):
def error(t):<EOL><INDENT>raise TypeError(<EOL>"<STR_LIT>"<EOL>"<STR_LIT>"<EOL>"<STR_LIT>".format(t=t, group=group,<EOL>value=type(value), format=format,<EOL>append=append, kwargs=kwargs))<EOL><DEDENT>pt = _ensure_decoded(getattr(group._v_attrs, '<STR_LIT>', None))<EOL>tt = _ensure_decoded(getattr(group._v_attrs, '<STR_LIT>', None))<EOL>if pt is None:<EOL><INDENT>if value is None:<EOL><INDENT>_tables()<EOL>if (getattr(group, '<STR_LIT>', None) or<EOL>isinstance(group, _table_mod.table.Table)):<EOL><INDENT>pt = '<STR_LIT>'<EOL>tt = '<STR_LIT>'<EOL><DEDENT>else:<EOL><INDENT>raise TypeError(<EOL>"<STR_LIT>"<EOL>"<STR_LIT>")<EOL><DEDENT><DEDENT>else:<EOL><INDENT>try:<EOL><INDENT>pt = _TYPE_MAP[type(value)]<EOL><DEDENT>except KeyError:<EOL><INDENT>error('<STR_LIT>')<EOL><DEDENT>if format == '<STR_LIT>':<EOL><INDENT>pt += '<STR_LIT>'<EOL><DEDENT><DEDENT><DEDENT>if '<STR_LIT>' not in pt:<EOL><INDENT>try:<EOL><INDENT>return globals()[_STORER_MAP[pt]](self, group, **kwargs)<EOL><DEDENT>except KeyError:<EOL><INDENT>error('<STR_LIT>')<EOL><DEDENT><DEDENT>if tt is None:<EOL><INDENT>if value is not None:<EOL><INDENT>if pt == '<STR_LIT>':<EOL><INDENT>index = getattr(value, '<STR_LIT:index>', None)<EOL>if index is not None:<EOL><INDENT>if index.nlevels == <NUM_LIT:1>:<EOL><INDENT>tt = '<STR_LIT>'<EOL><DEDENT>elif index.nlevels > <NUM_LIT:1>:<EOL><INDENT>tt = '<STR_LIT>'<EOL><DEDENT><DEDENT><DEDENT>elif pt == '<STR_LIT>':<EOL><INDENT>index = getattr(value, '<STR_LIT:index>', None)<EOL>if index is not None:<EOL><INDENT>if index.nlevels == <NUM_LIT:1>:<EOL><INDENT>tt = '<STR_LIT>'<EOL><DEDENT>elif index.nlevels > <NUM_LIT:1>:<EOL><INDENT>tt = '<STR_LIT>'<EOL><DEDENT><DEDENT><DEDENT>elif pt == '<STR_LIT>':<EOL><INDENT>tt = '<STR_LIT>'<EOL><DEDENT>elif pt == '<STR_LIT>':<EOL><INDENT>tt = '<STR_LIT>'<EOL><DEDENT><DEDENT>else:<EOL><INDENT>tt = '<STR_LIT>'<EOL>try:<EOL><INDENT>fields = group.table._v_attrs.fields<EOL>if len(fields) == <NUM_LIT:1> and fields[<NUM_LIT:0>] == '<STR_LIT:value>':<EOL><INDENT>tt = '<STR_LIT>'<EOL><DEDENT><DEDENT>except IndexError:<EOL><INDENT>pass<EOL><DEDENT><DEDENT><DEDENT>try:<EOL><INDENT>return globals()[_TABLE_MAP[tt]](self, group, **kwargs)<EOL><DEDENT>except KeyError:<EOL><INDENT>error('<STR_LIT>')<EOL><DEDENT>
return a suitable class to operate