U
    /e                     @  s   d Z ddlmZ ddlZeeZddlmZm	Z	m
Z
mZ ddlZddlmZ dZeeef Ze	eee
e e
e
e  eje f f Zdddd	d	d
dddZdS )z. Provide tools for executing Selenium tests.

    )annotationsN)AnyDictSequenceUnion)cds_data_almost_equal&.>        Datafloatbool)data1data2rtolatolreturnc           	      C  s@  t |  t | krdS |  D ]}| | }|| }t|t|krP dS t||D ]\}}t|ttfrt|ttfrt||||s  dS qZt|t	tj
fr(t|t	tj
fr(t|t| }}|jjdkr|jjdkrt||||  r&  dS n||k r8  dS qZ||krZ  dS qZq$dS )zmCompares data dictionaries containing floats, lists and arrays
    Also supports nested lists and arrays
    FZiufcmMT)sortedkeyslenzip
isinstancer   intnpiscloselistZndarrayZasarrayZdtypekindany)	r   r   r   r   cZcd1Zcd2Zv1Zv2 r   ?/tmp/pip-unpacked-wheel-f5fndrjf/bokeh/_testing/util/compare.pyr   8   s*    
$

r   )r   r	   )__doc__
__future__r   logging	getLogger__name__logtypingr   r   r   r   Znumpyr   Znumpy.typingZnpt__all__r   r   ZNumstrZNDArrayr
   r   r   r   r   r   <module>   s"   

