
    ,h}                        d Z ddlmZ ddlZddlmZ dgZ ed  ed      D              Z	 ed	  ed
      D              Z
 ed  ej                  d      D              Ze
ez
  e	z
  Z ed  ej                  d      D              Z ed      Z ed      Z ed      Z ed      Z G d de      Z G d de      Z G d d      Z G d de      Zy)z
A lexical analyzer class for IMAP responses.

Although Lexer does all the work, TokenSource is the class to use for
external callers.
    )unicode_literalsN   )assert_imap_protocolTokenSourcec              #       K   | ]  }|  y wN .0cs     [/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/imapclient/response_lexer.py	<genexpr>r      s     ,Qq,       c              #       K   | ]  }|  y wr   r	   r
   s     r   r   r      s     ,Aa,r      c              #       K   | ]  }|  y wr   r	   r
   s     r   r   r      s     91Q9r   s    ()%"[c              #       K   | ]  }|  y wr   r	   r
   s     r   r   r      s     <Qq<r   s    	
\[]"c                   ,    e Zd ZdZd Zed        Zd Zy)r   zj
    A simple iterator for the Lexer class that also provides access to
    the current IMAP literal.
    c                 X    t        |      | _        t        | j                        | _        y r   )Lexerlexitersrcselftexts     r   __init__zTokenSource.__init__&   s    ;>    c                 B    | j                   j                  j                  S r   )r   current_sourceliteralr    s    r   current_literalzTokenSource.current_literal*   s    xx&&...r#   c                     | j                   S r   )r   r'   s    r   __iter__zTokenSource.__iter__.   s    xxr#   N)__name__
__module____qualname____doc__r"   propertyr(   r*   r	   r#   r   r   r       s%    
" / /r#   c                   *    e Zd ZdZd ZddZd Zd Zy)r   z+
    A lexical analyzer class for IMAP
    c                 4      fd|D         _         d  _        y )Nc              3   6   K   | ]  }t        |        y wr   )LiteralHandlingIter)r   chunkr    s     r   r   z!Lexer.__init__.<locals>.<genexpr>8   s     KU+D%8Ks   )sourcesr%   r   s   ` r   r"   zLexer.__init__7   s    KdK"r#   c                 p   t               }	 |D ]X  }|r<|t        k(  r3|}t        j                  |      }||k7  r||k7  r|j	                  |       n||k(  r n*|j	                  |       Z t        dt        |      z        	 |j	                  |       |S # t        $ r t        dt        |      z        w xY w)NzNo closing '%s')	bytearray	BACKSLASHsixnextappend
ValueErrorchrStopIteration)r    stream_iend_charescapetokennextcharescapers          r   
read_untilzLexer.read_until;   s    	@$ 
Dh)3&G"xx1H7*x8/CW-)X&
D !!2S]!BCC  	X  	@.X>??	@s   A4B !B5c              #   
  K   t         }t        }| j                  }	 |D ]  }||vs|j                  |        n t	               }|D ]  }||v r|j                  |       |t        k(  r0|j                  |       |j                   ||t        d             R||v r| nW|t        k(  r:t        |        |j                  |       |j                   |||             | n|r| t	        |g        n |r| y w)NF)rA   )
WHITESPACENON_SPECIALSrE   pushr7   r;   OPEN_SQUAREextendCLOSE_SQUAREDOUBLE_QUOTEr   )r    r?   
whitespace	wordcharsrE   rC   rB   s          r   read_token_streamzLexer.read_token_streamN   s    
 	__
$ :-MM(+ KE$ y(LL*,LL*LLHl5!QR:-#!\1,Y7X.Z(%CD# !"'K'
33'* KA s   #DCDc              #      K   | j                   D ]5  }|| _        | j                  t        |            D ]  }t	        |        7 y wr   )r5   r%   rP   r   bytes)r    sourcetoks      r   r*   zLexer.__iter__u   sI     ll 	!F"(D--d6l; !Cj !	!s   AAN)T)r+   r,   r-   r.   r"   rE   rP   r*   r	   r#   r   r   r   2   s    #&%N!r#   r   c                       e Zd Zd Zd Zy)r3   c                     || _         t        |t              rD|d   | _        t	        | j                  j                  d      | j                         |d   | _        y || _        d | _        y )Nr      }r   )lexer
isinstancetuplesrc_textr   endswithr&   )r    rX   resp_records      r   r"   zLiteralHandlingIter.__init__   sX    
k5) (NDM !7!7!=t}}M&q>DL (DMDLr#   c                 R    t        t        j                  | j                              S r   )PushableIteratorr9   	iterbytesr[   r'   s    r   r*   zLiteralHandlingIter.__iter__   s    dmm <==r#   N)r+   r,   r-   r"   r*   r	   r#   r   r3   r3      s     >r#   r3   c                   6    e Zd Z e       Zd Zd Zd ZeZd Z	y)r_   c                 2    t        |      | _        g | _        y r   )r   itpushed)r    rc   s     r   r"   zPushableIterator.__init__   s    r(r#   c                     | S r   r	   r'   s    r   r*   zPushableIterator.__iter__   s    r#   c                     | j                   r| j                   j                         S t        j                  | j                        S r   )rd   popr9   r:   rc   r'   s    r   __next__zPushableIterator.__next__   s-    ;;;;??$$xx  r#   c                 :    | j                   j                  |       y r   )rd   r;   )r    items     r   rI   zPushableIterator.push   s    4 r#   N)
r+   r,   r-   objectNO_MOREr"   r*   rh   r:   rI   r	   r#   r   r_   r_      s$    hG! D!r#   r_   )r.   
__future__r   r9   utilr   __all__	frozensetrange
CTRL_CHARS	ALL_CHARSr`   SPECIALSrH   rG   ordr8   rJ   rL   rM   rk   r   r   r3   r_   r	   r#   r   <module>rv      s   
 ( 
 &/,%),,
,s,,	9i 8998#j0<-#--
";<<
I	#h3x3x& $G!F G!j> >&!v !r#   