ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ 4]c@stdZddlZddlmZddlmZddlmZddlmZddlmZdd lm Z dd lm Z dd lm Z dd lm Z dd lm Z ddlmZddlmZddlmZddlmZdefdYZide 6de 6de6de6de 6ZdZdZeje deje ddZdS(s5Establish constraint and index naming conventions. iNi(t _defer_name(t_defer_none_name(tconv(tCheckConstraint(tColumn(t Constraint(tForeignKeyConstraint(tIndex(tPrimaryKeyConstraint(tTable(tUniqueConstrainti(tevent(tevents(texctConventionDictcBsbeZdZdZdZdZdZdZdZdZ dZ 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|jtdtfr0tjdnt|jtsQd|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|jSt|d|rPt|d|Stjd|}|r|jd}|jd}|r[|jr|jj }nt |jj }g}xtt |D]f\}}d|j d|d}y |jt|||Wqtk r.t|qXqW|jdrHdnd } | j|Sd|j |d}t|}t||rt|||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_conventions    cCs|j}t|jt|}t|jtr:|jS|dk rt|jt r|jdksd|kst|jtrt|t |||jSt|t rdSdS(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_attachcst|tr.tj|dfdnUt|trtjttfrYdSt|}|dk r|_qndS(NR]cs t|S(N(t_constraint_name(tcolR(R(sH/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/naming.pytR8( 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