
    g                         d dl mZ d dlZd dlmZ d dlmZ g dZd Zd Z	 e
d      g d	z   Zed
dgz   Zeddgz   Zd Zd Zd Zy)    )StringION)
PatsyError)Origin)python_tokenizepretty_untokenizenormalize_token_spacingc              #     K   | j                  dd      j                         } t        j                  t	        |       j
                        }	 |D ]  \  }}\  }}\  }}} |t        j                  k(  r y |t        j                  t        j                  fv r|dk(  sJ Nt        | ||      }|t        j                  k(  rt        d|      |t        j                  k(  rt        d|      |||f  t        d      # t        j                  $ rj}d|j                  d   v r<t        d	j!                  |j                  d         t        | dt#        |                   d
|j                  d   v sJ Y d }~y d }~ww xY ww)N
  z2error tokenizing input (maybe an unclosed string?)zcomments are not allowedz!stream ended without ENDMARKER?!?zunterminated string literalr   zerror tokenizing input ({})zEOF in multi-line)replacestriptokenizegenerate_tokensr   readline	ENDMARKERNLNEWLINEr   
ERRORTOKENr   COMMENT
ValueError
TokenErrorargsformatlen)	codeitpytypestring_startendorigines	            I/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/patsy/tokens.pyr   r      sw     <<c"((*D		!	!(4."9"9	:B!:< 	B6FFJQC$+++(++x'7'788|#|D%-F,,, KV  ))) !;VDD66**	B @AA  )AFF1I5-44QVVAY?tQD	*  #affQi///!s8   A	E;%C; 1E;2B	C; ;E8A E3.E;3E88E;c                     d} t        t        |             }t        j                  dt	        | dd      ft        j
                  dt	        | dd      ft        j
                  dt	        | d	d
      ft        j                  dt	        | d
d      ft        j
                  dt	        | dd      ft        j
                  dt	        | dd      ft        j                  dt	        | dd      ft        j
                  dt	        | dd      fg}||k(  sJ d}t        t        |            }t        j                  dt	        |dd      ft        j
                  dt	        |dd      ft        j
                  dt	        |d	d
      ft        j                  dt	        |d
d      fg}||k(  sJ dd l}|j                  t        t         t        d             dd l}|j                  t        t         t        d             y )Nza + (foo * -1)ar      +      (      foo   *	   
   -      1   )   za + (bb   za b # cza b "c)
listr   r   NAMEr   OPNUMBERpytestraisesr   )r   tokensexpectedcode2tokens2	expected2rA   s          r%   test_python_tokenizerH   C   s   D/$'(F	VD!Q/0	c6$1-.	c6$1-.	vdAq12	c6$2./	c6$B/0	#vdB34	c6$B/0	H XE?5)*G	VE1a01	c6%A./	c6%A./	VE1a01	I i
MM*dOI$>?
MM*dOH$=>    z
+-*/%&^|<>)	z==z<>z!=z<=z>=z<<z>>**z//!~,:c                 l   g }d}d}d}d}g }| D ]  \  }}|t         j                  t         j                  t         j                  fvsJ |t         j                  k(  rN|t         j
                  k(  rb|t         j                  t         j                  t         j                  fv r+|s|r|j                  d       |j                  |       d}d}n|dv r|j                  |       n|r|dv r|j                          |t        v }	|t        v }
|dk(  r|r
|d   dk(  rd}
|d	v r|rd}	d}
|d
k(  r|sd}	d}
|dv r|sd}	d}
|s|	r|j                  d       |j                  |       |
}d}|t         j                  t         j                  t         j                  fv s|dk(  rd}nd}|dv } dj                  |      S )NFr   T)r,   [{)r9   ]}rN   rP   )r1   rJ   =)r)   r4   r9   )r,   rM   r   )r   INDENTDEDENTr   r   r   r>   r@   STRINGappendpop_python_space_before_python_space_afterjoin)typed_tokenstextprev_was_space_delimprev_wants_spaceprev_was_open_paren_or_commaprev_was_object_likebrackets
token_typetokenthis_wants_space_beforethis_wants_space_afters              r%   r   r   t   s   D #(  H) 2;
E(//8??HKK!PPPP)))+++(--(//JJ#7C KK$#' '&e6&+/C&C#%*.A%A" |Xb\S-@).&#(D*/').&|H*.')-&
 
"+?*/').&#:C KK5#( 8==(//8??KK|#' #( ',
':$e2;f 774=rI   c                     t        j                  t        |       j                        D cg c]  }|d   |d   f }}t	        |      S c c}w )Nr   r(   )r   r   r   r   r   )r   trC   s      r%   r   r      sG    $,$<$<Xd^=T=T$UVqqtQqTlVFVV$$ Ws   A	c                  d   t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d	      d	k(  sJ t        d
      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d       d k(  sJ y )!Nz1 + 1z1+1z
1*(2+3**2)z1 * (2 + 3 ** 2)za and bzfoo(a=bar.baz[1:])z{"hi":foo[:]}z{"hi": foo[:]}z'a' "b" 'c'z"""a""" is 1 or 2==3z"""a""" is 1 or 2 == 3zfoo ( * args )z
foo(*args)zfoo ( a * args )zfoo(a * args)zfoo ( ** args )zfoo(**args)zfoo ( a ** args )zfoo(a ** args)zfoo (1, * args )zfoo(1, *args)zfoo (1, a * args )zfoo(1, a * args)zfoo (1, ** args )zfoo(1, **args)zfoo (1, a ** args )zfoo(1, a ** args)za=foo(b = 1)za = foo(b=1)zfoo(+ 10, bar = - 1)zfoo(+10, bar=-1)z1 + +10 + -1 - 5)r    rI   r%   2test_pretty_untokenize_and_normalize_token_spacingrm      s   "7+w666"5)W444"<04FFFF"9-:::"#78<PPPP"#67;OOOO"#459JJJJ"#9:>VVVV"#34DDD"#56/III"#45FFF"#67;KKKK"#56/III"#78<NNNN"#67;KKKK"#89=PPPP">2nDDD"#9:>PPPP"#56:LLLLrI   )ior   r   patsyr   patsy.originr   __all__r   rH   r=   _python_space_bothr[   r\   r   r   rm   rl   rI   r%   <module>rs      sl       
M
'T?D ,' 
+ 
  *S#J6 (C:5 :z%
MrI   