o
     JAf4                     @   s   	 d dl Z d dlZd dlZd dlmZ d dlmZ g dZG dd dZdd	d
Z	dd Z
edejjZdd Zdd ZedkrreejdkrOee  dS ejd ZeeZeeee W d   dS 1 skw   Y  dS dS )    N)deque)StringIO)shlexsplitquotejoinc                   @   st   e Zd Z	 		dddZedd Zdd Zdd	d
Zdd Zdd Z	dd Z
dd ZdddZdd Zdd ZdS )r   NFc                 C   s  t |tr	t|}|d ur|| _|| _ntj| _d | _|| _|r$d | _nd| _d| _	d| _
| jr7|  j
d7  _
d| _d| _d| _d| _d	| _d
| _t | _d| _d| _d| _t | _d | _|sbd}n|du rhd}|| _|rt | _|  j
d7  _
| j
t|}| j
|| _
d S d S )N #Z?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t r-   /usr/lib/python3.10/shlex.py__init__   sL   
zshlex.__init__c                 C   s   | j S N)r$   r*   r-   r-   r.   r+   D   s   zshlex.punctuation_charsc                 C   s,   	 | j dkrtdt|  | j| d S )Nr   zshlex: pushing token )r    printreprr   
appendleft)r*   tokr-   r-   r.   
push_tokenH   s   
zshlex.push_tokenc                 C   sx   	 t |tr
t|}| j| j| j| jf || _|| _d| _| jr:|d ur0t	d| jf  d S t	d| jf  d S d S )Nr   zshlex: pushing to file %szshlex: pushing to stream %s)
r   r   r   r"   r4   r   r   r   r    r2   )r*   	newstreamnewfiler-   r-   r.   push_sourceN   s   
zshlex.push_sourcec                 C   sF   	 | j   | j \| _| _ | _| jrtd| j | jf  d| _d S )Nzshlex: popping to %s, line %dr   )	r   closer"   popleftr   r   r    r2   r   r1   r-   r-   r.   
pop_source\   s   


zshlex.pop_sourcec                 C   s   	 | j r| j  }| jdkrtdt|  |S |  }| jd urB|| jkrB| |  }|r9|\}}| || | 	 }|| jks&|| j
krZ| jsM| j
S |   | 	 }|| j
ksG| jdkrr|| j
krntdt|  |S td |S )Nr   zshlex: popping token zshlex: token=zshlex: token=EOF)r   r;   r    r2   r3   
read_tokenr#   
sourcehookr9   	get_tokenr   r"   r<   )r*   r5   rawspecr8   r7   r-   r-   r.   r?   e   s6   








zshlex.get_tokenc                 C   s  d}d}	 | j r| jr| j }n| jd}|dkr"|  jd7  _| jdkr0td| j|f  | jd u r:d| _	n| jdkr|sFd | _n|| j
v r_| jd	krTtd
 | j	s\| jr^|r^nq|| jv rr| j  |  jd7  _n| jr|| jv rd}|| _n|| jv r|| _	d| _n|| j v r|| _	d| _n|| jv r| js|| _	|| _n| jr|| _	d| _n||| _	| j	s| jr|rÐnpq| j| jv rd}|s| jd	krtd td|| jkr| js|  j	|7  _	d| _nCd| _n=| jr|| jv r| j| jv r| j}|| _n$|  j	|7  _	n| j| jv rS|s/| jd	kr+td td|| jv rH|| jkrH||krH|  j	| j7  _	|  j	|7  _	|| _n| jdv r2|s`d | _n|| j
v r| jd	krptd d| _| j	s~| jr|rnq|| jv r| j  |  jd7  _| jrd| _| j	s| jr|rnqn| jdkr|| j v r|  j	|7  _	nw|| j
vr| j| d| _nh| jr|| jv r|| _nY| jr|| jv rd}|| _nI|| jv s|| jv s| jr|| j vr|  j	|7  _	n+| j r| j| n| j| | jd	kr"td d| _| j	s0| jr1|r1nqq| j	}d| _	| jrG|sG|dkrGd }| jdkr^|rZtdt|  |S td |S )NFr   Tr   
   z&shlex: in state %r I see character: %rr      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)rE   rF   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    r2   r   r!   r   r   r   readliner   r   r   r   
ValueErrorr   appendr   r4   r3   )r*   ZquotedZescapedstateZnextcharresultr-   r-   r.   r=      s  



















  zshlex.read_tokenc                 C   sX   	 |d dkr|dd }t | jtr%tj|s%tjtj| j|}|t|dfS )Nr   r   r   r)	r   r   r   ospathisabsr   dirnameopen)r*   r8   r-   r-   r.   r>     s   zshlex.sourcehookc                 C   s*   	 |d u r| j }|d u r| j}d||f S )Nz"%s", line %d: )r   r   )r*   r   r   r-   r-   r.   error_leader   s   zshlex.error_leaderc                 C   s   | S r0   r-   r1   r-   r-   r.   __iter__(  s   zshlex.__iter__c                 C   s   |   }|| jkrt|S r0   )r?   r   StopIteration)r*   r!   r-   r-   r.   __next__+  s   
zshlex.__next__)NNFFr0   )NN)__name__
__module____qualname__r/   propertyr+   r6   r9   r<   r?   r=   r>   rT   rU   rW   r-   r-   r-   r.   r      s"    
/

	  
	r   FTc                 C   sF   	 | d u rdd l }|jdtdd t| |d}d|_|sd|_t|S )Nr   z4Passing None for 's' to shlex.split() is deprecated.rD   )
stacklevel)r   Tr   )warningswarnDeprecationWarningr   r   r   list)sZcommentsr   r]   Zlexr-   r-   r.   r   1  s   r   c                 C   s   	 d dd | D S )Nr   c                 s   s    | ]}t |V  qd S r0   )r   ).0argr-   r-   r.   	<genexpr>@  s    zjoin.<locals>.<genexpr>)r   )Zsplit_commandr-   r-   r.   r   >  s   r   z[^\w@%+=:,./-]c                 C   s.   	 | sdS t | d u r| S d| dd d S )Nz'''z'"'"')_find_unsafereplace)ra   r-   r-   r.   r   E  s   r   c                 C   s$   	 |   }|s	d S tdt|  q)Nr   zToken: )r?   r2   r3   )Zlexerttr-   r-   r.   _print_tokensQ  s   ri   __main__r   )FT)rO   rer   collectionsr   ior   __all__r   r   r   compileASCIIsearchrf   r   ri   rX   lenargvfnrS   fr-   r-   r-   r.   <module>   s.    	  
 

"