# Path: folium/features.py
# class RegularPolygonMarker(JSCSSMixin, Marker):
# class Vega(JSCSSMixin, Element):
# class VegaLite(Element):
# class GeoJson(Layer):
# class GeoJsonStyleMapper:
# class TopoJson(JSCSSMixin, Layer):
# class GeoJsonDetail(MacroElement):
# class GeoJsonTooltip(GeoJsonDetail):
# class GeoJsonPopup(GeoJsonDetail):
# class Choropleth(FeatureGroup):
# class DivIcon(MacroElement):
# class LatLngPopup(MacroElement):
# class ClickForMarker(MacroElement):
# class CustomIcon(Icon):
# class ColorLine(FeatureGroup):
#     def __init__(self, location, number_of_sides=4, rotation=0, radius=15,
#                  popup=None, tooltip=None, **kwargs):
#     def __init__(self, data, width=None, height=None,
#                  left='0%', top='0%', position='relative'):
#     def render(self, **kwargs):
#     def __init__(self, data, width=None, height=None,
#                  left='0%', top='0%', position='relative'):
#     def render(self, **kwargs):
#     def _get_vegalite_major_versions(self, spec):
#     def _embed_vegalite_v3(self, figure):
#     def _embed_vegalite_v2(self, figure):
#     def _vega_embed(self):
#     def _embed_vegalite_v1(self, figure):
#     def __init__(self, data, style_function=None, highlight_function=None,  # noqa
#                  name=None, overlay=True, control=True, show=True,
#                  smooth_factor=None, tooltip=None, embed=True, popup=None,
#                  zoom_on_click=False, marker=None):
#     def process_data(self, data):
#     def get_geojson_from_web(self, url):
#     def convert_to_feature_collection(self):
#     def _validate_function(self, func, name):
#     def find_identifier(self):
#     def _get_self_bounds(self):
#     def render(self, **kwargs):
#     def __init__(self, data, feature_identifier, geojson_obj):
#     def get_style_map(self, style_function):
#     def get_highlight_map(self, highlight_function):
#     def _create_mapping(self, func, switch):
#     def get_feature_id(self, feature):
#     def _to_key(d):
#     def _set_default_key(mapping):
#     def __init__(self, data, object_path, style_function=None,
#                  name=None, overlay=True, control=True, show=True,
#                  smooth_factor=None, tooltip=None):
#             def style_function(x):
#     def style_data(self):
#         def recursive_get(data, keys):
#     def render(self, **kwargs):
#     def get_bounds(self):
#     def __init__(self, fields, aliases=None, labels=True, localize=False, style=None,
#                  class_name="geojsondetail"):
#     def warn_for_geometry_collections(self):
#     def render(self, **kwargs):
#     def __init__(self, fields, aliases=None, labels=True, localize=False,
#                  style=None, class_name='foliumtooltip', sticky=True, **kwargs):
#     def __init__(self, fields=None, aliases=None, labels=True,
#                  style="margin: auto;", class_name='foliumpopup', localize=True,
#                  **kwargs):
#     def __init__(self, geo_data, data=None, columns=None, key_on=None,  # noqa
#                  bins=6, fill_color=None, nan_fill_color='black',
#                  fill_opacity=0.6, nan_fill_opacity=None, line_color='black',
#                  line_weight=1, line_opacity=1, name=None, legend_name='',
#                  overlay=True, control=True, show=True,
#                  topojson=None, smooth_factor=None, highlight=None,
#                  **kwargs):
#             def get_by_key(obj, key):
#             def color_scale_fun(x):
#             def color_scale_fun(x):
#         def style_function(x):
#         def highlight_function(x):
#     def render(self, **kwargs):
#     def __init__(self, html=None, icon_size=None, icon_anchor=None,
#                  popup_anchor=None, class_name='empty'):
#     def __init__(self):
#     def __init__(self, popup=None):
#     def __init__(self, icon_image, icon_size=None, icon_anchor=None,
#                  shadow_image=None, shadow_size=None, shadow_anchor=None,
#                  popup_anchor=None):
#     def __init__(self, positions, colors, colormap=None, nb_steps=12,
#                  weight=None, opacity=None, **kwargs):


from folium.elements import JSCSSMixin
from folium.features import MacroElement
from folium.utilities import parse_options
from jinja2 import Template
    Parameters
    ----------
    polyline: folium.features.PolyLine object
        The folium.features.PolyLine object to attach the text to.
    text: string
        The string to be attached to the polyline.
    repeat: bool, default False
        Specifies if the text should be repeated along the polyline.
    center: bool, default False
        Centers the text according to the polyline's bounding box
    below: bool, default False
        Show text below the path
    offset: int, default 0
        Set an offset to position text relative to the polyline.
    orientation: int, default 0
        Rotate text to a specified angle.
    attributes: dict
        Object containing the attributes applied to the text tag.
        Check valid attributes here:
        https://developer.mozilla.org/en-US/docs/Web/SVG/Element/text#Attributes
        Example: {'fill': '#007DEF', 'font-weight': 'bold', 'font-size': '24'}

    See https://github.com/makinacorpus/Leaflet.TextPath for more information.

    """
    _template = Template(u"""
        {% macro script(this, kwargs) %}
            {{ this.polyline.get_name() }}.setText(
                {{ this.text|tojson }},
                {{ this.options|tojson }}

# Path: folium/features.py
# class RegularPolygonMarker(JSCSSMixin, Marker):
# class Vega(JSCSSMixin, Element):
# class VegaLite(Element):
# class GeoJson(Layer):
# class GeoJsonStyleMapper:
# class TopoJson(JSCSSMixin, Layer):
# class GeoJsonDetail(MacroElement):
# class GeoJsonTooltip(GeoJsonDetail):
# class GeoJsonPopup(GeoJsonDetail):
# class Choropleth(FeatureGroup):
# class DivIcon(MacroElement):
# class LatLngPopup(MacroElement):
# class ClickForMarker(MacroElement):
# class CustomIcon(Icon):
# class ColorLine(FeatureGroup):
#     def __init__(self, location, number_of_sides=4, rotation=0, radius=15,
#                  popup=None, tooltip=None, **kwargs):
#     def __init__(self, data, width=None, height=None,
#                  left='0%', top='0%', position='relative'):
#     def render(self, **kwargs):
#     def __init__(self, data, width=None, height=None,
#                  left='0%', top='0%', position='relative'):
#     def render(self, **kwargs):
#     def _get_vegalite_major_versions(self, spec):
#     def _embed_vegalite_v3(self, figure):
#     def _embed_vegalite_v2(self, figure):
#     def _vega_embed(self):
#     def _embed_vegalite_v1(self, figure):
#     def __init__(self, data, style_function=None, highlight_function=None,  # noqa
#                  name=None, overlay=True, control=True, show=True,
#                  smooth_factor=None, tooltip=None, embed=True, popup=None,
#                  zoom_on_click=False, marker=None):
#     def process_data(self, data):
#     def get_geojson_from_web(self, url):
#     def convert_to_feature_collection(self):
#     def _validate_function(self, func, name):
#     def find_identifier(self):
#     def _get_self_bounds(self):
#     def render(self, **kwargs):
#     def __init__(self, data, feature_identifier, geojson_obj):
#     def get_style_map(self, style_function):
#     def get_highlight_map(self, highlight_function):
#     def _create_mapping(self, func, switch):
#     def get_feature_id(self, feature):
#     def _to_key(d):
#     def _set_default_key(mapping):
#     def __init__(self, data, object_path, style_function=None,
#                  name=None, overlay=True, control=True, show=True,
#                  smooth_factor=None, tooltip=None):
#             def style_function(x):
#     def style_data(self):
#         def recursive_get(data, keys):
#     def render(self, **kwargs):
#     def get_bounds(self):
#     def __init__(self, fields, aliases=None, labels=True, localize=False, style=None,
#                  class_name="geojsondetail"):
#     def warn_for_geometry_collections(self):
#     def render(self, **kwargs):
#     def __init__(self, fields, aliases=None, labels=True, localize=False,
#                  style=None, class_name='foliumtooltip', sticky=True, **kwargs):
#     def __init__(self, fields=None, aliases=None, labels=True,
#                  style="margin: auto;", class_name='foliumpopup', localize=True,
#                  **kwargs):
#     def __init__(self, geo_data, data=None, columns=None, key_on=None,  # noqa
#                  bins=6, fill_color=None, nan_fill_color='black',
#                  fill_opacity=0.6, nan_fill_opacity=None, line_color='black',
#                  line_weight=1, line_opacity=1, name=None, legend_name='',
#                  overlay=True, control=True, show=True,
#                  topojson=None, smooth_factor=None, highlight=None,
#                  **kwargs):
#             def get_by_key(obj, key):
#             def color_scale_fun(x):
#             def color_scale_fun(x):
#         def style_function(x):
#         def highlight_function(x):
#     def render(self, **kwargs):
#     def __init__(self, html=None, icon_size=None, icon_anchor=None,
#                  popup_anchor=None, class_name='empty'):
#     def __init__(self):
#     def __init__(self, popup=None):
#     def __init__(self, icon_image, icon_size=None, icon_anchor=None,
#                  shadow_image=None, shadow_size=None, shadow_anchor=None,
#                  popup_anchor=None):
#     def __init__(self, positions, colors, colormap=None, nb_steps=12,
#                  weight=None, opacity=None, **kwargs):


# Path: folium/plugins/polyline_text_path.py
from folium.elements import JSCSSMixin
from folium.features import MacroElement
from folium.utilities import parse_options
from jinja2 import Template

    Parameters
    ----------
    polyline: folium.features.PolyLine object
        The folium.features.PolyLine object to attach the text to.
    text: string
        The string to be attached to the polyline.
    repeat: bool, default False
        Specifies if the text should be repeated along the polyline.
    center: bool, default False
        Centers the text according to the polyline's bounding box
    below: bool, default False
        Show text below the path
    offset: int, default 0
        Set an offset to position text relative to the polyline.
    orientation: int, default 0
        Rotate text to a specified angle.
    attributes: dict
        Object containing the attributes applied to the text tag.
        Check valid attributes here:
        https://developer.mozilla.org/en-US/docs/Web/SVG/Element/text#Attributes
        Example: {'fill': '#007DEF', 'font-weight': 'bold', 'font-size': '24'}

    See https://github.com/makinacorpus/Leaflet.TextPath for more information.

    """
    _template = Template(u"""
        {% macro script(this, kwargs) %}
            {{ this.polyline.get_name() }}.setText(
                {{ this.text|tojson }},
                {{ this.options|tojson }}

            );