
    |rh                         d dl Z d dlmZmZ d dlmZ d dlmZ d dl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)MappingSequence)suppress)PurePath)AnyCallableClassVarOptional   )_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/html/ai-insurance-compliance-backend/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[ITQAt--a00IIc8$7:;!D**1-;;||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_hookr4   r5   r6   r7   r8   r9   r   c                R    || _         t        | 	  | j                  |||||       y )Nr3   )original_object_hookr   __init__custom_object_hook)r   r4   r5   r6   r7   r8   r9   r    s          r!   r<   zFilesystemJSONDecoder.__init__-   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   r>   fqppath_clss       r!   try_resolve_path_clsz*FilesystemJSONDecoder.try_resolve_path_clsB   sS    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   r@   r   rA   r   r   )r   r>   fs_clss      r!   try_resolve_fs_clsz(FilesystemJSONDecoder.try_resolve_fs_clsN   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   )rH   r   	from_dictrD   r;   )r   r>   obj_clss      r!   r=   z(FilesystemJSONDecoder.custom_object_hook^   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!   rN   z)FilesystemJSONDecoder.unmake_serializablej   s     c4 ))#.Cc4 ?Byy{Ktq!At//22KKcD%=)9<=AD,,Q/==
	 L=s   B?B")r   r   r-   r
   r   rM   r   r   r'   rO   rP   r<   classmethodrD   rH   r=   rN   r/   r0   s   @r!   r2   r2   ,   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"   r2   )jsoncollections.abcr   r   
contextlibr   pathlibr   typingr   r   r	   r
   registryr   r   specr   JSONEncoderr   JSONDecoderr2    r"   r!   <module>r\      sI     -    : $!D,, !8ID,, Ir"   