Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge for v8.0 #205

Merged
merged 249 commits into from
Mar 15, 2024
Merged

Merge for v8.0 #205

merged 249 commits into from
Mar 15, 2024

Conversation

raphaelquast
Copy link
Owner

@raphaelquast raphaelquast commented Dec 7, 2023

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

Copy link

codecov bot commented Dec 7, 2023

Codecov Report

Attention: Patch coverage is 76.36061% with 569 lines in your changes are missing coverage. Please review.

Project coverage is 75.23%. Comparing base (a285226) to head (b68c7df).

Files Patch % Lines
eomaps/layout_editor.py 75.99% 133 Missing ⚠️
eomaps/_blit_manager.py 83.04% 116 Missing ⚠️
eomaps/colorbar.py 77.33% 102 Missing ⚠️
eomaps/_data_manager.py 52.41% 69 Missing ⚠️
eomaps/eomaps.py 47.89% 62 Missing ⚠️
eomaps/cb_container.py 76.25% 38 Missing ⚠️
eomaps/ne_features.py 85.29% 25 Missing ⚠️
eomaps/callbacks.py 83.83% 16 Missing ⚠️
eomaps/_webmap.py 42.85% 4 Missing ⚠️
eomaps/draw.py 25.00% 3 Missing ⚠️
... and 1 more
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #205      +/-   ##
==========================================
- Coverage   75.49%   75.23%   -0.27%     
==========================================
  Files          24       26       +2     
  Lines       11117    11709     +592     
==========================================
+ Hits         8393     8809     +416     
- Misses       2724     2900     +176     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

- use the tag "ignore_in_unittest" to ignore a code-cell
- allow "-1" as width/height
- make sure x0 and y0 are fixed to the provided values
- update docstrings accordingly
+ allow passing xarray.Dataset objects to m.set_data
(as they are used for development and required in the tests)
@raphaelquast raphaelquast merged commit 1410b52 into master Mar 15, 2024
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants