o
    Ì¿Si®  ã                   @   s*   d dl Z d dlmZ dedefdd„ZdS )é    N)ÚAnyÚobjÚreturnc                 C   sú   | du rdS t | tƒrt | ¡st | ¡rdS | S z;ddl}t | |jfƒr*t| ƒW S t | |jfƒrEt| ƒ}t |¡s?t |¡rBW dS |W S t | |j	fƒrSt
|  ¡ ƒW S W n	 ty]   Y nw t | tƒrldd„ |  ¡ D ƒS t | tttfƒr{dd„ | D ƒS | S )zâRecursively convert values that are not JSON-compliant into safe values.

    Starlette's JSONResponse uses `allow_nan=False`, so float('nan')/inf will crash.
    We convert NaN/Inf to None while preserving normal floats.
    Nr   c                 S   s   i | ]	\}}|t |ƒ“qS © ©Úsanitize_for_json)Ú.0ÚkÚvr   r   ú5/var/www/html/Trade-python/app/utils/json_sanitize.pyÚ
<dictcomp>&   s    z%sanitize_for_json.<locals>.<dictcomp>c                 S   s   g | ]}t |ƒ‘qS r   r   )r   r
   r   r   r   Ú
<listcomp>)   s    z%sanitize_for_json.<locals>.<listcomp>)Ú
isinstanceÚfloatÚmathÚisnanÚisinfÚnumpyÚintegerÚintÚfloatingÚndarrayr   ÚtolistÚ	ExceptionÚdictÚitemsÚlistÚtupleÚset)r   Únpr
   r   r   r   r      s4   

ÿþ
r   )r   Útypingr   r   r   r   r   r   Ú<module>   s    