
    J/Ph+%                     &   g d Z ddlmZ ddlmZ ddlmZmZmZm	Z	  G d d          Z
 G d d          Z G d	 d
e          Z G d de          Z G d de          Z eej        dd          Z G d de          Zd Zd Zd ZddZd ZdS ))Token	ParseNodeOperatorparse    )
PatsyError)Origin)repr_pretty_delegaterepr_pretty_implno_picklingassert_no_picklingc                       e Zd Zd Zd ZeZdS )_UniqueValuec                     || _         d S N)	_print_as)selfprint_ass     R/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/patsy/infix_parser.py__init__z_UniqueValue.__init__,   s    !    c                 0    | j         j        d| j        dS )N())	__class____name__r   r   s    r   __repr__z_UniqueValue.__repr__/   s    >222DNNNCCr   Nr   
__module____qualname__r   r   r   __getstate__ r   r   r   r   +   s6        " " "D D D LLLr   r   c                   T    e Zd ZdZ ed          Z ed          ZddZeZ	d Z
eZdS )r   zA token with possible payload.

    .. attribute:: type

       An arbitrary object indicating the type of this token. Should be
      :term:`hashable`, but otherwise it can be whatever you like.
    LPARENRPARENNc                 0    || _         || _        || _        d S r   )typeoriginextra)r   r'   r(   r)   s       r   r   zToken.__init__A   s    	


r   c                 l    |rJ g }| j         
d| j         fg}t          || | j        | j        g|          S )Nr)   )r)   r
   r'   r(   )r   pcyclekwargss       r   _repr_pretty_zToken._repr_pretty_H   sG    :!
+,F4$)T[)A6JJJr   r   )r   r   r    __doc__r   r$   r%   r   r	   r   r.   r   r!   r"   r   r   r   r   5   sl          \(##F\(##F   
 $HK K K LLLr   r   c                   "    e Zd Zd ZeZd ZeZdS )r   c                 >    || _         || _        || _        || _        d S r   )r'   tokenargsr(   )r   r'   r2   r3   r(   s        r   r   zParseNode.__init__S   s"    	
	r   c                 H    t          || | j        | j        | j        g          S r   )r
   r'   r2   r3   )r   r+   r,   s      r   r.   zParseNode._repr_pretty_[   s!    4$)TZ)KLLLr   N)	r   r   r    r   r	   r   r.   r   r!   r"   r   r   r   r   R   s=           $HM M M LLLr   r   c                       e Zd Zd Zd ZeZdS )r   c                 0    || _         || _        || _        d S r   )
token_typearity
precedence)r   r7   r8   r9   s       r   r   zOperator.__init__b   s    $
$r   c                 P    | j         j        d| j        d| j        d| j        dS )Nr   z, r   )r   r   r7   r8   r9   r   s    r   r   zOperator.__repr__g   s5    N###OOOJJJOOO	
 	
r   Nr   r"   r   r   r   r   a   s3        % % %

 
 
 LLLr   r   c                       e Zd Zd ZeZdS )_StackOperatorc                 "    || _         || _        d S r   )opr2   )r   r>   r2   s      r   r   z_StackOperator.__init__s   s    


r   Nr   r   r    r   r   r!   r"   r   r   r<   r<   r   s$           LLLr   r<   iigc                       e Zd Zd ZeZdS )_ParseContextc                 Z    g | _         g | _        || _        || _        || _        || _        d S r   )op_stack
noun_stack	unary_ops
binary_opsatomic_typestrace)r   rF   rG   rH   rI   s        r   r   z_ParseContext.__init__~   s1    "$(


r   Nr?   r"   r   r   rB   rB   }   s$           LLLr   rB   c                    | j         t          j        k    rE|j        rt	          d           |j                            t          t          |                      dS | j         |j	        v rX|j        rt	          d| j                    |j                            t          |j	        | j                  |                      dS | j         |j
        v r]|j        r t	          d| j         d| j        d           |j                            t          | j         | g | j                             dS t          d| j                                        d	|           )
NzPushing open-parenTzPushing unary op zPushing noun  (r   Fzexpected a noun, not '')r'   r   r$   rI   printrD   appendr<   _open_parenrF   rH   r)   rE   r   r(   r   relevant_code)r2   cs     r   _read_noun_contextrR      sE   zU\!!7 	(&'''	
.e<<===t	q{	"	"7 	9E5::7888	
.UZ)@%HHIIIt	q~	%	%7 	FEEJJJDEEE	Iej%U\JJKKKuj+0<+E+E+G+G+G+GI5
 
 	
r   c           	          | j         sJ | j                                         }g }t          |j        j                  D ].}|                    | j                                                   /|                                 | j        r t          d|j        j
        d|d           t          |j        j
        |j        |t          j        |j        g|z                       }| j                            |           d S )Nz	Reducing rK   r   )rD   popranger>   r8   rN   rE   reverserI   rM   r7   r   r2   r   combine)rQ   stackopr3   inodes        r   _run_opr[      s    :jnnGD7:#$$ ( (AL$$&&''''LLNNNw BGJ$9$9$9444@AAA
-..	 D Lr   c                    | j         t          j        k    r|j        rt	          d           |j        r`|j        d         j        j        t          j        k    r;t          |           |j        r%|j        d         j        j        t          j        k    ;|j        st          d|           |j        d         j        j        t          j        k    sJ t          j        |j        d         j        |j        d         j        | g          }||j        d         _        |j                                         dS | j         |j        v r|j        rt	          d| j         z             t%          |j        | j                  |           }|j        r`|j        j        |j        d         j        j        k    r;t          |           |j        r%|j        j        |j        d         j        j        k    ;|j        rt	          d| j         z             |j                            |           dS t          d| j                                        d	|           )
NzFound close-parenr@   zmissing '(' or extra ')'FzFound binary operator %rzPushing binary operator %rTzexpected an operator, not 'rL   )r'   r   r%   rI   rM   rD   r>   r7   r$   r[   r   r   rW   r2   rE   r(   rT   rG   r<   r9   rN   rP   )r2   rQ   combinedrX   s       r   _read_op_contextr^      s   zU\!!7 	'%&&&j 	QZ^.9U\IIAJJJ j 	QZ^.9U\IIz 	@7???z"~ +u|;;;; >1:b>#7b9I9OQV"WXX"*R	
u	q|	#	#7 	=,
;<<< ej!95AAj 	WZ2ajn6G6RRRAJJJ j 	WZ2ajn6G6RRR7 	?.%*=>>>	
'"""tj050J0J0L0L0L0LNPU
 
 	
r   Fc                 $   t          |           }i }i }|D ]S}|j        t          j        k    sJ |j        dk    r|||j        <   /|j        dk    r|||j        <   Et          d          t          ||||          }d}	|D ]?}
|j        rt          d|	d           |	rt          |
|          }	/t          |
|          }	@|j        rt          d           |	r%t          d|j        d	         j        j                  |j        r[|j        d	         j        j        t           j        k    r t          d
|j        d	         j                  t%          |           |j        [t'          |j                  dk    sJ |j                                        S )N      z!operators must be unary or binaryTzReading next token (want_noun=r   zEnd of token streamz1expected a noun, but instead the expression endedr@   zUnmatched '(')iterr9   rO   r8   r7   
ValueErrorrB   rI   rM   rR   r^   r   rD   r2   r(   r>   r   r$   r[   lenrE   rT   )tokens	operatorsrH   rI   token_sourcerF   rG   r>   rQ   	want_nounr2   s              r   infix_parseri      s   <<LIJ B B}{555558q==')Ibm$$X]](*Jr}%%@AAAi\5AAA I 3 37 	FEDEEE 	3*5!44II(22IIw %#$$$ 
?JrN '
 
 	

 * :b>'5<77_ajn.BCCC


 * 
 q|!!!!<r   c                  h   t          ddd          t          ddd          t          ddd          g} d	d
g}t          ddd          }t          d	|d          t          d|d          t          d|d          t          d
|d          t          d|d          t          t          j        |d          t          d	|d          t          d|d          t          d
|d          t          t          j        |d          g
}t          || |          }d } ||dd            ||j        d         d	d           |j        d         j        g k    sJ  ||j        d         dd            ||j        d         j        d         dd           t          |j        d         j        d         j                  dk    sJ  ||j        d         j        d         j        d         d
d            ||j        d         j        d         dd            ||j        d         j        d         j        d         d	d            ||j        d         j        d         j        d         d
d           dd l}|	                    t          t
          g t          ddd          gdg           t          || |d           d S )N+ra   
   *   -r`      ATOM1ATOM2asdf   abr   rQ   dr   c                 D    | j         |k    sJ | j        j        |k    sJ d S r   )r'   r2   r)   )treer'   r)   s      r   teztest_infix_parse.<locals>.te  s1    yD    z5((((((r   r   ATOMICT)rI   )r   r   r   r$   r%   ri   r3   rd   pytestraisesrc   )opsatomicmock_originre   ry   rz   r|   s          r   test_infix_parser      s   CB#q"!5!5xQ7K7K
LCwFA&&Kg{C((c;$$c;$$g{C((c;$$elK--g{C((c;$$g{C((elK--F vsF++D) ) ) BtS#Bty|Wc"""9Q<""""Bty|S#Bty|S#&&&ty| #())Q....Bty| #Wc222Bty|S#&&&Bty| #Wc222Bty| #Wc222MMM MM*k2a0D0D/EzRRR V4000000r   N)F)__all__patsyr   patsy.originr   
patsy.utilr	   r
   r   r   r   r   objectr   r   r<   r$   rO   rB   rR   r[   r^   ri   r   r"   r   r   <module>r      s  > 6
5
5                                     :           v   "    V    hu|R22	 	 	 	 	F 	 	 	
 
 
,  $
 
 
@+ + + +^(1 (1 (1 (1 (1r   