a
    1$eP                     @   s   d dl Z d dlm  mZ d dlmZ d dlmZ e 	e
ZG dd dZdd Zedd	d
 Zeddd Zeddd Zeddd Zeddd Zdd Zeddd Zeddd Zeddd ZdS )    N)require_gdal_version)_get_metadata_itemc                   @   sD   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdS )MetadataItemZDMD_CREATIONFIELDDATATYPESZDMD_CREATIONFIELDDATASUBTYPESZDMD_CREATIONOPTIONLISTZDS_LAYER_CREATIONOPTIONLISTZDMD_OPENOPTIONLISTZDMD_EXTENSIONSZDMD_EXTENSIONZDCAP_VIRTUALIOZDCAP_NOTNULL_FIELDSZDCAP_NOTNULL_GEOMFIELDSZDCAP_UNIQUE_FIELDSZDCAP_DEFAULT_FIELDSZ	DCAP_OPENZDCAP_CREATEN)__name__
__module____qualname__CREATION_FIELD_DATA_TYPESCREATION_FIELD_DATA_SUB_TYPESCREATION_OPTION_LISTLAYER_CREATION_OPTION_LISTDATASET_OPEN_OPTIONS
EXTENSIONS	EXTENSION
VIRTUAL_IOZNOT_NULL_FIELDSZNOT_NULL_GEOMETRY_FIELDSZUNIQUE_FIELDSZDEFAULT_FIELDSZOPENZCREATE r   r   F/var/www/html/django/DPS/env/lib/python3.9/site-packages/fiona/meta.pyr   
   s   r   c                 C   s   i }t | dkrt| }|dD ]h}|jd }i }|dd |j D  g }|dD ]}||j q^t |dkr||d< |||< q$|S )zConvert metadata xml to dictr   Optionnamec                 s   s"   | ]\}}|d ks||fV  qdS )r   Nr   ).0kvr   r   r   	<genexpr>-       z!_parse_options.<locals>.<genexpr>Valuevalues)	lenETZ
fromstringiterattribupdateitemsappendtext)xmloptionsrootoptionoption_nameoptr   valuer   r   r   _parse_options#   s    


r*   z2.0c                 C   s0   t | tj}|du ri S t|dkr(i S t|S )z Returns dataset creation options for driver

    Parameters
    ----------
    driver : str

    Returns
    -------
    dict
        Dataset creation options

    Nr   )r   r   r
   r   r*   driverr#   r   r   r   dataset_creation_options:   s    r-   c                 C   s0   t | tj}|du ri S t|dkr(i S t|S )z Returns layer creation options for driver

    Parameters
    ----------
    driver : str

    Returns
    -------
    dict
        Layer creation options

    Nr   )r   r   r   r   r*   r+   r   r   r   layer_creation_optionsT   s    r.   c                 C   s0   t | tj}|du ri S t|dkr(i S t|S )z Returns dataset open options for driver

    Parameters
    ----------
    driver : str

    Returns
    -------
    dict
        Dataset open options

    Nr   )r   r   r   r   r*   r+   r   r   r   dataset_open_optionsm   s    r/   c                 C   s2  dt | fdt| fdt| ffD ]\}}t| d t|dkrPtd n|D ]}td| d d|| v rtd	j|| d d
 d|| v rtdj|| d d d|| v rt|| d dkrtdjd|| d d dD ].\}}||| v rtdj||| | d qqTtd q"dS )z Print driver options for dataset open, dataset creation, and layer creation.

    Parameters
    ----------
    driver : str

    zDataset Open OptionszDataset Creation OptionszLayer Creation Options:r   z	No options available.	descriptionz		Description: {description})r2   typez		Type: {type})r3   r   z		Accepted values: {values},)r   ))zDefault valuedefault)ZRequiredrequired)ZAliasZaliasOf)ZMinmin)ZMaxmax)zMax sizemaxsize)ZScopescope)z Alternative configuration optionZalt_config_optionz		{attr_text}: {attribute})	attr_text	attribute N)r/   r-   r.   printr   formatjoin)r,   Zoption_typer$   r'   r;   r<   r   r   r   print_driver_options   s*    




 
rA   c                 C   s,   t | tj}|du rdS dd |dD S )z Returns file extensions supported by driver

    Parameters
    ----------
    driver : str

    Returns
    -------
    list
        List with file extensions or None if not specified by driver

    Nc                 S   s   g | ]}t |d kr|qS r   r   )r   extr   r   r   
<listcomp>   r   zextensions.<locals>.<listcomp> )r   r   r   split)r,   extsr   r   r   
extensions   s    rI   c                 C   s   t | tjS )z Returns file extension of driver

    Parameters
    ----------
    driver : str

    Returns
    -------
    str
        File extensions or None if not specified by driver

    )r   r   r   )r,   r   r   r   	extension   s    rJ   c                 C   s    t | tj}|duo| dkS )z Returns True if driver supports GDAL's VSI*L API

    Parameters
    ----------
    driver : str

    Returns
    -------
    bool

    NYES)r   r   r   upper)r,   Z
virutal_ior   r   r   supports_vsi   s    rM   c                 C   s,   t | tj}|du rdS dd |dD S )z Returns supported field types

    Parameters
    ----------
    driver : str

    Returns
    -------
    list
        List with supported field types or None if not specified by driver

    Nc                 S   s   g | ]}t |d kr|qS rB   rC   r   Z
field_typer   r   r   rE      r   z)supported_field_types.<locals>.<listcomp>rF   )r   r   r   rG   r,   Zfield_types_strr   r   r   supported_field_types   s    rP   z2.3c                 C   s,   t | tj}|du rdS dd |dD S )z Returns supported sub field types

    Parameters
    ----------
    driver : str

    Returns
    -------
    list
        List with supported field types or None if not specified by driver

    Nc                 S   s   g | ]}t |d kr|qS rB   rC   rN   r   r   r   rE     r   z-supported_sub_field_types.<locals>.<listcomp>rF   )r   r   r	   rG   rO   r   r   r   supported_sub_field_types   s    rQ   )loggingZxml.etree.ElementTreeetreeZElementTreer   Z	fiona.envr   Zfiona.ogrextr   	getLoggerr   logr   r*   r-   r.   r/   rA   rI   rJ   rM   rP   rQ   r   r   r   r   <module>   s.   




'


