ó ˜Ñž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|}xht|jƒD]W\}}t|dƒs—||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]ó}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 R6((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.pyRGws"  + !   N(RRRRR>RRG(((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.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&gƒS(N(R$tsumRR(R R6R!((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR•s(RRRR>R(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRLŒs  R%cBs eZd„Zed„ƒZRS(cCsLxEt|ƒD]7\}}t|ƒtkr |t|j|jƒfSq 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|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 classmethodRX(((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*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&cBsMeZddded„Zed„ƒZd„Zed„ƒZ d„Z 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.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: (.*)\]RR( RR@R t partitiontreplaceR)t startswithRSRTRU( RVtoption_descriptionRZR[R'R(toptionst_t descriptiontstmatched((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRXÂs   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  R0cBseZdd„ZRS(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.pyRGäsN(RRRRG(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR0âsR1cBseZdd„ZRS(cCsT|dkrgn|}x,|jD]!}|j||ƒ\}}}q"Wt||fS(N(RRRGRC(R RDRERQtm((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRGñsN(RRRRG(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR1ïsR2cBseZdZRS(s*Marker/placeholder for [options] shortcut.(RRR(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR2øsR3cBseZdd„ZRS(cCsÒt|jƒdkst‚|dkr-gn|}|}|}d}t}d}xX|r«|jdj||ƒ\}}}||r‹dnd7}||kr¢Pn|}qTW|dkrÅt||fSt||fS(Nii(tlenRRRRCRGR@(R RDRERiR!tl_Rhttimes((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRGÿs  "    N(RRRRG(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR3ýsR.cBseZdd„ZRS(cCs|dkrgn|}g}xF|jD];}|j||ƒ\}}}}|r(|j|ƒq(q(W|r€t|dd„ƒSt||fS(NtkeycSst|dƒS(Ni(Rk(toutcome((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyts(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#eZd„Zd„Zd„ZRS(cCs2|t|dƒr|jƒn|7}||_dS(NR)(RR)terror(R RWRt((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyR#s%cCst|ƒr|jdƒSdS(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|jƒjdƒ\}}}|jdƒs3t‚||koJdknrUd n|}g|D]}|j|krb|^qb}|jtkrÕ|gkrÕg|D]'}|jr¥|jj|ƒr¥|^q¥}nt|ƒdkr|jd|dj d„|Dƒƒfƒ‚nZt|ƒdkr•|dkr:dnd}t d ||ƒ}|j |ƒ|jtkrpt d |||r†|nt ƒ}qpnÛt |dj |dj|dj|djƒ}|jdkrý|d k rC|jd |jƒ‚qCnF|d krC|jƒd kr4|jd |jƒ‚n|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ƒ}|jdƒr+|jdƒ s1t‚|jdƒ}g}x«|dkród|d|d}}g|D]}|j|kru|^qu}t|ƒdkrÊ|jd|t|ƒfƒ‚nt|ƒdkr%t|ddƒ}|j |ƒ|jt krãt|ddt ƒ}qãn¾t||dj |dj |djƒ}d}|j dkr¶|dkr§|jƒdkr˜|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||ƒ}|jƒdk 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  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_seqRvRkR0RuR.(RxRdtseqR‚((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„(RvRt parse_atomR3Ru(RxRdR‚tatom((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'Rds--R_tN(R_s--(RvRuR0R1RRtR2RbR{RtendswithtisupperR%R*(RxRdR}R‚tmatchingtpattern((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(RvRR%RbR{RR/Ru(RxRdt 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_(RSR)tzipRbR&RX(tdocR)ts1ts2RgRd((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(RSR)RkRRNR (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((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_usageÚscCsi|r7td„|Dƒƒr7|jdƒGHtjƒn|retd„|Dƒƒre|GHtjƒndS(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.pytextrasßs  tDictcBseZd„ZRS(cCs'ddjd„t|jƒƒDƒƒS(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.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((RMRI((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pys BsN(RR targvRœRR RšRƒRžR•RsRRRR&R2RR¤RRGR¥( R—R¨R¢R£R“RdR’tpattern_optionstaot doc_optionsRhRDRE((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyRís ?    ((RR RSt__all__t __version__t ExceptionRRRtobjectR R;RLR%R*R&R0R1R2R3R.RRsR{RRƒRR…R‰R@R•RšRœRžR¤tdictR¥RRCR(((s7/opt/alt/python27/lib/python2.7/site-packages/docopt.pyts>    K!(   ! #