o
    ADie                     @  s   d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d	gZeZG d
d	 d	eZdS )    )annotationsN)chain)Any)sync)FSSpecAccessorShim)UPathStatResult)UPathHTTPPathc                      s   e Zd Zed d	d
Zed! fddZ fddZ fddZ fddZ	d"d#ddZ
 fddZ		d$d% fddZ  ZS )&r	   argstuple[str | os.PathLike, ...]protocolstrstorage_optionsdict[str, Any]return9tuple[tuple[str | os.PathLike, ...], str, dict[str, Any]]c                 C  sL   |r!t |d |s!| dt |d d g|dd  R }|||fS )Nr   z:///   )r   
startswithlstrip)clsr
   r   r    r   S/var/www/Datamplify/venv/lib/python3.10/site-packages/upath/implementations/http.py_transform_init_args   s   ,
zHTTPPath._transform_init_argsc                   s   t  jpdS )Nr   )superrootself	__class__r   r   r   "   s   zHTTPPath.rootc                   s   t t|  S )N)r   r   __str__r   r   r   r   r    &   s   zHTTPPath.__str__c              	     s@   z
t t   W dS  ttfy   Y dS  ty   Y dS w )NTFnextr   iterdirStopIterationNotADirectoryErrorFileNotFoundErrorr   r   r   r   is_file)      zHTTPPath.is_filec              	     s@   z
t t   W dS  ttfy   Y dS  ty   Y dS w )NFTr!   r   r   r   r   is_dir3   r(   zHTTPPath.is_dirTfollow_symlinksboolc                 C  sZ   |st jt| j dtdd | j| j}d|v r(|d dr$dnd|d< t	
|S )	Nz3.stat(follow_symlinks=False): is currently ignored.   )
stacklevelurlr   	directoryfiletype)warningswarnr1   __name__UserWarningfsinfopathendswithr   	from_info)r   r*   r7   r   r   r   stat=   s   
zHTTPPath.statc              	   #  s    | j dd  dkr| j E d H  d S tt  }zt|}W n ttfy0   tt|  t	y<   t	t| w t
|g|E d H  d S )N) )partsparentr#   iterr   r"   r$   r%   r   r&   r   )r   ititem0r   r   r   r#   J   s   zHTTPPath.iterdirFr   strictfollow_redirectsc           
        s   t  j|d}| jdd dkr|d}|rc| j}t| }t|j|j}|j	|j
fD ]7}t|j||dd}z|  W n tyX }	 z||j
krNt| |	W Y d}	~	q+d}	~	ww tt|j} |S |S )z)Normalize the path and resolve redirects.)rC   r<   N)z..r=   T)allow_redirects)r   resolver>   joinpathr6   r   r   loopset_sessionheadgetraise_for_status	Exceptionr&   r	   r.   )
r   rC   rD   resolved_pathr6   r.   sessionmethodrexcr   r   r   rF   X   s(   


zHTTPPath.resolve)r
   r   r   r   r   r   r   r   )r   r   )T)r*   r+   )FT)r   r	   rC   r+   rD   r+   r   r	   )r4   
__module____qualname__classmethodr   propertyr   r    r'   r)   r;   r#   rF   __classcell__r   r   r   r   r	      s    

)
__future__r   osr2   	itertoolsr   typingr   fsspec.asynr   upath._compatr   _FSSpecAccessorShimupath._statr   
upath.corer   __all___HTTPAccessorr	   r   r   r   r   <module>   s    