o
    ADi	                     @  s   d dl m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 d	lmZ d d
lmZ d dlmZ dgZde	vrRd dlZe
dejj eZG dd deZdS )    )annotationsN)Any)Mapping)urlsplit)known_implementations)register_implementation)FSSpecAccessorShim)str_remove_prefix)str_remove_suffix)UPath
WebdavPathwebdavc                      sV   e Zd ZdZed fd
dZed fddZed fddZ 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                   s   |sd}n3|r8|dv r8|^}}t t|}|j|dd dd }|jddd p-d}||d	< |g|R }d	|vrCtd
|t |d|S )N)/>   webdav+httpwebdav+https+    schemepathr   netlocr   base_urlz1must provide `base_url` storage option for args: r   )r   r   _replacesplitgeturl
ValueErrorsuper_transform_init_args)clsr   r   r   args0argsNurlbase	__class__r   U/var/www/Datamplify/venv/lib/python3.10/site-packages/upath/implementations/webdav.pyr(   "   s   zWebdavPath._transform_init_argsurlpathMapping[str, Any]c                   sn   t |}|dr/tt|}|j|jdd dd }|jddd p(d}|d| t	 
|d	|S )
N)zwebdav+http:zwebdav+https:r   r   r   r   r    r   r"   r   )dict
startswithr   r   r#   r   r$   r%   
setdefaultr'   _parse_storage_options)r)   r1   r   r   sor,   r-   r.   r   r0   r6   8   s   
z!WebdavPath._parse_storage_optionsc                   s   t t jdS )Nr   )r	   r'   r   )selfr.   r   r0   r   D   s   zWebdavPath.pathc                   s,   t | jd d}t  dd| ddS )Nr"   r   z	webdav://zwebdav+r   )r
   r   r'   __str__replace)r8   r"   r.   r   r0   r9   I   s   zWebdavPath.__str__)r   r   r   r   r   r   r   r   )r1   r   r   r   r   r2   r   r   )r   r   )__name__
__module____qualname__	__slots__classmethodr(   r6   propertyr   r9   __classcell__r   r   r.   r0   r      s    )
__future__r   ostypingr   r   urllib.parser   fsspec.registryr   r   upath._compatr   _FSSpecAccessorShimr	   r
   
upath.corer   __all__webdav4.fsspecwebdav4fsspecWebdavFileSystem_WebdavAccessorr   r   r   r   r0   <module>   s$    