U
    M»{jÔ  ã                   @   s\   d Z ddlZddlmZ dd„ Zeƒ ZddgZe d	ejej	B ej
B ¡Zd
d„ ZepVeZdS )zJSON token scanner
é    Né   )ÚJSONDecodeErrorc                  C   s.   zddl m}  | W S  tk
r(   Y d S X d S )Nr   ©Úmake_scanner)Z	_speedupsr   ÚImportErrorr   © r   úQ/var/www/html/bwave/python/venv/lib/python3.8/site-packages/simplejson/scanner.pyÚ_import_c_make_scanner   s
    r	   r   r   z)(-?(?:0|[1-9]\d*))(\.\d+)?([eE][-+]?\d+)?c                    s~   | j ‰
| j‰| j‰tj‰| j‰| j‰| j‰| j‰	| j	‰| j
‰| j‰| j‰‡ ‡‡‡‡‡‡‡‡‡	‡
‡‡fdd„‰ ‡ ‡fdd„}|S )Nc           	         s  d}z| | }W n  t k
r0   t|| |ƒ‚Y nX |dkrLˆ| |d ˆˆƒS |dkrpˆ
| |d fˆˆˆ ˆˆˆƒS |dkrŠˆ| |d fˆ ƒS |dkr²| ||d … dkr²d |d fS |d	krÚ| ||d … d
krÚd|d fS |dk�r| ||d … dk�rd|d fS ˆ| |ƒ}|d k	�rf| ¡ \}}}|�s4|�rRˆ||�p@d |�pJd ƒ}nˆ	|ƒ}|| ¡ fS ˆ�rœ|dk�rœ| ||d … dk�rœˆdƒ|d fS ˆ�rÒ|dk�rÒ| ||d … dk�rÒˆdƒ|d fS ˆ�r|dk�r| ||d … dk�rˆdƒ|d fS t|| |ƒ‚d S )NúExpecting valueú"r   Ú{ú[Úné   ÚnullÚtÚtrueTÚfé   ÚfalseFÚ ÚNé   ÚNaNÚIé   ÚInfinityú-é	   z	-Infinity)Ú
IndexErrorr   ÚgroupsÚend)	ÚstringÚidxÚerrmsgÚnextcharÚmÚintegerÚfracÚexpÚres©Ú
_scan_onceÚencodingÚmatch_numberÚmemoÚobject_hookÚobject_pairs_hookÚparse_arrayÚparse_constantÚparse_floatÚ	parse_intÚparse_objectÚparse_stringÚstrictr   r   r,   "   sH       ÿ 

&&&z#py_make_scanner.<locals>._scan_oncec                    s2   |dk rt d| |ƒ‚zˆ | |ƒW ¢S ˆ ¡  X d S )Nr   r
   )r   Úclear)r"   r#   )r,   r/   r   r   Ú	scan_onceH   s
    z"py_make_scanner.<locals>.scan_once)r6   r2   r7   Ú	NUMBER_REÚmatchr-   r8   r4   r5   r3   r0   r1   r/   )Úcontextr:   r   r+   r   Úpy_make_scanner   s    $&r>   )Ú__doc__ÚreÚerrorsr   r	   Úc_make_scannerÚ__all__ÚcompileÚVERBOSEÚ	MULTILINEÚDOTALLr;   r>   r   r   r   r   r   Ú<module>   s   þA