ó ˜ÑžSc@södZddlZddlZdgZdZdefd„ƒYZdefd„ƒYZd e fd „ƒYZ d e fd „ƒYZ d e fd„ƒYZ de fd„ƒYZ de fd„ƒYZde fd„ƒYZde fd„ƒYZde fd„ƒYZdefd„ƒYZde fd„ƒYZde fd„ƒYZdefd „ƒ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 iÿÿÿÿNtdocopts0.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 eZdZdZdd„ZRS(s;Exit in case user invoked program with incorrect arguments.tcCs%tj||d|jjƒƒdS(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.pyRstPatterncBsGeZd„Zd„Zd„Zdd„Zd„Zed„ƒZ 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  cCsšt|dƒs|S|dkr7tt|jƒƒƒn|}xVt|jƒD]E\}}t|dƒs…||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]ó}xêg|D]!}|j|ƒdkr?|^q?D]º}t|ƒtks—t|ƒtkrß|jrß|jdkr²g|_qßt|jƒtk rß|jj ƒ|_qßnt|ƒ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 Csµg}|gg}x}|r‘|jdƒ}g|D]}t|ƒ^q1}t|krÅg|D]}t|ƒtkr\|^q\d}|j|j|ƒƒxñ|jD]}|j|g|ƒq¤Wqt|kr3g|D]}t|ƒtkrØ|^qØd}|j|j|ƒƒ|jt|jƒ|ƒqt|kr¡g|D]}t|ƒtkrF|^qFd}|j|j|ƒƒ|jt|jƒ|ƒqt |krg|D]}t|ƒt kr´|^q´d}|j|j|ƒƒ|jt|jƒ|ƒqt |krg|D]}t|ƒt kr"|^q"d} |j|j| ƒƒ|jt| jƒd|ƒq|j|ƒqWtg|D]} t| Œ^qœŒS(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 ChildPatterncBs2eZdd„Zd„Zd„Zdd„ZRS(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|jƒttfkr-t|jƒtkrÀd}n*t|jƒtkrá|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#eZd„Zd„Zd„ZRS(cGst|ƒ|_dS(N(RR(R R((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRŽscCs*d|jjdjd„|jDƒƒfS(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&gƒS(N(R#tsumRR(R R5R ((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR•s(RRRR=R(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRKŒs  R$cBs eZd„Zed„ƒZRS(cCsLxEt|ƒD]7\}}t|ƒtkr |t|j|jƒfSq 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|dndƒS(Ns(<\S*?>)is\[default: (.*)\]tflags(tretfindalltIR(tclass_tsourceR;R'((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pytparse£s(RRR>t classmethodRW(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR$›s R)cBseZed„Zd„ZRS(cCs||_||_dS(N(R;R'(R R;R'((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR¬s cCs_xXt|ƒD]J\}}t|ƒtkr |j|jkrS|t|jtƒfSPq 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%cBsMeZddded„Zed„ƒZd„Zed„ƒZ d„Z RS(icCsK|||_|_|||_|_|tkr>|r>dn||_dS(N(tshorttlongR&R'R?R(R RYRZR&R'((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR¼sc Csôdddtf\}}}}|jƒjdƒ\}}}|jddƒjddƒ}xJ|jƒD]<} | jdƒr…| }qg| jdƒr| }qgd}qgW|rátjd |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.pyRWÂs   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/cBseZdd„ZRS(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.pyRFäsN(RRRRF(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR/âsR0cBseZdd„ZRS(cCsT|dkrgn|}x,|jD]!}|j||ƒ\}}}q"Wt||fS(N(RRRFRB(R RCRDRPtm((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRFñsN(RRRRF(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR0ïsR1cBseZdZRS(s*Marker/placeholder for [options] shortcut.(RRR(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR1øsR2cBseZdd„ZRS(cCs·|dkrgn|}|}|}d}t}d}xX|r|jdj||ƒ\}}}||rpdnd7}||kr‡Pn|}q9W|dkrªt||fSt||fS(Nii(RRBRRFR?(R RCRDRhR tl_Rgttimes((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRFÿs "    N(RRRRF(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR2ýsR-cBseZdd„ZRS(cCs|dkrgn|}g}xF|jD];}|j||ƒ\}}}}|r(|j|ƒq(q(W|r€t|dd„ƒSt||fS(NtkeycSst|dƒS(Ni(tlen(toutcome((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyts(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#eZd„Zd„Zd„ZRS(cCs2|t|dƒr|jƒn|7}||_dS(NR((RR(terror(R RVRs((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR#s%cCst|ƒr|jdƒSdS(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|jƒjdƒ\}}}||ko5dknr@d n|}g|D]}|j|krM|^qM}|jtkrÀ|gkrÀg|D]'}|jr|jj|ƒr|^q}nt|ƒdkr|jd|djd„|Dƒƒfƒ‚nZt|ƒdkr€|dkr%dnd}t d ||ƒ}|j |ƒ|jtkr[t d |||rq|nt ƒ}q[nÛt |dj |dj|dj |djƒ}|j dkrè|d k r.|jd|jƒ‚q.nF|d kr.|jƒd kr|jd |jƒ‚n|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«|dkrÎd|d|d}}g|D]}|j|krP|^qP}t|ƒdkr¥|jd|t|ƒfƒ‚nt|ƒdkrt|ddƒ}|j|ƒ|jtkr¾t|ddt ƒ}q¾n¾t||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||ƒ}|jƒdk 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  cCsÌt||ƒ}|jƒdkr%|St|ƒdkrFt|Œgn|}xZ|jƒdkr¨|jƒt||ƒ}|t|ƒdkržt|Œgn|7}qOWt|ƒdkrÈt|Œ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]|jƒdkret||ƒ}|jƒdkrXt|Œg}|jƒn||7}q W|S(sseq ::= ( atom [ '...' ] )* ;t]t)Rƒs...N(NR†R‡Rƒ(RuRt parse_atomR2Rt(RwRcRtatom((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR„ˆs cCsZ|jƒ}g}|dkr–|jƒidtgd6dtgd6|\}}|t||ƒŒ}|jƒ|kr|jd|ƒ‚n|gS|dkr¶|jƒtƒgS|jdƒrÞ|dkrÞt||ƒS|jd ƒr|d krt ||ƒS|jd ƒr$|j d ƒs0|j ƒrCt |jƒƒgSt |jƒƒgSd S(siatom ::= '(' expr ')' | '[' expr ']' | 'options' | long | shorts | argument | command ; s([R‡t(R†t[sunmatched '%s'Rcs--R^tN(R^s--(RuRtR/R0R€RsR1RaRzR~tendswithtisupperR$R)(RwRcR|Rtmatchingtpattern((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRˆ”s&   *     *cCsg}xú|jƒdk r|jƒdkrQ|g|D]}td|ƒ^q7S|jƒjdƒr||t||ƒ7}q |jƒjdƒr¹|jƒdkr¹|t||ƒ7}q |rã|g|D]}td|ƒ^qÉS|jtd|jƒƒƒq W|S(sÝParse 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_argv®s $'$ cCs‘tjd|ƒd}gt|ddd…|ddd…ƒD]\}}||^q@}g|D]$}|jdƒrctj|ƒ^qc}|S(Ns *(<\S+?>|-\S+?)iiR^(RRR(tzipRaR%RW(tdocR(ts1ts2RfRc((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pytparse_defaultsÆsF1cCs{tjd|ƒ}t|ƒdkr3tdƒ‚nt|ƒdkrTtdƒ‚ntjddj|dƒƒdjƒS( 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 (R–t usage_split((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pytprintable_usageÐs cs9|jƒd‰ddj‡fd†ˆdDƒƒdS(Nis( R\c3s+|]!}|ˆdkrdn|VqdS(is) | (N((RLRf(tpu(s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pys Üss )(R(RM(R›((Rœs7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyt formal_usageÚscCsi|r7td„|Dƒƒr7|jdƒGHtjƒn|retd„|Dƒƒre|GHtjƒndS(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.pytextrasßs  tDictcBseZd„ZRS(cCs'ddjd„t|jƒƒDƒƒS(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.pyR¤èsc Cs2|dkrtjd}nt|ƒt_t|ƒ}tttjƒ|ƒ}t t |tƒt |ƒ|ƒ}t |j tƒƒ}x<|j tƒD]+}t|ƒ} t t | ƒ|ƒ|_q•Wt||||ƒ|jƒj|ƒ\} } } | r%| gkr%td„|j ƒ| DƒƒStƒ‚dS(sÍParse `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(RRŸtargvR›RR R™R‚RR”RrRRRR%R1RR£RRFR¤( R–R§R¡R¢R’RcR‘tpattern_optionstaot doc_optionsRgRCRD((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRís ?    ((RRŸRRt__all__t __version__t ExceptionRRRtobjectR R:RKR$R)R%R/R0R1R2R-RRrRzR~R‚R€R„RˆR?R”R™R›RR£tdictR¤RRBR(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyts>    K!(   ! #