o ?Og4@s ddlZddlZddlZddlmZddlmZgdZGdddZdd d Z d d Z e d ej j ZddZddZedkrreejdkrOeedSejdZeeZeeeeWddS1skwYdSdS)N)deque)StringIO)shlexsplitquotejoinc@steZdZ  dddZeddZddZdd d Zd d Zd dZ ddZ ddZ dddZ ddZ ddZdS)rNFcCst|tr t|}|dur||_||_ntj|_d|_||_|r$d|_nd|_d|_ d|_ |jr7|j d7_ d|_ d|_ d|_ d|_d |_d |_t|_d |_d |_d|_t|_d|_|sbd}n|d urhd}||_|rt|_|j d7_ |j t|}|j ||_ dSdS)N#Z?abcdfeghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_u|ßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞz Fz'"\" rTz();<>|&z~-./*?=) isinstancestrrinstreaminfilesysstdinposixeof commenters wordchars whitespacewhitespace_splitquotesescape escapedquotesstaterpushbacklinenodebugtoken filestacksource_punctuation_chars_pushback_chars maketransdictfromkeys translate)selfrrrpunctuation_charstr-,/opt/alt/python310/lib64/python3.10/shlex.py__init__sL zshlex.__init__cCs|jSN)r$r*r-r-r.r+Dszshlex.punctuation_charscCs, |jdkrtdt||j|dS)Nr zshlex: pushing token )r printreprr appendleft)r*tokr-r-r. push_tokenHs zshlex.push_tokencCsx t|tr t|}|j|j|j|jf||_||_d|_|jr:|dur0t d|jfdSt d|jfdSdS)Nr zshlex: pushing to file %szshlex: pushing to stream %s) rrrr"r4rrrr r2)r* newstreamnewfiler-r-r. push_sourceNs zshlex.push_sourcecCsF |j|j\|_|_|_|jrtd|j|jfd|_dS)Nzshlex: popping to %s, line %dr ) rcloser"popleftrrr r2rr1r-r-r. pop_source\s   zshlex.pop_sourcecCs |jr|j}|jdkrtdt||S|}|jdurB||jkrB||}|r9|\}}|||| }||jks&||j krZ|j sM|j S| | }||j ksG|jdkrr||j krntdt||Std|S)Nr zshlex: popping token z shlex: token=zshlex: token=EOF) rr;r r2r3 read_tokenr# sourcehookr9 get_tokenrr"r<)r*r5rawspecr8r7r-r-r.r?es6        zshlex.get_tokencCsd}d} |jr|jr|j}n|jd}|dkr"|jd7_|jdkr0td|j|f|jdur:d|_ n|jdkr|sFd|_n||j vr_|jd krTtd |j s\|j r^|r^nq||j vrr|j |jd7_n|j r||jvrd }||_n||jvr||_ d |_n||jvr||_ d |_n||jvr|j s||_ ||_n|jr||_ d |_n|||_ |j s|j r|rÐnpq|j|jvrd}|s|jd krtd td||jkr|j s|j |7_ d|_nCd |_n=|j r||jvr|j|jvr|j}||_n$|j |7_ n|j|jvrS|s/|jd kr+tdtd||jvrH||jkrH||krH|j |j7_ |j |7_ ||_n|jdvr2|s`d|_n||j vr|jd krptdd|_|j s~|j r|rnq||j vr|j |jd7_|j rd|_|j s|j r|rnqn|jd kr||jvr|j |7_ nw||j vr|j|d|_nh|j r||jvr||_nY|j r||jvrd }||_nI||jvs||jvs|jr||jvr|j |7_ n+|jr|j|n|j||jd kr"tdd|_|j s0|j r1|r1nqq|j }d|_ |j rG|sG|dkrGd}|jdkr^|rZtdt||Std|S)NFr Tr  z&shlex: in state %r I see character: %rrz+shlex: I see whitespace in whitespace stateacz shlex: I see EOF in quotes statezNo closing quotationz shlex: I see EOF in escape statezNo escaped character)rErFz%shlex: I see whitespace in word statez&shlex: I see punctuation in word statezshlex: raw token=zshlex: raw token=EOF)r+r%poprreadrr r2rr!rrrreadlinerrrr ValueErrorrappendrr4r3)r*ZquotedZ escapedstateZnextcharresultr-r-r.r=s                                     zshlex.read_tokencCsX |ddkr |dd}t|jtr%tj|s%tjtj|j|}|t|dfS)Nrr r r) rrrospathisabsrdirnameopen)r*r8r-r-r.r>s   zshlex.sourcehookcCs* |dur|j}|dur|j}d||fS)Nz"%s", line %d: )rr)r*rrr-r-r. error_leader s  zshlex.error_leadercCs|Sr0r-r1r-r-r.__iter__(szshlex.__iter__cCs|}||jkr t|Sr0)r?r StopIteration)r*r!r-r-r.__next__+s zshlex.__next__)NNFFr0)NN)__name__ __module__ __qualname__r/propertyr+r6r9r<r?r=r>rTrUrWr-r-r-r.rs" /      rFTcCsF |durddl}|jdtddt||d}d|_|sd|_t|S)Nrz4Passing None for 's' to shlex.split() is deprecated.rD) stacklevel)rTr)warningswarnDeprecationWarningrrrlist)sZcommentsrr]Zlexr-r-r.r1s rcCs ddd|DS)Nr css|]}t|VqdSr0)r).0argr-r-r. @szjoin..)r)Z split_commandr-r-r.r>srz[^\w@%+=:,./-]cCs. |sdSt|dur |Sd|dddS)Nz'''z'"'"') _find_unsafereplace)rar-r-r.rEs  rcCs$ |}|s dStdt|q)Nr zToken: )r?r2r3)ZlexerZttr-r-r. _print_tokensQs rh__main__r )FT)rOrer collectionsrior__all__rrrcompileASCIIsearchrfrrhrXlenargvfnrSfr-r-r-r.s.        "