ÿØÿà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 @sddlZddlmZddlmZddlmZddlmZdZ dd Z de e d e ddddd Z dddd Ze dd Ze ddZdZde dZe e dZe dZe e dZe ddZdZdS(iNi(tScriptDirectory(tEnvironmentContext(tutil(t autogeneratecCs|jdxitj|jD]R}ttjj|j|d}t|}WdQX|jd||q#W|jd|jddS(sList available templatessAvailable templates: tREADMENs%s - %ss1 Templates are used via the 'init' command, e.g.:s, alembic init --template generic ./scripts(t print_stdouttostlistdirtget_template_directorytopentpathtjointnext(tconfigttempnametreadmetsynopsis((s@/opt/alt/python27/lib/python2.7/site-packages/alembic/command.pytlist_templates s    tgenericc Cstj|tjr+tjd|ntjj|j|}tj|tjsqtjd|ntjdtjj |tj |tjj|d}tjdtjj |tj |t |}xtj |D]}tjj||}|dkrltjj |j }tj|tjrStjd|q|j||d|qtjj|rtjj||} |j|| qqWtjd|d S( s#Initialize a new scripts directory.sDirectory %s already existssNo such template %rsCreating directory %stversionssalembic.ini.makos File %s already exists, skippingtscript_locationsNPlease edit configuration/connection/logging settings in %r before proceeding.N(RtaccesstF_OKRt CommandErrorR R RtstatustabspathtmakedirsRRtconfig_file_nametmsgt_generate_templatetisfilet _copy_file( R t directoryttemplatet template_dirRtscripttfile_t file_patht config_filet output_file((s@/opt/alt/python27/lib/python2.7/site-packages/alembic/command.pytinits:       theadc sftj|} td|d|d|d|d|d|d|d|d | } tj|| | tj|jd } |rt} |rtj d nfd } n0| rfd } n|rtj dn| r%t || d| d|dj d| j WdQXngj D] }|^q2}t|dkr^|dS|SdS(sCreate a new revision file.tmessageRtsqlR)tsplicet branch_labelt version_pathtrev_idt depends_ontrevision_environments7Using --sql with --autogenerate does not make any sensecsj||gS(N(trun_autogenerate(trevtcontext(trevision_context(s@/opt/alt/python27/lib/python2.7/site-packages/alembic/command.pytretrieve_migrations`scsj||gS(N(trun_no_autogenerate(R3R4(R5(s@/opt/alt/python27/lib/python2.7/site-packages/alembic/command.pyR6dssiUsing --sql with the revision command when revision_environment is not configured does not make any sensetfntas_sqlt template_argsR5Nii(Rt from_configtdicttautogentRevisionContextRtasbooltget_main_optiontTrueRRR:trun_envtgenerate_scriptstlen(R R*RR+R)R,R-R.R/R0tscript_directoryt command_argst environmentR6R#tscripts((R5s@/opt/alt/python27/lib/python2.7/site-packages/alembic/command.pytrevisionDsF    c CsMtj|}i|d6}|j|p1tj|dtd|d||S(sMerge two revisions together. Creates a new migration file. .. versionadded:: 0.7.0 .. seealso:: :ref:`branches` R trefreshR)t branch_labels(RR;tgenerate_revisionRR/RA(R t revisionsR*R-R/R#R:((s@/opt/alt/python27/lib/python2.7/site-packages/alembic/command.pytmerges   c stj|d }dkrT|s9tjdnjdd\}nfd}t|d|d|d|dd |jWd QXd S( sUpgrade to a later version.t:sRange revision not allowedicsj|S(N(t _upgrade_revs(R3R4(RIR#(s@/opt/alt/python27/lib/python2.7/site-packages/alembic/command.pytupgradesR8R9t starting_revtdestination_revttagN(RR;tNoneRRtsplitRRB(R RIR+RTRRRQ((RIR#s@/opt/alt/python27/lib/python2.7/site-packages/alembic/command.pyRQs   c stj|d }dkrT|s9tjdnjdd\}n|rltjdnfd}t|d|d|d|d d |jWd QXd S( sRevert to a previous version.ROsRange revision not allowedis/downgrade with --sql requires :csj|S(N(t_downgrade_revs(R3R4(RIR#(s@/opt/alt/python27/lib/python2.7/site-packages/alembic/command.pyt downgradesR8R9RRRSRTN(RR;RURRRVRRB(R RIR+RTRRRX((RIR#s@/opt/alt/python27/lib/python2.7/site-packages/alembic/command.pyRXs&   cstj|dkrVfd}td|jWdQXn*x'j|D]}j|jqfWdS(s1Show the revision(s) denoted by the given symbol.tcurrentcs.x'j|D]}j|jqWgS(N(t get_revisionsRt log_entry(R3R4tsc(R R#(s@/opt/alt/python27/lib/python2.7/site-packages/alembic/command.pyt show_currentsR8N(RR;RRBRZRR[(R R3R]R\((R R#s@/opt/alt/python27/lib/python2.7/site-packages/alembic/command.pytshows  cstj|}|dk rWd|kr9tjdn|jjd\}}n d}}fdddfd}|dkr|||d|n5|dkr|||d|n||||dS( s.List changeset scripts in chronological order.ROs9History range requires [start]:[end], [start]:, or :[end]c s^xW|jd|pdd|p!dD]1}|j|jddtdtdtq%WdS(NtbaseR)theadstverbosetinclude_branchest include_doctinclude_parents(twalk_revisionsRt cmd_formatRA(R R#R_R)R\(Ra(s@/opt/alt/python27/lib/python2.7/site-packages/alembic/command.pyt_display_historys    csEfd}td|jWdQXdS(NcsHdkr"|n"dkrD|ngS(N(RU(R3R4(RgR_R R)R#(s@/opt/alt/python27/lib/python2.7/site-packages/alembic/command.pyt_display_current_historys   R8(RRB(R R#R_R)Rh(Rg(R_R R)R#s@/opt/alt/python27/lib/python2.7/site-packages/alembic/command.pyt_display_history_w_currents  RYR)R_N(RR;RURRtstripRV(R t rev_rangeRaR#R_R)Ri((RgRas@/opt/alt/python27/lib/python2.7/site-packages/alembic/command.pythistorys       cCsstj|}|r'|jd}n|j|j}x0|D](}|j|j|dtdtqCWdS(s4Show current available heads in the script directoryR`Rbttree_indicatorsN(RR;RZt get_headsRRfRAtFalse(R Ratresolve_dependenciesR#R`R3((s@/opt/alt/python27/lib/python2.7/site-packages/alembic/command.pyR`s cstj|xqjD]cjr|jdjdtdjfdfdjDDqqWdS(sShow current branch pointss%s %s Rbs c 3sG|]=}ddttj|jtdtdfVqdS(s%s -> %st RbRcN(RDtstrRIRfRoRA(t.0trev_obj(R\Ra(s@/opt/alt/python27/lib/python2.7/site-packages/alembic/command.pys 'sc3s|]}j|VqdS(N(t get_revision(RsR3(R#(s@/opt/alt/python27/lib/python2.7/site-packages/alembic/command.pys ,sN( RR;Retis_branch_pointRRfRAR tnextrev(R Ra((R\R#Ras@/opt/alt/python27/lib/python2.7/site-packages/alembic/command.pytbranchess csdtj|r%tjdnfd}td|jWdQXdS(s,Display the current revision for a database.s--head-only is deprecatedcs_r+jdtj|jjjnx-j|D]}j|jq;WgS(NsCurrent revision(s) for %s:(RRtobfuscate_url_pwt connectiontengineturlRZRf(R3R4(R R#Ra(s@/opt/alt/python27/lib/python2.7/site-packages/alembic/command.pytdisplay_version9sR8N(RR;RtwarnRRB(R Rat head_onlyR}((R R#Ras@/opt/alt/python27/lib/python2.7/site-packages/alembic/command.pyRY1s  c stj|d }dkrT|s9tjdnjdd\}nfd}t|d|d|dd|d |jWd QXd S( sQ'stamp' the revision table with the given revision; don't run any migrations.ROsRange revision not allowedicsj|S(N(t _stamp_revs(R3R4(RIR#(s@/opt/alt/python27/lib/python2.7/site-packages/alembic/command.pytdo_stampWsR8R9RSRRRTN(RR;RURRRVRRB(R RIR+RTRRR((RIR#s@/opt/alt/python27/lib/python2.7/site-packages/alembic/command.pytstampKs   cstj||dkrSfd}t|d|jWdQXnLj|}|s~tjd|nx|D]}tj|jqWdS(s%Edit revision script(s) using $EDITORRYcsF|stjdnx'j|D]}tj|jq(WgS(NsNo current revisions(RRRZteditR (R3R4R\(R#(s@/opt/alt/python27/lib/python2.7/site-packages/alembic/command.pyt edit_currentls R8Ns*No revision files indicated by symbol '%s'( RR;RRBRZRRRR (R R3RtrevsR\((R#s@/opt/alt/python27/lib/python2.7/site-packages/alembic/command.pyRfs   (RR#Rtruntime.environmentRtRRR=RR(RURoRIRNRQRXR^RlR`RxRYRR(((s@/opt/alt/python27/lib/python2.7/site-packages/alembic/command.pyts&   ,  : -