ó ÃÌ4]c@stdZddlZddlmZddlmZddlmZddlmZddlmZdd lm Z dd lm Z dd lm Z dd lm Z dd lm Z ddlmZddlmZddlmZddlmZdefd„ƒYZide 6de 6de6de6de 6Zd„Zd„Zeje dƒeje dƒd„ƒƒZdS(s5Establish constraint and index naming conventions. iÿÿÿÿNi(t _defer_name(t_defer_none_name(tconv(tCheckConstraint(tColumn(t Constraint(tForeignKeyConstraint(tIndex(tPrimaryKeyConstraint(tTable(tUniqueConstrainti(tevent(tevents(texctConventionDictcBsbeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z RS( cCs=||_t|tƒ|_||_||_|j|_dS(N(tconstt isinstanceRt_is_fkttablet conventiontnamet _const_name(tselfRRR((sH/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/naming.pyt__init__ s    cCs |jjS(N(RR(R((sH/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/naming.pyt_key_table_name'scCs8|jr |jj|}|jSt|jjƒ|SdS(N(RRtelementstparenttlisttcolumns(Rtidxtfk((sH/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/naming.pyt _column_X*s cCsXt|jtdƒtfƒr0tjdƒ‚nt|jtƒsQd|j_ n|jS(NscNaming convention including %(constraint_name)s token requires that constraint is explicitly named.( RRttypetNoneRR tInvalidRequestErrorRRR(R((sH/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/naming.pyt_key_constraint_name1s  cCs|j|ƒjS(N(Rtkey(RR((sH/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/naming.pyt_key_column_X_key<scCs|j|ƒjS(N(RR(RR((sH/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/naming.pyt_key_column_X_nameBscCs|j|ƒjS(N(Rt_label(RR((sH/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/naming.pyt_key_column_X_labelEscCsV|jjd}|jjdƒ}t|ƒdkrF|\}}}n |\}}|S(Nit.i(RRttarget_fullnametsplittlen(RRtrefst refschematreftabletrefcol((sH/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/naming.pyt_key_referred_table_nameHs  cCs|jj|}|jjS(N(RRtcolumnR(RRR((sH/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/naming.pyt_key_referred_column_X_nameQsc Cs²||jkr)|j||j|jƒSt|d|ƒrPt|d|ƒƒStjd|ƒ}|r¢|jdƒ}|jdƒ}|r[|jr¤|jj }nt |jj ƒ}g}xtt |ƒD]f\}}d|j d|dƒ}y |jt||ƒ|ƒƒWqÉtk r.t|ƒ‚qÉXqÉW|jdƒrHdnd } | j|ƒSd|j |dƒ}t|ƒ}t||ƒr¢t||ƒ|ƒSnt|ƒ‚dS( Ns_key_%ss.*_?column_(\d+)(_?N)?_.+iit_key_t0tXt_t(RRRthasattrtgetattrtretmatchtgroupRRRRt enumeratetreplacetappendtAttributeErrortKeyErrort startswithtjointint( RR$t col_templateRt multiplestelemsttokenstelemtattrtsep((sH/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/naming.pyt __getitem__Xs4     ( t__name__t __module__RRRR#R%R&R(R1R3RM(((sH/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/naming.pyRs       tixtpktcktuqRcCsXxQ|jD]B}|tkr8t||kr8|t|S||kr ||Sq WdSdS(N(t__mro__t _prefix_dictR!(tdict_R$tsuper_((sH/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/naming.pyt_get_convention‚s    cCsº|j}t|jt|ƒƒ}t|jtƒr:|jS|dk r£t|jtƒ r£|jdks†d|ks†t|jtƒr£t|t |||jƒƒSt|t ƒr¶dSdS(Ntconstraint_name( tmetadataRXtnaming_conventionR RRRR!RRR(RRRZR((sH/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/naming.pyt_constraint_name_for_tables   tafter_parent_attachcs‡t|tƒr.tj|d‡fd†ƒnUt|tƒrƒtˆjttfƒrYdStˆ|ƒ}|dk rƒ|ˆ_qƒndS(NR]cs tˆ|ƒS(N(t_constraint_name(tcolR(R(sH/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/naming.pyt®R8( RRR tlistenR RRRR\R!(RRtnewname((RsH/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/naming.pyR^¤s (t__doc__R;RRRRtschemaRRRRRRR R R8R R R tobjectRRURXR\t listens_forR^(((sH/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/naming.pyt s4 Z