-
-
Notifications
You must be signed in to change notification settings - Fork 402
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
Do not merge partially overlapping Stream callbacks #5133
Conversation
dd16970
to
35171aa
Compare
Thanks for tracking this down! Can you think of any cases where the previous, unsafe merge operation would appear to work correctly but would now no longer appear to work after this PR? I think this is the correct thing to do but I want to avoid issues where the old behavior appeared to be doing the right thing... |
Not really, at worst this new version will be slightly less efficient (not in any way that matters honestly) but at least it's always correct. We could probably have a version that allows merging stream callbacks where the sources are transposed, e.g. x_range/y_range are swapped but that would complicate the Stream triggering logic a whole bunch for not much gain. |
@jlstevens Added some tests, please merge once passing. |
* Do not merge partially overlapping Stream callbacks * Add tests * Remove print
* Fix Violin matplotlib rendering with non-finite values (#5135) * Handle the empty string as a group name (#5131) * Fix unhandled numpy.round overflow return value in core/util.py:bound_range(...) (#5095) * Core/Util: Fix unhandled np.round overflow return The function numpy.round return for the input np.float64(2.6558061446181644e+295) the output numpy.inf. This should lead to density = full_precision_density. * Core/Util: Supress numpy.round overflow error The function numpy.round produces for the input numpy.float64(2.6558061446181644e+295) an FloatingPointError with the message "overflow encountered in multiply". This error should be suppressed because its an internal computation by holoview. * Use context manager Co-authored-by: christoph.weiss@gtd-gmbh.de <christoph.weiss@gtd-gmbh.de> Co-authored-by: Philipp Rudiger <prudiger@anaconda.com> * Update Plotting_with_Matplotlib.ipynb (#4983) Ordering of the fig_bounds tuple in the documentation was different from that in e.g. https://github.com/holoviz/holoviews/blob/40977c515dd9837019aaa0e5708773e78809fbe1/holoviews/plotting/mpl/plot.py#L69 * Notimplemented binop (#5073) * layout: Fix __add__ and __radd__ implementation * Add layout.Layoutable as a mirror of overlay.Overlayable * Remove a good deal of duplicated code * Remove broken calls to super().__radd__ where the super class does not implement __radd__ * Return NotImplemented when Layout([x,y]) raises NotImplementedError. This allows correct interoperability with external classes that could themselves define __radd__ as stated by: https://docs.python.org/3/library/constants.html#NotImplemented Fixes #3577 * overlay: deduplicate and fix __mul__ * Return NotImplemented when appropriate * Deduplicate code between 2 non-trivial and almost identical implementations of __mul__ * Fix non-inheritance-friendly type checking with a local import to avoid cyclic dependency Fixes #3577 * Fix matplotlib colorbar labeling for dim expressions (#5137) * Ensure FreehandDraw renders when styles set (#5139) * Fix datetime clipping on RangeXY stream (#5138) * Fix Bars legend error when overlaid with annotation (#5142) * Do not raise deprecated .opts warning for empty groups (#5144) * Fix plotly Bar plots containing nans (#5143) * Fix plotly Bar plots containing nans * Update tests * Preserve cols when overlaying on layout (#5141) * Do not merge partially overlapping Stream callbacks (#5133) * Do not merge partially overlapping Stream callbacks * Add tests * Remove print * Add bounds to the cache_size Parameter (#5105) * Fix broken link in Gridded user guide (#5098) * Pin freetype on Windows due to matplotlib error (#5109) * Fixed typo * import bokeh's version from an internal util module (#5103) * Add current_key property to DynamicMap (#5106) * Validate dimensionality of xarray interface data (#5140) * Support xyzservices.TileProvider as hv.Tiles input (#5062) * implementation * docstring, plotly test * add bokeh tests * CI: Fix before release (#5151) * delay projection comparison to optimize geoviews (#5152) * Test suite maintenance (#5157) Fixed or suppressed warnings issued while running the tests * fix cherry-pick and compatibility with holoviews 1.14 * fix linting * Handle unsigned integer dtype in datashader aggregate operation (#5149) * Fix docs CI build (#5088) * Remove conda-forge from the build channels, post-install awscli and pin jupyter_client * remove pytest usage * add missing comma and fix test * CI: improvements to the docs build (#5161) * Fix for Contours consistent of empty and nonempty paths (#5162) * Switch to the PyData sphinx theme (#5163) * use pydata sphinx theme to build the site * add pooch to the docs dependencies * Add release notes for 1.14.6 and 1.14.7 (#5160) * attempt to fix pip build * micro fixes to the release notes Co-authored-by: James A. Bednar <jbednar@users.noreply.github.com> Co-authored-by: w31t1 <Christoph.Weiss1@gmx.de> Co-authored-by: christoph.weiss@gtd-gmbh.de <christoph.weiss@gtd-gmbh.de> Co-authored-by: jenssss <37403847+jenssss@users.noreply.github.com> Co-authored-by: Douglas Raillard <douglas.raillard@arm.com> Co-authored-by: Maxime Liquet <35924738+maximlt@users.noreply.github.com> Co-authored-by: James A. Bednar <jbednar@continuum.io> Co-authored-by: Martin Fleischmann <martin@martinfleischmann.net> Co-authored-by: maximlt <mliquet@anaconda.com> Co-authored-by: Simon Høxbro Hansen <simon.hansen@me.com>
This pull request has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs. |
In HoloViews any layout or grid of plots tries to merge stream callbacks that have the same Bokeh models as their source. The problem was that even stream callbacks that only partially overlapped in their handles were being merged. For example if you had two RangeXY callbacks attached to separate plots, if both were attached to the same Range1D object they would get merged. This is obviously incorrect since a) the fact that the x_range is the same does not mean the y_range will also match and b) even if x_range and y_range match they might be transposed.
This PR ensures that only totally compatible stream callbacks are merged.