
    d                        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          |                                          d         \  }}t          |         |||           d S )Nr   )_get_or_create_legendlistitems_LEGEND_KWARG_HANDLERS)plotlegend_kwargglyph_rendererr   kwargr   s         r   r   r   5   sN    "4((F**,,--a0LE55!%@@@@@r   c                8    |j         D ]}|j        | k    r|c S d S )N)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)	r/   strr   r   r,   r=   appendr   r#   r*   r   r'   r+   new_items        r   _handle_legend_fieldrB   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)r/   r>   r   data_sourcehasattrrE   datanpuniquezipr   r   r#   r?   )
r*   r   r'   sourcecolumnvalsindsvalindrA   s
             r   _handle_legend_grouprT   `   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<   )	r/   r>   r   r   r,   r=   r?   r   r#   r@   s        r   _handle_legend_labelrV   q   rC   r   )r   r   r   )
__future__r   logging	getLogger__name__lognumpyrK   core.propertiesr   r   modelsr   r   util.stringsr	   __all__r   r
   r   r,   r!   rB   rT   rV   r$   r   r   r   <module>ra      s(   # " " " " " g!!     + * * * * * * * ' ' ' ' ' ' ' ' $ $ $ $ $ $
 IHH  A A A  B B B 	& 	& 	&& & &"	& 	& 	& *))    r   