
    h                         S SK r S SKJrJr  S SKJr  S SKJr  S SKJ	r	J
r
JrJr  SSKJrJr  SSKJr   " S	 S
\ R$                  5      r " S S\ R(                  5      rg)    N)MappingSequence)suppress)PurePath)AnyCallableClassVarOptional   )_import_classget_filesystem_class)AbstractFileSystemc                   \   ^  \ rS rSr% Sr\\   \S'   S\S\4U 4S jjr	S\S\4S jr
S	rU =r$ )
FilesystemJSONEncoder   Tinclude_passwordoreturnc                   > [        U[        5      (       a  UR                  U R                  S9$ [        U[        5      (       a2  [        U5      nUR                   SUR                   3[        U5      S.$ [        TU ])  U5      $ )N)r   .)clsstr)
isinstancer   to_dictr   r   type
__module____name__r   superdefault)selfr   r   	__class__s      E/var/www/fran/franai/venv/lib/python3.13/site-packages/fsspec/json.pyr   FilesystemJSONEncoder.default   sp    a+,,99d.C.C9DDa""q'C!nn-Qs||n=c!fMMwq!!    objc                    [        U[        [        [        [        45      (       a  U$ [        U[
        5      (       a4  UR                  5        VVs0 s H  u  p#X R                  U5      _M     snn$ [        U[        5      (       a!  U Vs/ s H  o0R                  U5      PM     sn$ U R                  U5      $ s  snnf s  snf )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+   'FilesystemJSONEncoder.make_serializable   s     cCeT233Jc7##=@YY[I[TQA--a00[IIc8$$7:;s!**1-s;;||C  	 J;s   B8
B> )r   r   __qualname____firstlineno__r   r	   r)   __annotations__r   r   r+   __static_attributes____classcell__r!   s   @r"   r   r      s=    '+htn+" " "!S !S ! !r$   r   c                   <  ^  \ rS rSrSSSSSSS.S\\\\\4   /\4      S\\\/\4      S\\\/\4      S\\\/\4      S	\	S
\\\
\\\4      /\4      SS4U 4S jjjr\S\\\4   4S j5       r\S\\\4   4S j5       rS\\\4   4S jrS\S\4S jrSrU =r$ )FilesystemJSONDecoder,   NTobject_hookparse_float	parse_intparse_constantstrictobject_pairs_hookr;   r<   r=   r>   r?   r@   r   c          	      J   > Xl         [        TU ]	  U R                  UUUUUS9  g )Nr:   )original_object_hookr   __init__custom_object_hook)r    r;   r<   r=   r>   r?   r@   r!   s          r"   rC   FilesystemJSONDecoder.__init__-   s5     %0!//#)/ 	 	
r$   dctc                     [        [        5         US   n[        U5      n[        U[        5      (       a  UsS S S 5        $  S S S 5        g ! , (       d  f       g = f)Nr   )r   	Exceptionr   
issubclassr   )r   rF   fqppath_clss       r"   try_resolve_path_cls*FilesystemJSONDecoder.try_resolve_path_clsB   sR    i e*C$S)H(H-- ! 
 . !  !  s   'A
Ac                    [        [        5         SU;   a0   [        US   5      n[        U[        5      (       a  UsS S S 5        $  S S S 5        g ! [         a!    SU;   a  [        US   5      s sS S S 5        $ e f = f! , (       d  f       g = f)Nr   protocol)r   rH   r   rI   r   r   )r   rF   fs_clss      r"   try_resolve_fs_cls(FilesystemJSONDecoder.try_resolve_fs_clsN   s    i |*3u:6F!&*<==% !  >	 !  ! !S(3C
ODD !  	 !  s.   A>$AA>A;.A>9A;;A>>
Bc                     SU;   aI  U R                  U5      =nb  [        R                  " U5      $ U R                  U5      =nb  U" US   5      $ U R                  b  U R	                  U5      $ U$ )Nr   r   )rQ   r   	from_dictrL   rB   )r    rF   obj_clss      r"   rD   (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                 r   [        U[        5      (       a  U R                  U5      n[        U[        5      (       a4  UR                  5        VVs0 s H  u  p#X R	                  U5      _M     snn$ [        U[
        [        45      (       a!  U Vs/ s H  o0R	                  U5      PM     sn$ U$ s  snnf s  snf )zF
Inverse function of :meth:`FilesystemJSONEncoder.make_serializable`.
)r   dictrD   r*   unmake_serializablelisttupler,   s       r"   rY   )FilesystemJSONDecoder.unmake_serializablej   s     c4  ))#.Cc4  ?Byy{K{tqA//22{KKcD%=))9<=A,,Q/==
	 L=s   B.B4)rB   )r   r   r1   r2   r
   r   rX   r   r   r)   rZ   r[   rC   classmethodrL   rQ   rD   rY   r4   r5   r6   s   @r"   r8   r8   ,   sD    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$   r8   )jsoncollections.abcr   r   
contextlibr   pathlibr   typingr   r   r	   r
   registryr   r   specr   JSONEncoderr   JSONDecoderr8   r0   r$   r"   <module>rg      sI     -    : $!D,, !8ID,, Ir$   