22
33from folium .elements import JSCSSMixin
44from folium .features import FeatureGroup , GeoJson , TopoJson
5+ from folium .folium import Map
56from folium .plugins import MarkerCluster
67from folium .template import Template
78from folium .utilities import remove_empty
@@ -123,9 +124,16 @@ def __init__(
123124 self .collapsed = collapsed
124125 self .options = remove_empty (** kwargs )
125126
126- def render (self , ** kwargs ):
127- super ().render (** kwargs )
127+ def test_params (self , keys ):
128+ if keys is not None and self .search_label is not None :
129+ assert self .search_label in keys , (
130+ f"The label '{ self .search_label } ' was not " f"available in { keys } " ""
131+ )
132+ assert isinstance (
133+ self ._parent , Map
134+ ), "Search can only be added to folium Map objects."
128135
136+ def render (self , ** kwargs ):
129137 if isinstance (self .layer , GeoJson ):
130138 keys = tuple (self .layer .data ["features" ][0 ]["properties" ].keys ())
131139 elif isinstance (self .layer , TopoJson ):
@@ -137,8 +145,6 @@ def render(self, **kwargs):
137145 ) # noqa
138146 else :
139147 keys = None
148+ self .test_params (keys = keys )
140149
141- if keys is not None and self .search_label is not None :
142- assert self .search_label in keys , (
143- f"The label '{ self .search_label } ' was not " f"available in { keys } " ""
144- )
150+ super ().render (** kwargs )
0 commit comments