
    F\h)4                        S r SSKrSSKrSSKrSSKJr  SSKJr  / SQr " S S5      r	SS jr
S	 r\R                  " S
\R                  5      R                  rS rS r\S:X  aT  \" \R(                  5      S:X  a  \" \	" 5       5        g\R(                  S   r\" \5       r\" \	" \\5      5        SSS5        gg! , (       d  f       g= f)8A lexical analyzer class for simple shell-like syntaxes.    N)deque)StringIO)shlexsplitquotejoinc                   t    \ rS rSrSr  SS jr\S 5       rS rSS jr	S r
S	 rS
 rS rSS jrS rS rSrg)r      r   Nc                 &   [        U[        5      (       a  [        U5      nUb  Xl        X l        O[
        R                  U l        S U l        X0l        U(       a  S U l        OSU l        SU l	        SU l
        U R                  (       a  U =R                  S-  sl
        SU l        SU l        SU l        SU l        S	U l        S
U l        [#        5       U l        SU l        SU l        SU l        [#        5       U l        S U l        U(       d  SnOUSL a  SnX@l        U(       as  [#        5       U l        U =R                  S-  sl
        U R                  R5                  [6        R9                  U5      5      nU R                  R;                  U5      U l
        g g )N #?abcdfeghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_u|   ßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞz 	
Fz'"\"    r   Tz();<>|&z~-./*?=)
isinstancestrr   instreaminfilesysstdinposixeof
commenters	wordchars
whitespacewhitespace_splitquotesescapeescapedquotesstater   pushbacklinenodebugtoken	filestacksource_punctuation_chars_pushback_chars	maketransdictfromkeys	translate)selfr   r   r   punctuation_charsts         /usr/lib/python3.13/shlex.py__init__shlex.__init__   sI   h$$)H$M KIIDMDK
DHDHB::NN  ^ _N# % 


  "$& )"3#(7D NNi'N((7H)IJA!^^55a8DN     c                     U R                   $ N)r*   r0   s    r3   r1   shlex.punctuation_charsD   s    &&&r6   c                     U R                   S:  a  [        S[        U5      -   5        U R                  R	                  U5        g)z:Push a token onto the stack popped by the get_token methodr   zshlex: pushing token N)r&   printreprr$   
appendleft)r0   toks     r3   
push_tokenshlex.push_tokenH   s1    ::?)DI56  %r6   c                 r   [        U[        5      (       a  [        U5      nU R                  R	                  U R
                  U R                  U R                  45        X l        Xl        SU l        U R                  (       a7  Ub  [        SU R
                  < 35        g[        SU R                  < 35        gg)z9Push an input source onto the lexer's input source stack.r   Nzshlex: pushing to file zshlex: pushing to stream )
r   r   r   r(   r>   r   r   r%   r&   r<   )r0   	newstreamnewfiles      r3   push_sourceshlex.push_sourceN   s    i%% +I!!4;;t{{"KL!::"T[[BCt}}FG	 r6   c                 
   U R                   R                  5         U R                  R                  5       u  U l        U l         U l        U R                  (       a$  [        SU R                   U R
                  4-  5        SU l        g)zPop the input source stack.zshlex: popping to %s, line %dr   N)	r   closer(   popleftr   r%   r&   r<   r#   r9   s    r3   
pop_sourceshlex.pop_source\   s_    48NN4J4J4L1dmT[::1]]DKK01 2
r6   c                    U R                   (       aC  U R                   R                  5       nU R                  S:  a  [        S[	        U5      -   5        U$ U R                  5       nU R                  bk  X R                  :X  a\  U R                  U R                  5       5      nU(       a  Uu  pEU R                  XT5        U R                  5       nX R                  :X  a  M\  X R                  :X  aN  U R                  (       d  U R                  $ U R                  5         U R                  5       nX R                  :X  a  MN  U R                  S:  a3  X R                  :w  a  [        S[	        U5      -   5        U$ [        S5        U$ )zBGet a token from the input stream (or from stack if it's nonempty)r   zshlex: popping token zshlex: token=zshlex: token=EOF)r$   rI   r&   r<   r=   
read_tokenr)   
sourcehookrE   	get_tokenr   r(   rJ   )r0   r?   rawspecrD   rC   s         r3   rO   shlex.get_tokene   s   ==--'')CzzQ-S	9:Joo;;"$t'89+/(W$$Y8nn& $ XXo>>xx!nn& XXo ::?hhoS	12 
 ()
r6   c                 ,   SnSn U R                   (       a,  U R                  (       a  U R                  R                  5       nOU R                  R	                  S5      nUS:X  a  U =R
                  S-  sl        U R                  S:  a  [        SU R                  < SU< 35        U R                  c	  S	U l	        GOU R                  S:X  Ga  U(       d	  S U l        GOX0R                  ;   aI  U R                  S
:  a  [        S5        U R                  (       d  U R                  (       a	  U(       a  GOtGM0  X0R                  ;   a1  U R                  R                  5         U =R
                  S-  sl        GO.U R                  (       a  X0R                  ;   a
  SnX0l        GOX0R                  ;   a  X0l	        SU l        GOX0R                   ;   a  X0l	        SU l        GOX0R                   ;   a  U R                  (       d  X0l	        X0l        GOU R"                  (       a  X0l	        SU l        GOzX0l	        U R                  (       d  U R                  (       a	  U(       a  GOLGMX  U R                  U R                   ;   a  SnU(       d&  U R                  S
:  a  [        S5        [%        S5      eX0R                  :X  a8  U R                  (       d  U =R                  U-  sl	        SU l        GOSU l        GOU R                  (       a=  X0R                  ;   a.  U R                  U R&                  ;   a  U R                  nX0l        GOhU =R                  U-  sl	        GOQU R                  U R                  ;   a  U(       d&  U R                  S
:  a  [        S5        [%        S5      eX R                   ;   a3  X0R                  :w  a$  X2:w  a  U =R                  U R                  -  sl	        U =R                  U-  sl	        X l        GOU R                  S;   Ga  U(       d	  S U l        GOX0R                  ;   aP  U R                  S
:  a  [        S5        SU l        U R                  (       d  U R                  (       a	  U(       a  GO1GMs  X0R                  ;   aw  U R                  R                  5         U =R
                  S-  sl        U R                  (       a5  SU l        U R                  (       d  U R                  (       a	  U(       a  GOGM  GOU R                  S:X  aY  X0R                   ;   a  U =R                  U-  sl	        GOoX0R                  ;  a  U R                  R)                  U5        SU l        GO?U R                  (       a  X0R                   ;   a  X0l        GOU R                  (       a  X0R                  ;   a	  SnX0l        OX0R                  ;   d/  X0R                   ;   d   U R"                  (       a%  X0R                   ;  a  U =R                  U-  sl	        OU R                   (       a  U R                  R)                  U5        OU R*                  R-                  U5        U R                  S
:  a  [        S5        SU l        U R                  (       d  U R                  (       a  U(       a  OGM  GM  U R                  nS	U l	        U R                  (       a  U(       d  US	:X  a  S nU R                  S:  a+  U(       a  [        S[/        U5      -   5        U$ [        S5        U$ )NFr   Tr   
   zshlex: in state z I see character: r      z+shlex: I see whitespace in whitespace stateacz shlex: I see EOF in quotes statezNo closing quotationz shlex: I see EOF in escape statezNo escaped character)rW   rX   z%shlex: I see whitespace in word statez&shlex: I see punctuation in word statezshlex: raw token=zshlex: raw token=EOF)r1   r+   popr   readr%   r&   r<   r#   r'   r   r   r   readliner!   r   r    r   
ValueErrorr"   appendr$   r>   r=   )r0   quotedescapedstatenextcharresults        r3   rM   shlex.read_token   s   %%$*>*>//335==--a04q zzQ$**BJL Mzz!
s"!%DJ0zzQKLzzdjjV 0MM**,KK1$KZZH$;#&L!)J/!)J!$DJ!7!77!)J!$DJ,::%-
!)J**!)J!$DJ!)JzzdjjV t{{*zzQ@A$%;<<zz)::

h.
%(
%(
jjX%<++B,#'::L!)JJJ(*Jt{{*zzQ@A$%;<< !KK/ JJ.83KJJ$**,J

h&
)
z)!%DJ0zzQEF!$DJzzdjjV 0MM**,KK1$Kzz%(
::$**!$ " ZZ3&#9#99

h.
#??: 0077A%(
ZZH$;!)JZZH$;#&L!)J..0H4K//"*@*@@JJ(*J--,,33H=00:zzQFG!$DJzzdjjV G H 
::f2F::>)DL89  ,-r6   c                 N   US   S:X  a  USS n[        U R                  [        5      (       ak  [        R                  R                  U5      (       dG  [        R                  R                  [        R                  R                  U R                  5      U5      nU[        US5      4$ )z(Hook called on a filename to be sourced.r   r   r   r)	r   r   r   ospathisabsr	   dirnameopen)r0   rD   s     r3   rN   shlex.sourcehook  ss    1:amGdkk3''g0F0Fggll277??4;;#?IGgs+,,r6   c                 J    Uc  U R                   nUc  U R                  nSX4-  $ )z<Emit a C-compiler-like, Emacs-friendly error-message leader.z"%s", line %d: )r   r%   )r0   r   r%   s      r3   error_leadershlex.error_leader   s,    >[[F>[[F"f%555r6   c                     U $ r8    r9   s    r3   __iter__shlex.__iter__(  s    r6   c                 P    U R                  5       nXR                  :X  a  [        eU$ r8   )rO   r   StopIteration)r0   r'   s     r3   __next__shlex.__next__+  s#     HHr6   )r*   r+   r   r&   r   r!   r"   r(   r   r   r%   r   r$   r    r)   r#   r'   r   r   r   )NNFFr8   )NN)__name__
__module____qualname____firstlineno____doc__r4   propertyr1   r@   rE   rJ   rO   rM   rN   rm   rq   ru   __static_attributes__rp   r6   r3   r   r      sV    >9>#(-9^ ' '&H@Pd-6r6   r   c                 p    U c  [        S5      e[        XS9nSUl        U(       d  SUl        [	        U5      $ )z-Split the string *s* using shell-like syntax.zs argument must not be None)r   Tr   )r\   r   r   r   list)scommentsr   lexs       r3   r   r   1  s9    y677

CC9r6   c                 2    SR                  S U  5       5      $ )z3Return a shell-escaped string from *split_command*.r   c              3   8   #    U  H  n[        U5      v   M     g 7fr8   )r   ).0args     r3   	<genexpr>join.<locals>.<genexpr>>  s     8-3E#JJ-s   )r	   )split_commands    r3   r	   r	   <  s    888-888r6   z[^\w@%+=:,./-]c                 ^    U (       d  g[        U 5      c  U $ SU R                  SS5      -   S-   $ )z1Return a shell-escaped version of the string *s*.z'''z'"'"')_find_unsafereplace)r   s    r3   r   r   C  s4    A 3	**S00r6   c                     U R                  5       =n(       a1  [        S[        U5      -   5        U R                  5       =n(       a  M0  g g )NzToken: )rO   r<   r=   )lexertts     r3   _print_tokensr   O  s<    !
!"
!i$r("# !
!"
!
!r6   __main__r   )FT)r{   rf   rer   collectionsr   ior   __all__r   r   r	   compileASCIIsearchr   r   r   rw   lenargvfnrj   frp   r6   r3   <module>r      s    > 
 	 
  
-\ \|9
 zz+RXX6==	1$ z
388}egXXa["X%2,' X 
 Xs   B99
C