
    -e                        d dl mZ d dlZ ej        e          Zd dlZddlm	Z	m
Z
 ddlmZmZ ddlmZ dZg dZd	 Zd
 Zd Zd Zd Zd Zd ZeeedZdS )    )annotationsN   )fieldvalue)Legend
LegendItem)	nice_join)pop_legend_kwargupdate_legend)legendlegend_labellegend_fieldlegend_groupc           	           fdt           D             }t          |          dk    rFt          dt          t                      dt          |                                                     |S )Nc                D    i | ]}|v |                     |          S  )pop).0attrkwargss     7lib/python3.11/site-packages/bokeh/plotting/_legends.py
<dictcomp>z$pop_legend_kwarg.<locals>.<dictcomp>0   s,    OOOdFJJt$$       zOnly one of z may be provided, got: )LEGEND_ARGSlen
ValueErrorr	   keys)r   results   ` r   r
   r
   /   sm    OOOOOOOF
6{{Qq	+(>(>qqW`agalalananWoWoqqrrrMr   c                    t          |           }t          t          |                                                    \  }}t	          |         |||           d S N)_get_or_create_legendnextiteritems_LEGEND_KWARG_HANDLERS)plotlegend_kwargglyph_rendererr   kwargr   s         r   r   r   5   sQ    "4((F\//112233LE55!%@@@@@r   c                8    |j         D ]}|j        | k    r|c S d S r!   )r%   label)r,   r   items      r   _find_legend_itemr.   ?   s3      :KKK 4r   c                   | j         | j        z   | j        z   | j        z   | j        z   }d |D             }|s%t                      }|                     |           |S t          |          dk    r|d         S t          d| z            )Nc                <    g | ]}t          |t                    |S r   )
isinstancer   )r   objs     r   
<listcomp>z)_get_or_create_legend.<locals>.<listcomp>K   s'    @@@s
3(?(?@s@@@r   r   r   z`Plot %s configured with more than one legend renderer, cannot use legend_* convenience arguments)	abovebelowleftrightcenterr   
add_layoutr   RuntimeError)r'   panelslegendsr   s       r   r"   r"   E   s    
 Z$*$ty04:=KF@@f@@@G 
7||qqz
y  }A  A  B  B  Br   c                    t          | t                    st          d          t          |           } t	          | |          }|r|j                            |           d S t          | |g          }|j                            |           d S )Nz#legend_field value must be a stringr,   	renderers)	r1   strr   r   r.   r?   appendr   r%   r,   r   r)   r-   new_items        r   _handle_legend_fieldrD   U       eS!! @>???%LLEUF++D &n-----En5EFFFH%%%%%r   c                   t          | t                    st          d          |j        }|t          d          t	          |d          r	| |j        v st          d          |j        |          }t          j        |d          \  }}t          ||          D ]N\  }}t          t          |                    } t          | |g|          }	|j                            |	           Od S )Nz#legend_group value must be a stringzMCannot use 'legend_group' on a glyph without a data source already configuredcolumn_namesz8Column to be grouped does not exist in glyph data sourcer   )return_index)r,   r?   index)r1   r@   r   data_sourcehasattrrG   datanpuniquezipr   r   r%   rA   )
r,   r   r)   sourcecolumnvalsindsvalindrC   s
             r   _handle_legend_grouprV   `   s    eS!! @>???'F~hiiiFN++ U9L0L0LSTTT[F6222JD$dOO & &Sc#hhEn5ESQQQH%%%%& &r   c                    t          | t                    st          d          t          |           } t	          | |          }|r|j                            |           d S t          | |g          }|j                            |           d S )Nz#legend_label value must be a stringr>   )	r1   r@   r   r   r.   r?   rA   r   r%   rB   s        r   _handle_legend_labelrX   q   rE   r   )r   r   r   )
__future__r   logging	getLogger__name__lognumpyrM   core.propertiesr   r   modelsr   r   util.stringsr	   __all__r   r
   r   r.   r"   rD   rV   rX   r&   r   r   r   <module>rc      s(   # " " " " " g!!     + * * * * * * * ' ' ' ' ' ' ' ' $ $ $ $ $ $
 IHH  A A A  B B B 	& 	& 	&& & &"	& 	& 	& *))    r   