This simple inheritance mapping script (attached) would work in version 0.7.3  
but not in 0.7.4.
In the new version it would raise an ArgumentError:

Traceback (most recent call last):
  File "inheritance_discriminator.py", line 22, in <module>
    class PhoneContactTimeline(A):
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/ext/declarative.py", 
line 1273, in __init__
    _as_declarative(cls, classname, cls.__dict__)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/ext/declarative.py", 
line 1266, in _as_declarative
    **mapper_args)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/__init__.py", 
line 1114, in mapper
    return Mapper(class_, local_table, *args, **params)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/mapper.py", line 
202, in __init__
    self._configure_polymorphic_setter()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/mapper.py", line 
902, in _configure_polymorphic_setter
    "Only direct column-mapped "
sqlalchemy.exc.ArgumentError: Only direct column-mapped property or SQL 
expression can be passed for polymorphic_on

And it goes away if a replace cls.discriminator with a string 'discriminator'.
The error persists for single table inheritance too.
You can see that I'm using Python 2.7(.2)
-- 
Fayaz Yusuf Khan
Cloud developer and architect
Dexetra SS, Bangalore, India
fayaz.yusuf.khan_AT_gmail_DOT_com
fayaz_AT_dexetra_DOT_com
+91-9746-830-823
from sqlalchemy import *
from sqlalchemy.ext.declarative import declarative_base, declared_attr


Base = declarative_base()


class A(Base):

    __tablename__ = 'A'
    id = Column(BigInteger, primary_key=True)
    discriminator = Column(String)

    @declared_attr
    def __mapper_args__(cls):
        mapper_args = {'polymorphic_identity': cls.__name__,
                       'polymorphic_on': cls.discriminator}
        # if cls has this_thing: mapper_args['some key'] = this_flag
        return mapper_args


class PhoneContactTimeline(A):

    __tablename__ = 'B'
    id = Column(ForeignKey(A.id), primary_key=True)

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to