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mZmZmZmZmZ dZG dd dZe Zed	Zeeef Zd
ddddZdS )z9 Provides helper function for dealing with dataclasses.

    )annotationsN)	dataclassfieldfieldsis_dataclass)AnyIterableTupleTypeVarUnion)NotRequiredUnspecifiedr   entriesr   r   c                   @  s   e Zd ZddddZdS )_UnspecifiedTypestr)returnc                 C  s   dS )Nr    )selfr   r   :/tmp/pip-unpacked-wheel-f5fndrjf/bokeh/util/dataclasses.py__repr__<   s    z_UnspecifiedType.__repr__N)__name__
__module____qualname__r   r   r   r   r   r   ;   s   r   _Tr   zIterable[Tuple[str, Any]])objr   c                 c  sX   t | rBt| tsBt| D ]$}t| |j}|tk	r|j|fV  qntdt|  dS )z4 Iterate over a dataclass' fields and their values. zexpected a dataclass, got N)r   
isinstancetyper   getattrnamer   	TypeError)r   fvaluer   r   r   r   D   s    r   )__doc__
__future__r   logging	getLoggerr   logZdataclassesr   r   r   r   typingr   r   r	   r
   r   __all__r   r   r   r   r   r   r   r   r   <module>   s   
