diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index 9bdb40a2..72e57cb6 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -59,26 +59,32 @@ The basic workflow for contributing is:
    ```
    git checkout -b name-of-your-branch
    ```
-4. Install the dependencies listed in `requirements.txt` and `requirements-dev.txt`.
+4. Install the [miniconda](https://docs.conda.io/en/latest/miniconda.html) to avoid any external library errors.
+
+   If using `conda` one can create a development environment with:
+   ```
+   $ conda create --name FOLIUM python=3.7 --file requirements.txt --file requirements-dev.txt
+   ```
+5. Install the dependencies listed in `requirements.txt` and `requirements-dev.txt`.
    ```
    pip install -r requirements.txt
    pip install -r requirements-dev.txt
    ```
-5. Install Firefox, download [geckodriver](https://github.com/mozilla/geckodriver/releases) 
+6. Install Firefox, download [geckodriver](https://github.com/mozilla/geckodriver/releases) 
    and put it in the PATH.
-6. Make changes to your local copy of the folium repository
-7. Make sure the tests pass:
-   * in the repository folder do `pip install -e .`  (needed for notebook tests)
+7. Make changes to your local copy of the folium repository
+8. Make sure the tests pass:
+   * in the repository folder do `pip install -e . --no-deps`  (needed for notebook tests)
    * run `python -m pytest tests`
    * run `flake8 folium --max-line-length=120`
    * resolve all errors
-8. Commit those changes
+9. Commit those changes
    ```
    git add file1 file2 file3
    git commit -m 'a descriptive commit message'
    ```
-9. Push your updated branch to your fork
+10. Push your updated branch to your fork
    ```
    git push origin name-of-your-branch
    ```
-10. [Open a pull request](https://help.github.com/articles/creating-a-pull-request/) to the python-visualization/folium
+11. [Open a pull request](https://help.github.com/articles/creating-a-pull-request/) to the python-visualization/folium
diff --git a/.travis.yml b/.travis.yml
index 5515218e..069545b2 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -25,11 +25,15 @@ matrix:
     env: PY=3.7
   - name: docs
     env: PY=3.7
+  - name: "tarball"
+    env: PY=3.7
   allow_failures:
   - name: latest-branca
     env: PY=3.7
   - name: linkcheck
     env: PY=3.7
+  - name: notebooks-conding-standard
+    env: PY=3.7
 
 before_install:
   # Install miniconda and create TEST env.
@@ -54,9 +58,15 @@ before_install:
 
 # Test source distribution.
 install:
-  - python setup.py sdist && version=$(python setup.py --version) && pushd dist  && pip install --no-deps --force-reinstall folium-${version}.tar.gz && popd
+  - pip install -e . --no-deps --force-reinstall
 
 script:
+  - if [[ $TRAVIS_JOB_NAME == 'tarball' ]]; then
+      pip wheel . -w dist --no-deps ;
+      check-manifest --verbose ;
+      twine check dist/* ;
+    fi
+
   - if [[ $TRAVIS_JOB_NAME != 'docs' ]]; then
       cp -r tests/ examples/ /tmp ;
     fi
diff --git a/examples/Plugins.ipynb b/examples/Plugins.ipynb
index e683dfc2..76a74bd6 100644
--- a/examples/Plugins.ipynb
+++ b/examples/Plugins.ipynb
@@ -793,9 +793,6 @@
     "\n",
     "plugins.LocateControl().add_to(m)\n",
     "\n",
-    "# If used with Draw plugin, LocateControl needs to be added before it.\n",
-    "# Draw().add_to(m)\n",
-    "\n",
     "m"
    ]
   }
diff --git a/folium/features.py b/folium/features.py
index 94cb5206..48399899 100644
--- a/folium/features.py
+++ b/folium/features.py
@@ -1109,7 +1109,7 @@ class Choropleth(FeatureGroup):
 
             def color_scale_fun(x):
                 key_of_x = get_by_key(x, key_on)
-                if not key_of_x:
+                if key_of_x is None:
                     raise ValueError("key_on `{!r}` not found in GeoJSON.".format(key_on))
 
                 if key_of_x not in color_data.keys():
@@ -1212,7 +1212,7 @@ class DivIcon(MacroElement):
         self.options = parse_options(
             html=html,
             icon_size=icon_size,
-            icon_ancher=icon_anchor,
+            icon_anchor=icon_anchor,
             popup_anchor=popup_anchor,
             class_name=class_name,
         )
diff --git a/folium/map.py b/folium/map.py
index 1856b7bf..88b528e9 100644
--- a/folium/map.py
+++ b/folium/map.py
@@ -211,7 +211,7 @@ class Icon(MacroElement):
                      'green', 'darkgreen', 'lightgreen',
                      'blue', 'darkblue', 'cadetblue', 'lightblue',
                      'purple',  'darkpurple', 'pink',
-                     'white', 'gray', 'lightgray' 'black'}
+                     'white', 'gray', 'lightgray', 'black'}
 
     def __init__(self, color='blue', icon_color='white', icon='info-sign',
                  angle=0, prefix='glyphicon', **kwargs):
diff --git a/folium/plugins/draw.py b/folium/plugins/draw.py
index 3007ef0f..2b5e9218 100644
--- a/folium/plugins/draw.py
+++ b/folium/plugins/draw.py
@@ -44,8 +44,8 @@ class Draw(MacroElement):
         {% macro script(this, kwargs) %}
             var options = {
               position: {{ this.position|tojson }},
-              draw: {{ this.draw_options }},
-              edit: {{ this.edit_options }},
+              draw: {{ this.draw_options|tojson }},
+              edit: {{ this.edit_options|tojson }},
             }
             // FeatureGroup is to store editable layers.
             var drawnItems = new L.featureGroup().addTo(
@@ -68,6 +68,7 @@ class Draw(MacroElement):
             {{ this._parent.get_name() }}.on('draw:created', function(e) {
                 drawnItems.addLayer(e.layer);
             });
+            {% if this.export %}
             document.getElementById('export').onclick = function(e) {
                 var data = drawnItems.toGeoJSON();
                 var convertedData = 'text/json;charset=utf-8,'
@@ -79,6 +80,7 @@ class Draw(MacroElement):
                     'download', {{ this.filename|tojson }}
                 );
             }
+            {% endif %}
         {% endmacro %}
         """)
 
diff --git a/folium/plugins/locate_control.py b/folium/plugins/locate_control.py
index 9dbb9236..8bfc77d5 100644
--- a/folium/plugins/locate_control.py
+++ b/folium/plugins/locate_control.py
@@ -18,9 +18,6 @@ class LocateControl(MacroElement):
     To work properly in production, the connection needs to be encrypted, otherwise browser will not
     allow users to share their location.
 
-    WARNING: This plugin when used with Draw plugin, it must be added to your map before Draw. See
-    example below.
-
     Parameters
     ----------
     **kwargs
@@ -32,14 +29,12 @@ class LocateControl(MacroElement):
     # With default settings
     >>> LocateControl().add_to(m)
 
-    # With custom options and alongside with Draw
+    # With some custom options
     >>> LocateControl(
     ...     position="bottomright",
     ...     strings={"title": "See you current location",
     ...              "popup": "Your position"}).add_to(m))
 
-    >>> Draw(export=True).add_to(m)
-
     For more info check:
     https://github.com/domoritz/leaflet-locatecontrol
 
diff --git a/requirements-dev.txt b/requirements-dev.txt
index 1687f6db..e4dc3d76 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -1,5 +1,6 @@
 altair
 cartopy
+check-manifest
 descartes
 flake8
 flake8-builtins
@@ -29,5 +30,6 @@ scipy
 selenium
 sphinx
 twine
+wheel
 vega_datasets
 vincent
diff --git a/setup.cfg b/setup.cfg
index 379a84d4..1cf13d09 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -23,3 +23,12 @@ license_file = LICENSE.txt
 
 [bdist_wheel]
 universal = 1
+
+[check-manifest]
+ignore = 
+    *.yml
+    docs
+    docs/*
+    *.enc
+    tests
+    tests/*

ValueError raised when `key_of_x` = 0
This line:
https://github.com/python-visualization/folium/blob/f05f3ce9b3d71f87a0738f3c8c1236b933e497a9/folium/features.py#L1112
Provokes this `ValueError` to be raised, not only when `key_of_x` is `None` but also when `key_of_x == 0` (which I think is a perfectly valid value for a key):
https://github.com/python-visualization/folium/blob/f05f3ce9b3d71f87a0738f3c8c1236b933e497a9/folium/features.py#L1113
Shouldn't this line be `if key_of_x is None:`?
diff --git a/tests/geo_grid.json b/tests/geo_grid.json
new file mode 100644
index 00000000..6ecb8905
--- /dev/null
+++ b/tests/geo_grid.json
@@ -0,0 +1,8 @@
+{"type": "FeatureCollection", "features": [
+{"id": "0", "type": "Feature", "properties": {"idx": 0}, "geometry": {"type": "Polygon", "coordinates": [[[479978.6866107661, 6676603.690234357], [491978.6866107661, 6676603.690234357], [491978.6866107661, 6664603.690234357], [479978.6866107661, 6664603.690234357], [479978.6866107661, 6676603.690234357]]]}}, 
+{"id": "1", "type": "Feature", "properties": {"idx": 1}, "geometry": {"type": "Polygon", "coordinates": [[[479978.6866107661, 6664603.690234357], [491978.6866107661, 6664603.690234357], [491978.6866107661, 6652603.690234357], [479978.6866107661, 6652603.690234357], [479978.6866107661, 6664603.690234357]]]}}, 
+{"id": "2", "type": "Feature", "properties": {"idx": 2}, "geometry": {"type": "Polygon", "coordinates": [[[479978.6866107661, 6652603.690234357], [491978.6866107661, 6652603.690234357], [491978.6866107661, 6640603.690234357], [479978.6866107661, 6640603.690234357], [479978.6866107661, 6652603.690234357]]]}}, 
+{"id": "3", "type": "Feature", "properties": {"idx": 3}, "geometry": {"type": "Polygon", "coordinates": [[[491978.6866107661, 6676603.690234357], [503978.6866107661, 6676603.690234357], [503978.6866107661, 6664603.690234357], [491978.6866107661, 6664603.690234357], [491978.6866107661, 6676603.690234357]]]}}, 
+{"id": "4", "type": "Feature", "properties": {"idx": 4}, "geometry": {"type": "Polygon", "coordinates": [[[491978.6866107661, 6664603.690234357], [503978.6866107661, 6664603.690234357], [503978.6866107661, 6652603.690234357], [491978.6866107661, 6652603.690234357], [491978.6866107661, 6664603.690234357]]]}}, 
+{"id": "5", "type": "Feature", "properties": {"idx": 5}, "geometry": {"type": "Polygon", "coordinates": [[[491978.6866107661, 6652603.690234357], [503978.6866107661, 6652603.690234357], [503978.6866107661, 6640603.690234357], [491978.6866107661, 6640603.690234357], [491978.6866107661, 6652603.690234357]]]}}
+]}
\ No newline at end of file
diff --git a/tests/test_folium.py b/tests/test_folium.py
index baab9b04..26a81819 100644
--- a/tests/test_folium.py
+++ b/tests/test_folium.py
@@ -230,6 +230,26 @@ class TestFolium(object):
         assert '"fillColor":"a_random_color","fillOpacity":0.123454321' in out_str
         assert '"fillOpacity":0.543212345' in out_str
 
+    def test_choropleth_key_on(self):
+        """Test to make sure that Choropleth function doesn't raises
+        a ValueError when the 'key_on' field is set to a column that might
+        have 0 as a value.
+        """
+        with open(os.path.join(rootpath, 'geo_grid.json')) as f:
+            geo_data = json.load(f)
+        data = pd.DataFrame({'idx': {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5},
+                             'value': {'0': 78.0, '1': 39.0, '2': 0.0, '3': 81.0, '4': 42.0, '5': 68.0}})
+        fill_color = 'BuPu'
+        columns = ['idx', 'value']
+        key_on = 'feature.properties.idx'
+
+        Choropleth(
+            geo_data=geo_data,
+            data=data,
+            key_on=key_on,
+            fill_color=fill_color,
+            columns=columns)
+
     def test_choropleth_warning(self):
         """Test that the Map.choropleth method works and raises a warning."""
         self.setup()
diff --git a/tests/test_map.py b/tests/test_map.py
index c4a6d917..042f68ca 100644
--- a/tests/test_map.py
+++ b/tests/test_map.py
@@ -92,6 +92,7 @@ def test_popup_show():
 
 
 def test_icon_valid_marker_colors():
+    assert len(Icon.color_options) == 19
     with pytest.warns(None) as record:
         for color in Icon.color_options:
             Icon(color=color)
diff --git a/tests/test_repr.py b/tests/test_repr.py
index 51f4eb2f..ed58b78e 100644
--- a/tests/test_repr.py
+++ b/tests/test_repr.py
@@ -48,11 +48,13 @@ def test__repr_png_no_image(m):
     assert png is None
 
 
+@pytest.mark.xfail
 def test__repr_png_is_bytes(m_png):
     png = m_png._repr_png_()
     assert isinstance(png, bytes)
 
 
+@pytest.mark.xfail
 @pytest.mark.skipif(sys.version_info < (3, 0),
                     reason="Doesn't work on Python 2.7.")
 def test_valid_png(m_png):

environment.yml
pip install -e .[dev]
parse_log_pytest
environment.yml
pytest pytest-cov pytest-xdist pytest-mock pytest-asyncio
3.9
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
altair @ file:///home/conda/feedstock_root/build_artifacts/altair-split_1734244716962/work
asttokens @ file:///home/conda/feedstock_root/build_artifacts/asttokens_1733250440834/work
attrs @ file:///home/conda/feedstock_root/build_artifacts/attrs_1741918516150/work
branca @ file:///home/conda/feedstock_root/build_artifacts/branca_1734433375112/work
Brotli @ file:///home/conda/feedstock_root/build_artifacts/brotli-split_1725267488082/work
Cartopy @ file:///home/conda/feedstock_root/build_artifacts/cartopy_1726175364746/work
certifi @ file:///home/conda/feedstock_root/build_artifacts/certifi_1739515848642/work/certifi
cffi @ file:///home/conda/feedstock_root/build_artifacts/cffi_1725571112467/work
charset-normalizer @ file:///home/conda/feedstock_root/build_artifacts/charset-normalizer_1735929714516/work
click @ file:///home/conda/feedstock_root/build_artifacts/click_1734858813237/work
click-plugins @ file:///home/conda/feedstock_root/build_artifacts/click-plugins_1733731077999/work
cligj @ file:///home/conda/feedstock_root/build_artifacts/cligj_1733749956636/work
contourpy @ file:///home/conda/feedstock_root/build_artifacts/contourpy_1727293517607/work
coverage==7.8.0
cycler @ file:///home/conda/feedstock_root/build_artifacts/cycler_1733332471406/work
dataclasses @ file:///home/conda/feedstock_root/build_artifacts/dataclasses_1628958434797/work
decorator @ file:///home/conda/feedstock_root/build_artifacts/decorator_1740384970518/work
exceptiongroup @ file:///home/conda/feedstock_root/build_artifacts/exceptiongroup_1733208806608/work
execnet==2.1.1
executing @ file:///home/conda/feedstock_root/build_artifacts/executing_1733569351617/work
fiona @ file:///home/conda/feedstock_root/build_artifacts/fiona_1733507410958/work
-e git+https://github.com/python-visualization/folium.git@f05f3ce9b3d71f87a0738f3c8c1236b933e497a9#egg=folium
fonttools @ file:///home/conda/feedstock_root/build_artifacts/fonttools_1738940303262/work
geographiclib @ file:///home/conda/feedstock_root/build_artifacts/geographiclib_1734342349249/work
geopandas @ file:///home/conda/feedstock_root/build_artifacts/geopandas_1734346029138/work
gpxpy @ file:///home/conda/feedstock_root/build_artifacts/gpxpy_1734959612265/work
h2 @ file:///home/conda/feedstock_root/build_artifacts/h2_1738578511449/work
hpack @ file:///home/conda/feedstock_root/build_artifacts/hpack_1737618293087/work
hyperframe @ file:///home/conda/feedstock_root/build_artifacts/hyperframe_1737618333194/work
idna @ file:///home/conda/feedstock_root/build_artifacts/idna_1733211830134/work
importlib_metadata @ file:///home/conda/feedstock_root/build_artifacts/importlib-metadata_1737420181517/work
importlib_resources @ file:///home/conda/feedstock_root/build_artifacts/importlib_resources_1736252299705/work
iniconfig==2.1.0
ipython @ file:///home/conda/feedstock_root/build_artifacts/ipython_1701831663892/work
jedi @ file:///home/conda/feedstock_root/build_artifacts/jedi_1733300866624/work
Jinja2 @ file:///home/conda/feedstock_root/build_artifacts/jinja2_1741263328855/work
joblib @ file:///home/conda/feedstock_root/build_artifacts/joblib_1733736026804/work
jsonschema @ file:///home/conda/feedstock_root/build_artifacts/jsonschema_1733472696581/work
jsonschema-specifications @ file:///tmp/tmpk0f344m9/src
kiwisolver @ file:///home/conda/feedstock_root/build_artifacts/kiwisolver_1725459266648/work
lxml @ file:///home/conda/feedstock_root/build_artifacts/lxml_1739211551675/work
mapclassify @ file:///home/conda/feedstock_root/build_artifacts/mapclassify_1733731066416/work
MarkupSafe @ file:///home/conda/feedstock_root/build_artifacts/markupsafe_1733219680183/work
matplotlib==3.9.4
matplotlib-inline @ file:///home/conda/feedstock_root/build_artifacts/matplotlib-inline_1733416936468/work
mplleaflet @ file:///home/conda/feedstock_root/build_artifacts/mplleaflet_1736257130740/work
munkres==1.1.4
narwhals @ file:///home/conda/feedstock_root/build_artifacts/narwhals_1742841036354/work
networkx @ file:///home/conda/feedstock_root/build_artifacts/networkx_1698504735452/work
numpy @ file:///home/conda/feedstock_root/build_artifacts/numpy_1732314280888/work/dist/numpy-2.0.2-cp39-cp39-linux_x86_64.whl#sha256=62d98eb3da9f13e6b227c430d01026b7427f341b3fdcb838430f2a9e520417b1
OWSLib @ file:///home/conda/feedstock_root/build_artifacts/owslib_1715612110326/work
packaging @ file:///home/conda/feedstock_root/build_artifacts/packaging_1733203243479/work
pandas @ file:///home/conda/feedstock_root/build_artifacts/pandas_1736810577256/work
parso @ file:///home/conda/feedstock_root/build_artifacts/parso_1733271261340/work
pexpect @ file:///home/conda/feedstock_root/build_artifacts/pexpect_1733301927746/work
pickleshare @ file:///home/conda/feedstock_root/build_artifacts/pickleshare_1733327343728/work
pillow @ file:///home/conda/feedstock_root/build_artifacts/pillow_1735929703139/work
pkgutil_resolve_name @ file:///home/conda/feedstock_root/build_artifacts/pkgutil-resolve-name_1733344503739/work
pluggy==1.5.0
prompt_toolkit @ file:///home/conda/feedstock_root/build_artifacts/prompt-toolkit_1737453357274/work
ptyprocess @ file:///home/conda/feedstock_root/build_artifacts/ptyprocess_1733302279685/work/dist/ptyprocess-0.7.0-py2.py3-none-any.whl#sha256=92c32ff62b5fd8cf325bec5ab90d7be3d2a8ca8c8a3813ff487a8d2002630d1f
pure_eval @ file:///home/conda/feedstock_root/build_artifacts/pure_eval_1733569405015/work
pycparser @ file:///home/conda/feedstock_root/build_artifacts/bld/rattler-build_pycparser_1733195786/work
Pygments @ file:///home/conda/feedstock_root/build_artifacts/pygments_1736243443484/work
pyogrio @ file:///home/conda/feedstock_root/build_artifacts/pyogrio_1732013374897/work
pyparsing @ file:///home/conda/feedstock_root/build_artifacts/pyparsing_1743089729650/work
pyproj @ file:///home/conda/feedstock_root/build_artifacts/pyproj_1726679693937/work
pyshp @ file:///home/conda/feedstock_root/build_artifacts/pyshp_1733821528126/work
PySide6==6.8.3
PySocks @ file:///home/conda/feedstock_root/build_artifacts/pysocks_1733217236728/work
pytest==8.3.5
pytest-asyncio==0.26.0
pytest-cov==6.0.0
pytest-mock==3.14.0
pytest-xdist==3.6.1
python-dateutil @ file:///home/conda/feedstock_root/build_artifacts/python-dateutil_1733215673016/work
pytz @ file:///home/conda/feedstock_root/build_artifacts/pytz_1706886791323/work
PyYAML @ file:///home/conda/feedstock_root/build_artifacts/pyyaml_1737454647378/work
referencing @ file:///home/conda/feedstock_root/build_artifacts/bld/rattler-build_referencing_1737836872/work
requests @ file:///home/conda/feedstock_root/build_artifacts/requests_1733217035951/work
rpds-py @ file:///home/conda/feedstock_root/build_artifacts/bld/rattler-build_rpds-py_1743037693/work
scikit-learn @ file:///home/conda/feedstock_root/build_artifacts/scikit-learn_1736496755362/work/dist/scikit_learn-1.6.1-cp39-cp39-linux_x86_64.whl#sha256=e8f978e37bb47e04e1337a63f75697b723d6d25f58e477734555faed033884ba
scipy @ file:///home/conda/feedstock_root/build_artifacts/scipy-split_1716470218293/work/dist/scipy-1.13.1-cp39-cp39-linux_x86_64.whl#sha256=e6696cb8683d94467891b7648e068a3970f6bc0a1b3c1aa7f9bc89458eafd2f0
shapely @ file:///home/conda/feedstock_root/build_artifacts/shapely_1741166945909/work
shiboken6==6.8.3
six @ file:///home/conda/feedstock_root/build_artifacts/six_1733380938961/work
stack_data @ file:///home/conda/feedstock_root/build_artifacts/stack_data_1733569443808/work
threadpoolctl @ file:///home/conda/feedstock_root/build_artifacts/threadpoolctl_1741878222898/work
tomli==2.2.1
tornado @ file:///home/conda/feedstock_root/build_artifacts/tornado_1732615921868/work
traitlets @ file:///home/conda/feedstock_root/build_artifacts/traitlets_1733367359838/work
typing_extensions @ file:///home/conda/feedstock_root/build_artifacts/bld/rattler-build_typing_extensions_1743201626/work
tzdata @ file:///home/conda/feedstock_root/build_artifacts/python-tzdata_1742745135198/work
unicodedata2 @ file:///home/conda/feedstock_root/build_artifacts/unicodedata2_1736692503055/work
urllib3 @ file:///home/conda/feedstock_root/build_artifacts/urllib3_1734859416348/work
vincent==0.4.4
wcwidth @ file:///home/conda/feedstock_root/build_artifacts/wcwidth_1733231326287/work
xyzservices @ file:///home/conda/feedstock_root/build_artifacts/xyzservices_1737234886776/work
zipp @ file:///home/conda/feedstock_root/build_artifacts/zipp_1732827521216/work
zstandard==0.23.0

name: folium
channels:
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=conda_forge
  - _openmp_mutex=4.5=2_gnu
  - alsa-lib=1.2.13=hb9d3cd8_0
  - altair=5.5.0=pyhd8ed1ab_1
  - aom=3.9.1=hac33072_0
  - asttokens=3.0.0=pyhd8ed1ab_1
  - attrs=25.3.0=pyh71513ae_0
  - blosc=1.21.6=he440d0b_1
  - branca=0.8.1=pyhd8ed1ab_0
  - brotli=1.1.0=hb9d3cd8_2
  - brotli-bin=1.1.0=hb9d3cd8_2
  - brotli-python=1.1.0=py39hf88036b_2
  - bzip2=1.0.8=h4bc722e_7
  - c-ares=1.34.4=hb9d3cd8_0
  - ca-certificates=2025.1.31=hbcca054_0
  - cairo=1.18.4=h3394656_0
  - cartopy=0.23.0=py39h3b40f6f_2
  - certifi=2025.1.31=pyhd8ed1ab_0
  - cffi=1.17.1=py39h15c3d72_0
  - charset-normalizer=3.4.1=pyhd8ed1ab_0
  - click=8.1.8=pyh707e725_0
  - click-plugins=1.1.1=pyhd8ed1ab_1
  - cligj=0.7.2=pyhd8ed1ab_2
  - contourpy=1.3.0=py39h74842e3_2
  - cycler=0.12.1=pyhd8ed1ab_1
  - cyrus-sasl=2.1.27=h54b06d7_7
  - dataclasses=0.8=pyhc8e2a94_3
  - dav1d=1.2.1=hd590300_0
  - dbus=1.13.6=h5008d03_3
  - decorator=5.2.1=pyhd8ed1ab_0
  - double-conversion=3.3.1=h5888daf_0
  - exceptiongroup=1.2.2=pyhd8ed1ab_1
  - executing=2.1.0=pyhd8ed1ab_1
  - expat=2.6.4=h5888daf_0
  - fiona=1.10.1=py39h4bd6204_3
  - font-ttf-dejavu-sans-mono=2.37=hab24e00_0
  - font-ttf-inconsolata=3.000=h77eed37_0
  - font-ttf-source-code-pro=2.038=h77eed37_0
  - font-ttf-ubuntu=0.83=h77eed37_3
  - fontconfig=2.15.0=h7e30c49_1
  - fonts-conda-ecosystem=1=0
  - fonts-conda-forge=1=0
  - fonttools=4.56.0=py39h9399b63_0
  - freetype=2.13.3=h48d6fc4_0
  - freexl=2.0.0=h9dce30a_2
  - geographiclib=2.0=pyhd8ed1ab_1
  - geopandas=1.0.1=pyhd8ed1ab_3
  - geopandas-base=1.0.1=pyha770c72_3
  - geos=3.13.1=h97f6797_0
  - geotiff=1.7.4=h3551947_0
  - giflib=5.2.2=hd590300_0
  - gpxpy=1.6.2=pyhd8ed1ab_1
  - graphite2=1.3.13=h59595ed_1003
  - h2=4.2.0=pyhd8ed1ab_0
  - harfbuzz=11.0.0=h76408a6_0
  - hpack=4.1.0=pyhd8ed1ab_0
  - hyperframe=6.1.0=pyhd8ed1ab_0
  - icu=75.1=he02047a_0
  - idna=3.10=pyhd8ed1ab_1
  - importlib-metadata=8.6.1=pyha770c72_0
  - importlib-resources=6.5.2=pyhd8ed1ab_0
  - importlib_resources=6.5.2=pyhd8ed1ab_0
  - ipython=8.18.1=pyh707e725_3
  - jedi=0.19.2=pyhd8ed1ab_1
  - jinja2=3.1.6=pyhd8ed1ab_0
  - joblib=1.4.2=pyhd8ed1ab_1
  - json-c=0.18=h6688a6e_0
  - jsonschema=4.23.0=pyhd8ed1ab_1
  - jsonschema-specifications=2024.10.1=pyhd8ed1ab_1
  - keyutils=1.6.1=h166bdaf_0
  - kiwisolver=1.4.7=py39h74842e3_0
  - krb5=1.21.3=h659f571_0
  - lcms2=2.17=h717163a_0
  - ld_impl_linux-64=2.43=h712a8e2_4
  - lerc=4.0.0=h27087fc_0
  - libarchive=3.7.7=h4585015_3
  - libavif16=1.2.1=hbb36593_2
  - libblas=3.9.0=31_h59b9bed_openblas
  - libbrotlicommon=1.1.0=hb9d3cd8_2
  - libbrotlidec=1.1.0=hb9d3cd8_2
  - libbrotlienc=1.1.0=hb9d3cd8_2
  - libcblas=3.9.0=31_he106b2a_openblas
  - libclang-cpp20.1=20.1.1=default_hb5137d0_0
  - libclang13=20.1.1=default_h9c6a7e4_0
  - libcups=2.3.3=h4637d8d_4
  - libcurl=8.12.1=h332b0f4_0
  - libde265=1.0.15=h00ab1b0_0
  - libdeflate=1.23=h4ddbbb0_0
  - libdrm=2.4.124=hb9d3cd8_0
  - libedit=3.1.20250104=pl5321h7949ede_0
  - libegl=1.7.0=ha4b6fd6_2
  - libev=4.33=hd590300_2
  - libexpat=2.6.4=h5888daf_0
  - libffi=3.4.6=h2dba641_0
  - libgcc=14.2.0=h767d61c_2
  - libgcc-ng=14.2.0=h69a702a_2
  - libgdal-core=3.10.2=h05269f4_1
  - libgfortran=14.2.0=h69a702a_2
  - libgfortran-ng=14.2.0=h69a702a_2
  - libgfortran5=14.2.0=hf1ad2bd_2
  - libgl=1.7.0=ha4b6fd6_2
  - libglib=2.84.0=h2ff4ddf_0
  - libglvnd=1.7.0=ha4b6fd6_2
  - libglx=1.7.0=ha4b6fd6_2
  - libgomp=14.2.0=h767d61c_2
  - libheif=1.19.7=gpl_hc18d805_100
  - libiconv=1.18=h4ce23a2_1
  - libjpeg-turbo=3.0.0=hd590300_1
  - libkml=1.3.0=hf539b9f_1021
  - liblapack=3.9.0=31_h7ac8fdf_openblas
  - libllvm20=20.1.1=ha7bfdaf_0
  - liblzma=5.6.4=hb9d3cd8_0
  - libnghttp2=1.64.0=h161d5f1_0
  - libnsl=2.0.1=hd590300_0
  - libntlm=1.8=hb9d3cd8_0
  - libopenblas=0.3.29=pthreads_h94d23a6_0
  - libopengl=1.7.0=ha4b6fd6_2
  - libpciaccess=0.18=hd590300_0
  - libpng=1.6.47=h943b412_0
  - libpq=17.4=h27ae623_0
  - librttopo=1.1.0=hd718a1a_18
  - libspatialite=5.1.0=h366e088_13
  - libsqlite=3.49.1=hee588c1_2
  - libssh2=1.11.1=hf672d98_0
  - libstdcxx=14.2.0=h8f9b012_2
  - libstdcxx-ng=14.2.0=h4852527_2
  - libtiff=4.7.0=hd9ff511_3
  - libuuid=2.38.1=h0b41bf4_0
  - libwebp-base=1.5.0=h851e524_0
  - libxcb=1.17.0=h8a09558_0
  - libxcrypt=4.4.36=hd590300_1
  - libxkbcommon=1.8.1=hc4a0caf_0
  - libxml2=2.13.7=h8d12d68_0
  - libxslt=1.1.39=h76b75d6_0
  - libzlib=1.3.1=hb9d3cd8_2
  - lxml=5.3.1=py39ha9b3668_0
  - lz4-c=1.10.0=h5888daf_1
  - lzo=2.10=hd590300_1001
  - mapclassify=2.8.1=pyhd8ed1ab_1
  - markupsafe=3.0.2=py39h9399b63_1
  - matplotlib=3.9.4=py39hf3d152e_0
  - matplotlib-base=3.9.4=py39h16632d1_0
  - matplotlib-inline=0.1.7=pyhd8ed1ab_1
  - minizip=4.0.7=h05a5f5f_3
  - mplleaflet=0.0.5=pyhd8ed1ab_5
  - munkres=1.1.4=pyh9f0ad1d_0
  - mysql-common=9.0.1=h266115a_5
  - mysql-libs=9.0.1=he0572af_5
  - narwhals=1.32.0=pyhd8ed1ab_0
  - ncurses=6.5=h2d0b736_3
  - networkx=3.2.1=pyhd8ed1ab_0
  - numpy=2.0.2=py39h9cb892a_1
  - openjpeg=2.5.3=h5fbd93e_0
  - openldap=2.6.9=he970967_0
  - openssl=3.4.1=h7b32b05_0
  - owslib=0.31.0=pyhd8ed1ab_0
  - packaging=24.2=pyhd8ed1ab_2
  - pandas=2.2.3=py39h3b40f6f_2
  - parso=0.8.4=pyhd8ed1ab_1
  - pcre2=10.44=hba22ea6_2
  - pexpect=4.9.0=pyhd8ed1ab_1
  - pickleshare=0.7.5=pyhd8ed1ab_1004
  - pillow=11.1.0=py39h15c0740_0
  - pip=25.0.1=pyh8b19718_0
  - pixman=0.44.2=h29eaf8c_0
  - pkgutil-resolve-name=1.3.10=pyhd8ed1ab_2
  - proj=9.5.1=h0054346_0
  - prompt-toolkit=3.0.50=pyha770c72_0
  - pthread-stubs=0.4=hb9d3cd8_1002
  - ptyprocess=0.7.0=pyhd8ed1ab_1
  - pure_eval=0.2.3=pyhd8ed1ab_1
  - pycparser=2.22=pyh29332c3_1
  - pygments=2.19.1=pyhd8ed1ab_0
  - pyogrio=0.10.0=py39h4bd6204_1
  - pyparsing=3.2.3=pyhd8ed1ab_1
  - pyproj=3.6.1=py39h306d449_10
  - pyshp=2.3.1=pyhd8ed1ab_1
  - pyside6=6.8.3=py39h0383914_0
  - pysocks=1.7.1=pyha55dd90_7
  - python=3.9.21=h9c0c6dc_1_cpython
  - python-dateutil=2.9.0.post0=pyhff2d567_1
  - python-tzdata=2025.2=pyhd8ed1ab_0
  - python_abi=3.9=5_cp39
  - pytz=2024.1=pyhd8ed1ab_0
  - pyyaml=6.0.2=py39h9399b63_2
  - qhull=2020.2=h434a139_5
  - qt6-main=6.8.3=h6441bc3_1
  - rav1e=0.6.6=he8a937b_2
  - readline=8.2=h8c095d6_2
  - referencing=0.36.2=pyh29332c3_0
  - requests=2.32.3=pyhd8ed1ab_1
  - rpds-py=0.24.0=py39h3506688_0
  - scikit-learn=1.6.1=py39h4b7350c_0
  - scipy=1.13.1=py39haf93ffa_0
  - setuptools=75.8.2=pyhff2d567_0
  - shapely=2.0.7=py39h322cc2b_1
  - six=1.17.0=pyhd8ed1ab_0
  - snappy=1.2.1=h8bd8927_1
  - sqlite=3.49.1=h9eae976_2
  - stack_data=0.6.3=pyhd8ed1ab_1
  - svt-av1=3.0.2=h5888daf_0
  - threadpoolctl=3.6.0=pyhecae5ae_0
  - tk=8.6.13=noxft_h4845f30_101
  - tornado=6.4.2=py39h8cd3c5a_0
  - traitlets=5.14.3=pyhd8ed1ab_1
  - typing-extensions=4.13.0=h9fa5a19_1
  - typing_extensions=4.13.0=pyh29332c3_1
  - tzdata=2025b=h78e105d_0
  - unicodedata2=16.0.0=py39h8cd3c5a_0
  - uriparser=0.9.8=hac33072_0
  - urllib3=2.3.0=pyhd8ed1ab_0
  - vincent=0.4.4=py_1
  - wayland=1.23.1=h3e06ad9_0
  - wcwidth=0.2.13=pyhd8ed1ab_1
  - wheel=0.45.1=pyhd8ed1ab_1
  - x265=3.5=h924138e_3
  - xcb-util=0.4.1=hb711507_2
  - xcb-util-cursor=0.1.5=hb9d3cd8_0
  - xcb-util-image=0.4.0=hb711507_2
  - xcb-util-keysyms=0.4.1=hb711507_0
  - xcb-util-renderutil=0.3.10=hb711507_0
  - xcb-util-wm=0.4.2=hb711507_0
  - xerces-c=3.2.5=h988505b_2
  - xkeyboard-config=2.43=hb9d3cd8_0
  - xorg-libice=1.1.2=hb9d3cd8_0
  - xorg-libsm=1.2.6=he73a12e_0
  - xorg-libx11=1.8.12=h4f16b4b_0
  - xorg-libxau=1.0.12=hb9d3cd8_0
  - xorg-libxcomposite=0.4.6=hb9d3cd8_2
  - xorg-libxcursor=1.2.3=hb9d3cd8_0
  - xorg-libxdamage=1.1.6=hb9d3cd8_0
  - xorg-libxdmcp=1.1.5=hb9d3cd8_0
  - xorg-libxext=1.3.6=hb9d3cd8_0
  - xorg-libxfixes=6.0.1=hb9d3cd8_0
  - xorg-libxi=1.8.2=hb9d3cd8_0
  - xorg-libxrandr=1.5.4=hb9d3cd8_0
  - xorg-libxrender=0.9.12=hb9d3cd8_0
  - xorg-libxtst=1.2.5=hb9d3cd8_3
  - xorg-libxxf86vm=1.1.6=hb9d3cd8_0
  - xyzservices=2025.1.0=pyhd8ed1ab_0
  - yaml=0.2.5=h7f98852_2
  - zipp=3.21.0=pyhd8ed1ab_1
  - zlib=1.3.1=hb9d3cd8_2
  - zstandard=0.23.0=py39h8cd3c5a_1
  - zstd=1.5.7=hb8e6e7a_2
  - pip:
      - coverage==7.8.0
      - execnet==2.1.1
      - iniconfig==2.1.0
      - pluggy==1.5.0
      - pytest==8.3.5
      - pytest-asyncio==0.26.0
      - pytest-cov==6.0.0
      - pytest-mock==3.14.0
      - pytest-xdist==3.6.1
      - tomli==2.2.1
prefix: /opt/conda/envs/folium

tests/test_folium.py::TestFolium::test_choropleth_key_on
tests/test_folium.py::TestFolium::test_init tests/test_folium.py::TestFolium::test_choropleth_features tests/test_folium.py::TestFolium::test_choropleth_warning tests/test_folium.py::TestFolium::test_fit_bounds tests/test_folium.py::TestFolium::test_custom_icon tests/test_map.py::test_icon_valid_marker_colors tests/test_repr.py::test_valid_html
tests/test_folium.py::test_get_templates tests/test_folium.py::test_location_args tests/test_folium.py::TestFolium::test_builtin_tile tests/test_folium.py::TestFolium::test_custom_tile tests/test_folium.py::TestFolium::test_feature_group tests/test_folium.py::TestFolium::test_topo_json_smooth_factor tests/test_folium.py::TestFolium::test_tile_attr_unicode tests/test_folium.py::TestFolium::test_global_switches tests/test_folium.py::TestFolium::test_json_request tests/test_map.py::test_popup_ascii tests/test_map.py::test_popup_quotes tests/test_map.py::test_popup_unicode tests/test_map.py::test_popup_sticky tests/test_map.py::test_popup_show tests/test_map.py::test_custom_pane_show tests/test_map.py::test_icon_invalid_marker_colors tests/test_repr.py::test__repr_html_is_str tests/test_repr.py::test__repr_png_no_image
.github/CONTRIBUTING.md folium/features.py folium/map.py folium/plugins/draw.py examples/Plugins.ipynb .travis.yml setup.cfg folium/plugins/locate_control.py requirements-dev.txt
.github/CONTRIBUTING.md folium/features.py folium/map.py folium/plugins/draw.py examples/Plugins.ipynb .travis.yml setup.cfg folium/plugins/locate_control.py requirements-dev.txt