Skip to content

Commit 88fc567

Browse files
hansthenConengmo
andauthored
Remove empty values from the options. (#2049)
* Remove empty values from the options. * Fix tests * Updated after review comments * Update folium/plugins/semicircle.py --------- Co-authored-by: Frank Anema <[email protected]>
1 parent d115da6 commit 88fc567

28 files changed

+68
-47
lines changed

Diff for: folium/features.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
javascript_identifier_path_to_array_notation,
3232
none_max,
3333
none_min,
34+
remove_empty,
3435
validate_locations,
3536
)
3637
from folium.vector_layers import Circle, CircleMarker, PolyLine, path_options
@@ -688,7 +689,7 @@ def __init__(
688689
self.popup_keep_highlighted = popup_keep_highlighted
689690

690691
self.marker = marker
691-
self.options = kwargs
692+
self.options = remove_empty(**kwargs)
692693

693694
self.data = self.process_data(data)
694695

@@ -1715,7 +1716,7 @@ def __init__(
17151716
):
17161717
super().__init__()
17171718
self._name = "DivIcon"
1718-
self.options = dict(
1719+
self.options = remove_empty(
17191720
html=html,
17201721
icon_size=icon_size,
17211722
icon_anchor=icon_anchor,
@@ -1894,7 +1895,7 @@ def __init__(
18941895
):
18951896
super(Icon, self).__init__()
18961897
self._name = "CustomIcon"
1897-
self.options = dict(
1898+
self.options = remove_empty(
18981899
icon_url=image_to_url(icon_image),
18991900
icon_size=icon_size,
19001901
icon_anchor=icon_anchor,

Diff for: folium/folium.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
TypeJsonValue,
1919
_parse_size,
2020
parse_font_size,
21+
remove_empty,
2122
temp_html_filepath,
2223
validate_location,
2324
)
@@ -303,7 +304,7 @@ def __init__(
303304
else:
304305
self.zoom_control_position = False
305306

306-
self.options = dict(
307+
self.options = remove_empty(
307308
max_bounds=max_bounds_array,
308309
zoom=zoom_start,
309310
zoom_control=False if self.zoom_control_position else zoom_control,

Diff for: folium/map.py

+8-7
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
TypeJsonValue,
1818
escape_backticks,
1919
parse_options,
20+
remove_empty,
2021
validate_location,
2122
)
2223

@@ -131,7 +132,7 @@ def __init__(
131132
super().__init__(name=name, overlay=overlay, control=control, show=show)
132133
self._name = "FeatureGroup"
133134
self.tile_name = name if name is not None else self.get_name()
134-
self.options = kwargs
135+
self.options = remove_empty(**kwargs)
135136

136137

137138
class LayerControl(MacroElement):
@@ -206,7 +207,7 @@ def __init__(
206207
):
207208
super().__init__()
208209
self._name = "LayerControl"
209-
self.options = dict(
210+
self.options = remove_empty(
210211
position=position, collapsed=collapsed, autoZIndex=autoZIndex, **kwargs
211212
)
212213
self.draggable = draggable
@@ -312,7 +313,7 @@ def __init__(
312313
f"color argument of Icon should be one of: {self.color_options}.",
313314
stacklevel=2,
314315
)
315-
self.options = dict(
316+
self.options = remove_empty(
316317
marker_color=color,
317318
icon_color=icon_color,
318319
icon=icon,
@@ -379,7 +380,7 @@ def __init__(
379380
super().__init__()
380381
self._name = "Marker"
381382
self.location = validate_location(location) if location is not None else None
382-
self.options = dict(
383+
self.options = remove_empty(
383384
draggable=draggable or None, autoPan=draggable or None, **kwargs
384385
)
385386
if icon is not None:
@@ -481,7 +482,7 @@ def __init__(
481482

482483
self.show = show
483484
self.lazy = lazy
484-
self.options = dict(
485+
self.options = remove_empty(
485486
max_width=max_width,
486487
autoClose=False if show or sticky else None,
487488
closeOnClick=False if sticky else None,
@@ -550,7 +551,7 @@ def __init__(
550551
self.text = str(text)
551552

552553
kwargs.update({"sticky": sticky})
553-
self.options = kwargs
554+
self.options = remove_empty(**kwargs)
554555

555556
if style:
556557
assert isinstance(
@@ -659,7 +660,7 @@ def __init__(
659660
self._name = "FitOverlays"
660661
self.method = "flyToBounds" if fly else "fitBounds"
661662
self.fit_on_map_load = fit_on_map_load
662-
self.options = dict(padding=(padding, padding), max_zoom=max_zoom)
663+
self.options = remove_empty(padding=(padding, padding), max_zoom=max_zoom)
663664

664665

665666
class CustomPane(MacroElement):

Diff for: folium/plugins/beautify_icon.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from folium.elements import JSCSSMixin
44
from folium.template import Template
5+
from folium.utilities import remove_empty
56

67

78
class BeautifyIcon(JSCSSMixin, MacroElement):
@@ -99,7 +100,7 @@ def __init__(
99100
super().__init__()
100101
self._name = "BeautifyIcon"
101102

102-
self.options = dict(
103+
self.options = remove_empty(
103104
icon=icon,
104105
icon_shape=icon_shape,
105106
border_width=border_width,

Diff for: folium/plugins/boat_marker.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from folium.elements import JSCSSMixin
22
from folium.map import Marker
33
from folium.template import Template
4+
from folium.utilities import remove_empty
45

56

67
class BoatMarker(JSCSSMixin, Marker):
@@ -65,4 +66,4 @@ def __init__(
6566
self.heading = heading
6667
self.wind_heading = wind_heading
6768
self.wind_speed = wind_speed
68-
self.options = dict(**kwargs)
69+
self.options = remove_empty(**kwargs)

Diff for: folium/plugins/fullscreen.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from folium.elements import JSCSSMixin
44
from folium.template import Template
5+
from folium.utilities import remove_empty
56

67

78
class Fullscreen(JSCSSMixin, MacroElement):
@@ -59,7 +60,7 @@ def __init__(
5960
):
6061
super().__init__()
6162
self._name = "Fullscreen"
62-
self.options = dict(
63+
self.options = remove_empty(
6364
position=position,
6465
title=title,
6566
title_cancel=title_cancel,

Diff for: folium/plugins/geocoder.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
from folium.elements import JSCSSMixin
66
from folium.template import Template
7+
from folium.utilities import remove_empty
78

89

910
class Geocoder(JSCSSMixin, MacroElement):
@@ -81,7 +82,7 @@ def __init__(
8182
):
8283
super().__init__()
8384
self._name = "Geocoder"
84-
self.options = dict(
85+
self.options = remove_empty(
8586
collapsed=collapsed,
8687
position=position,
8788
default_mark_geocode=add_marker,

Diff for: folium/plugins/groupedlayercontrol.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from folium.elements import JSCSSMixin
44
from folium.template import Template
5+
from folium.utilities import remove_empty
56

67

78
class GroupedLayerControl(JSCSSMixin, MacroElement):
@@ -68,7 +69,7 @@ class GroupedLayerControl(JSCSSMixin, MacroElement):
6869
def __init__(self, groups, exclusive_groups=True, **kwargs):
6970
super().__init__()
7071
self._name = "GroupedLayerControl"
71-
self.options = dict(**kwargs)
72+
self.options = remove_empty(**kwargs)
7273
if exclusive_groups:
7374
self.options["exclusiveGroups"] = list(groups.keys())
7475
self.layers_untoggle = set()

Diff for: folium/plugins/heat_map.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
if_pandas_df_convert_to_numpy,
1010
none_max,
1111
none_min,
12+
remove_empty,
1213
validate_location,
1314
)
1415

@@ -89,7 +90,7 @@ def __init__(
8990
"The largest intensity is calculated automatically.",
9091
stacklevel=2,
9192
)
92-
self.options = dict(
93+
self.options = remove_empty(
9394
min_opacity=min_opacity,
9495
max_zoom=max_zoom,
9596
radius=radius,

Diff for: folium/plugins/locate_control.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
from folium.elements import JSCSSMixin
99
from folium.template import Template
10+
from folium.utilities import remove_empty
1011

1112

1213
class LocateControl(JSCSSMixin, MacroElement):
@@ -73,4 +74,4 @@ def __init__(self, auto_start=False, **kwargs):
7374
super().__init__()
7475
self._name = "LocateControl"
7576
self.auto_start = auto_start
76-
self.options = dict(**kwargs)
77+
self.options = remove_empty(**kwargs)

Diff for: folium/plugins/marker_cluster.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from folium.elements import JSCSSMixin
22
from folium.map import Layer, Marker
33
from folium.template import Template
4-
from folium.utilities import validate_locations
4+
from folium.utilities import remove_empty, validate_locations
55

66

77
class MarkerCluster(JSCSSMixin, Layer):
@@ -102,7 +102,7 @@ def __init__(
102102
)
103103
)
104104

105-
self.options = dict(**kwargs)
105+
self.options = remove_empty(**kwargs)
106106
if icon_create_function is not None:
107107
assert isinstance(icon_create_function, str)
108108
self.icon_create_function = icon_create_function

Diff for: folium/plugins/measure_control.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from folium.elements import JSCSSMixin
44
from folium.template import Template
5+
from folium.utilities import remove_empty
56

67

78
class MeasureControl(JSCSSMixin, MacroElement):
@@ -72,7 +73,7 @@ def __init__(
7273
super().__init__()
7374
self._name = "MeasureControl"
7475

75-
self.options = dict(
76+
self.options = remove_empty(
7677
position=position,
7778
primary_length_unit=primary_length_unit,
7879
secondary_length_unit=secondary_length_unit,

Diff for: folium/plugins/minimap.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from folium.elements import JSCSSMixin
44
from folium.raster_layers import TileLayer
55
from folium.template import Template
6+
from folium.utilities import remove_empty
67

78

89
class MiniMap(JSCSSMixin, MacroElement):
@@ -114,7 +115,7 @@ def __init__(
114115
else:
115116
self.tile_layer = TileLayer(tile_layer)
116117

117-
self.options = dict(
118+
self.options = remove_empty(
118119
position=position,
119120
width=width,
120121
height=height,

Diff for: folium/plugins/mouse_position.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from folium.elements import JSCSSMixin
44
from folium.template import Template
5+
from folium.utilities import remove_empty
56

67

78
class MousePosition(JSCSSMixin, MacroElement):
@@ -87,7 +88,7 @@ def __init__(
8788
super().__init__()
8889
self._name = "MousePosition"
8990

90-
self.options = dict(
91+
self.options = remove_empty(
9192
position=position,
9293
separator=separator,
9394
empty_string=empty_string,

Diff for: folium/plugins/pattern.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from folium.elements import JSCSSMixin
44
from folium.folium import Map
55
from folium.template import Template
6-
from folium.utilities import get_obj_in_upper_tree
6+
from folium.utilities import get_obj_in_upper_tree, remove_empty
77

88

99
class StripePattern(JSCSSMixin, MacroElement):
@@ -59,7 +59,7 @@ def __init__(
5959
):
6060
super().__init__()
6161
self._name = "StripePattern"
62-
self.options = dict(
62+
self.options = remove_empty(
6363
angle=angle,
6464
weight=weight,
6565
space_weight=space_weight,

Diff for: folium/plugins/polyline_text_path.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from folium.elements import JSCSSMixin
22
from folium.features import MacroElement
33
from folium.template import Template
4+
from folium.utilities import remove_empty
45

56

67
class PolyLineTextPath(JSCSSMixin, MacroElement):
@@ -67,7 +68,7 @@ def __init__(
6768
self._name = "PolyLineTextPath"
6869
self.polyline = polyline
6970
self.text = text
70-
self.options = dict(
71+
self.options = remove_empty(
7172
repeat=repeat,
7273
center=center,
7374
below=below,

Diff for: folium/plugins/realtime.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from folium.features import GeoJson
55
from folium.map import FeatureGroup
66
from folium.template import Template
7-
from folium.utilities import JsCode
7+
from folium.utilities import JsCode, remove_empty
88

99

1010
class Realtime(JSCSSMixin, FeatureGroup):
@@ -115,4 +115,4 @@ def __init__(
115115
kwargs["remove_missing"] = remove_missing
116116
kwargs["container"] = container
117117

118-
self.options = kwargs
118+
self.options = remove_empty(**kwargs)

Diff for: folium/plugins/search.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from folium.features import FeatureGroup, GeoJson, TopoJson
66
from folium.plugins import MarkerCluster
77
from folium.template import Template
8+
from folium.utilities import remove_empty
89

910

1011
class Search(JSCSSMixin, MacroElement):
@@ -121,7 +122,7 @@ def __init__(
121122
self.position = position
122123
self.placeholder = placeholder
123124
self.collapsed = collapsed
124-
self.options = dict(**kwargs)
125+
self.options = remove_empty(**kwargs)
125126

126127
def test_params(self, keys):
127128
if keys is not None and self.search_label is not None:

Diff for: folium/plugins/semicircle.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from folium.elements import JSCSSMixin
22
from folium.map import Marker
33
from folium.template import Template
4+
from folium.utilities import remove_empty
45
from folium.vector_layers import path_options
56

67

@@ -80,6 +81,7 @@ def __init__(
8081
stop_angle=stop_angle,
8182
)
8283
)
84+
self.options = remove_empty(**self.options)
8385

8486
if not (
8587
(direction is None and arc is None)

0 commit comments

Comments
 (0)