ÿØÿà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|}xht|jD]W\}}t|ds||kszt||j||j|Make pattern-tree tips point to same object if they are equal.tchildrenN( thasattrtNonetlisttsettflatt enumerateRtAssertionErrortindexR(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 R6((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.pyRGws"  + !   N(RRRRR>RRG(((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.0RI((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 R6R!((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRs(RRRR>R(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRLs  R%cBs eZdZedZRS(cCsLxEt|D]7\}}t|tkr |t|j|jfSq WdS(N(NN(RR$R%R<R(R(R RDtntp((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 classmethodRX(((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*RCR(R RDRPRQ((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(icCs]|dkst|||_|_|||_|_|tkrP|rPdn||_dS(Nii(ii(RtshorttlongR'R(R@R(R RZR[R'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: (.*)\]RR( RR@R t partitiontreplaceR)t startswithRSRTRU( RVtoption_descriptionRZR[R'R(toptionst_t descriptiontstmatched((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRXs   cCs=x6t|D](\}}|j|jkr ||fSq WdS(N(NN(RR<R(R RDRPRQ((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR?scCs|jp|jS(N(R[RZ(R ((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR<scCs d|j|j|j|jfS(NsOption(%r, %r, %r, %r)(RZR[R'R((R ((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR>sN( RRRR@RRYRXR?R:R<R>(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR&s  R0cBseZddZRS(cCss|dkrgn|}|}|}x?|jD]4}|j||\}}}|s.t||fSq.Wt||fS(N(RRRGR@RC(R RDREtlR!RQRh((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRGsN(RRRRG(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR0sR1cBseZddZRS(cCsT|dkrgn|}x,|jD]!}|j||\}}}q"Wt||fS(N(RRRGRC(R RDRERQtm((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRGsN(RRRRG(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR1sR2cBseZdZRS(s*Marker/placeholder for [options] shortcut.(RRR(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR2sR3cBseZddZRS(cCst|jdkst|dkr-gn|}|}|}d}t}d}xX|r|jdj||\}}}||rdnd7}||krPn|}qTW|dkrt||fSt||fS(Nii(tlenRRRRCRGR@(R RDRERiR!tl_Rhttimes((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRGs  "    N(RRRRG(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR3sR.cBseZddZRS(cCs|dkrgn|}g}xF|jD];}|j||\}}}}|r(|j|q(q(W|rt|ddSt||fS(NtkeycSst|dS(Ni(Rk(toutcome((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pytR(RRRGR/tminR@(R RDREtoutcomesRQRhReRo((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRGsN(RRRRG(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR.st TokenStreamcBs#eZdZdZdZRS(cCs2|t|dr|jn|7}||_dS(NR)(RR)terror(R RWRt((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR#s%cCst|r|jdSdS(Ni(RkR-R(R ((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pytmove'scCst|r|dSdS(Ni(RkR(R ((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pytcurrent*s(RRRRuRv(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRs!s  cCsw|jjd\}}}|jds3t||koJdknrUd n|}g|D]}|j|krb|^qb}|jtkr|gkrg|D]'}|jr|jj|r|^q}nt|dkr|jd|dj d|DfnZt|dkr|dkr:dnd}t d ||}|j ||jtkrpt d |||r|nt }qpnt |dj |dj|dj|dj}|jdkr|d k rC|jd |jqCnF|d krC|jd kr4|jd |jn|j}n|jtkrp|d k rd|nt |_n|gS( s-long ::= '--' chars [ ( ' ' | '=' ) chars ] ;R^s--Ris%s is not a unique prefix: %s?s, css|]}|jVqdS(N(R[(RMto((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pys 8sis%s must not have an arguments%s requires argumentN(RuR`RbRRR[RtRRkRNR&R/RCRZR'R(Rv(ttokensRdR[teqR(RwtsimilarR'((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyt parse_long.s6((7 & '  c Cs|j}|jdr+|jd s1t|jd}g}x|dkrd|d|d}}g|D]}|j|kru|^qu}t|dkr|jd|t|fnt|dkr%t|dd}|j ||jt krt|ddt }qnt||dj |dj |dj}d}|j dkr|dkr|jdkr|jd|n|j}q|}d}n|jt kr|dk r|nt |_n|j |qIW|S( s-shorts ::= '-' ( chars )* [ [ ' ' ] chars ] ;R_s--Riis$%s is specified ambiguously %d timess%s requires argumentN(RuRbRtlstripRZRkRtR&RR/RRCR[R'R(Rv( RxRdttokenRDtparsedRZRwRzR(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyt parse_shortsOs: %(    cCshttjdd|t}t||}|jdk r^|jddj|nt |S(Ns([\[\]\(\)\|]|\.\.\.)s \1 sunexpected ending: %rR]( RsRStsubRt parse_exprRvRRtRNR0(RWRdRxtresult((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_seqRvRkR0RuR.(RxRdtseqR((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(RvRt parse_atomR3Ru(RxRdRtatom((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'Rds--R_tN(R_s--(RvRuR0R1RRtR2RbR{RtendswithtisupperR%R*(RxRdR}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(RvRR%RbR{RR/Ru(RxRdt 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_(RSR)tzipRbR&RX(tdocR)ts1ts2RgRd((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(RSR)RkRRNR (Rt usage_split((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pytprintable_usages cs9|jdddjfddDdS(Nis( R]c3s+|]!}|dkrdn|VqdS(is) | (N((RMRg(tpu(s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pys ss )(R)RN(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((RMRw((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pys ss css'|]}|jdko|jVqdS(s --versionN(R<R((RMRw((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pys s(tanyR tsystexit(thelptversionRdR((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pytextrass  tDictcBseZdZRS(cCs'ddjdt|jDS(Ns{%s}s, css|]}d|VqdS(s%r: %rN((RMR ((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pys s(RNtsortedtitems(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((RMRI((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pys BsN(RRtargvRRR RRRRRsRRRR&R2RRRRGR( RRRRRRdRtpattern_optionstaot doc_optionsRhRDRE((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRs ?    ((RRRSt__all__t __version__t ExceptionRRRtobjectR R;RLR%R*R&R0R1R2R3R.RRsR{RRRRRR@RRRRRtdictRRRCR(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyts>    K!(   ! #