o
    회h                     @   s  d dl mZ d dlmZ d dlZejd  dk r&d dlZg dZdd Ze	Z
neZdd	 ZeZ
d
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#d Z$d!Z%d"Z&d#Z'd$Z(d%Z)d&Z*d'Z+d(Z,d)Z-d*Z.d+Z/d,Z0d-Z1d.Z2d/Z3d0Z4d1Z5d2Z6d3Z7d4Z8d5Z9d6Z:d7Z;d8Z<d9Z=d:Z>d;Z?d<Z@e.ZAd=ZBe3e4e5e9e:e;e<e=hZCd>ZDe6e3e7e4e8e5iZEe3d?e6d?e4d@e7d@e5de8diZFeeeee4e3e5hZGG dAdB dBeHZIG dCdD dDeIZJG dEdF dFeKZLdGdHdIddJdKdLdMddNd)dOZMG dPdQ dQeKZNdS )R    )unicode_literals)digitsN   (g  )    ~   )      )   iw  )iz  i  )i  i  )  r
   )i  i  )i  i/  )i1  iV  )iY  i_  )ia  i  )i  i  )i  i  )i  i  )i  i  )i  i  )i  i  )i  i  )i  i  )i  iJ  )iM  i  )i  i  )i   i-  )i0  i>  )i@  i[  )^  r   )i  i  )i  i	  )i	  i	  )i	  i	  )i	  i	  )i	  i	  )	  r   )i	  i	  )i	  i	  )i	  i	  )i	  i	  )	  r   )i	  i	  )i	  i	  )i	  i	  )i
  i
  )i
  i

  )i
  i
  )i
  i(
  )i*
  i0
  )i2
  i3
  )i5
  i6
  )i8
  i9
  )<
  r   )i>
  iB
  )iG
  iH
  )iK
  iM
  )Q
  r   )iY
  i\
  )^
  r   )if
  iu
  )i
  i
  )i
  i
  )i
  i
  )i
  i
  )i
  i
  )i
  i
  )i
  i
  )i
  i
  )i
  i
  )i
  i
  )
  r   )i
  i
  )i
  i
  )
  r   )i  i  )i  i  )i  i  )i  i(  )i*  i0  )i2  i3  )i5  i9  )i<  iD  )iG  iH  )iK  iM  )iV  iW  )i\  i]  )i_  ic  )if  iw  )i  i  )i  i  )i  i  )i  i  )i  i  )  r   )i  i  )i  i  )i  i  )i  i  )i  i  )i  i  )i  i  )  r   )  r   )i  i  )i   i  )i  i  )i  i  )i  i(  )i*  i9  )i=  iD  )iF  iH  )iJ  iM  )iU  iV  )iX  iZ  )i`  ic  )if  io  )ix  i  )i  i  )i  i  )i  i  )i  i  )i  i  )i  i  )i  i  )i  i  )i  i  )i  i  )  r   )i  i  )i  i  )i  i  )i  i  )i  i  )i  i  )i  i:  )i=  iD  )iF  iH  )iJ  iN  )W  r   )i_  ic  )if  iu  )iy  i  )i  i  )i  i  )i  i  )i  i  )  r   )i  i  )  r   )i  i  )  r   )i  i  )i  i  )i  i  )i  i:  )i?  i[  )i  i  )  r   )i  i  )  r   )  r   )i  i  )i  i  )i  i  )  r   )  r   )i  i  )i  i  )i  i  )i  i  )  r    )i  i  )i  i  )i  i  )i   iG  )iI  il  )iq  i  )i  i  )i  i  )i  i  )i   i  )  r!   )  r"   )i  iH  )iJ  iM  )iP  iV  )X  r#   )iZ  i]  )i`  i  )i  i  )i  i  )i  i  )i  i  )  r$   )i  i  )i  i  )i  i  )i  i  )i  iZ  )i]  i|  )i  i  )i  i  )i  i  )i   i  )i  i  )i  i  )i   i  )i  i  )i   i6  )i@  iS  )i`  il  )in  ip  )ir  is  )i  i  )i  i  )i  i  )i   i  )i  i  )i   iw  )i  i  )i  i  )i   i  )i   i+  )i0  i;  )@  r%   )iD  im  )ip  it  )i  i  )i  i  )i  i  )i  i  )i  i^  )i`  i|  )i  i  )i  i  )i  i  )i  i  )i   iK  )iP  i|  )i  i  )i  i7  )i;  iI  )iM  i  )i  i  )i  i  )i  i  )i   i  )i  i  )i  i  )i   iE  )iH  iM  )iP  iW  )Y  r&   )[  r'   )]  r(   )i_  i}  )i  i  )i  i  )i  i  )i  i  )i  i  )i  i  )i  i  )i   i'   )i0   i^   )ip   iq   )it   i   )i   i   )i   i   )i   i   )i !  i!  )i!  i#  )i $  i&$  )i@$  iJ$  )i`$  is+  )iv+  i+  )i+  i+  )i+  i+  )i+  i+  )i+  i+  )i ,  i.,  )i0,  i^,  )i`,  i,  )i,  i%-  )'-  r)   )--  r*   )i0-  ig-  )io-  ip-  )i-  i-  )i-  i-  )i-  i-  )i-  i-  )i-  i-  )i-  i-  )i-  i-  )i-  i-  )i-  i-  )i-  iB.  )i.  i.  )i.  i.  )i /  i/  )i/  i/  )i0  i?0  )iA0  i0  )i0  i0  )i1  i-1  )i11  i1  )i1  i1  )i1  i1  )i1  i2  )i 2  i2  )i 3  iM  )iM  i՟  )i   i  )i  iƤ  )iФ  i+  )i@  i  )i   i  )i  i  )i  i+  )i0  i9  )i@  iw  )i  iĨ  )iΨ  i٨  )i  i  )i   iS  )i_  i|  )i  iͩ  )iϩ  i٩  )iީ  i  )i   i6  )i@  iM  )iP  iY  )i\  iª  )i۪  i  )i  i  )i	  i  )i  i  )i   i&  )i(  i.  )i0  ie  )ip  i  )i  i  )i   i  )i  i  )i  i  )i   im  )ip  i  )i   i  )i  i  )i  i6  )i8  i<  )>  r+   )i@  iA  )iC  iD  )iF  i  )i  i?  )iP  i  )i  i  )i  i  )i   i  )i   iR  )iT  if  )ih  ik  )ip  it  )iv  i  )i  i  )i  i  )i  i  )i  i  )i  i  )i  i  )i  i  )i  i  )i   i  )i  i&  )i(  i:  )i<  i=  )i?  iM  )iP  i]  )i  i  )i  i )i i3 )i7 i )i i ) r,   )i i )i i )i i )i i )i  i# )i0 iJ )iP iz )i i )i i )i i )i  i )i i )i  i' )i0 ic )o r-   )i  i6 )i@ iU )i` ig )i  i ) r.   )i
 i5 )i7 i8 )< r/   )i? iU )iW i )i i )i i )i i )i i	 )i	 i9	 )?	 r0   )i	 i	 )i	 i	 )i	 i
 )i
 i
 )i
 i
 )i
 i
 )i
 i3
 )i8
 i:
 )i?
 iG
 )iP
 iX
 )i`
 i
 )i
 i
 )i
 i
 )i  i5 )i9 iU )iX ir )ix i )i i )i i )i  iH )i i )i i )i i )i` i~ )i  iM )iR io )i i )i i )i i )i i )i  i4 )i6 iC )iP iv )i i )i i )i i )i  i )i i= )i i ) r1   )i i )i i )i i )i i )i i )i  i )i i )i i )i i( )i* i0 )i2 i3 )i5 i9 )i< iD )iG iH )iK iM )P r2   )W r3   )i] ic )if il )ip it )i i )i i )i i )i i )i  iD )iP iY )i i )i i )i  i )i i+ )i0 i? )i i ) r4   )i i )i   i# )i $ in$ )ip$ it$ )i$ iC% )i 0 i.4 )i D iFF )i h i8j )i@j i^j )i`j iij )inj ioj )ij ij )ij ij )i k iEk )iPk iYk )i[k iak )ick iwk )i}k ik )i o iDo )iPo i~o )io io )i  i )i  ij )ip i| )i i )i i )i i )i  i )i  i& )i) ir )i{ i )i  iE )i  iV )i` iq )i  iT )iV i )i i ) r5   )i i )i i )i i ) r6   )i i )i i )i i
 )i i )i i )i i9 )i; i> )i@ iD )F r7   )iJ iP )iR i )i i )i i )i i )i i )i  i )i i )i  i )i i )i! i" )$ r8   )' r9   )i) i2 )i4 i7 )9 r:   ); r;   )B r<   )G r=   )I r>   )K r?   )iM iO )iQ iR )T r@   )W rA   )Y rB   )[ rC   )] rD   )_ rE   )ia ib )d rF   )ig ij )il ir )it iw )iy i| )~ rG   )i i )i i )i i )i i )i i )i i )i  i+ )i0 i )i i )i i )i i )i i )i  i )i i. )i0 ik )ip i )i i )i i: )i@ iH )iP iQ )i  iy )i{ i )i i )i i )i i )i  is )i i )i  i )i iG )iP iY )i` i )i i )i i )i i ) rH   )i   i֦ )i  i4 )i@ i )i  i )i  i )i  i c                 C   sp   t | }tt||f}|ttkr|d8 }t| \}}|dkr,||k r,t|d  \}}||  ko5|kS   S )N   r   )ordbisectbisect_rightPRINTABLE_RANGESlen)cocilohi rT   J/var/www/Befach/backend/venv/lib/python3.10/site-packages/config/tokens.pyis_printablew  s   rV   c                 C   s   |   S N)isprintable)rO   rT   rT   rU   <lambda>  s    rY   a01j" 
{}[]()<>z<=>=z===z!=z<>z<<z>>.,:@+-*z**/~z//%`$truefalsenullTrueFalseNoneisinnotandor&|^5ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_z:-+*/%,.{}[]()@$<>!~&|^TFc                   @   s   e Zd ZdS )RecognizerErrorN)__name__
__module____qualname__rT   rT   rT   rU   r     s    r   c                   @   s   e Zd ZdZdS )TokenizerErrorN)r   r   r   locationrT   rT   rT   rU   r     s    r   c                   @   s.   e Zd Zd ZZdddZdd Zdd ZdS )	TokenNc                 C   s   || _ || _|| _d S rW   kindtextvalue)selfr   r   r   rT   rT   rU   __init__  s   
zToken.__init__c                 C   s   d| j | j| jf S )NzToken(%s:%s:%s)r   r   rT   rT   rU   __repr__  s   zToken.__repr__c                 C   s&   t |tsdS | j|jko| j|jkS )NF)
isinstancer   r   r   )r   otherrT   rT   rU   __eq__  s   
zToken.__eq__rW   )r   r   r   startendr   r   r   rT   rT   rT   rU   r     s
    
r   	\')rZ   bfnrtvr   r^   r   rr   c                   @   sd   e Zd ZdZdZeZeZee	 Z
dd Zedd Zdd Zd	d
 Zdd Zdd Zdd ZeZdS )	Tokenizerz 	
z'"c                 C   s<   || _ d | _| _d | _| _t|dd| _g | _g | _d S )NrI   filenamez<unknown filename>)	streamlinenocharlinecolnocharcolgetattrr   pbcharspbtokens)r   r   rT   rT   rU   r     s   
zTokenizer.__init__c                 C   s    | j  }| j  }||d  S rW   )r   getvaluetell)r   sprT   rT   rU   	remaining  s   

zTokenizer.remainingc                 C   s"   |r| j || j| jf d S d S rW   )r   appendr   r   )r   rO   rT   rT   rU   	push_back  s   zTokenizer.push_backc                 C   s   | j r| j  }|d }|d  | _| _|d  | _| _n| j| _| j| _| jd}|rD|dkr:|  jd7  _|S |  jd7  _d| _|S )z
        Get the next char from the stream. Update line and column numbers
        appropriately.

        :return: The next character from the stream.
        :rtype: str
        r   rI      r`   )r   popr   r   r   r   r   read)r   r   rO   rT   rT   rU   get_char  s   
zTokenizer.get_charc              
      s^  j rj  S j}d }}t}j  fdd}fdd}d}	   }j }	j }
|s8n#|dkrY|   jd	7  _d	_	jj	d	 }	}
t
 }}n|d
krljj	d	 }	}
t
 }}n|dkr  }|d
kr|| t
 }}jj}	}
n|dkr  }|d
krtd}jjf|_|jj}	}
q&|jv rq&|dkr| }}t}jj}	}
	   }|sn&t|std||f }jjf|_|||7 }jj}	}
||krnq|std| }f|_|n]|jv r|}jj}	}
|}t}d}d}  }jjf}||kr)| n&  }||krE| |s?|\__| n
d}||7 }||7 }|}	   }|sYnQ||7 }jj}	}
||kr|s|rt|dkr||dd r|d dkrn"|dkr  }|d
kr|dd }qQ| | }nd}qR|std| }f|_|n|jv r|}jj}	}
t}  }|r|jv r||7 }jj}	}
  }|r|jv sو| |tv rt| }|tv rt|}|}n|}nL|tv r||\}}}}	}
n<|dkrE  }|dkr:|| }jj}	}
|}n	| }}| n|jv rJ| }}jj}	}
|dkr{  }|rz|tvrl| n||7 }||\}}}}	}
nn|dkr  }|r|tv s|dkr||7 }||\}}}}	}
n| n|dv rI  }d}|dkr|dv r||7 }jj}	}
|tkr|nt}d}nr|dv r||kr||7 }jj}	}
|dkrt }nt!}d}nP|dkr|d v r
||7 }jj}	}
|}d}n6|d!kr(|dkr%||7 }jj}	}
|}d}nt"}n|d"v rA||krA||7 }jj}	}
|}d}|rI| ntd#t#| }jjf|_||ttfv rt|}|d$v smJ |$|suJ ||s}J z||||  }W n ty } zf|_|d}~ww t%|||}f|_&|	|
f|_'|S )%z
        Get a token from the stream. The return value is (token_type, token_value).

        Multiline string tokenizing is thanks to David Janes (BlogMatrix)

        :return: The next token.
        :rtype: A token tuple.
        r_   c                    sl  t }d}d}| ddk}| d  }jj}}	   }|dkr$d}|s(n_|dkrM|r<| |7 } d}jj}}qtd|  | }	jjf|	_|	d}|dkrnd|  kr]d	krnn n| |7 } d}jj}}n|d
krd|  kr|dkrn n| |7 } d}jj}}n|dkrd|  krdkrn n| |7 } d}jj}}n|dkrd|  krd	ksn d|  krdksn d|  krdkrn n| |7 } d}jj}}n|dv r| dkr|dv rd}n	|dv rd}nd
}| |7 } jj}}n|dkr4|dks| ddks|r(td| }	jjf|	_|	| |7 } jj}}nR|dkrV|dkrV| dddk rV|rV| |7 } jj}}n0|dkr|dv r| ddk r| ddk r| d dkr| |7 } jj}}d}nnq| d dkrtd|  }	jjd f|	_|	|r|dkr|dv r| |7 } jj}}t}n|dkr| sʈ	| ntd| }	jjf|	_|	z>| 
dd}
|rt|
d
d  |}n)| d dv rt|
}n|s|rt|
}t}n|
d dkrdnd}t|
|}W n ty.   td t|  }	f|	_|	w || |||fS )!NFr   rk   T_zInvalid '_' in number: %sr[   9r   r\      7   rZ   r   AFOXoxBbOoXxzInvalid character in number: %crp   rI   eEeEz Invalid '_' at end of number: %sjJr_   
   zBadly-formed number: %r)INTEGERfindisdigitr   r   r   r   COMPLEXisalnumr   replaceintcomplexfloatFLOAT
ValueErrorstr)tokenttin_exponentradixdot_seenlast_was_digitendlineendcolrO   r   r   r   r   r   startcol	startlinerT   rU   
get_number<  s      D
 



I


z'Tokenizer.get_token.<locals>.get_numberc           
         s  |  d}|dk r| }|S g }d}|dkrt| }|dkr&|| d |  | |d  }|tv r<|t|  |d7 }nZ|dv r|dv rGd}n|d	krMd
nd}|| |krXd}nM| |d ||  }z%t|d}d|  krrdkswn |dkr{d}W n*|t| ||7 }W n ty   d}Y nw d}n| |d  } |  d}|dks|rtd|| f }	 f|	_|	||  d	|}|S )Nr   r   FrI   r   xXuUxX   u   r   Tr   i   i  i   z'Invalid escape sequence at index %d: %sr_   )
r   rN   r   ESCAPESr   unichrr   r   r   join)
r   rQ   resultfailedr   rO   slenr   dr   )r   r   rT   rU   parse_escapes  s^   
-


!



z*Tokenizer.get_token.<locals>.parse_escapesNT#rI   r`   r   r   zUnexpected character: \ru   z!Invalid char %c in `-string: '%s'zUnterminated `-string: '%s'Fr   r   r   zUnterminated quoted string: %rrj   rk   rp   )rg   rh   !rq   rr   r   r   rg   z<>=)r   r   r   rh   ri   r   z*/=zUnexpected character: %r)rI   r   )(r   r   r   EOFr   r   r   readliner   r   NEWLINEr   r   r   
whitespaceBACKTICKrV   quotesSTRINGrN   endswith	wordcharsWORD
identchars
PYKEYWORDSKEYWORDSKEYWORD_VALUESgetr   punctALT_NEQNEQANDORNOTr   
startswithr   r   r   )r   r   r   quoterr   r   r   r   rO   r   r   r   quoteescaped	multilinec1c1locc2ncpbr   r   rT   r   rU   	get_token+  s  	
t2






































zTokenizer.get_tokenc                 C   s   | S rW   rT   r   rT   rT   rU   __iter__  s   zTokenizer.__iter__c                 C   s   |   }|jtkrt|S rW   )r  r   r   StopIteration)r   r   rT   rT   rU   next  s   
zTokenizer.nextN)r   r   r   r   r   PUNCTr  	WORDCHARSr   r   r   r   propertyr   r   r   r  r  r  __next__rT   rT   rT   rU   r     s$    	
   r   )O
__future__r   stringr   sysversion_inforK   rM   rV   unicode	text_typechrr   r   r   r   r   r   r   r   r   LCURLYRCURLYLBRACKRBRACKLPARENRPARENLTGTLEGEEQASSIGNr  r  LSHIFTRSHIFTDOTCOMMACOLONATPLUSMINUSSTARPOWERSLASHTILDE
SLASHSLASHMODULOr   DOLLARTRUEFALSENONEPYTRUEPYFALSEPYNONEISINr	  r  r  BITANDBITORBITXORBITNOTr  r  r  r   r  SCALAR_TOKENS	Exceptionr   r   objectr   r   r   rT   rT   rT   rU   <module>   s       n
	