ÿØÿà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Áß_ÿÙ M!Vc@sTddlZddlmZddlmZmZddlmZddlmZ ddl m Z ddl m Z mZmZmZmZe jrdd lmZnd efd YZd efd YZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZeedZeedZeedZ eedZ!eed Z"eed!Z#eed"Z$d#Z%d$Z&d%Z'd&Z(d'Z)d(Z*d)Z+d*Z,d+Z-dS(,iN(tcompiles(t DDLElementtColumn(tInteger(ttypesi(tutil(t_table_for_constraintt_columns_for_constraintt_fk_spect_is_type_boundt _find_columns(t quoted_namet AlterTablecBseZdZddZRS(sRepresent an ALTER TABLE statement. Only the string name and optional schema name of the table is required, not a full Table object. cCs||_||_dS(N(t table_nametschema(tselfR R((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pyt__init__s N(t__name__t __module__t__doc__tNoneR(((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pyR st RenameTablecBseZddZRS(cCs)tt|j|d|||_dS(NR(tsuperRRtnew_table_name(Rtold_table_nameRR((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pyR"sN(RRRR(((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pyR st AlterColumncBseZdddddZRS(cCs_tt|j|d|||_|dk r@tj|nd|_||_||_ dS(NR( RRRt column_nameRtsqltypest to_instancet existing_typetexisting_nullabletexisting_server_default(RtnameRRRRR((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pyR)s  $ N(RRRR(((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pyR'stColumnNullablecBseZdZRS(cKs)tt|j|||||_dS(N(RR!Rtnullable(RR RR"tkw((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pyR7s(RRR(((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pyR!5st ColumnTypecBseZdZRS(cKs2tt|j|||tj||_dS(N(RR$RRRttype_(RR RR%R#((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pyR?s(RRR(((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pyR$=st ColumnNamecBseZdZRS(cKs)tt|j|||||_dS(N(RR&Rtnewname(RR RR'R#((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pyRGs(RRR(((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pyR&Est ColumnDefaultcBseZdZRS(cKs)tt|j|||||_dS(N(RR(Rtdefault(RR RR)R#((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pyRNs(RRR(((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pyR(Lst AddColumncBseZddZRS(cCs)tt|j|d|||_dS(NR(RR*Rtcolumn(RR R+R((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pyRUsN(RRRR(((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pyR*Sst DropColumncBseZddZRS(cCs)tt|j|d|||_dS(NR(RR,RR+(RR R+R((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pyR\sN(RRRR(((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pyR,ZscKs2dt||j|jt||j|jfS(Ns%s RENAME TO %s(t alter_tableR Rtformat_table_nameR(telementtcompilerR#((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pytvisit_rename_tableascKs/dt||j|jt||j|fS(Ns%s %s(R-R Rt add_columnR+(R/R0R#((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pytvisit_add_columniscKs2dt||j|jt||jj|fS(Ns%s %s(R-R Rt drop_columnR+R (R/R0R#((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pytvisit_drop_columnqscKs>dt||j|jt||j|jr6dndfS(Ns%s %s %ss DROP NOT NULLs SET NOT NULL(R-R Rt alter_columnRR"(R/R0R#((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pytvisit_column_nullableyscKs?dt||j|jt||jdt||jfS(Ns%s %s %ssTYPE %s(R-R RR6Rt format_typeR%(R/R0R#((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pytvisit_column_typescKs;dt||j|jt||jt||jfS(Ns%s RENAME %s TO %s(R-R Rtformat_column_nameRR'(R/R0R#((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pytvisit_column_namescKsTdt||j|jt||j|jdk rLdt||jndfS(Ns%s %s %ssSET DEFAULT %ss DROP DEFAULT(R-R RR6RR)Rtformat_server_default(R/R0R#((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pytvisit_column_defaults %cCsWtjr"t|tr"||Sdjg|jdD]}||^q8}|S(s#quote the elements of a dotted namet.(Rtsqla_09t isinstanceR tjointsplit(R tquotetxtresult((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pyt quote_dotteds 1cCsJtj|jjdd}|r<t||d||S||SdS(NtforceR>(t functoolstpartialtpreparerRCRRF(R0R RRC((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pyR.scCs|jj|dS(N(RJRCR(R0R ((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pyR:scCs|jtdtd|S(NRDtserver_default(tget_column_default_stringRR(R0R)((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pyR<scCs|jjj|S(N(tdialectt type_compilertprocess(R0R%((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pyR8scCsdt|||S(NsALTER TABLE %s(R.(R0R R((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pyR-scCsdt||S(NsDROP COLUMN %s(R:(R0R ((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pyR4scCsdt||S(NsALTER COLUMN %s(R:(R0R ((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pyR6scKsd|j||S(Ns ADD COLUMN %s(tget_column_specification(R0R+R#((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pyR2s(.RHtsqlalchemy.ext.compilerRtsqlalchemy.schemaRRt sqlalchemyRRRtRtutil.sqla_compatRRRR R R?tsqlalchemy.sql.elementsR R RRR!R$R&R(R*R,R1R3R5R7R9R;R=RFR.R:R<R8R-R4R6R2(((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/base.pytsB (