ÿØÿà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@sddlmZmZddlmZddlmZmZmZddl m Z ddl m Z ddl m Z d e fd YZiZd eefd YZd ZdZieej6eej6ZdS(i(tschemattext(ttypesi(t string_typest text_typetwith_metaclass(t sqla_compat(tutili(tbasetImplMetacBseZdZRS(cCs9tj||||}d|kr5|t|dst_autoincrement_columnR?( R3tlistt TypeErrorR6RRCtinsertR7tvaluestitemsthasattrR#Rz(R&R.trowst multiinserttrow((R.sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/impl.pyt bulk_inserts     " cCs|j}|j}|j|j}|jjddt|dro|j|j|}|dk ro| Sn|j|rt j |j d}|o|||St SdS(Nt_type_affinitytcompare_against_backend( R t dialect_implRt__dict__tpopR#RRt_compare_type_affinityt_type_comparatorsRRR7(R&tinspector_columntmetadata_columnt conn_typet metadata_typet metadata_implt comparisont comparator((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/impl.pyt compare_types    cCs ||kS(N((R&RRtrendered_metadata_defaulttrendered_inspector_default((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/impl.pytcompare_server_defaultscCsdS(N((R&t conn_uniquest conn_indexestmetadata_unique_constraintstmetadata_indexes((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/impl.pytcorrect_for_autogen_constraints scs*tjrjSfd}|SdS(Ncsj||S(N(tautogen_column_reflect(R.t column_info(t inspectorR&(sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/impl.pytadapts(RRR(R&RR((RR&sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/impl.pyt_compat_autogen_column_reflects cCsdS(N((R&tconn_fkst metadata_fks((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/impl.pytcorrect_for_autogen_foreignkeysscCsdS(sA hook that is attached to the 'column_reflect' event for when a Table is reflected from the database during the autogenerate process. Dialects can elect to modify the information gathered here. N((R&RR.R((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/impl.pyRR0cCsdS(sA hook called when :meth:`.EnvironmentContext.run_migrations` is called. Implementations can set up per-migration-run state here. N((R&((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/impl.pytstart_migrations'R0cCs|jd|jdS(sEmit the string ``BEGIN``, or the backend-specific equivalent, on the current connection context. This is used in offline mode and typically via :meth:`.EnvironmentContext.begin_transaction`. tBEGINN(R+R;(R&((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/impl.pyt emit_begin/scCs|jd|jdS(sEmit the string ``COMMIT``, or the backend-specific equivalent, on the current connection context. This is used in offline mode and typically via :meth:`.EnvironmentContext.begin_transaction`. tCOMMITN(R+R;(R&((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/impl.pyt emit_commit9sN(()RRt__doc__R RR$R;R t classmethodR(R+R-R/tpropertyR1R#Rt immutabledictRCR=RSRVRYR]R_RcRnRpRqRsR7RRRRRRRRRR(((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/impl.pyRsV      &               cCs|jdk o|j|jkS(N(tlengthR#(tt1tt2((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/impl.pyt_string_compareDscCs@|jdk r!|j|jkp?|jdk o?|j|jkS(N(t precisionR#tscale(RR((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/impl.pyt_numeric_compareJsN(t sqlalchemyRRRtsqltypest util.compatRRRRRR0RR R R RRRtStringtNumericR(((sA/opt/alt/python27/lib/python2.7/site-packages/alembic/ddl/impl.pyts.