U
    Æ½„b›  ã                   @   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   ú6/tmp/pip-unpacked-wheel-9yxrzpkm/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 |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 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