a
    ƒ¼Df—  ã                   @   s,   d Z ddlmZ dd„ Zdd„ Zdd„ Zd	S )
z
Datashape validation.
é   )Ú	coretypesc                    s6   t |tjƒr2t |tjƒs2ˆ |‡ fdd„|jD ƒƒS |S )zà
    Map `f` over `t`, calling `f` with type `t` and the map result of the
    mapping `f` over `t` 's parameters.

    Parameters
    ----------
    f : callable
    t : DataShape

    Returns
    -------
    DataShape
    c                    s   g | ]}t ˆ |ƒ‘qS © )Útraverse)Ú.0Úp©Úfr   úl/nfs/NAS7/SABIOD/METHODE/ermites/ermites_venv/lib/python3.9/site-packages/datashader/datashape/validation.pyÚ
<listcomp>   ó    ztraverse.<locals>.<listcomp>)Ú
isinstanceÚTZMonoZUnitÚ
parameters)r   Útr   r   r	   r      s    r   c                 C   s   t t| ƒ dS )a  
    Validate a datashape to see whether it is well-formed.

    Parameters
    ----------
    ds : DataShape

    Examples
    --------
    >>> from datashader.datashape import dshape
    >>> dshape('10 * int32')
    dshape("10 * int32")
    >>> dshape('... * int32')
    dshape("... * int32")
    >>> dshape('... * ... * int32') # doctest: +IGNORE_EXCEPTION_DETAIL
    Traceback (most recent call last):
        ...
    TypeError: Can only use a single wildcard
    >>> dshape('T * ... * X * ... * X') # doctest: +IGNORE_EXCEPTION_DETAIL
    Traceback (most recent call last):
        ...
    TypeError: Can only use a single wildcard
    >>> dshape('T * ...') # doctest: +IGNORE_EXCEPTION_DETAIL
    Traceback (most recent call last):
        ...
    DataShapeSyntaxError: Expected a dtype
    N)r   Ú	_validate)Údsr   r   r	   Úvalidate   s    r   c                 C   sP   t | tjƒrLdd„ | jD ƒ}t|ƒdkr2tdƒ‚nt | jd tjƒrLtdƒ‚d S )Nc                 S   s   g | ]}t |tjƒr|‘qS r   )r   r   ÚEllipsis)r   Úxr   r   r	   r
   =   r   z_validate.<locals>.<listcomp>r   zCan only use a single wildcardéÿÿÿÿz$Measure may not be an Ellipsis (...))r   r   Z	DataShaper   ÚlenÚ	TypeErrorr   )r   ÚparamsZellipsesr   r   r	   r   :   s    
r   N)Ú__doc__Ú r   r   r   r   r   r   r   r   r	   Ú<module>   s   