mò Ÿ%ÜGc@s‡dklZlZlZlZdefd„ƒYZdeeifd„ƒYZdeifd„ƒYZ deifd„ƒYZ d S( (ssqlsutilsschemas topologicaltTableCollectioncBs_tZdd„Zd„Zd„Zd„Zd„Zd„Zd„Z e d„Z d „Z RS( NcCs|pg|_dS(N(ttablestself(RR((t7/home/holguin2/public_html/spyce/sqlalchemy/sql_util.pyt__init__scCs t|iƒS(N(tlenRR(R((Rt__len__ scCs |i|S(N(RRti(RR((Rt __getitem__ scCs t|iƒS(N(titerRR(R((Rt__iter__ scCs ||ijS(N(tobjRR(RR ((Rt __contains__scCs|it|ƒS(N(RRtlistR (RR ((Rt__add__scCs.|ii|ƒt|dƒo |`ndS(Nt_sorted(RRtappendttablethasattrR(RR((RtaddscCsey |i}Wn-tj o!}|iƒ|_|i}nX|o|}|iƒ|Sn|SdS(N(RRtsortedtAttributeErrortet_do_sorttreversetx(RRRRR((Rtsorts  c s¤g‰dtif‡‡d†ƒY}|ƒ}xˆiD]}|i|ƒq8Wt i ˆˆiƒ}|i ƒ}g}|‡d†‰|dj oˆ|ƒn|S(NtTVisitorcstZ‡‡d†ZRS(NcsR|iodSn|ii}|ˆjo#|ii}ˆi ||fƒndS(N( tfkeyt use_altertcolumnRt parent_tableRtparentt child_tablettuplesR(t_selfRRR!(RR"(Rtvisit_foreign_key's     (t__name__t __module__R$((RR"(RR&scs2|i|iƒx|iD]}ˆ|ƒqWdS(N(tseqRtnodetitemtchildrentchildt to_sequence(R(R'R+(R,(RR,4s (R"tschemat SchemaVisitorRtvisRRRtaccept_schema_visitort topologicaltQueueDependencySortertsorterRtheadtsequenceR,tNone( RR4R5R3R/R,R"RR((RR"R,RR$s    ( R%R&R6RRRR R RRtFalseRR(((RRs        t TableFindercBs,tZdZed„Zd„Zd„ZRS(s=given a Clause, locates all the Tables within it into a list.cCs8ti|ƒ||_|dj o|i|ƒndS(N(RRRt check_columnsRR6taccept_visitor(RRR9((RR?s   cCs|ii|ƒdS(N(RRRR(RR((Rt visit_tableDscCs"|io|ii|ƒndS(N(RR9RRR:(RR((Rt visit_columnFs (R%R&t__doc__R7RR;R<(((RR8=s   t ColumnFindercBs#tZd„Zd„Zd„ZRS(NcCstiƒ|_dS(N(tutiltSetRtcolumns(R((RRKscCs|ii|ƒdS(N(RRARtc(RRB((RR<MscCs t|iƒS(N(R RRA(R((RR Os(R%R&RR<R (((RR>Js  t AliasizercBs;tZdZd„Zd„Zd„Zd„Zd„ZRS(sLconverts a table instance within an expression to be an alias of that table.cOsÈh|_|idhƒ|_xš|D]’}||i|<|ii|ƒpti|ƒ|i|RC(RCR>R1R8R?RIRR-((Rt?s 7