diff --git a/docs/getting-started/installation.rst b/docs/getting-started/installation.rst index 5b2caa943..030c3c504 100644 --- a/docs/getting-started/installation.rst +++ b/docs/getting-started/installation.rst @@ -23,8 +23,8 @@ To install UXarray with its recommended dependencies using the conda command lin .. note:: - Conda automatically installs Xarray and every other required - dependency (including non‑Python libraries). + Conda automatically installs Xarray, all other required depdencies, + and all optional dependencies too (including non‑Python libraries). Installing with pip ------------------- @@ -37,11 +37,16 @@ This installs the *minimal* required dependencies. UXarray also provides optiona .. code-block:: bash pip install "uxarray[dev]" # development tools + pip install "uxarray[geo]" # geospatial tools (e.g. geopandas, healpix) + pip install "uxarray[viz]" # plotting tools (e.g. matplotlib, hvplot) pip install "uxarray[complete]" # all optional features -A complete list of extras lives in the ``[project.optional-dependencies]`` +A complete list of optional dependencies lives in the ``[project.optional-dependencies]`` section of our `pyproject.toml `_ +Optional extras can also be combined, e.g. ``pip install "uxarray[geo,viz]"`` installs with +all required dependencies plus all optional dependencies for geospatial and plotting tools. + Installing from source ---------------------- @@ -67,7 +72,7 @@ Installing from source is intended mainly for developers. .. code-block:: bash - pip install . + pip install ".[complete]" # test suite relies on optional dependencies #. **Run the test suite** diff --git a/pyproject.toml b/pyproject.toml index 0596956c6..166ba8657 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,35 +23,45 @@ requires-python = ">=3.10" # minimal dependencies start dependencies = [ "antimeridian", - "cartopy", "dask[dataframe]", - "datashader", - "geoviews", - "holoviews", - "matplotlib<3.11", # matplotlib 3.11.0 breaks some plots but <3.11 is fine; see issue #1542. - "matplotlib-inline", "netcdf4", "numba>=0.63", # 0.63 is the first release supporting Python 3.14 (3.10 <= py < 3.15). See #1561. "numpy", "pandas", - "pyarrow", - "requests", "scikit-learn", "scipy", "shapely", - "spatialpandas", - "geopandas", "xarray", - "hvplot", - "healpix", "polars", - "pyproj" ] # minimal dependencies end [project.optional-dependencies] -complete = ["uxarray[dev]"] -dev = ['pre_commit', 'pytest', 'pytest-cov', 'ruff', 'asv'] +all = ["uxarray[dev,geo,viz]"] +complete = ["uxarray[dev,geo,viz]"] # alias to "all" +dev = [ + 'asv', + 'pooch', + 'pre_commit', + 'pytest', + 'pytest-cov', + 'ruff', +] +geo = [ + "cartopy", # in both geo and viz it is needed by to_geodataframe() and by plotting routines. + "geopandas", + "healpix", + "pyproj", + "spatialpandas", +] +viz = [ + "cartopy", + "datashader", + "matplotlib<3.11", # matplotlib 3.11.0 breaks some plots but <3.11 is fine; see issue #1542. + "geoviews", + "holoviews", + "hvplot", +] [project.urls] Documentation = "https://uxarray.readthedocs.io/" diff --git a/uxarray/plot/accessor.py b/uxarray/plot/accessor.py index e17bd4cf4..2f8bb56fd 100644 --- a/uxarray/plot/accessor.py +++ b/uxarray/plot/accessor.py @@ -472,6 +472,9 @@ def polygons( project=False, ) + # import datashader # no need to import explicitly, but gets used below when rasterize=True. + # (commented here for future reference, since datashader appears in uxarray dependency list, + # but it isn't imported explicitly anywhere in uxarray. For more details see PR #1548.) return gdf.hvplot.polygons( c=self._uxda.name if self._uxda.name is not None else "var", rasterize=rasterize,