a
    1$e	                  	   @   s   d Z ddlZddlZddlmZ dddddddd	d
Zdd e D Zdd e D Zdd Z	dd Z
dddZdddZdS )z.Implementation of Apache VFS schemes and URLs.    N)urlparsecurlgzips3tarzipgs)ftpr   httphttpsr   r   r   r   c                 C   s   h | ]\}}|d kr|qS )r    .0kvr   r   E/var/www/html/django/DPS/env/lib/python3.9/site-packages/fiona/vfs.py	<setcomp>       r   c                 C   s   h | ]\}}|d v r|qS ))r   r   r   r   r   r   r   r   r      r   c                 C   s   t dd | dD S )z4Ensures all parts of our vsi path are valid schemes.c                 s   s   | ]}|t v V  qd S NSCHEMESr   pr   r   r   	<genexpr>   r   zvalid_vsi.<locals>.<genexpr>+)allsplit)vsir   r   r   	valid_vsi   s    r   c                 C   s$   | d u rdS t dd | dD S )NFc                 s   s   | ]}|t v V  qd S r   )REMOTESCHEMESr   r   r   r   r   #   r   zis_remote.<locals>.<genexpr>r   )anyr   )schemer   r   r   	is_remote    s    r"   c                 C   sR   |rJd dd |dD }|r8d| d| |  }qNd| d|  }n| }|S )N/c                 s   s   | ]}d t |  V  qdS )r   Nr   r   r   r   r   r   *   r   zvsi_path.<locals>.<genexpr>r   )joinr   )pathr   archiveprefixresultr   r   r   vsi_path&   s    r)   c                 C   s  d }}| }t jdkr,td|r,|ddfS |r`t|}|j}|j}|jr|jdkr|j| }nt|}|j}|j}|jr|jdkr|dd t	v rd
|dd |j|}n
|j| }|tv r|d}|r| nd}|r| nd}|sdn|}|||fS )	zeParse a URI or Apache VFS URL into its parts

    Returns: tuple
        (path, scheme, archive)
    Nwin32z^[a-zA-Z]\:	localhostr   z	{}://{}{}!)sysplatformrematchr   r!   r%   netlocr   CURLSCHEMESformatr   pop)uriZvfsr&   r!   r%   partsr   r   r   parse_paths5   s.    


r8   )NN)N)__doc__r.   r0   urllib.parser   r   itemsr3   r   r   r"   r)   r8   r   r   r   r   <module>   s$   
