
    h                     @   d dl Z d dlmZ d dlZd dlZd dlZd dlZ	d dl
mZ d dlZ ej                  d      Z ej                  d      Z ej                  d      Z ej                  d      Z ej                  d      Zd d	lmZ d d
lmZmZ  eej.                         ed      kD  Z eej.                         ed      kD  Z eej.                         ed      k\  Z ej6                  d      d        Zej:                  j=                  d       G d d             Zy)    N)Version)
HAS_PYPROJfoliumbranca
matplotlibmapclassifygeodatasets)StepColormap)cmcolorsz0.4.2z0.14.0z0.19.0class)scopec                 (   t        j                  |       |j                  _        t        j                  |      |j                  _        t        j                  |      |j                  _        t        j                  t        j                  d            |j                  _        t        t        |j                  j                              |j                  j                  d<   |j                  j                  j                         |j                  _        t        j                  j                  d       t        j                   |j                  j                  j"                  t        j                  j%                  |j                  j                  j&                  d      df<   t        j                   |j                  j                  j"                  t        j                  j%                  |j                  j                  j&                  d      df<   y )Nzgeoda.chicago_commpoprange*   (   	continentpop_est)gpd	read_fileclsnybbworldcitiesr	   get_pathchicagor   lencopymissingnprandomseednanlocchoiceindex)nybb_filenamenaturalearth_lowresnaturalearth_citiesrequests       O/var/www/html/immo/lib/python3.12/site-packages/geopandas/tests/test_explore.py_setup_class_test_explorer,      sU    }}]3GKK&9:GKK':;GKK--(<(<=T(UVGKK!&s7;;+<+<'=!>GKKg!++++002GKKIINN2 	 KK
		,,22B7D
 	 KK
		,,22B7B    r,   c                      e Zd Zd Zd Zd Zej                  j                  e	 d      d        Z
ej                  j                  e	 d      d        Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej                  j                  e  d      d        Z!ej                  j                  e	 d      d        Z"ej                  j                  e	 d      d        Z#ej                  j                  e	 d      d         Z$ej                  j                  e	 d      d!        Z%ej                  j                  e	 d      d"        Z&d# Z'd$ Z(d% Z)d& Z*d' Z+d( Z,d) Z-d* Z.d+ Z/d, Z0d- Z1y.)/TestExplorec                 x    |j                   j                         }dj                  |j                               }|S )N )_parentrenderjoinsplit)selfmoutout_strs       r+   _fetch_map_stringzTestExplore._fetch_map_string1   s-    ii ''#))+&r-   c                     | j                   j                          | j                  j                          | j                  j                          | j                  j                  j                          y)zMake sure default passN)r   explorer   r   geometryr6   s    r+   test_simple_passzTestExplore.test_simple_pass6   sH    		



##%r-   c                 <    | j                   j                  d       y)z!Make sure default choropleth passr   columnN)r   r<   r>   s    r+   test_choropleth_passz TestExplore.test_choropleth_pass=   s    

),r-   zrequires pyproj)reasonc                    | j                   j                         }|j                  t        j                  dd      t        j                  dd      gk(  sJ |j
                  d   dk(  sJ t        s|j
                  d   du sJ |j
                  d	   du sJ |j                  d
k(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  j                  du sJ |j                  j                  du sJ d|j                         d   j!                         v sJ y)zCheck default map settingsgpS
ck	ư>relg       =zoom
   zoomControlTzoom_controlrelative)g      Y@%)r   rN   FopenstreetmapchildrenN)r   r<   locationpytestapproxoptionsFOLIUM_GE_019positionheightwidthlefttopglobal_switchesno_touch
disable_3dto_dictkeysr6   r7   s     r+   test_map_settings_defaultz%TestExplore.test_map_settings_defaultA   sI    JJ zzMM-48MM/T:
 
 	
 
 yy B&&&99]+t33399^,444zzZ'''xx<'''ww,&&&vv!!!uu     ))U222  ++u444!))+j"9">">"@@@@r-   c                    | j                   j                  ddd      }|j                  t        j                  dd      t        j                  dd      gk(  sJ |j
                  d   d	k(  sJ t        s|j
                  d
   du sJ |j
                  d   du sJ |j                  dk(  sJ |j                  dk(  sJ | j                   j                  ddddd      }| j                  |      }d}||v sJ d|v sJ | j                   j                  d      }|j                  ddgk(  sJ |j
                  d   d	k(  sJ | j                   j                  d      }|j                  t        j                  dd      t        j                  dd      gk(  sJ |j
                  d   dk(  sJ | j                   j                  dd      }|j                  ddgk(  sJ |j
                  d   dk(  sJ y)zCheck custom map settingsF   )rL   rX   rW   gnXZD@rF   rG   gSI~RrI   rJ   rK   rL   )g      i@pxz2https://mt1.google.com/vt/lyrs=m&x={x}&y={y}&z={z}Google)rL   rX   rW   tilesattrzC"https://mt1.google.com/vt/lyrs=m\u0026x={x}\u0026y={y}\u0026z={z}"z"attribution":"Google")r      )rQ   r   rh      )
zoom_start)rQ   rj   N)
r   r<   rQ   rR   rS   rT   rU   rW   rX   r:   )r6   r7   r9   ss       r+   test_map_settings_customz$TestExplore.test_map_settings_customW   s    II  

 zzMM+6MM+6
 
 	
 
 yy B&&&99]+u44499^,555xx=(((ww-''' IIF  
 ((+TG||'7222IIw/zzb!W$$$yy B&&&II+zzMM+6MM+6
 
 	
 
 yy A%%%IIw1=zzb!W$$$yy A%%%r-   c                    | j                   j                  d      }| j                  |      }d|v sJ g d}| j                   j                  |      }| j                  |      }|D ]  }d| d|v rJ  | j                   j                         }||d<   |j                  d      }| j                  |      }|D ]  }d| d|v rJ  | j                   j                  j                  d      }| j                  |      }d|v sJ y)	zCheck color settingsred)color"fillColor":"red")z#333333z#367324z#95824fz#fcaa00z#ffcc33"fillColor":""r   N)r   r<   r:   r   boundary)	r6   r7   r9   r   m2cdfm3m4s	            r+   test_simple_colorzTestExplore.test_simple_color   s,    IIE*((+"g--- IYYV,((, 	3A"1#Q'7222	3 YY^^8ZZhZ'((, 	3A"1#Q'7222	3 YY''e'4((,"g---r-   c                 2   | j                   j                  d      }| j                  |      }d|v sJ d|v sJ d|v sJ d|v sJ d|v sJ | j                   j                  dd	      }| j                  |      }d
|v sJ d|v sJ d|v sJ d|v sJ d|v sJ y)zCheck choropleth colors
Shape_LengrA   color":"#440154"color":"#fde725"zcolor":"#50c46a"zcolor":"#481467"zcolor":"#3d4e8a"PuRdrB   cmapzcolor":"#f7f4f9"zcolor":"#67001f"zcolor":"#d31760"zcolor":"#f0ecf5"zcolor":"#d6bedc"Nr   r<   r:   r6   r7   r9   s      r+   test_choropleth_linearz"TestExplore.test_choropleth_linear   s     II\2((+!W,,,!W,,,!W,,,!W,,,!W,,, II\?((+!W,,,!W,,,!W,,,!W,,,!W,,,r-   c                 L   | j                   j                  dd      }| j                  |      }d|v sJ d|v sJ d|v sJ d|v sJ d|v sJ | j                  j                  d	d
      }| j                  |      }d|v sJ d|v sJ d|v sJ d|v sJ d|v sJ | j                  j                  d	dd      }| j                  |      }d|v sJ d|v sJ d|v sJ | j                  j                  dddg di      }| j                  |      }d|v sJ d|v sJ d|v sJ d|v sJ y)zMapclassify binsr{   	quantiles)rB   schemezcolor":"#21918c"zcolor":"#3b528b"zcolor":"#5ec962"r}   r|   r   headtailbreaksz"fillColor":"#3b528b"z"fillColor":"#21918c"z"fillColor":"#5ec962"z"fillColor":"#fde725"z"fillColor":"#440154"naturalbreaks   )rB   r   kPOP2010UserDefinedbins)ia  iP  i$ i )rB   r   classification_kwdsz"fillColor":"#35b779"z"fillColor":"#31688e"N)r   r<   r:   r   r   r   s      r+   test_choropleth_mapclassifyz'TestExplore.test_choropleth_mapclassify   s    II\+F((+!W,,,!W,,,!W,,,!W,,,!W,,, JJi8HI((+&'111&'111&'111&'111&'111 JJi1M((+&'111&'111&'111 LL   !')F G ! 

 ((+&'111&'111&'111&'111r-   c           	         | j                   j                  d      }| j                  |      }d|v sJ d|v sJ d|v sJ d|v sJ d|v sJ d|v sJ d	|v sJ d
|v sJ | j                  j                  dd      }| j                  |      }d|v sJ d|v sJ d|v sJ d|v sJ d|v sJ | j                   j	                         }t        j                  |d         |d<   |j                  d      }| j                  |      }t        j                  t        j                  dt        j                  t        d                  D ]  }d| d|v rJ  | j                  j                  dd      }| j                  |      }d|v sJ d|v sJ d|v sJ d|v sJ d |v sJ g d!}| j                  j                  d|      }| j                  |      }|D ]  }d| d|v rJ  d"d#g}| j                  j                  d|      }| j                  |      }|D ]  }d| d|v rJ  t        j                  t         d$%      5  | j                  j                  dd&       d'd'd'       y'# 1 sw Y   y'xY w)(zCategorical mapsr   rA   z%color":"#9467bd","continent":"Europe"z+color":"#c49c94","continent":"NorthAmerica"z%color":"#1f77b4","continent":"Africa"z#color":"#98df8a","continent":"Asia"z)color":"#ff7f0e","continent":"Antarctica"z+color":"#9edae5","continent":"SouthAmerica"z&color":"#7f7f7f","continent":"Oceania"z3color":"#dbdb8d","continent":"Sevenseas(openocean)"BoroCodeT)rB   categoricalzcolor":"#9edae5"zcolor":"#c7c7c7"zcolor":"#8c564b"zcolor":"#1f77b4"zcolor":"#98df8a"namer         rq   rr   BoroNameSet1r   zcolor":"#999999"zcolor":"#a65628"zcolor":"#4daf4a"zcolor":"#e41a1c"zcolor":"#ff7f00")#333432#3b6e8cz#bc5b4fz#8fa37ez#efc758r   r   z'cmap' is invalid.matchnonsenseN)r   r<   r:   r   r   pdCategoricalr    apply_along_axisr   to_hexr   tab20r   rR   raises
ValueError)r6   r7   r9   rv   ru   r   s         r+   test_categoricalzTestExplore.test_categorical   s    JJk2((+6'AAA<GGG6'AAA4???:gEEE<GGG77BBBDOOO IIZTB((+!W,,,!W,,,!W,,,!W,,,!W,,, ZZ__NN2f:6=JJmJ,((+$$V]]Arxxb	7JK 	3A"1#Q'7222	3 IIZf=((+!W,,,!W,,,!W,,,!W,,,!W,,, GIIZd;((+ 	3A"1#Q'7222	3 9%IIZd;((+ 	3A"1#Q'7222	3 ]]:-AB 	BIIZjA	B 	B 	Bs   ?I&&I/c                    | j                   ddg   j                  dg d      }| j                  |      }d|v sJ d|v sJ d|v sJ d|v sJ d	|v sJ | j                   j                         }t	        j
                  |d         |d
<   t        j                  t        d      5  |j                  d
ddg       d d d        y # 1 sw Y   y xY w)Nr   r=   )BrooklynStaten IslandQueensBronx	Manhattan)rB   
categoriesz""Bronx","__folium_color":"#c7c7c7"z&"Manhattan","__folium_color":"#9edae5"z%"Brooklyn","__folium_color":"#1f77b4"z)"StatenIsland","__folium_color":"#98df8a"z#"Queens","__folium_color":"#8c564b"r   zCannot specify 'categories'r   r   r   )r   )	r   r<   r:   r   r   r   rR   r   r   )r6   r7   r9   rv   s       r+   test_categorieszTestExplore.test_categories  s    IIz:./77T 8 
 ((+3w>>>77BBB6'AAA:gEEE4???YY^^NN2j>:=]]:-JK 	PJJ}*o1NJO	P 	P 	Ps   $CCc                 2   | j                   j                         }g d|d<   t        j                  g d      |d<   |j	                  d      }|j	                  d      }| j                  |      }d|v sJ d|v sJ | j                  |      }d|v sJ d|v sJ y )N)TFTFTboolbool_extensionz&"__folium_color":"#9edae5","bool":truez'"__folium_color":"#1f77b4","bool":falser   r   r   arrayr<   r:   )r6   rv   m1rt   out1_strout2_strs         r+   	test_boolzTestExplore.test_bool(  s    YY^^56
!xx(HIZZZZ()))"-78CCC8HDDD))"-78CCC8HDDDr-   c           	         | j                   j                         j                  d      }t        j                  ddddddd      }t        j                  ddddddd      }||g|d<   |j                  d      }| j                  |      }d|v sJ d	|v sJ |j                  d      }|j                         }| j                  |      }d
|v sJ d|v sJ y )N   i  r      r   i  datetimez:"__folium_color":"#9edae5","datetime":"2025-01-0101:22:00"z:"__folium_color":"#1f77b4","datetime":"2022-01-0101:22:00"z"datetime":"2025-01-0101:22:00"z"datetime":"2022-01-0101:22:00")r   r   headr   	Timestampr<   r:   	set_index)	r6   rv   date1date2r   r   df2rt   r   s	            r+   test_datetimezTestExplore.test_datetime7  s    YY^^""1%T1aB15T1aB15:ZZ
#))"-KxWWWKxWWWll:&[[]))"-0H<<<0H<<<r-   c                    | j                   j                         j                  d      }d}t        j                  |      }d}t        j                  |      }||g|d<   |j                  d      }| j                  |      }d| d|v sJ d| d|v sJ |j                  d      }|j                         }	| j                  |	      }
d| d|
v sJ d| d|
v sJ y )	Nr   z$12345678-1234-5678-1234-567812345678z$12345678-1234-5678-1234-567812345679objectz%"__folium_color":"#9edae5","object":"rr   z%"__folium_color":"#1f77b4","object":"z
"object":")r   r   r   uuidUUIDr<   r:   r   )r6   rv   u1uuid1u2uuid2r   r   r   rt   r   s              r+   test_non_json_serialisablez&TestExplore.test_non_json_serialisableH  s    YY^^""1%3		"3		"u~8ZZ!))"-6rd!<HHH6rd!<HHHll8$[[]))"-B4q!X---B4q!X---r-   c                     | j                   j                         }t        j                  g dd      |d<   |j	                  d      }| j                  |      }d|v sJ y )N)r   r   r      rh   string)dtypez'"__folium_color":"#9edae5","string":"5"r   )r6   rv   r7   r9   s       r+   test_stringzTestExplore.test_string[  sR    YY^^xxx@8JJx ((+8GCCCr-   c                 .   t        j                  | j                  d         }| j                  j                  d      }| j                  j                  |      }| j                  j                  | j                  d         }|j                  |j                  cxk(  r|j                  k(  sJ  J | j                  j                  |dd      }| j                  |      }d|v sJ d|v sJ | j                  j                  | j                  d   dd      }| j                  |      }d|v sJ d|v sJ t        j                  t        d      5  | j                  j                  t        j                  g d	             d
d
d
       y
# 1 sw Y   y
xY w)z
        Check that the dataframe plot method returns same values with an
        input string (column in df), pd.Series, or np.array
        r   rA   TrB   tooltippopupCfields=["pop_est","continent","name","iso_a3","gdp_md_est","range"]Daliases=["pop_est","continent","name","iso_a3","gdp_md_est","range"]zdifferent number of rowsr   )r   r   r   N)	r    r   r   r<   rQ   r:   rR   r   r   )	r6   column_arrayr   rt   rw   	m1_fieldsout1_fields_str	m2_fieldsout2_fields_strs	            r+   test_column_valueszTestExplore.test_column_valuesb  s   
 xx

9 56ZZy1ZZ|4ZZtzz)'<={{bkk8R[[88888JJ&&lDPT&U	00;Q	
 S	
 JJ&&::i($d ' 
	 00;Q	
 S	

 ]]:-GH 	;JJbhhy&9:	; 	; 	;s   2FFc                     | j                   j                         }d|j                  j                  _        |j                         }d|j                         d   j                         vsJ y)zNaive geometry get no tilesNrO   rP   )r   r   r=   r   crsr<   r^   r_   r6   rv   r7   s      r+   test_no_crszTestExplore.test_no_crs  sQ    ZZ__ $JJLaiik*&=&B&B&DDDDr-   c           
         | j                   j                  dddd      }| j                  |      }d|v sJ | j                   j                  ddd	i
      }d| j                  |      v sJ | j                   j                  dd i      }t        d |j                  j                         j                  d      D cg c])  }d|v r#d|v rdj                  |j                               + c}D              sJ t        j                  t        d      5  | j                   j                  ddi       ddd       yc c}w # 1 sw Y   yxY w)zStyle keywordsg?g      ?orange)fillOpacityweight	fillColor)
style_kwdsz3"fillColor":"orange","fillOpacity":0.1,"weight":0.5r   ro   black)rB   r   "color":"black"style_functionc                 D    | d   d   dk  rdnd| d   d   dk  rddS ddS )	N
properties
gdp_md_esti@B rn   greenr   white)r   ro    )xs    r+   <lambda>z-TestExplore.test_style_kwds.<locals>.<lambda>  sA    !"<!>!FG $%\?<#@5#H- 
 OV- r-   c              3   H   K   | ]  }d |v xr d|v xs
 d|v xr d|v   yw)z"fillColor":"green"z"color":"white"rp   r   Nr   ).0ts     r+   	<genexpr>z.TestExplore.test_style_kwds.<locals>.<genexpr>  sI      
  #a'B,=,B E#q(C->!-CE
s    "
returnr1   z%'style_function' has to be a callabler   znot callableN)r   r<   r:   allr2   r3   r5   r4   rR   r   r   )r6   r7   r9   lines       r+   test_style_kwdszTestExplore.test_style_kwds  s_   JJ'*cQ  
 ((+DOOOJJiWg<NO D$:$:1$==== JJ  #	  
  

 II,,.44T:t#4 

%
 
 	
 
 ]]:-TU 	NJJ+;^*LM	N 	N	N 	Ns   =.D<
EE
c                     | j                   j                         }dt        |j                               v sJ dt        |j                               vsJ | j                   j                  dd      }dt        |j                               v sJ dt        |j                               v sJ | j	                  |      }d|v sJ d|v sJ | j                   j                  ddd      }dt        |j                               v sJ dt        |j                               v sJ | j	                  |      }d|v sJ d|v sJ | j                   j                  dd	      }| j	                  |      }d
|v sJ d|v sJ d|v sJ d|v sJ | j                   j                  ddgd	dg      }| j	                  |      }d|v sJ d|v sJ d|v sJ d|v sJ | j                   j                  dd      }| j	                  |      }d|v sJ d|v sJ | j                   j                  ddg ddd      }| j	                  |      }d|v sJ d|v sJ d|v sJ | j                   j                  dddg di      }| j	                  |      }d|v sJ d|v sJ d|v sJ | j                   j                  ddddiddi      }| j	                  |      }d|vsJ | j
                  j                  d       }|j                         }| j	                  |      }d |v sJ y!)"zTest tooltipGeoJsonTooltipGeoJsonPopupT)r   r   r   r   r   r   iso_a3zfields=["pop_est"]zaliases=["pop_est"]zfields=["iso_a3"]zaliases=["iso_a3"]r   r   zfields=["pop_est","continent"]zaliases=["pop_est","continent"]zfields=["iso_a3","gdp_md_est"zaliases=["iso_a3","gdp_md_est"]r   F)r   r   r   r   r   rh   )aliasessticky)r   r   tooltip_kwdszaliases=[0,1,2,3,4,5]z"sticky":falser   )r   r   
popup_kwdsz<th>${aliases[i]labels)r   r   r   r   r   N)r   r<   strr^   r:   r   r   )r6   r7   r9   gdfs       r+   test_tooltipzTestExplore.test_tooltip  s    JJ 3qyy{#3333S%5555 JJt483qyy{#3333QYY[!1111((+Q	
 S	

 JJiTJ3qyy{#3333QYY[!1111((+Q	
 S	

 JJyA((+#w...$///"g---#w... JJ,X|4L  
 ((+/7:::0G;;;.'9990G;;; JJq2((+/7:::0G;;; JJ%75I  

 ((+Q	
 ''1117*** JJ!#56  

 ((+Q	
 ''111!W,,, JJ"E* %(	  
 ((+!000 ii!!*-KKM((+W$$$r-   c                     | j                   j                         }d|d<   |j                         }| j                  |      }d|v sJ d|v sJ y )Nz({{{what a mess}}} they are so different.r   z{{{z}}})r   r   r<   r:   )r6   r  r7   r9   s       r+   test_escape_special_charactersz*TestExplore.test_escape_special_characters  sR    jjooDFKKM((+G###G###r-   c                     | j                   j                         }g d}| j                  |      }|D ]  }||v rJ  | j                   j                  ddd      }g d}| j                  |      }|D ]  }||v rJ  y )N)z
"radius":2z"fill":trueCircleMarker(latlng,opts)rh   F)radiusfill)marker_kwds)z
"radius":5z"fill":falser  )r   r<   r:   )r6   r7   stringsr9   rk   s        r+   test_default_markersz TestExplore.test_default_markers'  s    KK!L((+ 	 A<<	  KKq%,HIM((+ 	 A<<	 r-   c           	         | j                   j                  ddt        j                  d      i      }d| j	                  |      v sJ | j                   j                  ddd	i      }d
| j	                  |      v sJ | j                   j                  t        j                  ddddd            }d| j	                  |      v sJ | j                   j                  dddi      }d| j	                  |      v sJ t        j                  t        d      5  | j                   j                  d       d d d        y # 1 sw Y   y xY w)Nmarkericonstar)r  )marker_typer  z,"icon":"star",circle
fill_colorrn   z,"fillColor":"red",r   r   g?r   r   )r	  r  fill_opacityro   r   )r  z,"color":"black",circle_markerr	  rJ   z,"radius":10,z:Only 'marker', 'circle', and 'circle_marker' are supportedr   dummy)	r   r<   r   Iconr:   CirclerR   r   r   r`   s     r+   test_custom_markerszTestExplore.test_custom_markers5  sR   KK &!9:   
 %(>(>q(AAAA KKH<QVBWX(D,B,B1,EEEE KKXCwWX &    

 '$*@*@*CCCC KKO(TVX"d&<&<Q&???? ]]N
 	5 KKG4		5 	5 	5s   D;;Ec                 T   | j                   j                         }t        t        |            |d<   |j	                  ddd      }| j                  |      }d|v sJ d|v sJ d|v sJ | j                  j                         }|d   d	z  |d
<   ||d
   dk\     j	                  d
d      }| j                  |      }t        rd|v sJ d|v sJ d|v sJ d|v sJ d|v sJ d|v sJ |d   dz  |d<   ||d   dk     j	                  dd      }| j                  |      }d|v sJ d|v sJ y )Nr   ii  vminvmaxz8case"176":return{"color":"#3b528b","fillColor":"#3b528b"z8case"119":return{"color":"#414287","fillColor":"#414287"z6case"3":return{"color":"#482173","fillColor":"#482173"r   g      $@values   r   )r  z6case"0":return{"color":"#fde725","fillColor":"#fde725"z6case"1":return{"color":"#7ad151","fillColor":"#7ad151"z6default:return{"color":"#22a884","fillColor":"#22a884"z6case"2":return{"color":"#22a884","fillColor":"#22a884"z6default:return{"color":"#fde725","fillColor":"#fde725"g      $values_negative)r  z6case"1":return{"color":"#414487","fillColor":"#414487"z6case"2":return{"color":"#2a788e","fillColor":"#2a788e")r   r   r   r   r<   r:   r   FOLIUM_G_014)r6   rv   r7   r9   r   s        r+   test_vmin_vmaxzTestExplore.test_vmin_vmaxT  s   ZZ__CGn7JJwTJ5((+IWTTTIWTTTG7RRR iinnJ$.HH#$,,XA,>((+KwVVVKwVVVKwVVVKwVVVKwVVVKwVVV!$Z5!8%&",-556Ga5P((+G7RRRG7RRRr-   c                    | j                   j                  d      }d| j                  |      v sJ | j                   j                  d      }d| j                  |      v sJ | j                   j                  dddi      }d| j                  |      v sJ | j                   j                  dddi      }d| j                  |      v sJ y )Nr   z"fillColor":nullr   ro   rn   )missing_kwdsrp   )r   r<   r:   r`   s     r+   test_missing_valszTestExplore.test_missing_valsq  s    LL  -!T%;%;A%>>>>LL  +!T%;%;A%>>>>LL  '59I J"d&<&<Q&????LL  GU;K L"d&<&<Q&????r-   c                 .   | j                   j                  dd      }| j                  |      }d|v sJ d|v sJ d|v sJ d|v sJ d|v sJ d	|v sJ d
|v sJ d|v sJ | j                  j                  ddddi      }| j                  |      }d|v sJ y )Nr   Tlegendz#1f77b4'></span>Africaz#ff7f0e'></span>Antarcticaz#98df8a'></span>Asiaz#9467bd'></span>Europez#c49c94'></span>NorthAmericaz#7f7f7f'></span>Oceaniaz$#dbdb8d'></span>Sevenseas(openocean)z#9edae5'></span>SouthAmericaro   rn   r)  r%  red'></span>NaN)r   r<   r:   r   r   s      r+   test_categorical_legendz#TestExplore.test_categorical_legend~  s    JJ{48((+'7222+w666%000'7222-888(G3335@@@-888LL  GU3C ! 
 ((+ G+++r-   c                    d }| j                   j                  dd      }| j                  |      }d|v sJ  |d|      sJ | j                   j                  ddddi	      }| j                  |      }d|v sJ  |d
|      sJ | j                  j                  ddddi      }| j                  |      }d|v sJ | j                   j                  ddddid      }| j                  |      }|j	                  d      dk(  sJ |j	                  d      dk(  sJ |j	                  d      dk(  sJ |j	                  d      dk(  sJ |j	                  d      dk(  sJ | j                   j                  ddd      }| j                  |      }|j	                  d      dk(  sJ |j	                  d      dk(  sJ |j	                  d      dk(  sJ |j	                  d      dk(  sJ |j	                  d      dk(  sJ | j                   j                  ddd !      }| j                  |      }|j	                  d"      d#k(  sJ |j	                  d$      d%k(  sJ |j	                  d&      d#k(  sJ |j	                  d'      d%k(  sJ |j	                  d(      d%k(  sJ |j	                  d)      d#k(  sJ |j	                  d*      d%k(  sJ |j	                  d+      d#k(  sJ y ),Nc                 6    | |v xs | j                  dd      |v S )N'rr   )replace)findrk   s     r+   	quoted_inz,TestExplore.test_colorbar.<locals>.quoted_in  s!    19;S# 6! ;;r-   r   Tr(  zattr("id",'legend')ztext('range')caption
my_caption)r)  legend_kwdsztext('my_caption')r   ro   rn   r*  r+  scaleFHeadtailbreaks)r)  r5  r   z	#440154ffd   z	#3b528bffz	#21918cffz	#5ec962ffz	#fde725ff)r)  r      2      i"     Pastel2)r)  r   b3e2cdff?   fdcdacff>   cbd5e8fff4cae4ffe6f5c9fffff2aefff1e2ccffccccccff)r   r<   r:   r   count)r6   r2  r7   r9   s       r+   test_colorbarzTestExplore.test_colorbar  s$   	< JJwt4((+&'111'222JJDy,.G  
 ((+&'111-w777LL  4wPUFV W((+ G+++ JJ %(#	  
 ((+}}[)S000}}[)S000}}[)S000}}[)S000}}[)S000 JJ#  

 ((+}}[)R///}}[)R///}}[)S000}}[)S000}}[)Q... JJyIF((+}}Z(B...}}Z(B...}}Z(B...}}Z(B...}}Z(B...}}Z(B...}}Z(B...}}Z(B...r-   zrequires branca >= 0.5.0c                    dd l }| j                  j                  dddi      }| j                  |      }|j	                  d|      j                  d      }|j                  dd      d	k(  sJ | j                  j                  dd
ddi      }| j                  |      }d|v sJ | j                  j                  dddid      }| j                  |      }|j	                  d|      j                  d      }|dk(  sJ y )Nr   r   
max_labelsr   )r5  z tickValues\(\[[\',\,\.,0-9]*\]\)z,''r1   z8tickValues([140.0,471386328.07843137,942772516.1568627])r   )r   r5  z;tickValues([140.0,'',184117213.1818182,'',1382066377.0,''])tab10)r5  r   zGtickValues([140.0,'','','',559086084.0,'','','',1118172028.0,'','','']))rer   r<   r:   searchgroupr0  )r6   rM  r7   r9   tick_strs        r+   test_colorbar_max_labelsz$TestExplore.test_colorbar_max_labels  s%    JJy|Q6GH((+99@'JPPQRSUB'IJ	
J
 JJ.\1<M  
 ((+LPWWWW JJy|Q6GgV((+99@'JPPQRSXY	
Yr-   c                     t        j                  d      }| j                  j                  |j                  j
                  j                        }| j                  |      }d|v sJ d|v sJ d|v sJ y )Nxyzservicesrf   C"https://a.basemaps.cartocdn.com/light_nolabels/{z}/{x}/{y}{r}.png"Dattribution":"\u0026copy;\u003cahref=\"https://www.openstreetmap.org"maxZoom":20rR   importorskipr   r<   	providersCartoDBPositronNoLabelsr:   r6   rS  r7   r9   s       r+   test_xyzservices_providersz&TestExplore.test_xyzservices_providers  s    ))-8IIK$9$9$A$A$R$RS((+ R	
 V	
 (((r-   c                     t        j                  d       | j                  j                  d      }| j	                  |      }d|v sJ d|v sJ d|v sJ y )NrS  zCartoDB Positron No LabelsrT  rU  rV  rW  )rR   rY  r   r<   r:   r   s      r+   test_xyzservices_query_namez'TestExplore.test_xyzservices_query_name  sx    M*II$@A((+ R	
 V	
 (((r-   c                     t        j                  d      }| j                  j                  |j                  j
                  j                  d      }| j                  |      }d|v sJ y )NrS  r   )rf   min_zoom"minZoom":3rX  r]  s       r+   ,test_xyzservices_providers_min_zoom_overridez8TestExplore.test_xyzservices_providers_min_zoom_override  sb    ))-8II''//@@1  
 ((+'''r-   c                     t        j                  d      }| j                  j                  |j                  j
                  j                  d      }| j                  |      }d|v sJ y )NrS     )rf   max_zoom"maxZoom":12rX  r]  s       r+   ,test_xyzservices_providers_max_zoom_overridez8TestExplore.test_xyzservices_providers_max_zoom_override  sb    ))-8II''//@@2  
 ((+(((r-   c                     t        j                  d      }| j                  j                  |j                  j
                  j                  dd      }| j                  |      }d|v sJ d|v sJ y )NrS  r   rf  )rf   rb  rg  rh  rc  rX  r]  s       r+   .test_xyzservices_providers_both_zooms_overridez:TestExplore.test_xyzservices_providers_both_zooms_override"  st    ))-8II''//@@  

 ((+((('''r-   c                     | j                   j                  d      j                  }|j                         }| j	                  |      }|j                  d      t        |      k(  sJ y )NT)index_parts
LineString)r   explodeexteriorr<   r:   rH  r   )r6   ringsr7   r9   s       r+   test_linearringszTestExplore.test_linearrings0  sU    		!!d!3<<MMO((+}}\*c%j888r-   c           	      B   | j                   j                  ddddddddd	      }| j                  |      }g d
}|D ]  }||v rJ  | j                   j                  ddddddddd	      }| j                  |      }g d}|D ]  }||v rJ  | j                  j                  dddddg dd      }| j                  |      }g d}|D ]  }||v rJ  | j                   j                  ddddddddd	      }| j                  |      }g d}|D ]  }||v rJ  y )Nr   Tr   rn   r   )ro   labelF)colorbarinterval)rB   r)  r   r%  r5  )z[140.00,21803000.00]z(21803000.00,66834405.00]z(66834405.00,163046161.00]z(163046161.00,328239523.00]z(328239523.00,1397715000.00]r   )z>140.00,21803000.00z>21803000.00,66834405.00z>66834405.00,163046161.00z>163046161.00,328239523.00z>328239523.00,1397715000.00r   rh   )rk   r7   lxlxxl)ru  r  )rB   r)  r   r   r5  )z>s<z>m<z>l<z>xl<z>xxl<z{:.0f})ru  fmt)z>140,21803000z>21803000,66834405z>66834405,163046161z>163046161,328239523z>328239523,1397715000r   )r   r<   r:   r   )r6   r7   r9   r  rk   s        r+   #test_mapclassify_categorical_legendz/TestExplore.test_mapclassify_categorical_legend7  s   LL  "#(9=%*= ! 
 ((+
  	 A<<	  LL  "#(9=%*> ! 
 ((+
  	 A<<	  JJ"%*6RS  
 ((+8 	 A<<	  LL  "#(9=%*8< ! 
 ((+
  	 A<<	 r-   c                     t         j                         }| j                  j                  |dd       | j	                  |      }|j                  d      dk(  sJ |j                  d   dk(  sJ y)z5Check that geometry is mapped onto a given folium.MapF)r7   r   	highlightr   rh   rI   r   N)r   Mapr   r<   r:   rH  rT   r   s      r+   test_given_mzTestExplore.test_given_m  sd    JJL		Au>((+}}Z(A---yy A%%%r-   c                     | j                   j                  d      }| j                  |      }d|v sJ | j                   j                  dddd      }| j                  |      }d|v sJ y )	NT)r}  z"fillOpacity":0.75r   rn   )r   ro   )r}  highlight_kwdsz{"color":"red","fillOpacity":1}r   r   s      r+   test_highlightzTestExplore.test_highlight  sz    II-((+#w...II1u+M  
 ((+0G;;;r-   c                 Z   t        g ddd      }| j                  j                  d|dgd      }g d	}| j                  |      }|D ]  }||v rJ  |j	                  d
      dk(  sJ |j	                  d      dk(  sJ |j	                  d      dk(  sJ d }| j                  j                  d|d      }ddg}|D ]  }|| j                  |      v rJ  t        j                  g d      }| j                  j                  d|      }g d}| j                  |      }|D ]  }||v rJ  y )N)r   yellowrn   r    r  r   r   T)r   r   r)  )zfillColor":"#008000ff"z"fillColor":"#ffff00ff"z"fillColor":"#ff0000ff"008000ffi0  ffff00ff   ff0000ff   c                     | dkD  ryy)z0Maps low values to green and high values to red.r  z#ff0000z#008000r   )fields    r+   my_color_functionz<TestExplore.test_custom_colormaps.<locals>.my_color_function  s    y   r-   F)r   r)  z'"color":"#ff0000","fillColor":"#ff0000"z'"color":"#008000","fillColor":"#008000")rn   r   bluer   r   r   )r   )z"fillColor":"#ff0000"z"fillColor":"#008000"z"fillColor":"#0000ff"z"fillColor":"#ffffff"z"fillColor":"#000000")r
   r   r<   r:   rH  r   ListedColormapr   )r6   stepr7   r  r9   rk   r  r   s           r+   test_custom_colormapsz!TestExplore.test_custom_colormaps  sg   6QYOJJytfXdS
 ((+ 	 A<<	  }}Z(C///}}Z(C///}}Z(C///	! JJy/@O 65

  	2A..q1111	2 $$%OPIIjt4
 ((+ 	 A<<	 r-   c                 x    | j                   }|j                  |d<   |j                  |d<   |j                          y)z`
        Additional GeoSeries need to be removed as they cannot be converted to GeoJSON
        rs   centroidN)r   rs   r  r<   )r6   r  s     r+   test_multiple_geoseriesz#TestExplore.test_multiple_geoseries  s0     ii,,J,,Jr-   c                      fd} j                   j                  dddd       |        t        j                  t        d      5   j                   j                  dddd       d d d        y # 1 sw Y   y xY w)	Nc                      j                        } t        sj                  d   du sJ j                  d   du sJ d| v sd| v sJ d| v sd| v sJ y y )NrK   FrL   zdragging:falsez"dragging":falsezscrollWheelZoom:falsez"scrollWheelZoom":false)r:   rU   rT   )r9   r7   r6   s    r+   checkz(TestExplore.test_map_kwds.<locals>.check  s|    ,,Q/G yy/5888yy0E999#w.2D2OOO'72,787 3r-   F)draggingscrollWheelZoom)rL   map_kwdsz0'zoom_control' cannot be specified in 'map_kwds'r   )r  r  rL   )r  )r   r<   rR   r   r   )r6   r  r7   s   ` @r+   test_map_kwdszTestExplore.test_map_kwds  s    
	 JJePU)V  
 	]]P
 		 JJ %',$)  		 		 		s   !A55A>c                     | j                   j                         }d |j                  d|j                  j                  f<   |j                         }| j                  |       y Nr   )r   r   r$   r=   r   r<   r:   r   s      r+   test_none_geometryzTestExplore.test_none_geometry  sH    YY^^&*q"++"""#JJLq!r-   c                     | j                   j                         }t        j                         |j                  d|j
                  j                  f<   |j                         }| j                  |       y r  )	r   r   shapelyPointr$   r=   r   r<   r:   r   s      r+   test_empty_geometryzTestExplore.test_empty_geometry  sN    YY^^&-mmoq"++"""#JJLq!r-   c                 ^   t        j                  t        j                         t        j                         gd      }t	        j
                  t        d      5  |j                         }d d d        | j                        }t        rd|v sJ t        j                  t        j                         t        j                         g      }t	        j
                  t        d      5  |j                         }d d d        | j                  |      }d|v sJ y # 1 sw Y   xY w# 1 sw Y   -xY w)Ni  )r=   r   =The GeoSeries you are attempting to plot is composed of emptyr   z#center:[0.0,0.0],crs:L.CRS.EPSG3857r=   z!center:[0.0,0.0],crs:L.CRS.Simple)
r   GeoDataFramer  r  rR   warnsUserWarningr<   r:   r   )r6   with_crsr7   r9   no_crss        r+   test_all_emptyzTestExplore.test_all_empty  s    ##mmow}}7T
 \\Q
 	#   "A		#
 ((+8GCCC!!GMMOW]]_+MN\\Q
 	!  A		!
 ((+2g===!	# 	#	! 	!s   D&D#D #D,c                    t        j                  t        j                  dd      t        j                  dd      g      }t        j                  t        j                         t        j                         g      }|j	                  d      j                         }t        j                  t        d      5  |j	                  d      j                  |d	      }d d d        | j                  |      }d
|v sJ y # 1 sw Y   !xY w)Nr   r   r  
index_name)r&   r  r   rn   )r7   ro   z!center:[0.5,0.5],crs:L.CRS.Simple)
r   r  r  r  rename_axisr<   rR   r  r  r:   )r6   gdf1gdf2r7   r9   s        r+   test_add_all_empty_named_indexz*TestExplore.test_add_all_empty_named_index  s    '--1*=w}}QPQ?R)ST'--/7==?)KL<088:\\Q
 	O   | 4<<q<NA		O
 ((+2g===	O 	Os   8$C<<DN)2__name__
__module____qualname__r:   r?   rC   rR   markskipifr   ra   rl   ry   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r#  r&  r,  rI  	BRANCA_05rQ  r^  r`  rd  ri  rk  rr  r{  r  r  r  r  r  r  r  r  r  r   r-   r+   r/   r/   /   s!   
&- [[J/@AA BA* [[J/@A.& B.&`.6-(%2N7BrP"E=".&D%;NE%NNe%N$ 5>S:@,$:/x [[I.HI
 J
: [[J/@A) B)  [[J/@A) B)  [[J/@A( B( [[J/@A) B) [[J/@A( B(9K Z	&<3 j:"">,
>r-   r/   ) r   packaging.versionr   numpyr    pandasr   r  	geopandasr   geopandas._compatr   rR   rY  r   r   r   r   r	   branca.colormapr
   r   r   __version__r  r"  rU   fixturer,   r  usefixturesr/   r   r-   r+   <module>r     s    %     ( 			X	&			X	& V  .
!f!!-0!f!!-0 ( !F&&'''*::	v))*WX->>**+wx/@@ g $ 45v> v> 6v>r-   