a
    1$e6                     @   s^  d dl Z d dlmZ d dlmZ e Zeg dadddddd	dd
dddd	ddd	ddddZdd Z	dd Z
e
  dd Zdd Zddd	ddddddd	ddddd	dddddZdd Zdd	ddddddddddd dd	ddddd!dddddddddd"	dZd#d$ Zddd%ddd&ddddddddddd'
d(Zd)d* Zdddd+Zd,d- ZdS ).    N)Env)get_gdal_version_tuple))Z
AeronavFAAr)ZARCGENr   )BNArw)DXFr   )CSVraw)FileGDBr	   )OpenFileGDBr	   )ZESRIJSONr   )ESRI Shapefiler	   )
FlatGeobufr	   )GeoJSONr	   )
GeoJSONSeqr	   )GPKGr	   )GMLr   )GMTr   )OGR_GMTr   )GPXr   )ZIdrisir   )MapInfo Filer	   )DGNr	   )ZParquetr	   )PCIDSKr	   )ZPDSr   )ZOGR_PDSr   )ZS57r   )ZSEGYr   )SQLiter	   )ZSUAr   )ZTopoJSONr   )      r   )      r   )   r   r   )r   r   r   )r   r   r   )r   r   r   )r      r   )r   r   r   r   r   )r   r   r   )r      r   )r   r   r   r   r   r   r   )r   wac                 C   s@   | t vrdS |t |  vrdS | t| v r<tt| |  k r<dS dS )z{ Returns True if driver supports mode, False otherwise

        Note: this function is not part of Fiona's public API.
    FT)supported_driversdriver_mode_mingdal_GDAL_VERSION)drivermode r'   L/var/www/html/django/DPS/env/lib/python3.9/site-packages/fiona/drvsupport.py_driver_supports_mode   s    r)   c                  C   s^   t  @} |   }t }t D ]}||vr$||= q$W d    n1 sL0    Y  |ad S )N)r   Zdriverskeysr"   copy)ZgdalenvZogrdrv_namesZsupported_drivers_copydrvr'   r'   r(   _filter_supported_drivers   s    &r-   c                  C   sP   ddl m}  i }t D ]2\}}| |p*dD ]}d|v r,|||||< q,q|S )zP
    Returns
    -------
    dict:
        Map of extensions to the driver.
    r   )
extensionsr'   r    )Z
fiona.metar.   r"   itemsget)r.   Zextension_to_driverr,   modes	extensionr'   r'   r(   vector_driver_extensions   s    r3   c                 C   sd   z
| j } W n ty   Y n0 t }z |tj| d d  W S  ty^   t	dY n0 dS )a  
    Attempt to auto-detect driver based on the extension.

    Parameters
    ----------
    path: str or pathlike object
        The path to the dataset to write with.

    Returns
    -------
    str:
        The name of the driver for the extension.
    .z/Unable to detect driver. Please specify driver.N)
nameAttributeErrorr3   ospathsplitextlstriplowerKeyError
ValueError)r9   Zdriver_extensionsr'   r'   r(   driver_from_extension   s    
 r?   )r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   )timedatetimedatec                 C   s@   |t v r<| t | v r<t | |  du r(dS tt | |  k r<dS dS )z Returns True if the driver converts the field_type silently to str, False otherwise

        Note: this function is not part of Fiona's public API.
    NTF)_driver_converts_to_strr$   r%   Z
field_typer'   r'   r(   +_driver_converts_field_type_silently_to_str!  s    rE   )r   r   r   )r   r   r   GPSTrackMakerr   r   r   r   r   r
   r   r   )r   r   r   r   r   r   )	r   rF   r   r   r   r   r
   r   r   c                 C   s@   |t v r<| t | v r<t | |  du r(dS tt | |  k r<dS dS )z Returns True if the driver supports the field_type, False otherwise

        Note: this function is not part of Fiona's public API.
    NFT)_driver_field_type_unsupportedr$   rD   r'   r'   r(   _driver_supports_fieldT  s    rH   )r   r   r   )r   r   rF   r
   r   )
r   r   rF   r   r   r   r   r   r   r   )rA   r@   c                 C   s@   |t v r<| t | v r<t | |  du r(dS tt | |  k r<dS dS )z Returns True if the driver supports timezones for field_type, False otherwise

        Note: this function is not part of Fiona's public API.
    NFT)!_drivers_not_supporting_timezonesr$   rD   r'   r'   r(   _driver_supports_timezonesz  s    rJ   )rF   r
   r   c                 C   s:   t jdk rdS | tv r6t|  du r&dS t|  t k r6dS dS )z Returns True if the driver supports milliseconds, False otherwise

        Note: this function is not part of Fiona's public API.
    r   FNT)r$   major$_drivers_not_supporting_milliseconds)r%   r'   r'   r(   _driver_supports_milliseconds  s    
rM   )r8   Z	fiona.envr   Z
fiona._envr   r$   dictr"   r#   r)   r-   r3   r?   rC   rE   rG   rH   rI   rJ   rL   rM   r'   r'   r'   r(   <module>   s   	 
#		%