
    9i                         S SK r S SKJrJrJr  S SKJr  S SKJr  S SK	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)CallableMappingSequence)suppress)PurePath)AnyClassVar   )_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      K/var/www/html/land-doc-ocr/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-  S\\/\4   S-  S\\/\4   S-  S\\/\4   S-  S	\S
\\	\
\\4      /\4   S-  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 )Nr9   )original_object_hookr   __init__custom_object_hook)r   r:   r;   r<   r=   r>   r?   r    s          r!   rB   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   rE   fqppath_clss       r!   try_resolve_path_cls*FilesystemJSONDecoder.try_resolve_path_cls=   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   rG   r   rH   r   r   )r   rE   fs_clss      r!   try_resolve_fs_cls(FilesystemJSONDecoder.try_resolve_fs_clsI   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   )rP   r   	from_dictrK   rA   )r   rE   obj_clss      r!   rC   (FilesystemJSONDecoder.custom_object_hookY   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   dictrC   r)   unmake_serializablelisttupler+   s       r!   rX   )FilesystemJSONDecoder.unmake_serializablee   s     c4  ))#.Cc4  ?Byy{K{tqA//22{KKcD%=))9<=A,,Q/==
	 L=s   B.B4)rA   )r   r   r0   r1   r   rW   r   r   r(   rY   rZ   rB   classmethodrK   rP   rC   rX   r3   r4   r5   s   @r!   r7   r7   '   sC    ?C37156:KO
 tCH~.34t;
 seSj)D0	

 SE3J'$.
 !#,t3
 
 $T%S/%:$;S$@ADH
 

 
* 	tCH~ 	 	 T#s(^  
d38n 
s s  r#   r7   )jsoncollections.abcr   r   r   
contextlibr   pathlibr   typingr   r	   registryr   r   specr   JSONEncoderr   JSONDecoderr7   r/   r#   r!   <module>rf      sC     7 7     9 $!D,, !8ID,, Ir#   