Skip to content

EOmaps v8.0.1

Compare
Choose a tag to compare
@raphaelquast raphaelquast released this 15 Mar 15:19
· 172 commits to master since this release
1410b52

A new major release that brings a lot of important updates and improvements for EOmaps!

A big thanks goes to @banesullivan, @yeelauren and @jhkennedy who provided many useful suggestions and comments to improve EOmaps in the PyOpenSci review (pyOpenSci/software-submission#138)!

§ New License!

The EOmaps source code is now licensed under a BSD 3 Clause License to make it easier for users and contributors to improve and extend the codebase and to use EOmaps to build awesome tools for geo-data analysis!

Make sure to have a look at the licensing-note in the FAQ of the docs for some more details!

Interested in contributing to EOmaps? Checkout the updated Contribution Guide!

⚠️ Major changes to pip install

Dependency management for EOmaps has been improved to split between required and optional dependencies.

pip install eomaps now only installs the bare minimum requirements to run EOmaps.
❗To install EOmaps with all optional dependencies, use pip install eomaps[all].

Make sure to have a look at the updated installation instructions in the docs for more details on how to selectively install optional dependencies!

🌳 New

  • m.set_data(...) now directly accepts xarray.Datasets as input (see docs on how to assign datasets)
  • There is a new pre-defined keypress callback: overlay_layer
    • You can use it to toggle showing a layer on top of the currently visible layer.
      m.all.cb.keypress.attach.overlay_layer(<layer-name>, key="a")
  • The switch_layer keypress-callback now also accepts lists of layer-names (or lists of tuples (name, transparency))
  • m.cb.pick.share_events() now supports the additional kwarg "ensure_same_id"
    • If True, all maps that share the pick-event will use the same ID to identify the relevant datapoint
    • If False, all maps that share the pick-event identify the closest datapoint based on the (reprojected) click position.
  • The LayoutEditor now accepts -1 as width/height value for axes (to auto-adjust the value)

🕹️ Jupyter Widgets

There is now a collection of pre-configured Jupyter Widgets that can be used as control elements in Jupyter Notebooks!

Make sure to checkout the corresponding 🕹️ EOmaps Jupyter Widgets section in the docs!

🌦️ Changes

  • ❗ Installation config is now provided as a pyproject.toml file (instead of setup.py)
  • ❗ Supported python version is now >=3.8
  • EOmaps now uses qtpy to support multiple Qt versions for the 🧰 Companion Widget!
  • _version.py has been removed. The version is now specified in the [project] category of the pyproject.toml file.
  • Actions now use micromamba to setup (and cache) test environments
  • Colorbar kwargs show_outline and ylabel have been renamed to outline and hist_label

The following (previously deprecated) methods are now removed:

  • m.set_data_specs $\Rightarrow$ use m.set_data instead
  • m.add_wms.DLR_basemaps... $\Rightarrow$ use m.add_wms.DLR.basemap... instead
  • m_inset.indicate_inset_extent $\Rightarrow$ use m_inset.add_extent_indicator instead

📖 Documentation updates

Make sure to checkout the fully updated API docs!

  • Documentation environment was updated to most recent build dependencies
  • Only minimal requirements to import eomaps are now installed for docs-build
  • Info on how to configure VSCode/VSCodium for EOmaps has been added to the docs
  • In general, the docs now (gradually switch to) use MySt and Jupyter Notebooks (parsed with myst_nb) to improve formatting, examples etc.

🔨 Fixes

  • Make sure the widget is compatible with both Qt5 and Qt6
  • Fix forcing colorbar-position inheritance
  • Fix treatment of colorbar histogram style kwargs (e.g. edgecolor, facecolor, etc.)
  • Address numpy binary incompatibility warning if netCDF4 is imported after numpy
  • Fix inheriting colorbar positions from other colorbars
  • Address unittest issue with contour-shape labels
  • Avoid blocking the terminal in unittests for jupyter notebooks
  • Fix missing docstring for DLR webmap service
  • Fix issues for move-callbacks shared between multiple Maps
  • Fix visibility of datasets when using "dynamic_shade_indicator" colorbars
  • Fix assignment of vmin/vmax for "count" based shade-aggregation
  • Fix treatment of masked values in evaluation of vmin/vmax for encoded datasets
  • Fix issues with help-text popups of the CompanionWidget LayerTabBar
  • Improvements for colorbar implementation
  • Unify treatment of layer-name parsing
  • Try to push current view to toolbar nav-stack after layout-restore
  • Fix issues with help-popups of the LayerTabBar of the companion-widget
  • Fix issues with figure-exports after m.apply_layout(...)
  • Fix treatment of reprojected 1D datasets with shade_raster shape
  • Fix parsing maxsize argument in companion widget for raster-shape
  • Fix treatment of infinite values in weighted colorbar histograms
  • Allow passing transform-kwarg to m.add_text(...)
  • Fix truncating companion-widget title if too long
  • Make sure companion-widget dataset-dropdown is elided
  • Avoid memory-leaks caused by artist-references in pick-containers
  • Fix numpy.ma.masked_array issues with datashader/numba when using "shade_points"
  • Fix handling pick-events that do not have an "idx" property
  • Fix raster-aggregation if block-size cannot be evaluated (e.g. None)
  • Fix handling of pick-events that do not have an "idx" property
  • Make sure keypress-events are triggered irrespective of the toolbar mode
  • Make sure LayoutEditor x0, y0 values are always set as specified
  • Fix issues with string-type dpi values passed to savefig
  • Avoid pandas dependency when attempting to use raster shape with 1D datasets
  • Make sure data encoding fill-value is properly applied