Skip to content

Commit 671d04b

Browse files
committed
PEP8 the code + flake8 tests.
1 parent 360ab74 commit 671d04b

24 files changed

+415
-283
lines changed

.travis.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,5 @@ before_install:
2525

2626
script:
2727
- python setup.py test
28-
- find . -type f -name "*.py" | xargs flake8 --max-line-length=100
28+
- find ./folium -type f -name "*.py" | xargs flake8 --max-line-length=100
29+
- find ./tests -type f -name "*.py" | xargs flake8 --max-line-length=100

folium/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
from __future__ import absolute_import
44

5-
__version__ = '0.2.0.dev'
6-
75
from folium.folium import Map, initialize_notebook, CircleMarker
86

97
from folium.map import (FeatureGroup, FitBounds, Icon, LayerControl, Marker,
@@ -14,6 +12,8 @@
1412
MarkerCluster, MultiPolyLine, PolyLine, Vega,
1513
RegularPolygonMarker, TopoJson, WmsTileLayer)
1614

15+
__version__ = '0.2.0.dev'
16+
1717
__all__ = ['Map',
1818
'initialize_notebook',
1919
'CircleMarker',

folium/colormap.py

Lines changed: 173 additions & 135 deletions
Large diffs are not rendered by default.

folium/element.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def _get_self_bounds(self):
4444
"""Computes the bounds of the object itself (not including it's children)
4545
in the form [[lat_min, lon_min], [lat_max, lon_max]]
4646
"""
47-
return [[None,None],[None,None]]
47+
return [[None, None], [None, None]]
4848

4949
def get_bounds(self):
5050
"""Computes the bounds of the object and all it's children
@@ -480,8 +480,10 @@ def _repr_html_(self, **kwargs):
480480
out = self._parent._repr_html_(**kwargs)
481481
return out
482482

483+
483484
class IFrame(Element):
484-
def __init__(self, html=None, width="100%", height=None, ratio="60%", figsize=None):
485+
def __init__(self, html=None, width="100%", height=None, ratio="60%",
486+
figsize=None):
485487
"""Create a Figure object, to plot things into it.
486488
487489
Parameters
@@ -525,16 +527,16 @@ def render(self, **kwargs):
525527
----------
526528
527529
"""
528-
html = super(IFrame,self).render(**kwargs)
530+
html = super(IFrame, self).render(**kwargs)
529531
html = "data:text/html;base64," + base64.b64encode(html.encode('utf8')).decode('utf8') # noqa
530532

531533
if self.height is None:
532534
iframe = (
533535
'<div style="width:{width};">'
534-
'<div style="position:relative;width:100%;height:0;padding-bottom:{ratio};">'
535-
'<iframe src="{html}" style="position:absolute;width:100%;height:100%;left:0;top:0;">'
536+
'<div style="position:relative;width:100%;height:0;padding-bottom:{ratio};">' # noqa
537+
'<iframe src="{html}" style="position:absolute;width:100%;height:100%;left:0;top:0;">' # noqa
536538
'</iframe>'
537-
'</div></div>').format # noqa
539+
'</div></div>').format
538540
iframe = iframe(html=html,
539541
width=self.width,
540542
ratio=self.ratio)
@@ -544,6 +546,7 @@ def render(self, **kwargs):
544546
iframe = iframe(html=html, width=self.width, height=self.height)
545547
return iframe
546548

549+
547550
class MacroElement(Element):
548551
"""This is a parent class for Elements defined by a macro template.
549552
To compute your own element, all you have to do is:

folium/features.py

Lines changed: 49 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from .element import Element, Figure, JavascriptLink, CssLink, MacroElement
1818
from .map import Layer, Icon, Marker, Popup
1919

20+
2021
class WmsTileLayer(Layer):
2122
def __init__(self, url, name=None,
2223
format=None, layers=None, transparent=True,
@@ -49,6 +50,7 @@ def __init__(self, url, name=None,
4950
{% endmacro %}
5051
""") # noqa
5152

53+
5254
class RegularPolygonMarker(Marker):
5355
def __init__(self, location, color='black', opacity=1, weight=2,
5456
fill_color='blue', fill_opacity=1,
@@ -128,6 +130,7 @@ def render(self, **kwargs):
128130
JavascriptLink("https://cdnjs.cloudflare.com/ajax/libs/leaflet-dvf/0.2/leaflet-dvf.markers.min.js"), # noqa
129131
name='dvf_js')
130132

133+
131134
class Vega(Element):
132135
def __init__(self, data, width=None, height=None,
133136
left="0%", top="0%", position='relative'):
@@ -137,13 +140,16 @@ def __init__(self, data, width=None, height=None,
137140
"""
138141
super(Vega, self).__init__()
139142
self._name = 'Vega'
140-
self.data = data.to_json() if hasattr(data,'to_json') else data
141-
if isinstance(self.data,text_type) or isinstance(data,binary_type):
143+
self.data = data.to_json() if hasattr(data, 'to_json') else data
144+
# FIXME:
145+
if isinstance(self.data, text_type) or isinstance(data, binary_type):
142146
self.data = json.loads(self.data)
143147

144148
# Size Parameters.
145-
self.width = _parse_size(self.data.get('width','100%') if width is None else width)
146-
self.height = _parse_size(self.data.get('height','100%') if height is None else height)
149+
self.width = _parse_size(self.data.get('width', '100%') if
150+
width is None else width)
151+
self.height = _parse_size(self.data.get('height', '100%') if
152+
height is None else height)
147153
self.left = _parse_size(left)
148154
self.top = _parse_size(top)
149155
self.position = position
@@ -191,6 +197,7 @@ def render(self, **kwargs):
191197
vg.parse.spec(spec, function(chart) { chart({el:div}).update(); });}"""), # noqa
192198
name='vega_parse')
193199

200+
194201
class GeoJson(MacroElement):
195202
def __init__(self, data, style_function=None):
196203
"""
@@ -220,20 +227,22 @@ def __init__(self, data, style_function=None):
220227
>>> # Providing string.
221228
>>> GeoJson(open('foo.json').read())
222229
223-
>>> # Providing a style_function that put all states in green, but Alabama in blue.
224-
>>> style_function=lambda x: {'fillColor': '#0000ff' if x['properties']['name']=='Alabama' else '#00ff00'}
230+
>>> # Provide a style_function that color all states green but Alabama.
231+
>>> style_function = lambda x: {'fillColor': '#0000ff' if
232+
... x['properties']['name']=='Alabama' else
233+
... '#00ff00'}
225234
>>> GeoJson(geojson, style_function=style_function)
226235
"""
227236
super(GeoJson, self).__init__()
228237
self._name = 'GeoJson'
229-
if hasattr(data,'read'):
238+
if hasattr(data, 'read'):
230239
self.embed = True
231240
self.data = json.load(data)
232-
elif isinstance(data,dict):
241+
elif isinstance(data, dict):
233242
self.embed = True
234243
self.data = data
235244
elif isinstance(data, text_type) or isinstance(data, binary_type):
236-
if data.lstrip()[0] in '[{': # This is a GeoJSON inline string
245+
if data.lstrip()[0] in '[{': # This is a GeoJSON inline string
237246
self.embed = True
238247
self.data = json.loads(data)
239248
else: # This is a filename
@@ -242,18 +251,19 @@ def __init__(self, data, style_function=None):
242251
elif data.__class__.__name__ in ['GeoDataFrame', 'GeoSeries']:
243252
self.embed = True
244253
if hasattr(data, '__geo_interface__'):
245-
# We have a GeoPandas 0.2 object
246-
self.data = json.loads(json.dumps(data.to_crs(epsg='4326').__geo_interface__))
254+
# We have a GeoPandas 0.2 object.
255+
self.data = json.loads(json.dumps(data.to_crs(epsg='4326').__geo_interface__)) # noqa
247256
elif hasattr(data, 'columns'):
248257
# We have a GeoDataFrame 0.1
249258
self.data = json.loads(data.to_crs(epsg='4326').to_json())
250259
else:
251-
raise ValueError('Unable to transform this object to a GeoJSON.')
260+
msg = 'Unable to transform this object to a GeoJSON.'
261+
raise ValueError(msg)
252262
else:
253263
raise ValueError('Unhandled object {!r}.'.format(data))
254264

255265
if style_function is None:
256-
style_function = lambda x: {}
266+
def style_function(x): return {}
257267
self.style_function = style_function
258268

259269
self._template = Template(u"""
@@ -268,14 +278,13 @@ def __init__(self, data, style_function=None):
268278
def style_data(self):
269279
if 'features' not in self.data.keys():
270280
# Catch case when GeoJSON is just a single Feature or a geometry.
271-
if not (isinstance(self.data, dict) and 'geometry' in self.data.keys()):
281+
if not (isinstance(self.data, dict) and 'geometry' in self.data.keys()): # noqa
272282
# Catch case when GeoJSON is just a geometry.
273-
self.data = {'type' : 'Feature', 'geometry' : self.data}
274-
self.data = {'type' : 'FeatureCollection', 'features' : [self.data]}
283+
self.data = {'type': 'Feature', 'geometry': self.data}
284+
self.data = {'type': 'FeatureCollection', 'features': [self.data]}
275285

276286
for feature in self.data['features']:
277-
feature.setdefault('properties',{}).setdefault('style',{}).update(
278-
self.style_function(feature))
287+
feature.setdefault('properties', {}).setdefault('style', {}).update(self.style_function(feature)) # noqa
279288
return json.dumps(self.data)
280289

281290
def _get_self_bounds(self):
@@ -287,14 +296,14 @@ def _get_self_bounds(self):
287296

288297
if 'features' not in self.data.keys():
289298
# Catch case when GeoJSON is just a single Feature or a geometry.
290-
if not (isinstance(self.data, dict) and 'geometry' in self.data.keys()):
299+
if not (isinstance(self.data, dict) and 'geometry' in self.data.keys()): # noqa
291300
# Catch case when GeoJSON is just a geometry.
292-
self.data = {'type' : 'Feature', 'geometry' : self.data}
293-
self.data = {'type' : 'FeatureCollection', 'features' : [self.data]}
301+
self.data = {'type': 'Feature', 'geometry': self.data}
302+
self.data = {'type': 'FeatureCollection', 'features': [self.data]}
294303

295-
bounds = [[None,None],[None,None]]
304+
bounds = [[None, None], [None, None]]
296305
for feature in self.data['features']:
297-
for point in iter_points(feature.get('geometry',{}).get('coordinates',{})):
306+
for point in iter_points(feature.get('geometry', {}).get('coordinates', {})): # noqa
298307
bounds = [
299308
[
300309
none_min(bounds[0][0], point[1]),
@@ -307,6 +316,7 @@ def _get_self_bounds(self):
307316
]
308317
return bounds
309318

319+
310320
class TopoJson(MacroElement):
311321
def __init__(self, data, object_path):
312322
"""
@@ -357,10 +367,10 @@ def _get_self_bounds(self):
357367

358368
data = json.loads(self.data)
359369

360-
xmin,xmax,ymin,ymax = None, None, None, None
370+
xmin, xmax, ymin, ymax = None, None, None, None
361371

362372
for arc in data['arcs']:
363-
x,y = 0,0
373+
x, y = 0, 0
364374
for dx, dy in arc:
365375
x += dx
366376
y += dy
@@ -370,16 +380,21 @@ def _get_self_bounds(self):
370380
ymax = none_max(y, ymax)
371381
return [
372382
[
373-
data['transform']['translate'][0] + data['transform']['scale'][0] * xmin,
374-
data['transform']['translate'][1] + data['transform']['scale'][1] * ymin,
383+
data['transform']['translate'][0] +
384+
data['transform']['scale'][0] * xmin,
385+
data['transform']['translate'][1] +
386+
data['transform']['scale'][1] * ymin,
375387
],
376388
[
377-
data['transform']['translate'][0] + data['transform']['scale'][0] * xmax,
378-
data['transform']['translate'][1] + data['transform']['scale'][1] * ymax,
389+
data['transform']['translate'][0] +
390+
data['transform']['scale'][0] * xmax,
391+
data['transform']['translate'][1] +
392+
data['transform']['scale'][1] * ymax,
379393
]
380394

381395
]
382396

397+
383398
class ColorScale(MacroElement):
384399
def __init__(self, color_domain, color_code, caption=""):
385400
"""
@@ -409,6 +424,7 @@ def render(self, **kwargs):
409424
JavascriptLink("https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js"), # noqa
410425
name='d3')
411426

427+
412428
class MarkerCluster(Layer):
413429
"""Adds a MarkerCluster layer on the map."""
414430
def __init__(self, overlay=True, control=True):
@@ -533,6 +549,7 @@ def __init__(self, location, radius=500, color='black',
533549
{% endmacro %}
534550
""")
535551

552+
536553
class LatLngPopup(MacroElement):
537554
def __init__(self):
538555
"""
@@ -651,6 +668,7 @@ def _get_self_bounds(self):
651668
]
652669
return bounds
653670

671+
654672
class MultiPolyLine(MacroElement):
655673
def __init__(self, locations, color=None, weight=None,
656674
opacity=None, latlon=True, popup=None):
@@ -697,6 +715,7 @@ def __init__(self, locations, color=None, weight=None,
697715
{{this._parent.get_name()}}.addLayer({{this.get_name()}});
698716
{% endmacro %}
699717
""") # noqa
718+
700719
def _get_self_bounds(self):
701720
"""Computes the bounds of the object itself (not including it's children)
702721
in the form [[lat_min, lon_min], [lat_max, lon_max]]
@@ -715,6 +734,7 @@ def _get_self_bounds(self):
715734
]
716735
return bounds
717736

737+
718738
class CustomIcon(Icon):
719739
def __init__(self, icon_image, icon_size=None, icon_anchor=None,
720740
shadow_image=None, shadow_size=None, shadow_anchor=None,

0 commit comments

Comments
 (0)