bgMdZddlZddlZdgZdZGddeZGddeZGd d e Z Gd d e Z Gd de Z Gdde Z Gdde ZGdde ZGdde ZGdde ZGddeZGdde ZGdde ZGdd eZd!Zd"Zd#Zd$Zd%Zd&Zd1d(Zd)Zd*Zd+Z d,Z!Gd-d.e"Z#d2d0Z$dS)3aPythonic 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 Ndocoptz0.6.2ceZdZdZdS)DocoptLanguageErrorz4Error in construction of usage-message by developer.N__name__ __module__ __qualname____doc__=/opt/cloudlinux/venv/lib64/python3.11/site-packages/docopt.pyrrs>>>>r rceZdZdZdZddZdS) DocoptExitz;Exit in case user invoked program with incorrect arguments.cvt||dz|jzdS)N ) SystemExit__init__usagestrip)selfmessages r rzDocoptExit.__init__s5D7T>DJ#>"E"E"G"GHHHHHr N)r)rrr r rrr r r rrs9EE EIIIIIIr rcDeZdZdZdZdZddZdZedZ dS) PatterncBt|t|kSNrepr)rothers r __eq__zPattern.__eq__"sDzzT%[[((r c:tt|Sr)hashrrs r __hash__zPattern.__hash__%sDJJr cV|||Sr)fix_identitiesfix_repeating_argumentsr#s r fixz Pattern.fix(s+  $$&&& r Nc`t|ds|S|.tt|n|}t |jD]T\}}t|ds*||vsJ||||j|<?||UdS)z>Make pattern-tree tips point to same object if they are equal.childrenN)hasattrlistsetflat enumerater*indexr&)runiqics r r&zPattern.fix_identities-stZ(( K)-tC $$%%%4dm,, ' 'DAq1j)) 'Dyyyy#' 1 #6 a    &&&&  ' 'r cd|jjD}|D]̊fdDD]}t|tust|turO|jrH|jg|_n9t|jtur|j|_t|tus!t|tur|jdkrd|_|S)z5Fix elements that should accumulate/increment values.c6g|]}t|jSr r,r*.0r3s r z3Pattern.fix_repeating_arguments..;s"AAAq$qz""AAAr cFg|]}|dk|S))count)r8r3cases r r9z3Pattern.fix_repeating_arguments..=s-;;;AA):):a):):):r Nr) eitherr*typeArgumentOptionargcountvaluer,splitCommand)rr>er=s @r r'zPattern.fix_repeating_arguments9sAADK,@AAA  D;;;;;;;  77h&&$q''V*;*; *;w"$agd22"#'--//77g%%aF):):qzQAG  r cg}|gg}|r]|d}d|D}t|vr_d|Dd}||||jD]}||g|znt |vrfd|Dd}||||t |j|znbt|vred|Dd}||||t |j|znt|vred|Dd}||||t |j|znt|vrhd|Dd} ||| |t | jdz|zn|||]td |DS) zATransform pattern into an equivalent, with only top-level Either.rc,g|]}t|Sr r?r7s r r9z"Pattern.either..Ps///T!WW///r c>g|]}t|tu|Sr )r?Eitherr7s r r9z"Pattern.either..Rs(CCCaF1B1B!1B1B1Br c>g|]}t|tu|Sr )r?Requiredr7s r r9z"Pattern.either..W(GGG!477h3F3FA3F3F3Fr c>g|]}t|tu|Sr )r?Optionalr7s r r9z"Pattern.either..[rNr c>g|]}t|tu|Sr )r? AnyOptionsr7s r r9z"Pattern.either.._s(III!477j3H3HA3H3H3Hr c>g|]}t|tu|Sr )r? OneOrMorer7s r r9z"Pattern.either..cs(III1DGGy4H4HQ4H4H4Hr c g|] }t| Sr )rM)r8rFs r r9z"Pattern.either..hs222! 222r ) poprKr0r*appendrMr,rPrRrT) rretgroupsr*typesr>r3requiredoptional oneormores r r>zPattern.eitherGs & %zz!}}H//h///ECCXCCCAF X^^F3344422AMM1#.11112U""GGxGGGJ X^^H55666 d8#455@AAAAU""GGxGGGJ X^^H55666 d8#455@AAAAu$$IIxIII!L X^^H55666 d8#455@AAAAe##IIIII!L  X^^I66777 d9#566:XEFFFF 8$$$3 %422c22233r r) rrr r r$r(r&r'propertyr>r r r rr s)))    ' ' ' '    4 4X 4 4 4r rc*eZdZddZdZdZddZdS) ChildPatternNc"||_||_dSrnamerCrrdrCs r rzChildPattern.__init__m  r c@|jjd|jd|jdS)N(, )) __class__rrdrCr#s r __repr__zChildPattern.__repr__qs&#~666 4:::NNr c2|rt||vr|gngSrrIrr[s r r.zChildPattern.flatts#"Ad4jjE&9&9vvrAr c|gn|}|\}}|d||fS|d|||dzdz}fd|D}tjttfvrutjturd}n*t|jt ur|jgn|j}|s||_d|||gzfS|dxj|z c_d||fSd|||gzfS)NFr;c4g|]}|jjk|Sr )rd)r8ars r r9z&ChildPattern.match..}s'AAA1QVty-@-@Q-@-@-@r Tr) single_matchr?rCintr,str)rleft collectedposmatchleft_ same_name increments` r rxzChildPattern.matchws)#+BB &&t,, U =$ ) )TcT T#'((^+AAAA AAA   T{ * *DJ3&& .25;.?.?3.F.Fek]]"'+ 8' UI$777 aL  ) +   ) )UI///r r)rrr rrlr.rxr r r raraks`OOOBBB000000r rac eZdZdZdZdZdS) ParentPatternc.t||_dSrr6)rr*s r rzParentPattern.__init__sX r cj|jjddd|jDdS)Nrhric34K|]}t|VdSrrr8rqs r z)ParentPattern.__repr__..s($D$DT!WW$D$D$D$D$D$Dr rj)rkrjoinr*r#s r rlzParentPattern.__repr__sB>22299$D$Ddm$D$D$DDDDDF Fr cnt|vr|gStfd|jDgS)Nc$g|] }|j Sr )r.)r8r3r[s r r9z&ParentPattern.flat..s!:::qFAFEN:::r )r?sumr*rns `r r.zParentPattern.flatsB ::  6M::::DM:::B???r N)rrr rrlr.r r r r}r}sI'''FFF@@@@@r r}c*eZdZdZedZdS)r@ct|D]9\}}t|tur|t|j|jfcS:dSNNN)r/r?r@rdrCrrunps r rrzArgument.single_matchsUdOO 7 7DAqAww(""(49ag666666#zr ctjd|d}tjd|tj}|||r|dndS)Nz(<\S*?>)r\[default: (.*)\]flags)refindallI)class_sourcerdrCs r parsezArgument.parsesPz*f--a0 .bdCCCvd7E!HH4888r N)rrr rr classmethodrr r r r@r@s> 99[999r r@ceZdZddZdZdS)rEFc"||_||_dSrrcres r rzCommand.__init__rfr ct|D]F\}}t|tur+|j|jkr|t |jdfcSnGdS)NTr)r/r?r@rCrdrErs r rrzCommand.single_matchsidOO  DAqAww(""7di''gdi666666E # zr NF)rrr rrrr r r rErEs7r rEcNeZdZd dZedZdZedZdZ dS) rANrFcl|dvsJ||c|_|_||c|_|_|dur|rdn||_dS)N)rr;FshortlongrBrC)rrrrBrCs r rzOption.__init__sN6!!!! %t DI$,e! tz"e^^^TTe r cd\}}}}|d\}}}|dddd}|D]4} | dr| }| dr| }2d}5|r-t jd |t j } | r| d nd}|||||S) NNNrFz , =---r;rrr)r partitionreplacerD startswithrrr) roption_descriptionrrrBrCoptions_ descriptionsmatcheds r rz Option.parses';$tXu"4":":"<"<"F"Ft"L"LK//#s++33C==  A||D!! c""   4j!4kNNNG")3GAJJtEveT8U333r c\t|D]\}}|j|jkr||fcSdSr)r/rdrs r rrzOption.single_matchsAdOO  DAqyAF""!t #zr c|jp|jSr)rrr#s r rdz Option.namesy&DJ&r c Hd|jd|jd|jd|jd S)NzOption(rirjrr#s r rlzOption.__repr__s2+/:::tyyy+/===$***F Fr r) rrr rrrrrr_rdrlr r r rArAsDDDD 44[4  ''X'FFFFFr rAceZdZddZdS)rMNcz|gn|}|}|}|jD]%}|||\}}}|sd||fcS&d||fS)NFTr*rx)rrurvlr3rrs r rxzRequired.matchsn#+BB   . .AGGAqMMMGQ .dI---- .Qzr rrrr rxr r r rMrMs(r rMceZdZddZdS)rPNc`|gn|}|jD]}|||\}}}d||fS)NTr)rrurvrms r rxzOptional.matchsJ#+BB  : :A!"y!9!9 AtYYT9$$r rrr r r rPrPs(%%%%%%r rPceZdZdZdS)rRz*Marker/placeholder for [options] shortcut.Nrr r r rRrRs4444r rRceZdZddZdS)rTNct|jdksJ|gn|}|}|}d}d}d}|r9|jd||\}}}||rdndz }||krn|}|9|dkrd||fSd||fS)Nr;TrF)lenr*rx)rrurvrr3l_rtimess r rxzOneOrMore.matchs4=!!Q&&&&#+BB     M!,221a88MGQ '(QQq (EQwwB   A::A: dI%%r rrr r r rTrTs(&&&&&&r rTceZdZddZdS)rKNc|gn|}g}|jD]5}|||x\}}}}|r||6|rt|dSd||fS)Nc,t|dS)Nr;r)outcomes r zEither.match..sS__r )keyF)r*rxrXmin)rrurvoutcomesrrrrs r rxz Either.matchs#+BB  ) )A&'ggdI&>&> >MGQG )(((  Fx%D%DEEE EdI%%r rrr r r rKrKs( & & & & & &r rKc eZdZdZdZdZdS) TokenStreamcf|t|dr|n|z }||_dS)NrD)r+rDerror)rrrs r rzTokenStream.__init__#s2 '&'":":F F r cNt|r|dndSNr)rrWr#s r movezTokenStream.move's!!$ii1txx{{{T1r c4t|r|dndSrrr#s r currentzTokenStream.current*sd))-tAww-r N)rrr rrrr r r rr!sA222.....r rc|d\}}dsJ||cxkrdkrnndn|}fd|D}|jtur|gkrfd|D}t |dkr8|dd d |Dd t |dkrU|dkrdnd }td|}|||jturtd||r|nd }nt|d j |d j |d j |d j }|j d kr ||d|j znG|E| |d|j z|}|jtur ||nd |_ |gS)z-long ::= '--' chars [ ( ' ' | '=' ) chars ] ;rrrNc*g|]}|jk |Sr rr8ors r r9zparse_long..3s 444QQVt^^q^^^r cVg|]%}|j |j#|&Sr )rrrs r r9zparse_long..5s5LLLLAF4E4Ed4K4KL1LLLr r;z is not a unique prefix: ric3$K|] }|jV dSrrr8rs r rzparse_long..8s$+D+DqAF+D+D+D+D+D+Dr ?rTz%s must not have an argument%s requires argument)rrrrrrrrArXrrrBrCr)tokensreqrCsimilarrBrrs @r parse_longr.s;kkmm--c22OD"e ??4   %%%%%2%%%%%DD5E4444'444G |z!!gmmLLLLgLLL 7||all DD$))+D+DG+D+D+D"D"D"D"DFGG G W  c 11q 4x ( (q <: % %tT8h-HUUDIIA 71:#WQZ_1:& (8 : : :?? ll#AAF#JKKK!}>>##+ ,,'='FGGG  <: % %$0eedAG 3Jr c|}|dr|drJ|d}g}|dkrxd|dz|ddc}fd|D}t|dkr'|dt|fzt|dkrGt dd}|||jturt ddd }nt |dj|dj |dj }d}|j dkrK|dkrA| |d z|}n|}d}|jtur ||nd |_ |||dkx|S) z-shorts ::= '-' ( chars )* [ [ ' ' ] chars ] ;rrrrr;Nc*g|]}|jk |Sr )r)r8rrs r r9z parse_shorts..Ws%:::E)9)91)9)9)9r z$%s is specified ambiguously %d timesTr) rrlstriprrrArXrrrBrCr) rrtokenruparsedrrrCrs @r parse_shortsrOs KKMME   C ?)9)9$)?)??? ? <<  D F "**DGmT!""X t::::g::: w<>AEzQ2::~~''/$ll+AE+IJJJ"KKMMEE ED|z))#(#4%%$ a3 "**4 Mr cttjdd|t}t ||}|+|dd|zt|S)Nz([\[\]\(\)\|]|\.\.\.)z \1 zunexpected ending: %rr) rrsubr parse_exprrrrrM)rrrresults r parse_patternrrss  8'6JJ,..F  ( (F ~~#ll2SXXf5E5EEFFF V r ct||}|dkr|St|dkr t|gn|}|dkr^|t||}|t|dkr t|gn|z }|dk^t|dkr t |gn|S)zexpr ::= seq ( '|' seq )* ;|r;) parse_seqrrrMrrK)rrseqrs r rr{s FG $ $C ~~3 !$SAhn  3F ..  c ! ! ((c#hhll8S>""; ..  c ! !!$F aFFO  V;r cg}|dvrat||}|dkrt|g}|||z }|dva|S)zseq ::= ( atom [ '...' ] )* ;)N]rjrz...)r parse_atomrTr)rrratoms r rrs F ..  "7 7 7&'** >>  u $ $t$%D KKMMM$ ..  "7 7 7 Mr c |}g}|dvrv|dtgdtgd|\}}|t ||}||kr|d|z|gS|dkr#|t gS|dr|dkrt||S|dr|d vrt||S|d r| d s| r"t|gSt|gS) ziatom ::= '(' expr ')' | '[' expr ']' | 'options' | long | shorts | argument | command ; z([rjr)rh[zunmatched '%s'rrr)rr<>)rrrMrPrrrRrrrendswithisupperr@rE)rrrrmatchingpatterns r rrs NN  E F }} #&/hHHO'*VW556 ;;==H $ $,,/%788 8x )    ~   $  (ETMM&'***   #  (5 #;#;FG,,,   #  (5>>##6#6(%--//(''(( &&''r FcTg}||dkr|d|DzS|dr|t||z }n|dr,|dkr|t||z }nF|r|d|DzS|t d|||S)zParse command-line argument vector. If options_first: argv ::= [ long | shorts ]* [ argument ]* [ '--' [ argument ]* ] ; else: argv ::= [ long | shorts | argument ]* [ '--' [ argument ]* ] ; Nrc.g|]}td|Srr@r8vs r r9zparse_argv.."???1XdA..???r rc.g|]}td|Srrrs r r9zparse_argv..rr )rrrrrXr@r)rr options_firstrs r parse_argvrs'F ..   & >>  t # #?????? ? ^^   ( ( . . 9 j11 1FF ^^   ( ( - - 9&..2B2Bc2I2I l6733 3FF  9?????? ? MM(477 8 8 8 ..   & Mr ctjd|dd}dt|ddd|dddD}d|D}|S)Nz *(<\S+?>|-\S+?)r;cg|] \}}||z Sr r )r8s1s2s r r9z"parse_defaults..s @ @ @RR"W @ @ @r rUclg|]1}|dt|2S)r)rrAr)r8rs r r9z"parse_defaults..s3CCC1c1B1BCv||ACCCr )rrDzip)docrDrs r parse_defaultsrsh H)3 / / 3E @ @3uSSqSz5A;#?#? @ @ @ECCCCCG Nr cDtjd|}t|dkrtdt|dkrtdtjdd|dddS) Nz([Uu][Ss][Aa][Gg][Ee]:)z&"usage:" (case-insensitive) not found.z*More than one "usage:" (case-insensitive).z\n\s*\nrr;r)rrDrrrr)r  usage_splits r printable_usagers(5s;;K ;!!"JKKK ;!!"NOOO 8J ABB 8 8 9 9! < B B D DDr c|ddddfdddDzdzS)Nr;z( rc38K|]}|dkrdn|VdS)rz) | (Nr )r8rpus r rzformal_usage..s3HHAa2a5jj77aHHHHHHr z ))rDr)rrs @r formal_usagersV     $B #((HHHHABBHHHHH H4 OOr c(|rNtd|Dr5t|dtj|r=td|Dr&t|tjdSdSdS)Nc36K|]}|jdvo|jVdS))z-hz--helpNrcrs r rzextras..s1NNQV//.s0JJQqv,8JJJJJJr )anyprintrsysexit)helpversionrr s r extrasr s NNgNNNNN ciioo  3JJ'JJJJJ g  r ceZdZdZdS)Dictcdddt|DzS)Nz{%s}z, c3 K|] }d|zV dS)z%r: %rNr )r8r2s r rz Dict.__repr__..s&#O#OQHqL#O#O#O#O#O#Or )rsorteditemsr#s r rlz Dict.__repr__s8 #O#O&:N:N#O#O#OOOOOr N)rrr rlr r r r"r"s(PPPPPr r"Tc|tjdd}t|t_t |}t ttj|}tt|tt||}t| t}| tD]5}t |} tt| |z |_6t!||||||\} } } | r4| gkr.t'd| | zDSt)aParse `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 Nr;c32K|]}|j|jfVdSrrcrs r rzdocopt..Bs+LL!QVQW%LLLLLLr )rargvrrrrrrrrr,r-r.rArRr*r r(rxr") r r)rrrrrpattern_optionsao doc_optionsrrurvs r rrsT~ |x|&s++JS!!GL)9::GDDG k$ 33T']]# % %D',,v..//Oll:&&??$S)) 3{++o=>>  4$$$$&{{}}22488GT9M42::LL 0JLLLLLL ,,r r)NTNF)%r rr__all__ __version__ Exceptionrrrobjectrrar}r@rErArMrPrRrTrKr,rrrrrrrrrrrr dictr"rr r r r2s  * ?????)??? IIIIIIIIH4H4H4H4H4fH4H4H4V000007000B @ @ @ @ @G @ @ @ 9 9 9 9 9| 9 9 9     h    %F%F%F%F%F\%F%F%FP     }   %%%%%}%%%55555555 &&&&& &&&, & & & & &] & & & . . . . .$ . . .B   F < < <   (((40EEEPPP PPPPP4PPP VVVVVVr