
    e\                     b    d dl Zd dlmZmZmZ ddlmZ ddlm	Z	 ddl
mZ  G d d	e          ZdS )
    N)BBoxTileSourceQUADKEYTileSourceWMTSTileSource   )SkipRendering)_ATTRIBUTIONS   )ElementPlotc                   @     e Zd Zg dZdZd fd	Zd Zd	dZd Z xZ	S )
TilePlot)alpharender_parentslevel	smoothingmin_zoommax_zoomNcombinedc                     t                                          |||          }| j        s/t          d |D                       r|dv rd\  }}d\  }}	||||	f}
|
S |S )Nc              3   H   K   | ]}|d u pt          j        |           V  d S N)npisfinite).0es     >lib/python3.11/site-packages/holoviews/plotting/bokeh/tiles.py	<genexpr>z'TilePlot.get_extents.<locals>.<genexpr>   s6      %W%W!a4i&Er{1~~3E%W%W%W%W%W%W    )r   data)g|Es|EsA)g|Esr   )superget_extentsoverlaidall)selfelementranges
range_typekwargsextentsx0x1y0y1global_extent	__class__s              r   r!   zTilePlot.get_extents   s}    ''%%gvzBB 	!#%W%Ww%W%W%W"W"W 	!222>FB>FBR,M  r   c                 d   t          j        t          t          f          st	          dj        z             j        t          d          t          j        t                    rt          }nfdj        v rt          }nUt          fddD                       rt          }n2t          fddD                       rt          }nt          d          t          j        t                    r]j        
                    d	
          j                            dd          j                            dd          j        j        d}nVdj        i}dD ]}||v r||         ||<   t          j                    D ]%\  }}t          fd|D                       r||d<   &i d |di |i|fS )NzgWMTS element data must be a URL string, dictionary, or xyzservices.TileProvider, bokeh cannot render %rz6Tile source URL may not be None with the bokeh backendz{Q}c              3   *   K   | ]}|j         v V  d S r   r   r   kwr%   s     r   r   z$TilePlot.get_data.<locals>.<genexpr>#   s*      WWw|#WWWWWWr   )z{XMIN}z{XMAX}z{YMIN}z{YMAX}c              3   *   K   | ]}|j         v V  d S r   r2   r3   s     r   r   z$TilePlot.get_data.<locals>.<genexpr>%   s*      DDw|#DDDDDDr   )z{X}z{Y}z{Z}zuTile source URL format not recognized. Must contain {X}/{Y}/{Z}, {XMIN}/{XMAX}/{YMIN}/{YMAX} or {Q} template strings.z@2x)scale_factorr   r   r      )urlr   r   attributionr8   )r   r   c              3   *   K   | ]}|j         v V  d S r   r2   )r   kr%   s     r   r   z$TilePlot.get_data.<locals>.<genexpr>7   s*      66QqGL(666666r   r9   tile_source )
isinstancer   strdictr   
ValueErrorr   r   r#   r   	build_urlgethtml_attributionr   items)	r$   r%   r&   styler<   paramszoomkeyr9   s	    `       r   get_datazTilePlot.get_data   s   ',d44 	6 &(/5 6 6 6 <UVVVd++ 	9(KKgl""+KKWWWW.VWWWWW 	9(KKDDDD.CDDDDD 	9(KK 8 9 9 9 glD)) 	8|--5-AA#L,,Z;;#L,,Z<<&|<	> >FF W\*F0 / /5==#(;F4L$1$7$9$9 8 8 [6666#66666 8,7F=)M;;#8#8#8#895@@r   c                     |d         j         _          j        di fd|                                D               j        di fd|                                D              d S )Nr<   c                 H    i | ]\  }}|                                 v ||S r=   
properties)r   r;   vglyphs      r   
<dictcomp>z*TilePlot._update_glyph.<locals>.<dictcomp>=   s?     7 7 7A5#3#3#5#555 1555r   c                 H    i | ]\  }}|                                 v ||S r=   rM   )r   r;   rO   renderers      r   rQ   z*TilePlot._update_glyph.<locals>.<dictcomp>?   s?     : : :DAq8#6#6#8#888 a888r   r=   )r8   updaterE   )r$   rS   rN   mappingrP   sourcer   s    `  `  r   _update_glyphzTilePlot._update_glyph;   s    M*.	 	8 	8 7 7 7 7)9)9);); 7 7 7 	8 	8 	8 	; 	; : : : :J,<,<,>,> : : : 	; 	; 	; 	; 	;r   c                     |d         }|                     dd          }|                    ||          }|                    dd          |_        ||fS )z/
        Returns a Bokeh glyph object.
        r<   r   rP   )r   r   r	   )popadd_tilerC   r   )r$   plotrU   rN   r<   r   rS   s          r   _init_glyphzTilePlot._init_glyphB   sV     m,w00==E=::#33$$r   )r   )NN)
__name__
__module____qualname__
style_optsselection_displayr!   rJ   rW   r\   __classcell__)r/   s   @r   r   r   	   s        ZZZJ     !A !A !AF; ; ; ;% % % % % % %r   r   )numpyr   bokeh.modelsr   r   r   core.optionsr   element.tilesr   r%   r
   r   r=   r   r   <module>rg      s        J J J J J J J J J J ) ) ) ) ) ) * * * * * *            A% A% A% A% A%{ A% A% A% A% A%r   