o
    NrfI
                     @   s   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 ddlmZmZ ddlmZ G dd	 d	e jZG d
d de jZdS )    N)suppress)PurePath)AnyCallableDictListOptionalTuple   )_import_classget_filesystem_class)AbstractFileSystemc                       s&   e Zd Zdedef fddZ  ZS )FilesystemJSONEncoderoreturnc                    sL   t |tr	| S t |tr t|}|j d|j t|dS t 	|S )N.)clsstr)

isinstancer   to_dictr   type
__module____name__r   superdefault)selfr   r   	__class__ T/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/fsspec/json.pyr      s   

zFilesystemJSONEncoder.default)r   r   __qualname__r   r   __classcell__r   r   r   r   r   
   s    r   c                       s   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dZedeeef fddZedeeef fddZdeeef fddZ  ZS )FilesystemJSONDecoderNTobject_hookparse_float	parse_intparse_constantstrictobject_pairs_hookr$   r%   r&   r'   r(   r)   r   c                   s$   || _ t j| j|||||d d S )Nr#   )original_object_hookr   __init__custom_object_hook)r   r$   r%   r&   r'   r(   r)   r   r   r   r+      s   

zFilesystemJSONDecoder.__init__dctc                 C   sZ   t t |d }t|}t|tr|W  d    S W d    d S 1 s&w   Y  d S )Nr   )r   	Exceptionr   
issubclassr   )r   r-   Zfqppath_clsr   r   r   try_resolve_path_cls+   s   


z*FilesystemJSONDecoder.try_resolve_path_clsc              	   C   s   t tH d|v r<zt|d }t|tr|W W  d    S W n# ty;   d|v r:t|d  Y W  d    S  w W d    d S W d    d S 1 sOw   Y  d S )Nr   protocol)r   r.   r   r/   r   r   )r   r-   Zfs_clsr   r   r   try_resolve_fs_cls7   s,   




z(FilesystemJSONDecoder.try_resolve_fs_clsc                 C   sZ   d|v r!|  | }d urt|S | | }d ur!||d S | jd ur+| |S |S )Nr   r   )r3   r   	from_dictr1   r*   )r   r-   Zobj_clsr   r   r   r,   G   s   


z(FilesystemJSONDecoder.custom_object_hook)r   r   r    r   r   r   r   r   boolr   r	   r+   classmethodr1   r3   r,   r!   r   r   r   r   r"      s6    	r"   )json
contextlibr   pathlibr   typingr   r   r   r   r   r	   registryr   r   specr   JSONEncoderr   JSONDecoderr"   r   r   r   r   <module>   s     