def __init__(self, *info, **context):
<EOL>loader = context.pop('<STR_LIT>', None)<EOL>delayed = context.pop('<STR_LIT>', False)<EOL>context.setdefault('<STR_LIT>', self.schema().namespace())<EOL>self.__dataLock = ReadWriteLock()<EOL>self.__values = {}<EOL>self.__loaded = set()<EOL>self.__context = orb.Context(**context)<EOL>self.__cache = defaultdict(dict)<EOL>self.__preload = {}<EOL>self.__delayed = delayed<EOL>record = []<EOL>values = {}<EOL>for value in info:<EOL><INDENT>if isinstance(value, dict):<EOL><INDENT>values.update(value)<EOL><DEDENT>else:<EOL><INDENT>record.append(value)<EOL><DEDENT><DEDENT>update_values = {k: v for k, v in values.items() if self.schema().column(k)}<EOL>if loader is not None:<EOL><INDENT>self._load(loader)<EOL><DEDENT>elif not record:<EOL><INDENT>self.init(ignore=update_values.keys())<EOL><DEDENT>else:<EOL><INDENT>if len(record) == <NUM_LIT:1> and isinstance(record[<NUM_LIT:0>], Model):<EOL><INDENT>record_id = record[<NUM_LIT:0>].id()<EOL>event = orb.events.LoadEvent(record=self, data=dict(record[<NUM_LIT:0>]))<EOL>self._load(event)<EOL><DEDENT>elif len(record) == <NUM_LIT:1>:<EOL><INDENT>record_id = record[<NUM_LIT:0>]  <EOL><DEDENT>else:<EOL><INDENT>record_id = tuple(record)<EOL><DEDENT>if not self.__delayed:<EOL><INDENT>data = self.fetch(record_id, inflated=False, context=self.__context)<EOL><DEDENT>else:<EOL><INDENT>data = {self.schema().idColumn().name(): record_id}<EOL><DEDENT>if data:<EOL><INDENT>event = orb.events.LoadEvent(record=self, data=data)<EOL>self._load(event)<EOL><DEDENT>else:<EOL><INDENT>raise errors.RecordNotFound(schema=self.schema(), column=record_id)<EOL><DEDENT><DEDENT>if update_values:<EOL><INDENT>self.update(update_values)<EOL><DEDENT>
Initializes a database record for the table class.  A
table model can be initialized in a few ways.  Passing
no arguments will create a fresh record that does not
exist in the database.  Providing keyword arguments will
map to this table's schema column name information,
setting default values for the record.  Supplying an
argument will be the records unique primary key, and
trigger a lookup from the database for the record directly.

:param      *args       <tuple> primary key
:param      **kwds      <dict>  column default values