def __init__(self, _key_or_data, pipe=None, fields=None, no_op=False,<EOL>nx=False):
self._data = {}<EOL>with self._pipe(pipe=pipe) as pipe:<EOL><INDENT>try:<EOL><INDENT>coerced = dict(_key_or_data)<EOL>keyname = self.key_name<EOL>self.key = coerced[keyname]<EOL>del coerced[keyname]<EOL>if no_op:<EOL><INDENT>self._data = coerced<EOL>return<EOL><DEDENT>required_found = self.required.intersection(coerced.keys())<EOL>if len(required_found) != len(self.required):<EOL><INDENT>raise InvalidOperation('<STR_LIT>' %<EOL>list(self.required - required_found)<EOL>)<EOL><DEDENT>self.update(coerced, pipe=pipe, nx=nx)<EOL><DEDENT>except KeyError:<EOL><INDENT>raise InvalidOperation(<EOL>'<STR_LIT>')<EOL><DEDENT>except (ValueError, TypeError):<EOL><INDENT>self.key = _key_or_data<EOL><DEDENT>if not no_op:<EOL><INDENT>self.load(fields=fields, pipe=pipe)<EOL><DEDENT><DEDENT>
class constructor

:param _key_or_data:
:param pipe:
:param fields:
:param no_op: bool
:param nx: bool