
    5i2                     P    d Z ddlZddlZddlmZ ddlmZ ddlmZ  G d d      Z	y)8A lexical analyzer class for simple shell-like syntaxes.    N)deque)StringIO)Optionalc                   V    e Zd ZdZddZd ZddZd Zd Zd Z	d	 Z
dd
Zd Zd ZeZy)shlexr   Nc                    t        |t              rt        |      }||| _        || _        nt
        j                  | _        d | _        || _        |rd | _        nd| _        d| _	        d| _
        d| _        d| _        d| _        d| _        d| _        d	| _        t#               | _        d
| _        d| _        d| _        t#               | _        d | _        |sd}n|du rd}|| _        |rrt#               | _        | xj                  dz  c_
        | j                  j5                  t6        j9                  |            }| j                  j;                  |      | _
        d | _        d| _        y )N #?abcdfeghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_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last_wordbreak_pos
wordbreaks)selfr   r   r   r'   ts         }/home/marpiech/ifpan-abm-pgxpred/analysis/marpiech-gwas-test/venv/lib/python3.12/site-packages/argcomplete/packages/_shlex.py__init__zshlex.__init__   s=   h$)H$DM DKIIDMDK
DHDHZ
 $ % $'
$w

 %  "$& )!2*/'D NNi'N((7H)IJA!^^55a8DN #'    c                     | j                   dk\  rt        dt        |      z          | j                  j	                  |       y)z:Push a token onto the stack popped by the get_token methodr   zshlex: pushing token N)r#   printreprr!   
appendleft)r/   toks     r1   
push_tokenzshlex.push_tokenJ   s1    ::?)DI56  %r3   c                 \   t        |t              rt        |      }| j                  j	                  | j
                  | j                  | j                  f       || _        || _        d| _        | j                  r4|t        d| j
                         yt        d| j                         yy)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%   r7   r   r   r"   r#   r5   )r/   	newstreamnewfiles      r1   push_sourcezshlex.push_sourceP   s     i% +I!!4;;t{{"KL!::"T[[BCt}}FG	 r3   c                     | j                   j                          | j                  j                         \  | _        | _         | _        | j                  r$t        d| j                   | j
                  fz         d| _        y)zPop the input source stack.zshlex: popping to %s, line %dr   N)	r   closer%   popleftr   r"   r#   r5   r    r/   s    r1   
pop_sourcezshlex.pop_source_   sZ    48NN4J4J4L1dmT[::1T]]DKK4PPQ
r3   c                    | j                   rB| j                   j                         }| j                  dk\  rt        dt	        |      z          |S | j                         }| j                  g|| j                  k(  rX| j                  | j                               }|r|\  }}| j                  ||       | j                         }|| j                  k(  rX|| j                  k(  rH| j                  s| j                  S | j                          | j                         }|| j                  k(  rH| j                  dk\  r3|| j                  k7  rt        dt	        |      z          |S t        d       |S )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!   r@   r#   r5   r6   
read_tokenr&   
sourcehookr=   	get_tokenr   r%   rB   )r/   r8   rawspecr<   r;   s         r1   rF   zshlex.get_tokeng   s+   ==--'')CzzQ-S	9:Joo;;"$t'89+/(Wi$$Y8nn& $ TXXo>>xx!nn& TXXo ::?dhhoS	12 
 ()
r3   c                 N   d}d}	 | j                   r'| j                  r| j                  j                         }n| j                  j	                  d      }|dk(  r| xj
                  dz  c_        | j                  dk\  rt        d| j                  d|       | j                  	d	| _	        n| j                  dk(  r|s	d | _        nk|| j                  v r8| j                  d
k\  rt        d       | j                  s| j                  r|rn'	|| j                  v r1| j                  j                          | xj
                  dz  c_        n| j                  r|| j                  v rd}|| _        n|| j                  v r|| _	        d| _        n|| j                   v r|| _	        d| _        n|| j                   v r| j                  s|| _	        || _        nY| j"                  r<|| _	        d| _        || j$                  v r0t'        | j                        dz
  | _        n|| _	        | j                  s| j                  r|rn@| j                  | j                   v rd}|s%| j                  d
k\  rt        d       t+        d      || j                  k(  r3| j                  s| xj                  |z  c_	        d| _        ntd| _        ni| j                  r;|| j                  v r-| j                  | j,                  v r| j                  }|| _        n"| xj                  |z  c_	        n| j                  | j                  v r|s%| j                  d
k\  rt        d       t+        d      || j                   v r3|| j                  k7  r$||k7  r| xj                  | j                  z  c_	        | xj                  |z  c_	        || _        nm| j                  dv r^|s	d | _        nU|| j                  v r?| j                  d
k\  rt        d       d| _        | j                  s| j                  r|rn
&|| j                  v ra| j                  j                          | xj
                  dz  c_        | j                  rd| _        | j                  s| j                  r|rn| j                  r|| j                   v r	|| _        nt| j                  r|| j                  v rd}|| _        nO| j                  dk(  rV|| j                   v r| xj                  |z  c_	        n|| j                  vr| j                  j/                  |       d| _        n|| j                  v s|| j                   v s| j"                  rA| xj                  |z  c_	        || j$                  v rt'        | j                        dz
  | _        n| j                   r| j                  j/                  |       n| j0                  j3                  |       | j                  d
k\  rt        d       d| _        | j                  s| j                  r|rn,-| j                  }d	| _	        | j                  r	|s|d	k(  rd }| j                  dkD  r%|rt        dt5        |      z          nt        d       | j                  dk(  rd | _        |S )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)rM   rN   z%shlex: I see whitespace in word statez&shlex: I see punctuation in word statezshlex: raw token=zshlex: raw token=EOF)r'   r(   popr   readr"   r#   r5   r    r$   r   r   r   readliner   r   r   r   r.   lenr-   
ValueErrorr   appendr!   r7   r6   )r/   quotedescapedstatenextcharresults        r1   rD   zshlex.read_token   s<   %%$*>*>//335==--a04q zzQ$**hWXzz!
s"!%DJ0zzQKLzzdjjV 0MM**,KK1$KZZH$;#&L!)DJ/!)DJ!$DJ!7!77!)DJ!$DJ,::%-
!)DJ**!)DJ!$DJ4??225djj/A2E/!)DJzzdjjV t{{*zzQ@A$%;<<tzz)::

h.
%(
%(
ZZH$;

dN`N`@`#'::L!)DJJJ(*Jt{{*zzQ@A$%;<<  4;;.8tzz3IhZfNfJJ$**,J

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

h.
#4??: 0077A%(
/8t{{3JdNcNcJJ(*J4??225djj/A2E/--,,33H=00:zzQFG!$DJzzdjjV I J !%


::f2F::>)DL89,-::&*D#r3   c                 8   |d   dk(  r|dd }t        | j                  t              rft        j                  j                  |      sGt        j                  j                  t        j                  j                  | j                        |      }|t        |d      fS )z(Hook called on a filename to be sourced.r   r   r   r)	r   r   r   ospathisabsjoindirnameopen)r/   r<   s     r1   rE   zshlex.sourcehook  so    1:amG dkk3'g0Fggll277??4;;#?IGgs+,,r3   c                 H    || j                   }|| j                  }d||fz  S )z<Emit a C-compiler-like, Emacs-friendly error-message leader.z"%s", line %d: )r   r"   )r/   r   r"   s      r1   error_leaderzshlex.error_leader'  s.    >[[F>[[F"ff%555r3   c                     | S N rA   s    r1   __iter__zshlex.__iter__/  s    r3   c                 P    | j                         }|| j                  k(  rt        |S re   )rF   r   StopIteration)r/   r$   s     r1   __next__zshlex.__next__2  s%     DHHr3   )NNFFre   )NN)__name__
__module____qualname____doc__r2   r9   r=   rB   rF   rD   rE   rc   rg   rj   nextrf   r3   r1   r   r      sC    >1f&H@Tl-6 Dr3   r   )
rn   r\   r   collectionsr   ior   typingr   r   rf   r3   r1   <module>rs      s'    ? 
 
   e er3   