
    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y)    N)suppress)PurePath)	AnyCallableClassVarDictListMappingOptionalSequenceTuple   )_import_classget_filesystem_class)AbstractFileSystemc                   N     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                     t        |t              r|j                  | j                        S t        |t              r2t        |      }|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      @/var/www/openai/venv/lib/python3.12/site-packages/fsspec/json.pyr!   zFilesystemJSONEncoder.default   sj    a+,99d.C.C9DDa"q'C!nn-Qs||n=c!fMMwq!!    objc                 b   t        |t        t        t        t        f      r|S t        |t
              r3|j                         D ci c]  \  }}|| j                  |       c}}S t        |t              r|D cg c]  }| j                  |       c}S | j                  |      S c c}}w c c}w )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.
        )
r   r   intfloatboolr
   itemsmake_serializabler   r!   r"   r&   kvs       r$   r,   z'FilesystemJSONEncoder.make_serializable    s     cCeT23Jc7#=@YY[I[TQAt--a00[IIc8$7:;s!D**1-s;;||C  	 J;s   B&:B,)r   r   __qualname__r   r   r*   __annotations__r   r!   r,   __classcell__r#   s   @r$   r   r      s8    '+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_hookr7   r8   r9   r:   r;   r<   r   c                R    || _         t        | 	  | j                  |||||       y )Nr6   )original_object_hookr    __init__custom_object_hook)r"   r7   r8   r9   r:   r;   r<   r#   s          r$   r?   zFilesystemJSONDecoder.__init__1   s7     %0!//#)/ 	 	
r%   dctc                     t        t              5  |d   }t        |      }t        |t              r|cd d d        S 	 d d d        y # 1 sw Y   y xY w)Nr   )r   	Exceptionr   
issubclassr   )r   rA   fqppath_clss       r$   try_resolve_path_clsz*FilesystemJSONDecoder.try_resolve_path_clsF   sL    i e*C$S)H(H- ! 
 . !  ! s   "AAc                     t        t              5  d|v r+	 t        |d         }t        |t              r|cd d d        S 	 d d d        y # t        $ r d|v rt        |d         cY cd d d        S  w xY w# 1 sw Y   y xY w)Nr   protocol)r   rC   r   rD   r   r   )r   rA   fs_clss      r$   try_resolve_fs_clsz(FilesystemJSONDecoder.try_resolve_fs_clsR   s    i |*3u:6F!&*<=% !  >	 !  ! !S(3C
ODD !  	 ! s-   A4A	A4	A1$A4/A11A44A=c                     d|v rF| j                  |      x}t        j                  |      S | j                  |      x} ||d         S | j                  | j	                  |      S |S )Nr   r   )rK   r   	from_dictrG   r>   )r"   rA   obj_clss      r$   r@   z(FilesystemJSONDecoder.custom_object_hookb   sw    C<22377D)33C8844S99Fs5z**$$0,,S11
r%   r&   c                 N   t        |t              r| j                  |      }t        |t              r3|j                         D ci c]  \  }}|| j	                  |       c}}S t        |t
        t        f      r|D cg c]  }| j	                  |       c}S |S c c}}w c c}w )zV
        Inverse function of :meth:`FilesystemJSONEncoder.make_serializable`.
        )r   dictr@   r+   unmake_serializablelisttupler-   s       r$   rQ   z)FilesystemJSONDecoder.unmake_serializablen   s     c4 ))#.Cc4 ?Byy{K{tq!At//22{KKcD%=)9<=AD,,Q/==
	 L=s   B?B")r   r   r0   r   r   r   r   r   r*   r	   r   r?   classmethodrG   rK   r@   rQ   r2   r3   s   @r$   r5   r5   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%   r5   )json
contextlibr   pathlibr   typingr   r   r   r   r	   r
   r   r   r   registryr   r   specr   JSONEncoderr   JSONDecoderr5    r%   r$   <module>r^      sK      
 
 
 : $!D,, !8ID,, Ir%   