committed, r2409.
the "row" needs to have a "class" and "entity_name" present to
determine what mapper you want to use to extract from the row, so i
put those as keyword arguments for now.
also, I notice the usage of plain old "assert" for argument
checking. should we make this change across the board and get rid of
exceptions.ArgumentError ? i feel like we have to go one way or the
other with that.
also i didnt do any testing of this, we might want to add some tests
to test/orm/session.py .
On Mar 12, 2007, at 9:21 PM, Daniel Miller wrote:
> def identity_key(self, *args, **kwargs):
> """Get an identity key
>
> Valid call signatures:
>
> identity_key(class_, ident, entity_name=None)
> class_ - mapped class
> ident - primary key, if the key is composite this is a tuple
> entity_name - optional entity name. May be given as a
> positional arg or as a keyword arg.
>
> identity_key(instance=instance)
> instance - object instance (must be given as a keyword arg)
>
> identity_key(row=row)
> row - result proxy row (must be given as a keyword arg)
> """
> if args:
> kw = {}
> if len(args) == 2:
> class_, ident = args
> entity_name = kwargs.pop("entity_name", None)
> assert not kwargs, ("unknown keyword arguments: %s"
> % (kwargs.keys(),))
> else:
> assert len(args) == 3, ("two or three positional args
> are "
> "accepted, got %s" % len(args))
> class_, ident, entity_name = args
> mapper = _class_mapper(class_, entity_name=entity_name)
> return mapper.instance_key_from_primary_key(ident,
> entity_name=entity_name)
> else:
> try:
> instance = kwargs.pop("instance")
> except KeyError:
> row = kwargs.pop("row")
> assert not kwargs, ("unknown keyword arguments: %s"
> % (kwargs.keys(),))
> mapper = # not sure how to get the mapper form a row
> return mapper.identity_key_from_row(row)
> else:
> assert not kwargs, ("unknown keyword arguments: %s"
> % (kwargs.keys(),))
> mapper = _object_mapper(instance)
> return mapper.identity_key_from_instance(instance)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---