
    çg                         d dl Z d dlmZ d dlmZ d dlmZmZmZm	Z	m
Z
mZmZmZmZ ddlmZmZ ddlmZ  G d d	e j                  Z G d
 de j                  ZdS )    N)suppress)PurePath)	AnyCallableClassVarDictListMappingOptionalSequenceTuple   )_import_classget_filesystem_class)AbstractFileSystemc                   T     e Zd ZU dZee         ed<   dedef fdZdedefdZ	 xZ
S )FilesystemJSONEncoderTinclude_passwordoreturnc                 0   t          |t                    r|                    | j                  S t          |t                    r0t          |          }|j         d|j         t          |          dS t                      
                    |          S )N)r   .)clsstr)
isinstancer   to_dictr   r   type
__module____name__r   superdefault)selfr   r   	__class__s      G/var/www/html/ai-engine/env/lib/python3.11/site-packages/fsspec/json.pyr!   zFilesystemJSONEncoder.default   s    a+,, 	E99d.C9DDDa"" 	Nq''C!n==s|==c!ffMMMwwq!!!    objc                 2    t          |t          t          t          t          f          r|S t          |t
                    r  fd|                                D             S t          |t                    r fd|D             S                      |          S )z
        Recursively converts an object so that it can be JSON serialized via
        :func:`json.dumps` and :func:`json.dump`, without actually calling
        said functions.
        c                 B    i | ]\  }}|                     |          S  make_serializable.0kvr"   s      r$   
<dictcomp>z;FilesystemJSONEncoder.make_serializable.<locals>.<dictcomp>)   s-    IIITQAt--a00IIIr%   c                 :    g | ]}                     |          S r)   r*   r-   r/   r"   s     r$   
<listcomp>z;FilesystemJSONEncoder.make_serializable.<locals>.<listcomp>+   s'    ;;;!D**1--;;;r%   )	r   r   intfloatboolr
   itemsr   r!   r"   r&   s   ` r$   r+   z'FilesystemJSONEncoder.make_serializable    s     cCeT233 	Jc7## 	JIIIISYY[[IIIIc8$$ 	<;;;;s;;;;||C   r%   )r   r   __qualname__r   r   r6   __annotations__r   r!   r+   __classcell__r#   s   @r$   r   r      s         '+htn+++" " " " " " " "!S !S ! ! ! ! ! ! ! !r%   r   c                       e Zd Zddddddddeeeeef         gef                  deeegef                  deeegef                  deeegef                  ded	eee	e
eef                  gef                  d
df fdZedeeef         fd            Zedeeef         fd            Zdeeef         fdZded
efdZ xZS )FilesystemJSONDecoderNTobject_hookparse_float	parse_intparse_constantstrictobject_pairs_hookr@   rA   rB   rC   rD   rE   r   c                n    || _         t                                          | j        |||||           d S )Nr?   )original_object_hookr    __init__custom_object_hook)r"   r@   rA   rB   rC   rD   rE   r#   s          r$   rH   zFilesystemJSONDecoder.__init__1   sM     %0!/#)/ 	 	
 	
 	
 	
 	
r%   dctc                     t          t                    5  |d         }t          |          }t          |t                    r|cd d d            S 	 d d d            n# 1 swxY w Y   d S )Nr   )r   	Exceptionr   
issubclassr   )r   rJ   fqppath_clss       r$   try_resolve_path_clsz*FilesystemJSONDecoder.try_resolve_path_clsF   s    i   	  	 e*C$S))H(H--  	  	  	  	  	  	  	  	 
 	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  ts   .AA!$A!c                 F   t          t                    5  d|v rp	 t          |d                   }t          |t                    r|cd d d            S n6# t          $ r) d|v r#t          |d                   cY cd d d            S  w xY wd d d            n# 1 swxY w Y   d S )Nr   protocol)r   rL   r   rM   r   r   )r   rJ   fs_clss      r$   try_resolve_fs_clsz(FilesystemJSONDecoder.try_resolve_fs_clsR   s6   i   
	 
	||*3u:66F!&*<== &%
	 
	 
	 
	 
	 
	 
	 
	&    !S((3C
ODDDD
	 
	 
	 
	 
	 
	 
	 
	 	
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 ts4   B+AB#B7BBBBBc                     d|v rS|                      |          x}t          j        |          S |                     |          x} ||d                   S | j        |                     |          S |S )Nr   r   )rT   r   	from_dictrP   rG   )r"   rJ   obj_clss      r$   rI   z(FilesystemJSONDecoder.custom_object_hookb   s    C<<223777D)3C88844S999Fws5z***$0,,S111
r%   r&   c                     t          |t                    r                     |          }t          |t                    r  fd|                                D             S t          |t          t
          f          r fd|D             S |S )zV
        Inverse function of :meth:`FilesystemJSONEncoder.make_serializable`.
        c                 B    i | ]\  }}|                     |          S r)   unmake_serializabler,   s      r$   r0   z=FilesystemJSONDecoder.unmake_serializable.<locals>.<dictcomp>u   s-    KKKtq!At//22KKKr%   c                 :    g | ]}                     |          S r)   rZ   r2   s     r$   r3   z=FilesystemJSONDecoder.unmake_serializable.<locals>.<listcomp>w   s'    ===AD,,Q//===r%   )r   dictrI   r7   listtupler8   s   ` r$   r[   z)FilesystemJSONDecoder.unmake_serializablen   s     c4   	/))#..Cc4   	LKKKKsyy{{KKKKcD%=)) 	>========
r%   )r   r   r9   r   r   r   r   r   r6   r	   r   rH   classmethodrP   rT   rI   r[   r;   r<   s   @r$   r>   r>   0   s        BF6:489=NR
 
 
 hS#X'7'<=>
 hucz23	

 HcUCZ01
 !3%*!56
 
 $Hd5c?.C-Dc-I$JK
 

 
 
 
 
 
* 	tCH~ 	 	 	 [	 T#s(^    [
d38n 
 
 
 
s s        r%   r>   )json
contextlibr   pathlibr   typingr   r   r   r   r	   r
   r   r   r   registryr   r   specr   JSONEncoderr   JSONDecoderr>   r)   r%   r$   <module>ri      s:               
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 : 9 9 9 9 9 9 9 $ $ $ $ $ $! ! ! ! !D, ! ! !8I I I I ID, I I I I Ir%   