diff --git a/docs/posts/ibis-duckdb-geospatial/index.qmd b/docs/posts/ibis-duckdb-geospatial/index.qmd index 6271eb7b4df7..debf9df5fb1d 100644 --- a/docs/posts/ibis-duckdb-geospatial/index.qmd +++ b/docs/posts/ibis-duckdb-geospatial/index.qmd @@ -164,20 +164,29 @@ streets_gdf.crs = "EPSG:26918" ``` ```{python} -import leafmap.deckgl as leafmap # <1> +from lonboard import Map, ScatterplotLayer, PathLayer, PolygonLayer ``` -1. `leafmap.deckgl` allows us to visualize multiple layers - ```{python} -m = leafmap.Map() - -m.add_vector(broad_station_gdf, get_fill_color="blue") -m.add_vector(sts_near_broad_gdf, get_color="red", opacity=0.5) -m.add_vector(streets_gdf, get_color="grey", zoom_to_layer=False, opacity=0.3) +broad_station_layer = ScatterplotLayer.from_geopandas( + broad_station_gdf, get_fill_color="blue", get_radius=5 +) +sts_near_broad_layer = PathLayer.from_geopandas( + sts_near_broad_gdf, get_color="red", opacity=0.4, get_width=2 +) +streets_layer = PathLayer.from_geopandas(streets_gdf, get_color="grey", opacity=0.3) +m = Map( + [ + broad_station_layer, + sts_near_broad_layer, + streets_layer, + ], + view_state={"longitude": -74.01066, "latitude": 40.7069, "zoom": 16} +) m ``` + You can zoom in and out, and hover over the map to check on the street names. ### `buffer` (ST_Buffer) @@ -234,15 +243,38 @@ h_near_broad_gdf.crs = "EPSG:26918" h_street_gdf = h_street.to_pandas() h_street_gdf.crs = "EPSG:26918" +``` -mh = leafmap.Map() -mh.add_vector(broad_station_gdf, get_fill_color="orange") -mh.add_vector(broad_station_zone, get_fill_color="orange", opacity=0.1) -mh.add_vector(h_near_broad_gdf, get_fill_color="red", opacity=0.5) -mh.add_vector(h_street_gdf, get_color="blue", opacity=0.3) -mh.add_vector(streets_gdf, get_color="grey", zoom_to_layer=False, opacity=0.2) - +```{python} +broad_station_layer = ScatterplotLayer.from_geopandas( + broad_station_gdf, get_fill_color="orange", get_radius=5 +) + +broad_station_zone_layer = PolygonLayer.from_geopandas( + broad_station_zone, get_fill_color="orange", opacity=0.1 +) + +h_near_broad_layer = ScatterplotLayer.from_geopandas( + h_near_broad_gdf, get_fill_color="red", get_radius=5 +) + +h_street_layer = PathLayer.from_geopandas( + h_street_gdf, get_color="blue", opacity=0.5, get_width=2 +) + +streets_layer = PathLayer.from_geopandas(streets_gdf, get_color="grey", opacity=0.3) + +mh = Map( + [ + broad_station_layer, + broad_station_zone_layer, + h_near_broad_layer, + h_street_layer, + streets_layer, + ], + view_state={"longitude": -74.01066, "latitude": 40.7069, "zoom": 16} +) mh ``` diff --git a/poetry.lock b/poetry.lock index 8b495d65d0de..006a902e679f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. [[package]] name = "aiohttp" @@ -170,13 +170,13 @@ trio = ["trio (>=0.23)"] [[package]] name = "anywidget" -version = "0.7.1" +version = "0.9.11" description = "custom jupyter widgets made easy" optional = false python-versions = ">=3.7" files = [ - {file = "anywidget-0.7.1-py3-none-any.whl", hash = "sha256:17828c6e255a7066c960636cbda045d55b08c996a2fc4e886e4c8507db6e9407"}, - {file = "anywidget-0.7.1.tar.gz", hash = "sha256:1c4cb51063f8ec5172b8c8efb1bfb79861d340c3491220d56b8c2a6aa8db3b3d"}, + {file = "anywidget-0.9.11-py3-none-any.whl", hash = "sha256:b5dfaed080cab0fd6bca0f444bae0717336d8d55cee09713856ec44b39bf2c7a"}, + {file = "anywidget-0.9.11.tar.gz", hash = "sha256:58dded8e86ec27ce28760c9457317663113d9af608947ee6a8d0ecb528b22cdc"}, ] [package.dependencies] @@ -186,7 +186,7 @@ typing-extensions = ">=4.2.0" [package.extras] dev = ["comm (>=0.1.0)", "watchfiles (>=0.18.0)"] -test = ["black[jupyter]", "ipython (<8.13)", "msgspec", "pydantic", "pytest", "pytest-cov", "ruff"] +test = ["ipython (<8.13)", "msgspec", "mypy (==1.10.0)", "pydantic", "pytest", "pytest-cov", "ruff"] [[package]] name = "appdirs" @@ -629,38 +629,6 @@ webencodings = "*" [package.extras] css = ["tinycss2 (>=1.1.0,<1.3)"] -[[package]] -name = "bqplot" -version = "0.12.43" -description = "Interactive plotting for the Jupyter notebook, using d3.js and ipywidgets." -optional = false -python-versions = ">=3.6" -files = [ - {file = "bqplot-0.12.43-py2.py3-none-any.whl", hash = "sha256:65aa2f10bf2e4b500e628d5c1b876e6d2cdc2b82883200e4b1bb65edc17d111b"}, - {file = "bqplot-0.12.43.tar.gz", hash = "sha256:f2b469d1f03df4f51873cb0406a24b56cdf4a835fc5aa9560776fc636b8b3449"}, -] - -[package.dependencies] -ipywidgets = ">=7.5.0,<9" -numpy = ">=1.10.4" -pandas = ">=1.0.0,<3.0.0" -traitlets = ">=4.3.0" -traittypes = ">=0.0.6" - -[[package]] -name = "branca" -version = "0.7.2" -description = "Generate complex HTML+JS pages with Python" -optional = false -python-versions = ">=3.7" -files = [ - {file = "branca-0.7.2-py3-none-any.whl", hash = "sha256:853a359c34d08fd06498be762d8be9932750db4049cac11e25dd6f23562e25c2"}, - {file = "branca-0.7.2.tar.gz", hash = "sha256:ca4c94643ef31b819987ca5bd19c6009ea17b440baa3aac04628545f7a4da023"}, -] - -[package.dependencies] -jinja2 = ">=3" - [[package]] name = "build" version = "1.2.1" @@ -1113,20 +1081,6 @@ files = [ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -[[package]] -name = "colour" -version = "0.1.5" -description = "converts and manipulates various color representation (HSL, RVB, web, X11, ...)" -optional = false -python-versions = "*" -files = [ - {file = "colour-0.1.5-py2.py3-none-any.whl", hash = "sha256:33f6db9d564fadc16e59921a56999b79571160ce09916303d35346dddc17978c"}, - {file = "colour-0.1.5.tar.gz", hash = "sha256:af20120fefd2afede8b001fbef2ea9da70ad7d49fafdb6489025dae8745c3aee"}, -] - -[package.extras] -test = ["nose"] - [[package]] name = "comm" version = "0.2.2" @@ -1529,7 +1483,7 @@ toml = ["tomli"] name = "duckdb" version = "1.0.0" description = "DuckDB in-process database" -optional = false +optional = true python-versions = ">=3.7.0" files = [ {file = "duckdb-1.0.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:4a8ce2d1f9e1c23b9bab3ae4ca7997e9822e21563ff8f646992663f66d050211"}, @@ -1800,27 +1754,6 @@ calc = ["shapely"] s3 = ["boto3 (>=1.3.1)"] test = ["fiona[s3]", "pytest (>=7)", "pytest-cov", "pytz"] -[[package]] -name = "folium" -version = "0.16.0" -description = "Make beautiful maps with Leaflet.js & Python" -optional = false -python-versions = ">=3.7" -files = [ - {file = "folium-0.16.0-py2.py3-none-any.whl", hash = "sha256:ba72505db18bef995c880da19457d2b10c931db8059af5f6ccec9310d262b584"}, - {file = "folium-0.16.0.tar.gz", hash = "sha256:2585ee9253dc758d3a365534caa6fb5fa0c244646db4dc5819afc67bbd4daabb"}, -] - -[package.dependencies] -branca = ">=0.6.0" -jinja2 = ">=2.9" -numpy = "*" -requests = "*" -xyzservices = "*" - -[package.extras] -testing = ["pytest"] - [[package]] name = "fonttools" version = "4.53.0" @@ -2046,37 +1979,6 @@ requests = "*" crc = ["crcmod"] gcsfuse = ["fusepy"] -[[package]] -name = "gdown" -version = "5.2.0" -description = "Google Drive Public File/Folder Downloader" -optional = false -python-versions = ">=3.8" -files = [ - {file = "gdown-5.2.0-py3-none-any.whl", hash = "sha256:33083832d82b1101bdd0e9df3edd0fbc0e1c5f14c9d8c38d2a35bf1683b526d6"}, - {file = "gdown-5.2.0.tar.gz", hash = "sha256:2145165062d85520a3cd98b356c9ed522c5e7984d408535409fd46f94defc787"}, -] - -[package.dependencies] -beautifulsoup4 = "*" -filelock = "*" -requests = {version = "*", extras = ["socks"]} -tqdm = "*" - -[package.extras] -test = ["build", "mypy", "pytest", "pytest-xdist", "ruff", "twine", "types-requests", "types-setuptools"] - -[[package]] -name = "geojson" -version = "3.1.0" -description = "Python bindings and utilities for GeoJSON" -optional = false -python-versions = ">=3.7" -files = [ - {file = "geojson-3.1.0-py3-none-any.whl", hash = "sha256:68a9771827237adb8c0c71f8527509c8f5bef61733aa434cefc9c9d4f0ebe8f3"}, - {file = "geojson-3.1.0.tar.gz", hash = "sha256:58a7fa40727ea058efc28b0e9ff0099eadf6d0965e04690830208d3ef571adac"}, -] - [[package]] name = "geopandas" version = "0.14.4" @@ -2758,38 +2660,6 @@ files = [ {file = "installer-0.7.0.tar.gz", hash = "sha256:a26d3e3116289bb08216e0d0f7d925fcef0b0194eedfa0c944bcaaa106c4b631"}, ] -[[package]] -name = "ipyevents" -version = "2.0.2" -description = "A custom widget for returning mouse and keyboard events to Python" -optional = false -python-versions = ">=3.6" -files = [ - {file = "ipyevents-2.0.2-py3-none-any.whl", hash = "sha256:60c2a9e992bdc41e8577aa27e57b124efafa48a59a3bff886029fe5700d546b3"}, - {file = "ipyevents-2.0.2.tar.gz", hash = "sha256:26e878b0c5854bc8b6bd6a2bd2c89b314ebe86fda642f4d2434051545bab258f"}, -] - -[package.dependencies] -ipywidgets = ">=7.6.0" - -[package.extras] -docs = ["jupyterlab (>=3)", "nbsphinx", "sphinx"] -test = ["nbval", "pytest", "pytest-cov"] - -[[package]] -name = "ipyfilechooser" -version = "0.6.0" -description = "Python file chooser widget for use in Jupyter/IPython in conjunction with ipywidgets" -optional = false -python-versions = "*" -files = [ - {file = "ipyfilechooser-0.6.0-py3-none-any.whl", hash = "sha256:4555c24b30b819c91dc0ae5e6f7e4cf8f90e5cca531a9209a1fe4deee288d5c5"}, - {file = "ipyfilechooser-0.6.0.tar.gz", hash = "sha256:41df9e4395a924f8e1b78e2804dbe5066dc3fdc233fb07fecfcdc2a0c9a7d8d3"}, -] - -[package.dependencies] -ipywidgets = "*" - [[package]] name = "ipykernel" version = "6.29.4" @@ -2823,24 +2693,6 @@ pyqt5 = ["pyqt5"] pyside6 = ["pyside6"] test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.23.5)", "pytest-cov", "pytest-timeout"] -[[package]] -name = "ipyleaflet" -version = "0.19.1" -description = "A Jupyter widget for dynamic Leaflet maps" -optional = false -python-versions = ">=3.8" -files = [ - {file = "ipyleaflet-0.19.1-py3-none-any.whl", hash = "sha256:ffb90f67576c22c85438490bb32af1f30de88993bfb5dc167503e3a278252139"}, - {file = "ipyleaflet-0.19.1.tar.gz", hash = "sha256:3454dbc0d360150516ea2a3ab4109503ceb9b7347fa1746a6cafd889075a0ff8"}, -] - -[package.dependencies] -branca = ">=0.5.0" -ipywidgets = ">=7.6.0,<9" -jupyter-leaflet = ">=0.19,<0.20" -traittypes = ">=0.2.1,<3" -xyzservices = ">=2021.8.1" - [[package]] name = "ipython" version = "8.25.0" @@ -2879,20 +2731,6 @@ qtconsole = ["qtconsole"] test = ["pickleshare", "pytest", "pytest-asyncio (<0.22)", "testpath"] test-extra = ["curio", "ipython[test]", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.23)", "pandas", "trio"] -[[package]] -name = "ipytree" -version = "0.2.2" -description = "A Tree Widget using jsTree" -optional = false -python-versions = "*" -files = [ - {file = "ipytree-0.2.2-py2.py3-none-any.whl", hash = "sha256:744dc1a02c3ec26df8a5ecd87d085a67dc8232a1def6048834403ddcf3b64143"}, - {file = "ipytree-0.2.2.tar.gz", hash = "sha256:d53d739bbaaa45415733cd06e0dc420a2af3d173438617db472a517bc7a61e56"}, -] - -[package.dependencies] -ipywidgets = ">=7.5.0,<9" - [[package]] name = "ipywidgets" version = "8.1.3" @@ -3190,17 +3028,6 @@ cli = ["click", "rich"] docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme", "sphinxcontrib-spelling"] test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"] -[[package]] -name = "jupyter-leaflet" -version = "0.19.1" -description = "ipyleaflet extensions for JupyterLab and Jupyter Notebook" -optional = false -python-versions = ">=3.8" -files = [ - {file = "jupyter_leaflet-0.19.1-py3-none-any.whl", hash = "sha256:8001a7304e9262394b8f896003539438467bed712bb9330dd65785bd9a5f8add"}, - {file = "jupyter_leaflet-0.19.1.tar.gz", hash = "sha256:f4c1ab7a8b2c91d01a0940d1bab6543c57e91dca6425789632780eef7d58b266"}, -] - [[package]] name = "jupyter-lsp" version = "2.2.5" @@ -3543,50 +3370,6 @@ files = [ {file = "kiwisolver-1.4.5.tar.gz", hash = "sha256:e57e563a57fb22a142da34f38acc2fc1a5c864bc29ca1517a88abc963e60d6ec"}, ] -[[package]] -name = "leafmap" -version = "0.30.1" -description = "A Python package for geospatial analysis and interactive mapping in a Jupyter environment." -optional = false -python-versions = ">=3.8" -files = [ - {file = "leafmap-0.30.1-py2.py3-none-any.whl", hash = "sha256:18223679b47d436cebde1d51aa96061de5f033f0da6eb27681325dafdda74eb5"}, - {file = "leafmap-0.30.1.tar.gz", hash = "sha256:980caf9ebbb45c2ead56a73531c5204824154d349186e6e8fec5ae69d4035d9c"}, -] - -[package.dependencies] -bqplot = "*" -colour = "*" -duckdb = "*" -folium = "*" -gdown = "*" -geojson = "*" -ipyevents = "*" -ipyfilechooser = "*" -ipyleaflet = "*" -ipywidgets = "*" -matplotlib = "*" -numpy = "*" -pandas = "*" -plotly = "*" -pyshp = "*" -pystac-client = "*" -python-box = "*" -scooby = "*" -whiteboxgui = "*" -xyzservices = "*" - -[package.extras] -ai = ["geopandas", "localtileserver", "osmnx", "pytorch-lightning", "rastervision"] -all = ["PyYAML (==6.0.1)", "black", "black[jupyter]", "bokeh", "boto3", "codespell", "cogeo-mosaic", "deadlink", "earthaccess", "ffmpeg-python", "geopandas", "googledrivedownloader", "gradio", "h5py", "ipygany", "ipysheet", "ipyvtklink", "jupyter-bokeh", "jupyterlab (>=3.0.0)", "keplergl", "laspy", "localtileserver", "lonboard", "mapclassify (>=2.4.0)", "mss", "netcdf4", "osmnx", "owslib", "palettable", "panel", "plotly", "pmtiles", "psycopg2", "pycrs", "pydeck", "pyntcloud[las]", "pyvista-xarray", "rasterio", "rasterstats", "rio-cogeo", "rioxarray", "sqlalchemy", "streamlit-folium", "xarray-leaflet"] -apps = ["solara", "streamlit-folium", "voila"] -backends = ["bokeh", "keplergl", "plotly", "pydeck"] -lidar = ["ipygany", "ipyvtklink", "laspy", "panel", "pyntcloud[las]", "pyvista"] -pmtiles = ["flask", "flask-cors", "pmtiles"] -raster = ["jupyter-server-proxy", "localtileserver", "netcdf4", "py3dep", "pynhd", "rio-cogeo", "rioxarray"] -sql = ["psycopg2", "sqlalchemy"] -vector = ["flask", "flask-cors", "geopandas", "lonboard", "mapclassify", "osmnx", "pmtiles"] - [[package]] name = "locket" version = "1.0.0" @@ -3600,23 +3383,27 @@ files = [ [[package]] name = "lonboard" -version = "0.4.0" +version = "0.9.1" description = "Python library for fast, interactive geospatial vector data visualization in Jupyter." optional = false -python-versions = ">=3.8,<4.0" +python-versions = "<4.0,>=3.8" files = [ - {file = "lonboard-0.4.0-py3-none-any.whl", hash = "sha256:2c521805c05db4c8efdbd7cb19174d3f5e1c43723b7c6db358b2f158d96e671f"}, - {file = "lonboard-0.4.0.tar.gz", hash = "sha256:c60ccaa5ac06ad2fdad88e146cc2206389d59e0dd4d53bd6de8bab26cae81e7c"}, + {file = "lonboard-0.9.1-py3-none-any.whl", hash = "sha256:df2a9cee9b1210520e0b705e310f87cc60f4f7f2df5a880ea437aac9b3f2fa64"}, + {file = "lonboard-0.9.1.tar.gz", hash = "sha256:e3b6c0056b936fcf9c0952086997812c1d5235ba4551fa4f984ee20beab9c94f"}, ] [package.dependencies] -anywidget = ">=0.7.1,<0.8.0" +anywidget = ">=0.9.0,<0.10.0" geopandas = ">=0.13" matplotlib = ">=3.7,<4.0" palettable = ">=3.3.3,<4.0.0" pandas = ">=2,<3" pyarrow = ">=14.0.1" shapely = ">=2,<3" +typing-extensions = {version = ">=4.6.0,<5.0.0", markers = "python_version < \"3.12\""} + +[package.extras] +cli = ["click (>=8.1.7,<9.0.0)", "pyogrio (>=0.7.2,<0.8.0)"] [[package]] name = "lz4" @@ -3949,6 +3736,7 @@ files = [ {file = "msgpack-1.0.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5fbb160554e319f7b22ecf530a80a3ff496d38e8e07ae763b9e82fadfe96f273"}, {file = "msgpack-1.0.8-cp39-cp39-win32.whl", hash = "sha256:f9af38a89b6a5c04b7d18c492c8ccf2aee7048aff1ce8437c4683bb5a1df893d"}, {file = "msgpack-1.0.8-cp39-cp39-win_amd64.whl", hash = "sha256:ed59dd52075f8fc91da6053b12e8c89e37aa043f8986efd89e61fae69dc1b011"}, + {file = "msgpack-1.0.8-py3-none-any.whl", hash = "sha256:24f727df1e20b9876fa6e95f840a2a2651e34c0ad147676356f4bf5fbb0206ca"}, {file = "msgpack-1.0.8.tar.gz", hash = "sha256:95c02b0e27e706e48d0e5426d1710ca78e0f0628d6e89d5b5a5b91a5f12274f3"}, ] @@ -5602,29 +5390,6 @@ files = [ {file = "pyproject_hooks-1.1.0.tar.gz", hash = "sha256:4b37730834edbd6bd37f26ece6b44802fb1c1ee2ece0e54ddff8bfc06db86965"}, ] -[[package]] -name = "pyshp" -version = "2.3.1" -description = "Pure Python read/write support for ESRI Shapefile format" -optional = false -python-versions = ">=2.7" -files = [ - {file = "pyshp-2.3.1-py2.py3-none-any.whl", hash = "sha256:67024c0ccdc352ba5db777c4e968483782dfa78f8e200672a90d2d30fd8b7b49"}, - {file = "pyshp-2.3.1.tar.gz", hash = "sha256:4caec82fd8dd096feba8217858068bacb2a3b5950f43c048c6dc32a3489d5af1"}, -] - -[[package]] -name = "pysocks" -version = "1.7.1" -description = "A Python SOCKS client module. See https://github.com/Anorov/PySocks for more information." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "PySocks-1.7.1-py27-none-any.whl", hash = "sha256:08e69f092cc6dbe92a0fdd16eeb9b9ffbc13cadfe5ca4c7bd92ffb078b293299"}, - {file = "PySocks-1.7.1-py3-none-any.whl", hash = "sha256:2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5"}, - {file = "PySocks-1.7.1.tar.gz", hash = "sha256:3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0"}, -] - [[package]] name = "pyspark" version = "3.5.1" @@ -5645,49 +5410,6 @@ mllib = ["numpy (>=1.15)"] pandas-on-spark = ["numpy (>=1.15)", "pandas (>=1.0.5)", "pyarrow (>=4.0.0)"] sql = ["numpy (>=1.15)", "pandas (>=1.0.5)", "pyarrow (>=4.0.0)"] -[[package]] -name = "pystac" -version = "1.10.1" -description = "Python library for working with the SpatioTemporal Asset Catalog (STAC) specification" -optional = false -python-versions = ">=3.9" -files = [ - {file = "pystac-1.10.1-py3-none-any.whl", hash = "sha256:a7c31b3dacc44dfc955d9da8c7351c7b5b99100254b36301a1e312709b51bf2f"}, - {file = "pystac-1.10.1.tar.gz", hash = "sha256:4617fe5315a79785f79b616b8ac248ba3d4d561457c8300b34573309715808cd"}, -] - -[package.dependencies] -jsonschema = {version = ">=4.18,<5.0", optional = true, markers = "extra == \"validation\""} -python-dateutil = ">=2.7.0" - -[package.extras] -bench = ["asv (>=0.6.0,<0.7.0)", "packaging (>=24.0,<25.0)", "virtualenv (>=20.22,<21.0)"] -docs = ["Sphinx (>=6.2,<7.0)", "boto3 (>=1.28,<2.0)", "ipython (>=8.12,<9.0)", "jinja2 (<4.0)", "jupyter (>=1.0,<2.0)", "nbsphinx (>=0.9.0,<0.10.0)", "pydata-sphinx-theme (>=0.13,<1.0)", "rasterio (>=1.3,<2.0)", "shapely (>=2.0,<3.0)", "sphinx-autobuild (==2024.2.4)", "sphinx-design (>=0.5.0,<0.6.0)", "sphinxcontrib-fulltoc (>=1.2,<2.0)"] -jinja2 = ["jinja2 (<4.0)"] -orjson = ["orjson (>=3.5)"] -test = ["black (>=24.0,<25.0)", "codespell (>=2.2,<3.0)", "coverage (>=7.2,<8.0)", "doc8 (>=1.1,<2.0)", "html5lib (>=1.1,<2.0)", "jinja2 (<4.0)", "jsonschema (>=4.18,<5.0)", "mypy (>=1.2,<2.0)", "orjson (>=3.8,<4.0)", "pre-commit (>=3.2,<4.0)", "pytest (>=8.0,<9.0)", "pytest-cov (>=5.0,<6.0)", "pytest-mock (>=3.10,<4.0)", "pytest-recording (>=0.13.0,<0.14.0)", "requests-mock (>=1.11,<2.0)", "ruff (==0.3.4)", "types-html5lib (>=1.1,<2.0)", "types-jsonschema (>=4.18,<5.0)", "types-orjson (>=3.6,<4.0)", "types-python-dateutil (>=2.8,<3.0)", "types-urllib3 (>=1.26,<2.0)"] -urllib3 = ["urllib3 (>=1.26)"] -validation = ["jsonschema (>=4.18,<5.0)"] - -[[package]] -name = "pystac-client" -version = "0.8.2" -description = "Python library for working with SpatioTemporal Asset Catalog (STAC) APIs." -optional = false -python-versions = ">=3.9" -files = [ - {file = "pystac_client-0.8.2-py3-none-any.whl", hash = "sha256:9cb85e10107f5a971e2ac7fc05d046b7a2a3f31dc68bf898024d4bcaec2b01db"}, -] - -[package.dependencies] -pystac = {version = ">=1.10.0", extras = ["validation"]} -python-dateutil = ">=2.8.2" -requests = ">=2.28.2" - -[package.extras] -dev = ["black (>=24.0,<25.0)", "codespell (>=2.3.0,<2.4.0)", "coverage (>=7.2,<8.0)", "doc8 (>=1.1.1,<1.2.0)", "importlib-metadata (>=7.0,<8.0)", "mypy (>=1.2,<2.0)", "orjson (>=3.8,<4.0)", "pre-commit (>=3.2,<4.0)", "pytest (>=8.0,<9.0)", "pytest-benchmark (>=4.0.0,<4.1.0)", "pytest-console-scripts (>=1.4.0,<1.5.0)", "pytest-cov (>=5.0,<6.0)", "pytest-recording (>=0.13,<1.0)", "recommonmark (>=0.7.1,<0.8.0)", "requests-mock (>=1.12,<2.0)", "ruff (==0.4.6)", "tomli (>=2.0,<3.0)", "types-python-dateutil (>=2.8.19,<2.10.0)", "types-requests (>=2.31.0,<2.32.0)", "urllib3 (<2)"] -docs = ["Sphinx (>=7.3,<8.0)", "boto3 (>=1.26,<2.0)", "cartopy (>=0.21,<1.0)", "geojson (>=3.1.0,<3.2.0)", "geopandas (>=0.14.0,<0.15.0)", "geoviews (>=1.9,<2.0)", "hvplot (>=0.10.0,<0.11.0)", "ipykernel (>=6.22,<7.0)", "ipython (>=8.12,<9.0)", "jinja2 (<4.0)", "matplotlib (>=3.8,<4.0)", "myst-parser (>=3.0,<4.0)", "nbsphinx (>=0.9,<1.0)", "pydata-sphinx-theme (>=0.13,<1.0)", "pygeoif (>=1.0,<2.0)", "scipy (>=1.10,<2.0)", "sphinxcontrib-fulltoc (>=1.2,<2.0)"] - [[package]] name = "pytest" version = "8.2.2" @@ -5870,38 +5592,6 @@ psutil = ["psutil (>=3.0)"] setproctitle = ["setproctitle"] testing = ["filelock"] -[[package]] -name = "python-box" -version = "7.1.1" -description = "Advanced Python dictionaries with dot notation access" -optional = false -python-versions = ">=3.8" -files = [ - {file = "python-box-7.1.1.tar.gz", hash = "sha256:2a3df244a5a79ac8f8447b5d11b5be0f2747d7b141cb2866060081ae9b53cc50"}, - {file = "python_box-7.1.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:81ed1ec0f0ff2370227fc07277c5baca46d190a4747631bad7eb6ab1630fb7d9"}, - {file = "python_box-7.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8891735b4148e84d348c6eadd2f127152f751c9603e35d43a1f496183a291ac4"}, - {file = "python_box-7.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:0036fd47d388deaca8ebd65aea905f88ee6ef91d1d8ce34898b66f1824afbe80"}, - {file = "python_box-7.1.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:aabf8b9ae5dbc8ba431d8cbe0d4cfe737a25d52d68b0f5f2ff34915c21a2c1db"}, - {file = "python_box-7.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c046608337e723ae4de3206db5d1e1202ed166da2dfdc70c1f9361e72ace5633"}, - {file = "python_box-7.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:f9266795e9c233874fb5b34fa994054b4fb0371881678e6ec45aec17fc95feac"}, - {file = "python_box-7.1.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:f76b5b7f0cdc07bfdd4200dc24e6e33189bb2ae322137a2b7110fd41891a3157"}, - {file = "python_box-7.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ea13c98e05a3ec0ff26f254986a17290b69b5ade209fad081fd628f8fcfaa08"}, - {file = "python_box-7.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:1b3f346e332dba16df0b0543d319d9e7ce07d93e5ae152175302894352aa2d28"}, - {file = "python_box-7.1.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:24c4ec0ee0278f66321100aaa9c615413da27a14ff43d376a2a3b4665e1d9494"}, - {file = "python_box-7.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d95e5eec4fc8f3fc5c9cc7347fc2eb4f9187c853d34c90b1658d1eff96cd4eac"}, - {file = "python_box-7.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:a0f1333c42e81529b6f68c192050df9d4505b803be7ac47f114036b98707f7cf"}, - {file = "python_box-7.1.1-py3-none-any.whl", hash = "sha256:63b609555554d7a9d4b6e725f8e78ef1717c67e7d386200e03422ad612338df8"}, -] - -[package.extras] -all = ["msgpack", "ruamel.yaml (>=0.17)", "toml"] -msgpack = ["msgpack"] -pyyaml = ["PyYAML"] -ruamel-yaml = ["ruamel.yaml (>=0.17)"] -toml = ["toml"] -tomli = ["tomli", "tomli-w"] -yaml = ["ruamel.yaml (>=0.17)"] - [[package]] name = "python-dateutil" version = "2.9.0.post0" @@ -6012,7 +5702,6 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, @@ -6397,7 +6086,6 @@ files = [ certifi = ">=2017.4.17" charset-normalizer = ">=2,<4" idna = ">=2.5,<4" -PySocks = {version = ">=1.5.6,<1.5.7 || >1.5.7", optional = true, markers = "extra == \"socks\""} urllib3 = ">=1.21.1,<3" [package.extras] @@ -6714,20 +6402,6 @@ dev = ["cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy", "pycodestyle", "pyde doc = ["jupyterlite-pyodide-kernel", "jupyterlite-sphinx (>=0.12.0)", "jupytext", "matplotlib (>=3.5)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (>=0.15.2)", "sphinx (>=5.0.0)", "sphinx-design (>=0.4.0)"] test = ["array-api-strict", "asv", "gmpy2", "hypothesis (>=6.30)", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] -[[package]] -name = "scooby" -version = "0.10.0" -description = "A Great Dane turned Python environment detective" -optional = false -python-versions = ">=3.8" -files = [ - {file = "scooby-0.10.0-py3-none-any.whl", hash = "sha256:0a3d7e304f8ebb16f69ff7f6360c345d7f50b45f2ddbf7c3d18a6a0dc2cb03a6"}, - {file = "scooby-0.10.0.tar.gz", hash = "sha256:7ea33c262c0cc6a33c6eeeb5648df787be4f22660e53c114e5fff1b811a8854f"}, -] - -[package.extras] -cpu = ["mkl", "psutil"] - [[package]] name = "seaborn" version = "0.13.2" @@ -7366,23 +7040,6 @@ files = [ docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.2)", "pytest-mock", "pytest-mypy-testing"] -[[package]] -name = "traittypes" -version = "0.2.1" -description = "Scipy trait types" -optional = false -python-versions = "*" -files = [ - {file = "traittypes-0.2.1-py2.py3-none-any.whl", hash = "sha256:1340af133810b6eee1a2eb2e988f862b0d12b6c2d16f282aaf3207b782134c2e"}, - {file = "traittypes-0.2.1.tar.gz", hash = "sha256:be6fa26294733e7489822ded4ae25da5b4824a8a7a0e0c2dccfde596e3489bd6"}, -] - -[package.dependencies] -traitlets = ">=4.2.2" - -[package.extras] -test = ["numpy", "pandas", "pytest", "xarray"] - [[package]] name = "trino" version = "0.328.0" @@ -7633,37 +7290,6 @@ MarkupSafe = ">=2.1.1" [package.extras] watchdog = ["watchdog (>=2.3)"] -[[package]] -name = "whitebox" -version = "2.3.4" -description = "An advanced geospatial data analysis platform" -optional = false -python-versions = "*" -files = [ - {file = "whitebox-2.3.4-py2.py3-none-any.whl", hash = "sha256:4322c5a3b42f1f04a3c80640253b672242e0aefb6b6dea70752f00a220f6d7ed"}, - {file = "whitebox-2.3.4.tar.gz", hash = "sha256:3479c8127b1928dd0457b6680b9ee4469d0735b2bb220178c678af303d868ef0"}, -] - -[package.dependencies] -Click = ">=6.0" - -[[package]] -name = "whiteboxgui" -version = "2.3.0" -description = "An interactive GUI for whitebox-tools in a Jupyter-based environment" -optional = false -python-versions = ">=3.5" -files = [ - {file = "whiteboxgui-2.3.0-py2.py3-none-any.whl", hash = "sha256:f226783efaba1af1cd55f98bba743da590bccf4dd6cbba519f6c879993b57631"}, - {file = "whiteboxgui-2.3.0.tar.gz", hash = "sha256:c59dfccb244bc2d7b9ff77c63a81b77d0e1b4a6fc19476449e450e0da009a754"}, -] - -[package.dependencies] -ipyfilechooser = "*" -ipytree = "*" -ipywidgets = "*" -whitebox = "*" - [[package]] name = "widgetsnbextension" version = "4.0.11" @@ -7865,17 +7491,6 @@ files = [ {file = "xxhash-3.4.1.tar.gz", hash = "sha256:0379d6cf1ff987cd421609a264ce025e74f346e3e145dd106c0cc2e3ec3f99a9"}, ] -[[package]] -name = "xyzservices" -version = "2024.6.0" -description = "Source of XYZ tiles providers" -optional = false -python-versions = ">=3.8" -files = [ - {file = "xyzservices-2024.6.0-py3-none-any.whl", hash = "sha256:fecb2508f0f2b71c819aecf5df2c03cef001c56a4b49302e640f3b34710d25e4"}, - {file = "xyzservices-2024.6.0.tar.gz", hash = "sha256:58c1bdab4257d2551b9ef91cd48571f77b7c4d2bc45bf5e3c05ac97b3a4d7282"}, -] - [[package]] name = "yarl" version = "1.9.4" @@ -8085,4 +7700,4 @@ visualization = ["graphviz"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "3613d324a066d1a405963af828ebbcf31f2f9b34584c42e583aa177bbc39b2f2" +content-hash = "0c0c40f5373ddd48a99af6b3e6df5a0ecea75b063ec555ac384299ba639cd6ad" diff --git a/pyproject.toml b/pyproject.toml index dbfbc56187df..f45bee5c4dba 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -134,8 +134,7 @@ quartodoc = { version = ">=0.6.1,<1", python = ">=3.10,<3.13" } requests = { version = ">=2,<3", python = ">=3.10,<3.13" } scikit-learn = { version = ">=1.3,<2", python = ">=3.10,<3.13" } seaborn = { version = ">=0.12.2,<1", python = ">=3.10,<3.13" } -leafmap = { version = ">=0.29.6,<0.31", python = ">=3.10,<3.13" } -lonboard = { version = "==0.4.0", python = ">=3.10,<3.13" } +lonboard = { version = "0.9.1", python = ">=3.10,<3.13" } jupyter-cache = { version = ">=1.0.0,<2", python = ">=3.10,<3.13" } jupyterlab = { version = ">=4.1.6,<5", python = ">=3.10,<3.13" } jupyterlab-night = { version = ">=0.4.6,<1", python = ">=3.10,<3.13" } diff --git a/requirements-dev.txt b/requirements-dev.txt index 5da00ec684a1..391e13c9a749 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -3,7 +3,7 @@ aiosignal==1.3.1 ; python_version >= "3.10" and python_version < "4.0" altair==5.3.0 ; python_version >= "3.10" and python_version < "3.13" annotated-types==0.7.0 ; python_version >= "3.10" and python_version < "3.13" anyio==4.4.0 ; python_version >= "3.10" and python_version < "3.13" -anywidget==0.7.1 ; python_version >= "3.10" and python_version < "3.13" +anywidget==0.9.11 ; python_version >= "3.10" and python_version < "3.13" appdirs==1.4.4 ; python_version >= "3.10" and python_version < "4.0" appnope==0.1.4 ; python_version >= "3.10" and python_version < "3.13" and platform_system == "Darwin" argon2-cffi-bindings==21.2.0 ; python_version >= "3.10" and python_version < "3.13" @@ -22,8 +22,6 @@ bidict==0.23.1 ; python_version >= "3.10" and python_version < "4.0" bitarray==2.9.2 ; python_version >= "3.10" and python_version < "4.0" black==24.4.2 ; python_version >= "3.10" and python_version < "4.0" bleach==6.1.0 ; python_version >= "3.10" and python_version < "3.13" -bqplot==0.12.43 ; python_version >= "3.10" and python_version < "3.13" -branca==0.7.2 ; python_version >= "3.10" and python_version < "3.13" build==1.2.1 ; python_version >= "3.10" and python_version < "4.0" cachecontrol[filecache]==0.14.0 ; python_version >= "3.10" and python_version < "4.0" cachetools==5.3.3 ; python_version >= "3.10" and python_version < "4.0" @@ -40,7 +38,6 @@ cligj==0.7.2 ; python_version >= "3.10" and python_version < "4" cloudpickle==3.0.0 ; python_version >= "3.10" and python_version < "4.0" codespell[hard-encoding-detection,toml]==2.3.0 ; python_version >= "3.10" and python_version < "4.0" colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" and (sys_platform == "win32" or platform_system == "Windows" or os_name == "nt" or python_version < "3.13") -colour==0.1.5 ; python_version >= "3.10" and python_version < "3.13" comm==0.2.2 ; python_version >= "3.10" and python_version < "3.13" contourpy==1.2.1 ; python_version >= "3.10" and python_version < "3.13" coverage[toml]==7.5.3 ; python_version >= "3.10" and python_version < "4.0" @@ -65,14 +62,11 @@ executing==2.0.1 ; python_version >= "3.10" and python_version < "4.0" fastjsonschema==2.19.1 ; python_version >= "3.10" and python_version < "4.0" filelock==3.14.0 ; python_version >= "3.10" and python_version < "4.0" fiona==1.9.6 ; python_version >= "3.10" and python_version < "4.0" -folium==0.16.0 ; python_version >= "3.10" and python_version < "3.13" fonttools==4.53.0 ; python_version >= "3.10" and python_version < "3.13" fqdn==1.5.1 ; python_version >= "3.10" and python_version < "3.13" frozenlist==1.4.1 ; python_version >= "3.10" and python_version < "4.0" fsspec==2024.6.0 ; python_version >= "3.10" and python_version < "4.0" gcsfs==2024.6.0 ; python_version >= "3.10" and python_version < "4.0" -gdown==5.2.0 ; python_version >= "3.10" and python_version < "3.13" -geojson==3.1.0 ; python_version >= "3.10" and python_version < "3.13" geopandas==0.14.4 ; python_version >= "3.10" and python_version < "4.0" google-api-core==2.19.0 ; python_version >= "3.10" and python_version < "4.0" google-api-core[grpc]==2.19.0 ; python_version >= "3.10" and python_version < "4.0" @@ -102,12 +96,8 @@ importlib-resources==6.4.0 ; python_version >= "3.10" and python_version < "4.0" impyla==0.19.0 ; python_version >= "3.10" and python_version < "4.0" iniconfig==2.0.0 ; python_version >= "3.10" and python_version < "4.0" installer==0.7.0 ; python_version >= "3.10" and python_version < "4.0" -ipyevents==2.0.2 ; python_version >= "3.10" and python_version < "3.13" -ipyfilechooser==0.6.0 ; python_version >= "3.10" and python_version < "3.13" ipykernel==6.29.4 ; python_version >= "3.10" and python_version < "3.13" -ipyleaflet==0.19.1 ; python_version >= "3.10" and python_version < "3.13" ipython==8.25.0 ; python_version >= "3.10" and python_version < "4.0" -ipytree==0.2.2 ; python_version >= "3.10" and python_version < "3.13" ipywidgets==8.1.3 ; python_version >= "3.10" and python_version < "3.13" isoduration==20.11.0 ; python_version >= "3.10" and python_version < "3.13" itables==2.1.1 ; python_version >= "3.10" and python_version < "3.13" @@ -125,7 +115,6 @@ jupyter-cache==1.0.0 ; python_version >= "3.10" and python_version < "3.13" jupyter-client==8.6.2 ; python_version >= "3.10" and python_version < "3.13" jupyter-core==5.7.2 ; python_version >= "3.10" and python_version < "3.13" jupyter-events==0.10.0 ; python_version >= "3.10" and python_version < "3.13" -jupyter-leaflet==0.19.1 ; python_version >= "3.10" and python_version < "3.13" jupyter-lsp==2.2.5 ; python_version >= "3.10" and python_version < "3.13" jupyter-server-terminals==0.5.3 ; python_version >= "3.10" and python_version < "3.13" jupyter-server==2.14.1 ; python_version >= "3.10" and python_version < "3.13" @@ -138,9 +127,8 @@ jupyterlite-core==0.3.0 ; python_version >= "3.10" and python_version < "3.13" jupyterlite-pyodide-kernel==0.3.2 ; python_version >= "3.10" and python_version < "3.13" keyring==24.3.1 ; python_version >= "3.10" and python_version < "4.0" kiwisolver==1.4.5 ; python_version >= "3.10" and python_version < "3.13" -leafmap==0.30.1 ; python_version >= "3.10" and python_version < "3.13" locket==1.0.0 ; python_version >= "3.10" and python_version < "4.0" -lonboard==0.4.0 ; python_version >= "3.10" and python_version < "3.13" +lonboard==0.9.1 ; python_version >= "3.10" and python_version < "3.13" lz4==4.3.3 ; python_version >= "3.10" and python_version < "4.0" markdown-it-py==3.0.0 ; python_version >= "3.10" and python_version < "4.0" markupsafe==2.1.5 ; python_version >= "3.10" and python_version < "4.0" @@ -220,11 +208,7 @@ pyopenssl==24.1.0 ; python_version >= "3.10" and python_version < "4.0" pyparsing==3.1.2 ; python_version >= "3.10" and python_version < "3.13" pyproj==3.6.1 ; python_version >= "3.10" and python_version < "4.0" pyproject-hooks==1.1.0 ; python_version >= "3.10" and python_version < "4.0" -pyshp==2.3.1 ; python_version >= "3.10" and python_version < "3.13" -pysocks==1.7.1 ; python_version >= "3.10" and python_version < "3.13" pyspark==3.5.1 ; python_version >= "3.10" and python_version < "4.0" -pystac-client==0.8.2 ; python_version >= "3.10" and python_version < "3.13" -pystac[validation]==1.10.1 ; python_version >= "3.10" and python_version < "3.13" pytest-benchmark==4.0.0 ; python_version >= "3.10" and python_version < "4.0" pytest-clarity==1.0.1 ; python_version >= "3.10" and python_version < "4.0" pytest-cov==5.0.0 ; python_version >= "3.10" and python_version < "4.0" @@ -236,7 +220,6 @@ pytest-snapshot==0.9.0 ; python_version >= "3.10" and python_version < "4.0" pytest-timeout==2.3.1 ; python_version >= "3.10" and python_version < "4.0" pytest-xdist==3.6.1 ; python_version >= "3.10" and python_version < "4.0" pytest==8.2.2 ; python_version >= "3.10" and python_version < "4.0" -python-box==7.1.1 ; python_version >= "3.10" and python_version < "3.13" python-dateutil==2.9.0.post0 ; python_version >= "3.10" and python_version < "4.0" python-json-logger==2.0.7 ; python_version >= "3.10" and python_version < "3.13" pytz==2024.1 ; python_version >= "3.10" and python_version < "4.0" @@ -252,7 +235,6 @@ regex==2024.5.15 ; python_version >= "3.10" and python_version < "4.0" requests-oauthlib==2.0.0 ; python_version >= "3.10" and python_version < "4.0" requests-toolbelt==1.0.0 ; python_version >= "3.10" and python_version < "4.0" requests==2.32.3 ; python_version >= "3.10" and python_version < "4.0" -requests[socks]==2.32.3 ; python_version >= "3.10" and python_version < "3.13" rfc3339-validator==0.1.4 ; python_version >= "3.10" and python_version < "3.13" rfc3986-validator==0.1.1 ; python_version >= "3.10" and python_version < "3.13" rich==13.7.1 ; python_version >= "3.10" and python_version < "4.0" @@ -261,7 +243,6 @@ rsa==4.9 ; python_version >= "3.10" and python_version < "4" ruff==0.4.8 ; python_version >= "3.10" and python_version < "4.0" scikit-learn==1.5.0 ; python_version >= "3.10" and python_version < "3.13" scipy==1.13.1 ; python_version >= "3.10" and python_version < "3.13" -scooby==0.10.0 ; python_version >= "3.10" and python_version < "3.13" seaborn==0.13.2 ; python_version >= "3.10" and python_version < "3.13" secretstorage==3.3.3 ; python_version >= "3.10" and python_version < "4.0" and sys_platform == "linux" send2trash==1.8.3 ; python_version >= "3.10" and python_version < "3.13" @@ -292,7 +273,6 @@ toolz==0.12.1 ; python_version >= "3.10" and python_version < "4.0" tornado==6.4.1 ; python_version >= "3.10" and python_version < "3.13" tqdm==4.66.4 ; python_version >= "3.10" and python_version < "4.0" traitlets==5.14.3 ; python_version >= "3.10" and python_version < "4.0" -traittypes==0.2.1 ; python_version >= "3.10" and python_version < "3.13" trino==0.328.0 ; python_version >= "3.10" and python_version < "4.0" trove-classifiers==2024.5.22 ; python_version >= "3.10" and python_version < "4.0" types-python-dateutil==2.9.0.20240316 ; python_version >= "3.10" and python_version < "3.13" @@ -308,12 +288,9 @@ webcolors==24.6.0 ; python_version >= "3.10" and python_version < "3.13" webencodings==0.5.1 ; python_version >= "3.10" and python_version < "3.13" websocket-client==1.8.0 ; python_version >= "3.10" and python_version < "4.0" werkzeug==3.0.3 ; python_version >= "3.10" and python_version < "4.0" -whitebox==2.3.4 ; python_version >= "3.10" and python_version < "3.13" -whiteboxgui==2.3.0 ; python_version >= "3.10" and python_version < "3.13" widgetsnbextension==4.0.11 ; python_version >= "3.10" and python_version < "3.13" xattr==1.1.0 ; python_version >= "3.10" and python_version < "4.0" and sys_platform == "darwin" xxhash==3.4.1 ; python_version >= "3.10" and python_version < "4.0" -xyzservices==2024.6.0 ; python_version >= "3.10" and python_version < "3.13" yarl==1.9.4 ; python_version >= "3.10" and python_version < "4.0" zipp==3.19.2 ; python_version >= "3.10" and python_version < "4.0" zstandard==0.22.0 ; python_version >= "3.10" and python_version < "4.0"