ÿØÿà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Áß_ÿÙ ўSc@sdZddlZddlZdgZdZdefdYZdefdYZd e fd YZ d e fd YZ d e fdYZ de fdYZ de fdYZde fdYZde fdYZde fdYZdefdYZde fdYZde fdYZdefd YZd!Zd"Zd#Zd$Zd%Zd&Zed'Zd(Zd)Z d*Z!d+Z"d,e#fd-YZ$de&ded.Z'dS(/sPythonic command-line interface parser that will make you smile. * http://docopt.org * Repository and issue-tracker: https://github.com/docopt/docopt * Licensed under terms of MIT license (see LICENSE-MIT) * Copyright (c) 2013 Vladimir Keleshev, vladimir@keleshev.com iNtdocopts0.6.2tDocoptLanguageErrorcBseZdZRS(s4Error in construction of usage-message by developer.(t__name__t __module__t__doc__(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRst DocoptExitcBs eZdZdZddZRS(s;Exit in case user invoked program with incorrect arguments.tcCs%tj||d|jjdS(Ns (t SystemExitt__init__tusagetstrip(tselftmessage((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRs(RRRR R(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRstPatterncBsGeZdZdZdZddZdZedZ RS(cCst|t|kS(N(trepr(R tother((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyt__eq__"scCstt|S(N(thashR(R ((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyt__hash__%scCs|j|j|S(N(tfix_identitiestfix_repeating_arguments(R ((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pytfix(s  cCst|ds|S|dkr7tt|jn|}xVt|jD]E\}}t|ds||j||j|Make pattern-tree tips point to same object if they are equal.tchildrenN( thasattrtNonetlisttsettflatt enumerateRtindexR(R tuniqtitc((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR-s*cCs*g|jjD]}t|j^q }x|D]}xg|D]!}|j|dkr?|^q?D]}t|tkst|tkr|jr|jdkrg|_qt|jtk r|jj |_qnt|t kst|tkrd|jdkrdd|_qdqdWq/W|S(s5Fix elements that should accumulate/increment values.iiN( teitherRRtcountttypetArgumenttOptiontargcounttvalueRtsplittCommand(R R R!tcasete((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR9s( 5- 3c Csg}|gg}x}|r|jd}g|D]}t|^q1}t|krg|D]}t|tkr\|^q\d}|j|j|x|jD]}|j|g|qWqt|kr3g|D]}t|tkr|^qd}|j|j||jt|j|qt|krg|D]}t|tkrF|^qFd}|j|j||jt|j|qt |krg|D]}t|t kr|^qd}|j|j||jt|j|qt |krg|D]}t|t kr"|^q"d} |j|j| |jt| jd|q|j|qWtg|D]} t| ^qS(sATransform pattern into an equivalent, with only top-level Either.ii( tpopR#tEitherRRtappendtRequiredRtOptionalt AnyOptionst OneOrMore( R trettgroupsRR ttypesR!trequiredtoptionalt oneormoreR+((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR!Gs8   / / / / /!N( RRRRRRRRtpropertyR!(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR s     t ChildPatterncBs2eZddZdZdZddZRS(cCs||_||_dS(N(tnameR'(R R;R'((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRms cCsd|jj|j|jfS(Ns %s(%r, %r)(t __class__RR;R'(R ((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyt__repr__qscGs$| st||kr |gSgS(N(R#(R R5((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRtsc CsA|dkrgn|}|j|\}}|dkrFt||fS|| ||d}g|D]}|j|jkrc|^qc}t|jttfkr-t|jtkrd}n*t|jtkr|jgn|j}|s ||_t |||gfS|dj|7_t ||fSt |||gfS(Nii( Rt single_matchtFalseR;R#R'tintRtstrtTrue( R tleftt collectedtpostmatchtleft_tat same_namet increment((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRFws"  + !   N(RRRRR=RRF(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR:ks   t ParentPatterncBs#eZdZdZdZRS(cGst||_dS(N(RR(R R((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRscCs*d|jjdjd|jDfS(Ns%s(%s)s, css|]}t|VqdS(N(R(t.0RH((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pys s(R<RtjoinR(R ((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR=s cGsEt||kr|gStg|jD]}|j|^q&gS(N(R#tsumRR(R R5R ((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRs(RRRR=R(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRKs  R$cBs eZdZedZRS(cCsLxEt|D]7\}}t|tkr |t|j|jfSq WdS(N(NN(RR#R$R;R'R(R RCtntp((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR>scCsNtjd|d}tjd|dtj}|||rG|dndS(Ns(<\S*?>)is\[default: (.*)\]tflags(tretfindalltIR(tclass_tsourceR;R'((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pytparses(RRR>t classmethodRW(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR$s R)cBseZedZdZRS(cCs||_||_dS(N(R;R'(R R;R'((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRs cCs_xXt|D]J\}}t|tkr |j|jkrS|t|jtfSPq q WdS(N(NN(RR#R$R'R;R)RBR(R RCRORP((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR>s (RRR?RR>(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR)s R%cBsMeZdddedZedZdZedZ dZ RS(icCsK|||_|_|||_|_|tkr>|r>dn||_dS(N(tshorttlongR&R'R?R(R RYRZR&R'((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRsc Csdddtf\}}}}|jjd\}}}|jddjdd}xJ|jD]<} | jdr| }qg| jdr| }qgd}qgW|rtjd |d tj } | r| dnd}n|||||S( Nis t,t t=s--t-is\[default: (.*)\]RQ( RR?R t partitiontreplaceR(t startswithRRRSRT( RUtoption_descriptionRYRZR&R'toptionst_t descriptiontstmatched((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRWs   cCs=x6t|D](\}}|j|jkr ||fSq WdS(N(NN(RR;R(R RCRORP((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR>scCs|jp|jS(N(RZRY(R ((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR;scCs d|j|j|j|jfS(NsOption(%r, %r, %r, %r)(RYRZR&R'(R ((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR=sN( RRRR?RRXRWR>R9R;R=(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR%s  R/cBseZddZRS(cCss|dkrgn|}|}|}x?|jD]4}|j||\}}}|s.t||fSq.Wt||fS(N(RRRFR?RB(R RCRDtlR RPRg((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRFsN(RRRRF(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR/sR0cBseZddZRS(cCsT|dkrgn|}x,|jD]!}|j||\}}}q"Wt||fS(N(RRRFRB(R RCRDRPtm((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRFsN(RRRRF(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR0sR1cBseZdZRS(s*Marker/placeholder for [options] shortcut.(RRR(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR1sR2cBseZddZRS(cCs|dkrgn|}|}|}d}t}d}xX|r|jdj||\}}}||rpdnd7}||krPn|}q9W|dkrt||fSt||fS(Nii(RRBRRFR?(R RCRDRhR tl_Rgttimes((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRFs "    N(RRRRF(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR2sR-cBseZddZRS(cCs|dkrgn|}g}xF|jD];}|j||\}}}}|r(|j|q(q(W|rt|ddSt||fS(NtkeycSst|dS(Ni(tlen(toutcome((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pytR(RRRFR.tminR?(R RCRDtoutcomesRPRgRdRn((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRFsN(RRRRF(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR-st TokenStreamcBs#eZdZdZdZRS(cCs2|t|dr|jn|7}||_dS(NR((RR(terror(R RVRs((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR#s%cCst|r|jdSdS(Ni(RmR,R(R ((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pytmove'scCst|r|dSdS(Ni(RmR(R ((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pytcurrent*s(RRRRtRu(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRr!s  cCsb|jjd\}}}||ko5dknr@d n|}g|D]}|j|krM|^qM}|jtkr|gkrg|D]'}|jr|jj|r|^q}nt|dkr|jd|djd|DfnZt|dkr|dkr%dnd}t d ||}|j ||jtkr[t d |||rq|nt }q[nt |dj |dj|dj |dj}|j dkr|d k r.|jd|jq.nF|d kr.|jd kr|jd |jn|j}n|jtkr[|d k rO|nt |_n|gS( s-long ::= '--' chars [ ( ' ' | '=' ) chars ] ;R]Ris%s is not a unique prefix: %s?s, css|]}|jVqdS(N(RZ(RLto((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pys 8sis%s must not have an arguments%s requires argumentN(RtR_RRZRsRRaRmRMR%R.RBRYR&R'Ru(ttokensRcRZteqR'RvtsimilarR&((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyt parse_long.s4((7 & '  c Cs|j}|jd}g}x|dkrd|d|d}}g|D]}|j|krP|^qP}t|dkr|jd|t|fnt|dkrt|dd}|j||jtkrt|ddt }qnt||dj |dj |dj }d}|j dkr|dkr|j dkrs|jd|n|j}q|}d}n|jtkr|dk r|nt |_ n|j|q$W|S(s-shorts ::= '-' ( chars )* [ [ ' ' ] chars ] ;R^Riis$%s is specified ambiguously %d timess%s requires argumentN(RttlstripRYRmRsR%RR.RRBRZR&R'Ru( RwRcttokenRCtparsedRYRvRyR'((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyt parse_shortsOs8 (    cCshttjdd|t}t||}|jdk r^|jddj|nt |S(Ns([\[\]\(\)\|]|\.\.\.)s \1 sunexpected ending: %rR\( RrRRtsubRt parse_exprRuRRsRMR/(RVRcRwtresult((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyt parse_patternrs  cCst||}|jdkr%|St|dkrFt|gn|}xZ|jdkr|jt||}|t|dkrt|gn|7}qOWt|dkrt|gS|S(sexpr ::= seq ( '|' seq )* ;t|i(t parse_seqRuRmR/RtR-(RwRctseqR((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR{s' /cCsjg}x]|jdkret||}|jdkrXt|g}|jn||7}q W|S(sseq ::= ( atom [ '...' ] )* ;t]t)Rs...N(NRRR(RuRt parse_atomR2Rt(RwRcRtatom((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRs cCsZ|j}g}|dkr|jidtgd6dtgd6|\}}|t||}|j|kr|jd|n|gS|dkr|jtgS|jdr|dkrt||S|jd r|d krt ||S|jd r$|j d s0|j rCt |jgSt |jgSd S(siatom ::= '(' expr ')' | '[' expr ']' | 'options' | long | shorts | argument | command ; s([Rt(Rt[sunmatched '%s'Rcs--R^tN(R^s--(RuRtR/R0RRsR1RaRzR~tendswithtisupperR$R)(RwRcR|Rtmatchingtpattern((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRs&   *     *cCsg}x|jdk r|jdkrQ|g|D]}td|^q7S|jjdr||t||7}q |jjdr|jdkr|t||7}q |r|g|D]}td|^qS|jtd|jq W|S(sParse command-line argument vector. If options_first: argv ::= [ long | shorts ]* [ argument ]* [ '--' [ argument ]* ] ; else: argv ::= [ long | shorts | argument ]* [ '--' [ argument ]* ] ; s--R^N(RuRR$RaRzR~R.Rt(RwRct options_firstR}tv((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyt parse_argvs $'$ cCstjd|d}gt|ddd|dddD]\}}||^q@}g|D]$}|jdrctj|^qc}|S(Ns *(<\S+?>|-\S+?)iiR^(RRR(tzipRaR%RW(tdocR(ts1ts2RfRc((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pytparse_defaultssF1cCs{tjd|}t|dkr3tdnt|dkrTtdntjddj|ddjS( Ns([Uu][Ss][Aa][Gg][Ee]:)is&"usage:" (case-insensitive) not found.s*More than one "usage:" (case-insensitive).s\n\s*\nRii(RRR(RmRRMR (Rt usage_split((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pytprintable_usages cs9|jdddjfddDdS(Nis( R\c3s+|]!}|dkrdn|VqdS(is) | (N((RLRf(tpu(s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pys ss )(R(RM(R((Rs7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyt formal_usagescCsi|r7td|Dr7|jdGHtjn|retd|Dre|GHtjndS(Ncss'|]}|jdko|jVqdS(s-hs--helpN(s-hs--help(R;R'(RLRv((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pys ss css'|]}|jdko|jVqdS(s --versionN(R;R'(RLRv((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pys s(tanyR tsystexit(thelptversionRcR((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pytextrass  tDictcBseZdZRS(cCs'ddjdt|jDS(Ns{%s}s, css|]}d|VqdS(s%r: %rN((RLR((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pys s(RMtsortedtitems(R ((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR=s(RRR=(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRsc Cs2|dkrtjd}nt|t_t|}tttj|}t t |tt ||}t |j t}x<|j tD]+}t|} t t | ||_qWt|||||jj|\} } } | r%| gkr%td|j | DStdS(sParse `argv` based on command-line interface described in `doc`. `docopt` creates your command-line interface based on its description that you pass as `doc`. Such description can contain --options, , commands, which could be [optional], (required), (mutually | exclusive) or repeated... Parameters ---------- doc : str Description of your command-line interface. argv : list of str, optional Argument vector to be parsed. sys.argv[1:] is used if not provided. help : bool (default: True) Set to False to disable automatic help on -h or --help options. version : any object If passed, the object will be printed if --version is in `argv`. options_first : bool (default: False) Set to True to require options preceed positional arguments, i.e. to forbid options and positional arguments intermix. Returns ------- args : dict A dictionary, where keys are names of command-line elements such as e.g. "--verbose" and "", and values are the parsed values of those elements. Example ------- >>> from docopt import docopt >>> doc = ''' Usage: my_program tcp [--timeout=] my_program serial [--baud=] [--timeout=] my_program (-h | --help | --version) Options: -h, --help Show this screen and exit. --baud= Baudrate [default: 9600] ''' >>> argv = ['tcp', '127.0.0.1', '80', '--timeout', '30'] >>> docopt(doc, argv) {'--baud': '9600', '--help': False, '--timeout': '30', '--version': False, '': '127.0.0.1', '': '80', 'serial': False, 'tcp': True} See also -------- * For video introduction see http://docopt.org * Full documentation is available in README.rst as well as online at https://github.com/docopt/docopt#readme icss!|]}|j|jfVqdS(N(R;R'(RLRH((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pys BsN(RRtargvRRR RRRRRrRRRR%R1RRRRFR( RRRRRRcRtpattern_optionstaot doc_optionsRgRCRD((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRs ?    ((RRRRt__all__t __version__t ExceptionRRRtobjectR R:RKR$R)R%R/R0R1R2R-RRrRzR~RRRRR?RRRRRtdictRRRBR(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyts>    K!(   ! #