diff --git a/folium/__init__.py b/folium/__init__.py index f416ef9a18..2bf1c5da29 100644 --- a/folium/__init__.py +++ b/folium/__init__.py @@ -22,8 +22,8 @@ CustomIcon, DivIcon, GeoJson, - GeoJsonTooltip, GeoJsonPopup, + GeoJsonTooltip, LatLngPopup, RegularPolygonMarker, TopoJson, @@ -88,6 +88,7 @@ 'Figure', 'FitBounds', 'GeoJson', + 'GeoJsonPopup', 'GeoJsonTooltip', 'Html', 'IFrame', diff --git a/folium/elements.py b/folium/elements.py index 728fab023e..0578b34544 100644 --- a/folium/elements.py +++ b/folium/elements.py @@ -1,4 +1,4 @@ -from branca.element import Figure, Element, JavascriptLink, CssLink +from branca.element import CssLink, Element, Figure, JavascriptLink class JSCSSMixin(Element): diff --git a/folium/features.py b/folium/features.py index ebd6ab9ae6..76825e8885 100644 --- a/folium/features.py +++ b/folium/features.py @@ -3,10 +3,10 @@ """ -import json -import warnings import functools +import json import operator +import warnings from branca.colormap import LinearColormap, StepColormap from branca.element import (Element, Figure, JavascriptLink, MacroElement) @@ -14,17 +14,17 @@ from folium.elements import JSCSSMixin from folium.folium import Map -from folium.map import (FeatureGroup, Icon, Layer, Marker, Tooltip, Popup) +from folium.map import (FeatureGroup, Icon, Layer, Marker, Popup, Tooltip) from folium.utilities import ( - validate_locations, _parse_size, + camelize, get_bounds, + get_obj_in_upper_tree, image_to_url, none_max, none_min, - get_obj_in_upper_tree, parse_options, - camelize + validate_locations, ) from folium.vector_layers import Circle, CircleMarker, PolyLine, path_options @@ -583,16 +583,16 @@ def find_identifier(self): """ feats = self.data['features'] # Each feature has an 'id' field with a unique value. - unique_ids = set(feat.get('id', None) for feat in feats) + unique_ids = {feat.get('id', None) for feat in feats} if None not in unique_ids and len(unique_ids) == len(feats): return 'feature.id' # Each feature has a unique string or int property. if all(isinstance(feat.get('properties', None), dict) for feat in feats): for key in feats[0]['properties']: - unique_values = set( + unique_values = { feat['properties'].get(key, None) for feat in feats if isinstance(feat['properties'].get(key, None), (str, int)) - ) + } if len(unique_values) == len(feats): return 'feature.properties.{}'.format(key) # We add an 'id' field with a unique value to the data. diff --git a/folium/folium.py b/folium/folium.py index 48032f1140..50f56ad24a 100644 --- a/folium/folium.py +++ b/folium/folium.py @@ -13,9 +13,9 @@ from folium.raster_layers import TileLayer from folium.utilities import ( _parse_size, + parse_options, temp_html_filepath, validate_location, - parse_options, ) from jinja2 import Environment, PackageLoader, Template diff --git a/folium/map.py b/folium/map.py index 2f72ac5663..ec7063636b 100644 --- a/folium/map.py +++ b/folium/map.py @@ -3,13 +3,12 @@ """ -from collections import OrderedDict - import warnings +from collections import OrderedDict from branca.element import Element, Figure, Html, MacroElement -from folium.utilities import validate_location, camelize, parse_options +from folium.utilities import camelize, parse_options, validate_location from jinja2 import Template @@ -305,6 +304,7 @@ def render(self): raise ValueError("{} location must be assigned when added directly to map.".format(self._name)) super(Marker, self).render() + class Popup(Element): """Create a Popup instance that can be linked to a Layer. diff --git a/folium/plugins/__init__.py b/folium/plugins/__init__.py index b50972ef22..5c1653eac8 100644 --- a/folium/plugins/__init__.py +++ b/folium/plugins/__init__.py @@ -7,7 +7,6 @@ """ from folium.plugins.antpath import AntPath -from folium.plugins.polyline_offset import PolyLineOffset from folium.plugins.beautify_icon import BeautifyIcon from folium.plugins.boat_marker import BoatMarker from folium.plugins.draw import Draw @@ -25,6 +24,7 @@ from folium.plugins.minimap import MiniMap from folium.plugins.mouse_position import MousePosition from folium.plugins.pattern import CirclePattern, StripePattern +from folium.plugins.polyline_offset import PolyLineOffset from folium.plugins.polyline_text_path import PolyLineTextPath from folium.plugins.scroll_zoom_toggler import ScrollZoomToggler from folium.plugins.search import Search diff --git a/folium/plugins/antpath.py b/folium/plugins/antpath.py index 3b33eae94a..bcf06bfdec 100644 --- a/folium/plugins/antpath.py +++ b/folium/plugins/antpath.py @@ -1,5 +1,5 @@ from folium.elements import JSCSSMixin -from folium.vector_layers import path_options, BaseMultiLocation +from folium.vector_layers import BaseMultiLocation, path_options from jinja2 import Template diff --git a/folium/plugins/dual_map.py b/folium/plugins/dual_map.py index 32713f292d..150f27325b 100644 --- a/folium/plugins/dual_map.py +++ b/folium/plugins/dual_map.py @@ -1,4 +1,4 @@ -from branca.element import MacroElement, Figure +from branca.element import Figure, MacroElement from folium.elements import JSCSSMixin from folium.folium import Map diff --git a/folium/plugins/heat_map.py b/folium/plugins/heat_map.py index f1a2e6d6cd..32e9dad5c1 100644 --- a/folium/plugins/heat_map.py +++ b/folium/plugins/heat_map.py @@ -3,10 +3,10 @@ from folium.elements import JSCSSMixin from folium.map import Layer from folium.utilities import ( + if_pandas_df_convert_to_numpy, none_max, none_min, parse_options, - if_pandas_df_convert_to_numpy, validate_location, ) diff --git a/folium/plugins/marker_cluster.py b/folium/plugins/marker_cluster.py index f8dedc0774..da34a1516c 100644 --- a/folium/plugins/marker_cluster.py +++ b/folium/plugins/marker_cluster.py @@ -1,6 +1,6 @@ from folium.elements import JSCSSMixin from folium.map import Layer, Marker -from folium.utilities import validate_locations, parse_options +from folium.utilities import parse_options, validate_locations from jinja2 import Template diff --git a/folium/plugins/time_slider_choropleth.py b/folium/plugins/time_slider_choropleth.py index d166e028f1..86ad563e4b 100644 --- a/folium/plugins/time_slider_choropleth.py +++ b/folium/plugins/time_slider_choropleth.py @@ -150,7 +150,7 @@ def __init__(self, data, styledict, name=None, overlay=True, control=True, timestamps = set() for feature in styledict.values(): timestamps.update(set(feature.keys())) - timestamps = sorted(list(timestamps)) + timestamps = sorted(timestamps) self.timestamps = timestamps self.styledict = styledict diff --git a/folium/plugins/timestamped_geo_json.py b/folium/plugins/timestamped_geo_json.py index 99f587de9c..837e998715 100644 --- a/folium/plugins/timestamped_geo_json.py +++ b/folium/plugins/timestamped_geo_json.py @@ -4,7 +4,7 @@ from folium.elements import JSCSSMixin from folium.folium import Map -from folium.utilities import parse_options, get_bounds +from folium.utilities import get_bounds, parse_options from jinja2 import Template diff --git a/folium/plugins/vectorgrid_protobuf.py b/folium/plugins/vectorgrid_protobuf.py index 3729a3de8a..358ac3c6c9 100644 --- a/folium/plugins/vectorgrid_protobuf.py +++ b/folium/plugins/vectorgrid_protobuf.py @@ -1,6 +1,6 @@ - from folium.elements import JSCSSMixin from folium.map import Layer + from jinja2 import Template diff --git a/folium/utilities.py b/folium/utilities.py index f44828f8fd..875ac01542 100644 --- a/folium/utilities.py +++ b/folium/utilities.py @@ -1,17 +1,18 @@ import base64 +import collections +import copy import io import json import math import os import struct import tempfile +import uuid import zlib from contextlib import contextmanager -import copy -import uuid -import collections from urllib.parse import urlparse, uses_netloc, uses_params, uses_relative + import numpy as np try: import pandas as pd diff --git a/folium/vector_layers.py b/folium/vector_layers.py index 6cfa0bec76..1e9cd20fff 100644 --- a/folium/vector_layers.py +++ b/folium/vector_layers.py @@ -6,7 +6,7 @@ from branca.element import MacroElement from folium.map import Marker, Popup, Tooltip -from folium.utilities import validate_locations, get_bounds +from folium.utilities import get_bounds, validate_locations from jinja2 import Template