Skip to content

Commit 5129b0e

Browse files
committed
Fix coordinate loss when validating single-pass iterators
1 parent cbd4cad commit 5129b0e

1 file changed

Lines changed: 7 additions & 0 deletions

File tree

‎folium/utilities.py‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,8 @@ def _validate_locations_basics(locations: TypeMultiLine) -> None:
122122
def validate_locations(locations: TypeLine) -> list[list[float]]:
123123
"""Validate an iterable with lat/lon coordinate pairs."""
124124
locations = if_pandas_df_convert_to_numpy(locations)
125+
if isinstance(locations, Iterator):
126+
locations = list(locations)
125127
_validate_locations_basics(locations)
126128
return [validate_location(coord_pair) for coord_pair in locations]
127129

@@ -131,7 +133,12 @@ def validate_multi_locations(
131133
) -> Union[list[list[float]], list[list[list[float]]]]:
132134
"""Validate an iterable with possibly nested lists of coordinate pairs."""
133135
locations = if_pandas_df_convert_to_numpy(locations)
136+
if isinstance(locations, Iterator):
137+
locations = list(locations)
134138
_validate_locations_basics(locations)
139+
# Keep the nesting check below from consuming a point from an inner iterator.
140+
if isinstance(next(iter(locations)), Iterator):
141+
locations = [list(line) for line in locations]
135142
try:
136143
float(next(iter(next(iter(next(iter(locations))))))) # type: ignore
137144
except (TypeError, StopIteration):

0 commit comments

Comments
 (0)