ÿØÿà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@sddlmZmZmZddlmZddlm Z ddl Z ddl m Z ddl mZddlmZdd l mZd Zydd lmZd ZWnek rd ZnXdZdZejZZdZdZdZejejdZ ejej!dZ"ejej#dZ$ejej%dZ&ejej'dZ(ejej)dZ*ejej+dZ,ejej-dZ.ejej/dZ0ejej1dZ2ejej3dZ4ejej5dZ6ejej7dZ8d e9fd!YZ:d"Z;e<d#Z=d$Z>d%Z?d&Z@d'ZAd(ZBd)ZCd*ZDe<d+ZEd,ZFejZGd-ZHeGjejId.ZJd/ZKd0ZLeGjejMd1ZNeGjejOd2ZPeGjejQd3ZRejSZdS(4i(tschemattypestsqli(tops(tcompatN(t string_types(tutil(t PythonPrinter(tStringIOi(tconvcCs*t|tr"tt||S|SdS(N(t isinstanceR t_f_namet_alembic_autogenerate_prefix(tautogen_contexttname((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyt_render_gen_namescCs|S(N((R R((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyRscCsLtjdtjjd|j}tjdtjjd|}|S(Nt^s s +$t(tretcompiletMtsubtstrip(ttext((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyt_indents'!cCs|j}x[t|j|jD]D\}}tt||||j|jD]3}t||}x|D]}|j|qaWqEW|jd|jS(Ns;### commands auto generated by Alembic - please adjust! ###tpasss### end Alembic commands ###(RRt writelineRt render_optgetvalue(t op_containerR tbuftprintertoptlinestline((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyR1s     cCs+tj|}tj|||}|S(N(t rendererstdispatchRtto_list(R R.trendererR/((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyR)IscCsdjt||S(Ns (R R)(R R.((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pytrender_op_textOscCs|j}|jdt}|jrg}|r|j_|jd|j|jfx-|jD]"}t||}|j |qdW|jdWdQXn0x-|jD]"}t||}|j |qW|SdgSdS(Ntrender_as_batchs5with op.batch_alter_table(%r, schema=%r) as batch_op:RR'( toptstgettFalseRt _within_batchtappendt table_nameRR)textend(R R.R7R6R/tt_optt_lines((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyt_render_modify_tableSs$   c Csm|j}gg|jD]}t||^qD]}|r2|^q2tgg|jD]}t||^qWD]}|dk rp|^qp}t|tkrddj |d}ndj |}dit |j d6t |d6|d6}|j r|dt |j 7}nx>t|jD]-}|d |jd d |j|f7}q.W|d 7}|S( Ns*[s, t]s.%(prefix)screate_table(%(tablename)r, %(args)st tablenametprefixtargss , schema=%rs, %s=%rt t_s )(tto_tabletcolumnst_render_columnR!t constraintst_render_constrainttNonetlentMAX_PYTHON_ARGSR t_identR<R Rtkwtreplace( R R.ttabletcoltconstrconsRDRtk((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyt _add_tableps* )&   + cCsXdit|d6t|jd6}|jrJ|dt|j7}n|d7}|S(Ns%(prefix)sdrop_table(%(tname)rRCttnames , schema=%rt)(R ROR<R(R R.R((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyt _drop_tables   c Cs|j}|j}|r$d}nd}|it|d6t||jd6t|jjd6djt||d6|j pt d6|jj rd t|jj nd d 6t |j r ddjg|j jD]%\}}d |t||f^qnd d 6}|S(NsL%(prefix)screate_index(%(name)r, [%(columns)s], unique=%(unique)r%(kwargs)s)sa%(prefix)screate_index(%(name)r, %(table)r, [%(columns)s], unique=%(unique)r%(schema)s%(kwargs)s)RCRRRs, RHtuniques , schema=%rRRs%s=%stkwargs(tto_indext _has_batchR RRRORRR t_get_index_rendered_expressionsR[R9RRMR\titemst_render_potential_expr(R R.tindext has_batchttmpltkeytvalR((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyt _add_indexs    )bcCs|j}|rd}nd}|it|d6t||jd6t|jd6|jrpdt|jndd6}|S( Ns%(prefix)sdrop_index(%(name)r)sC%(prefix)sdrop_index(%(name)r, table_name=%(table_name)r%(schema)s)RCRR<s , schema=%rRR(R^R Rt index_nameROR<R(R R.RcRdR((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyt _drop_indexs   'cCst|j|tgS(N(t_uq_constraintt to_constrainttTrue(R R.((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyt_add_unique_constraintscCs[tt||jg}|jsC|jtt|jn|jtt|jtg|j D]}t|^qhtg|j D]}t|^qgddddddg}|js|j ddnxS|D]K}||j kr|j |}|dk r2|jd ||fq2qqWd it|d 6d j|d 6S(Ntreferent_schematonupdatetondeletet initiallyt deferrablet use_alterit source_schemas%s=%rs&%(prefix)screate_foreign_key(%(args)s)RCs, RD(treprRtconstraint_nameR^R;ROt source_tableR=treferent_tablet local_colst remote_colstinsertRPRLR R (R R.RDRSR\RVtvalue((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyt_add_fk_constraints, %,      ! cCs tdS(N(tNotImplementedError(t constraintR ((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyt_add_pk_constraintscCs tdS(N(R~(RR ((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyt_add_check_constraintscCs|jrd}nd}|it|d6t||jd6t|jd6|jd6|jrtdt|jndd 6}|S( Ns3%(prefix)sdrop_constraint(%(name)r, type_=%(type)r)sO%(prefix)sdrop_constraint(%(name)r, '%(table_name)s'%(schema)s, type_=%(type)r)RCRR<ttypes , schema='%s'RR(R^R RRvROR<tconstraint_typeR(R R.ttemplateR((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyt_drop_constraints    'cCs|j|j|j}}}|jr/d}n#d}|rH|d7}n|d7}|it|d6|d6t||d6|d6}|S( Ns %(prefix)sadd_column(%(column)s)s*%(prefix)sadd_column(%(tname)r, %(column)ss, schema=%(schema)rRYRCRXtcolumnR(RR<RR^R RI(R R.RRXRRR((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyt _add_columns      cCs|j|j|j}}}|jr/d}n#d}|rH|d7}n|d7}|it|d6t|d6t|d6t|d6}|S( Ns %(prefix)sdrop_column(%(cname)r)s*%(prefix)sdrop_column(%(tname)r, %(cname)rs, schema=%(schema)rRYRCRXtcnameR(RR<t column_nameR^R RO(R R.RRXRRR((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyt _drop_column1s       cCs|j}|j}|j}|j}|j}|j}|j}|j} |j} d} |j rid} nd} | it |d6|d6|d6} |dk r| d| t ||f7} n|t k rt||}| d | |f7} n|dk r| d | t ||f7} n|dk rA| d | |f7} n|dkrp|dk rp| d | |f7} n|t kr| rt| |}| d | |f7} n| r|j r| d| | f7} n| d7} | S(NREi s %(prefix)salter_column(%(cname)rs+%(prefix)salter_column(%(tname)r, %(cname)rRCRXRs, %sexisting_type=%ss, %sserver_default=%ss , %stype_=%ss, %snullable=%rs, %sexisting_nullable=%rs, %sexisting_server_default=%ss , %sschema=%rRYs (R<Rtmodify_server_defaultt modify_typetmodify_nullablet existing_typetexisting_nullabletexisting_server_defaultRR^R RLt _repr_typeR9t_render_server_default(R R.RXRtserver_defaultttype_tnullableRRRRtindentRRtrendered((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyt _alter_columnGsZ                     R cBseZdZdZRS(cCs||_||_dS(N(RCR(tselfRCR((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyt__init__s cCsd|jt|jfS(Ns%sf(%r)(RCROR(R((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyt__repr__s(t__name__t __module__RR(((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyR ~s cCs|dkr|Stjryt|tjjrytjriy|jdSWqvt k retj |SXqtj |Snt|tj r|SdS(sproduce a __repr__() object for a string identifier that may use quoted_name() in SQLAlchemy 0.9 and greater. The issue worked around here is that quoted_name() doesn't have very good repr() behavior by itself when unicode is involved. tasciiN( RLRtsqla_09R Rtelementst quoted_nametpy2ktencodet UnicodeErrort text_typeR(R((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyROs   cCst|tjrtjr4tditd6}ni}|rId}nd}|it|d6tj|j d|j |d6St |SdS(Ntcompile_kwargst literal_bindss%(prefix)stext(%(sql)r)s%(sql)rRCtdialectR( R Rt ClauseElementRtsqla_08tdictRlt_sqlalchemy_autogenerate_prefixRRRRu(R|R t wrap_in_textt compile_kwR((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyRas   cCstjr\g|jD]E}t|tjrIttt|ddn t ||^qSg|j D]$}ttt|dd^qfSdS(NR( RRt expressionsR t sa_schematColumnRuROtgetattrRLRaRH(tidxR texpRS((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyR_s Pc Cs g}|j}|jr7|jdt|jfn|jr_|jdt|jfn| r|r|jjr|jdt|jjfn| r|jr|jdt ||jfn|rt t ||jg}|s|t t|jjg7}n|jt g|j D]}t|j^q(|j g|D]\}}d||f^qTdit |d6dj|d 6Sg|j D]}t t|j^q}|j g|D]\}}d||f^qd it|d6dj|d 6SdS( NRrRqRRs%s=%rs,%(prefix)screate_unique_constraint(%(args)s)RCs, RDs$%(prefix)sUniqueConstraint(%(args)s)(R^RrR;tstrRqRRRRORRRuRHR=R R R( RR talterR7RcRDRSRVtv((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyRjs6   ""20 +0 cCs,|jd}|dkr$d|jS|SdS(Ntuser_module_prefixs%s.(R7RLR(R ttargetRC((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyt_user_autogenerate_prefixs   cCs|jdpdS(Ntsqlalchemy_module_prefixR(R7(R ((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyRscCs"|jr dS|jdpdSdS(Ns batch_op.talembic_module_prefixR(R^R7(R ((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyR s cCsNd|jkrJ|jd}|rJ||||}|tk rG|SqJntS(Nt render_item(R7R9(Rtobject_R trenderR((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyt_user_defined_renders   cCstd||}|tk r"|Sg}|jrbt|j|}|rb|jd|fqbn|js|jd|jfn|jdk r|jd|jfndit|d6t |j d6t |j |d6d j g|D]\}}d ||f^qd 6S( NRRt autoincrementRs,%(prefix)sColumn(%(name)r, %(type)s, %(kw)s)RCRRs, s%s=%sRP(RR9RRR;RRRLRRORRRR (RR RR7tkwnameRf((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyRIs$    cCstd||}|tk r"|St|tjrht|jtjrU|j}qht|j|Snt|tr|rt t j dd|}n|S(NRs^'|'$R( RR9R Rt DefaultClausetargRRRaRuRR(tdefaultR trepr_R((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyR#s  cCstd||}|tk r"|St|j}|j}|jdrtjd|jd}|dk r|j d|nd||fS|jdrt |}d||fSt ||}d||fSdS( NRssqlalchemy.dialectsssqlalchemy\.dialects\.(\w+)is"from sqlalchemy.dialects import %ss%s.%rs sqlalchemy.s%s%r( RR9RRRt startswithRtmatchtgroupRLtaddRR(RR RtmodRtdnameRC((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyR4s    cCstj|}|||S(N(t_constraint_renderersR2(RR R4((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyRKKsc Cstd||}|tk r"|S|js/dSg}|jrf|jdtt||jfndit|d6dj g|jD]}t|j ^qg|D]\}}d||f^qd6S(Nt primary_keyRs(%(prefix)sPrimaryKeyConstraint(%(args)s)RCs, s%s=%sRD( RR9RHRLRR;RuRRR Re(RR RR7tcRRf((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyt_render_primary_keyPs     "cCs|j}|jd}|d\}}|dk r\t|dkr\d||f}ndj|dd!}|jdk r|jjdk r|jjj}||jkrt |j|j |j }qnd||f}|S(soImplement a 'safe' version of ForeignKey._get_colspec() that never tries to resolve the remote table. t.iis%s.%siiN( t _get_colspectsplitRLRMR tparentRRtmetadatattablesRORR(tfktmetadata_schematcolspecttokensRXtcolnamettable_fullnametparent_metadata((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyt _fk_colspecfs ! cCs|jr(|jdt|jfn|jrP|jdt|jfn|jrx|jdt|jfn|jr|jdt|jfn|jr|jdt|jfndS(NRoRpRqRrRs(RoR;RuRpRqRrRs(RR7((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyt_populate_render_fk_optss     cstd||}|tk r"|Sg}|jrY|jdtt||jfnt|||jjj dit |d6dj d|j Dd6dj fd|j Dd 6dj g|D]\}}d ||f^qd 6S( Nt foreign_keyRsC%(prefix)sForeignKeyConstraint([%(cols)s], [%(refcols)s], %(args)s)RCs, css%|]}dt|jjVqdS(s%rN(RORR(t.0tf((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pys stcolsc3s$|]}tt|VqdS(N(RuR(RR(tapply_metadata_schema(sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pys strefcolss%s=%sRD( RR9RR;RuRRRRRRR R(RR RR7RRf((RsL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyt_render_foreign_keys$     cCs2td||}|tk r"|St||tS(NR[(RR9Rj(RR R((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyt_render_unique_constraints cCstd||}|tk r"|S|jrYt|jdrYt|jjtjrYdSg}|j r|j dt t ||j fndit |d6|rddjd|Dndd 6t|j|d td 6S( NtcheckRRs.%(prefix)sCheckConstraint(%(sqltext)s%(opts)s)RCs, css%|]\}}d||fVqdS(s%s=%sN((RRVR((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pys sRR7Rtsqltext(RR9t _create_rulethasattrR Rtsqltypest TypeEngineRLRR;RuRRR RaR(RR RR7((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pyt_render_check_constraints(      *(Tt sqlalchemyRRRRRt operationsRRRRt util.compatRRt mako.pygenRRRNtsqlalchemy.sql.namingR Rt ImportErrorRR&t Dispatchertdefault_renderersR1RR)R5t dispatch_fortModifyTableOpsR@t CreateTableOpRWt DropTableOpRZt CreateIndexOpRgt DropIndexOpRitCreateUniqueConstraintOpRmtCreateForeignKeyOpR}tCreatePrimaryKeyOpRtCreateCheckConstraintOpRtDropConstraintOpRt AddColumnOpRt DropColumnOpRt AlterColumnOpRtobjectR RORlRaR_RjRRR RRIRRRRKtPrimaryKeyConstraintRRRtForeignKeyConstraintRtUniqueConstraintRtCheckConstraintRtbranch(((sL/opt/alt/python27/lib/python2.7/site-packages/alembic/autogenerate/render.pytsj          !(7   %           "