internlm/SWE-Fixer-Train-110K huggingface dataset:
Repository: bokeh/bokeh

Issue:
README.md under examples/plotting/notebook refers to ipython not jupyter
Just need to update it with current jupyter terminology.



Discussion:

Resolving patch:
diff --git a/bokeh/core/compat/bokeh_renderer.py b/bokeh/core/compat/bokeh_renderer.py
--- a/bokeh/core/compat/bokeh_renderer.py
+++ b/bokeh/core/compat/bokeh_renderer.py
@@ -24,6 +24,7 @@
                      Grid, GridPlot, LinearAxis, Plot, CategoricalAxis, Legend)
 from ...models.glyphs import (Asterisk, Circle, Cross, Diamond, InvertedTriangle,
                             Line, MultiLine, Patches, Square, Text, Triangle, X)
+from ...models.annotations import Title
 from ...plotting import DEFAULT_TOOLS
 from ...plotting.helpers import _process_tools_arg
 from ...util.dependencies import import_optional
@@ -82,7 +83,7 @@ def close_figure(self, fig):
                              plot_width=self.width,
                              plot_height=self.height)
 
-                _plot.title = ""
+                _plot.title.text = ''
                 # and add new tools
                 _tool_objs = _process_tools_arg(_plot, DEFAULT_TOOLS)
                 _plot.add_tools(*_tool_objs)
@@ -150,9 +151,9 @@ def close_axes(self, ax):
         background_fill_color = convert_color(ax.get_axis_bgcolor())
         self.plot.background_fill_color = background_fill_color
         if self.xkcd:
-            self.plot.title_text_font = "Comic Sans MS, Textile, cursive"
-            self.plot.title_text_font_style = "bold"
-            self.plot.title_text_color = "black"
+            self.plot.title.text_font = "Comic Sans MS, Textile, cursive"
+            self.plot.title.text_font_style = "bold"
+            self.plot.title.text_color = "black"
 
         # Add a "marker" Glyph to help the plot.renderers splitting in the GridPlot build
         self._axes = getattr(self, "_axes", [0])


Test patch:
Repository: bokeh/bokeh

Issue:
Issue with pandas in examples/app/weather
```
Error running application handler <bokeh.application.handlers.directory.DirectoryHandler object at 0x1071dc0f0>: cannot use a non-absolute DateOffset in datetime/timedelta operations [<DateOffset: kwds={'days': 0.5}>]
File "ops.py", line 377, in _convert_to_array:
for v in values[mask]]))) Traceback (most recent call last):
  File "/Users/bryan/work/bokeh/bokeh/application/handlers/code_runner.py", line 83, in run
    exec(self._code, module.__dict__)
  File "/Users/bryan/work/bokeh/examples/app/weather/main.py", line 85, in <module>
    source = get_dataset(df, cities[city]['airport'], distribution)
  File "/Users/bryan/work/bokeh/examples/app/weather/main.py", line 18, in get_dataset
    df['left'] = df.date - pd.DateOffset(days=0.5)
  File "/Users/bryan/anaconda/lib/python3.4/site-packages/pandas/core/ops.py", line 493, in wrapper
    time_converted = _TimeOp.maybe_convert_for_time_op(left, right, name)
  File "/Users/bryan/a`naconda/lib/python3.4/site-packages/pandas/core/ops.py", line 457, in maybe_convert_for_time_op
    return cls(left, right, name)
  File "/Users/bryan/anaconda/lib/python3.4/site-packages/pandas/core/ops.py", line 274, in __init__
    rvalues = self._convert_to_array(right, name=name, other=lvalues)
  File "/Users/bryan/anaconda/lib/python3.4/site-packages/pandas/core/ops.py", line 377, in _convert_to_array
    for v in values[mask]])))
TypeError: cannot use a non-absolute DateOffset in datetime/timedelta operations [<DateOffset: kwds={'days': 0.5}>]`
```

The problem arises at the line `df['left'] = df.date - pd.DateOffset(days=0.5)`, where `df.date` is a column of pandas datetime objects. No error occurs when I try `df.data[5] - pd.DateOffset(days=0.5)`. Also no error if I use Python's buildin `datetime.timedelta`.



Discussion:

Resolving patch:
diff --git a/examples/app/weather/main.py b/examples/app/weather/main.py
--- a/examples/app/weather/main.py
+++ b/examples/app/weather/main.py
@@ -1,4 +1,5 @@
 from os.path import join, dirname
+import datetime
 import numpy as np
 import pandas as pd
 
@@ -15,8 +16,8 @@ def get_dataset(src, name, distribution):
     df = src[src.airport == name].copy()
     del df['airport']
     df['date'] = pd.to_datetime(df.date)
-    df['left'] = df.date - pd.DateOffset(days=0.5)
-    df['right'] = df.date + pd.DateOffset(days=0.5)
+    df['left'] = df.date - datetime.timedelta(days=0.5)  # timedelta instead of pd.DateOffset to avoid pandas bug < 0.18 (Pandas issue #11925)
+    df['right'] = df.date + datetime.timedelta(days=0.5)
     df = df.set_index(['date'])
     df.sort_index(inplace=True)
     if distribution == 'Smooth':


Test patch:
Repository: bokeh/bokeh

Issue:
ajax data source needs to specify columns explicitly
Requires `data=dict(x=[], y=[])` in data source



Discussion:

Resolving patch:
diff --git a/examples/howto/ajax_source.py b/examples/howto/ajax_source.py
--- a/examples/howto/ajax_source.py
+++ b/examples/howto/ajax_source.py
@@ -9,7 +9,8 @@
 from bokeh.models.sources import AjaxDataSource
 
 output_file("ajax_source.html", title="ajax_source.py example")
-source = AjaxDataSource(data_url='http://localhost:5050/data',
+source = AjaxDataSource(data=dict(x=[], y=[]),
+                        data_url='http://localhost:5050/data',
                         polling_interval=100)
 p = figure()
 p.circle('x', 'y', source=source)


Test patch:
Repository: bokeh/bokeh

Issue:
mpl compat needs minor updates
Uses `GridPlot` causing deprecation, has one `plot.title = <str>` left, missing a mapping for `"."` marker code. 



Discussion:

Resolving patch:
diff --git a/bokeh/core/compat/bokeh_renderer.py b/bokeh/core/compat/bokeh_renderer.py
--- a/bokeh/core/compat/bokeh_renderer.py
+++ b/bokeh/core/compat/bokeh_renderer.py
@@ -20,8 +20,9 @@
 import numpy as np
 from six import string_types
 
+from ...layouts import gridplot
 from ...models import (ColumnDataSource, FactorRange, DataRange1d, DatetimeAxis, GlyphRenderer,
-                     Grid, GridPlot, LinearAxis, Plot, CategoricalAxis, Legend)
+                     Grid, LinearAxis, Plot, CategoricalAxis, Legend)
 from ...models.glyphs import (Asterisk, Circle, Cross, Diamond, InvertedTriangle,
                             Line, MultiLine, Patches, Square, Text, Triangle, X)
 from ...models.annotations import Title
@@ -113,14 +114,14 @@ def close_figure(self, fig):
             (a, b, c) = fig.axes[0].get_geometry()
             p = np.array(plots)
             n = np.resize(p, (a, b))
-            grid = GridPlot(children=n.tolist())
+            grid = gridplot(n.tolist())
             self.fig = grid
 
     def open_axes(self, ax, props):
         "Get axes data and create the axes and grids"
         # Get axes, title and grid into class attributes.
         self.ax = ax
-        self.plot.title = ax.get_title()
+        self.plot.title.text = ax.get_title()
         # to avoid title conversion by draw_text later
 
         #Make sure that all information about the axes are passed to the properties
@@ -210,6 +211,7 @@ def draw_markers(self, data, coordinates, style, label, mplobj=None):
         y = data[:, 1]
 
         marker_map = {
+            ".": Circle,
             "o": Circle,
             "s": Square,
             "+": Cross,


Test patch:
Repository: bokeh/bokeh

Issue:
Using gridplot now gives a warning
ToolbarBox must inherit from Box coffeescript side so that everything behaves correctly.

For the defaults tests to pass, that means it must also inherit from Box python side.

But that leads to the following warning when running a correctly functioning gridplot

WARNING:/Users/caged/Dev/bokeh/bokeh/bokeh/core/validation/check.py:W-1002 (EMPTY_LAYOUT): Layout has no children: ToolbarBox, ViewModel:ToolbarBox, ref _id: 1386

ping @bryevdv 



Discussion:
@birdsarah solution is a function like this:

https://github.com/bokeh/bokeh/blob/master/bokeh/models/layouts.py#L151-L155

On `ToolbarBox` that just immediately and unconditionally returns `None`. 

Oh cool beans. I didn't think inheritance would just work for the warnings.

The other option would be to make the empty child toolbar, but that just feels wasteful.


Resolving patch:
diff --git a/bokeh/models/tools.py b/bokeh/models/tools.py
--- a/bokeh/models/tools.py
+++ b/bokeh/models/tools.py
@@ -125,6 +125,10 @@ class ToolbarBox(Box):
     can merge the tools into a single button for convenience.
 
     """
+    def _check_empty_layout(self):
+        # Overriding the children check from Box. As toolbarbox's children
+        # are normally set JS side.
+        return None
 
     toolbar_location = Enum(Location, default='right', help="""
         Should the toolbar be presented as if it was stuck to the `above`, `right`, `left`, `below`


Test patch:
diff --git a/bokeh/models/tests/test_tools.py b/bokeh/models/tests/test_tools.py
--- a/bokeh/models/tests/test_tools.py
+++ b/bokeh/models/tests/test_tools.py
@@ -1,5 +1,8 @@
-from __future__ import  absolute_import
+from __future__ import absolute_import
 
+import mock
+
+from bokeh.core.validation import check_integrity
 from bokeh.models.layouts import Box
 from bokeh.models.tools import Toolbar, ToolbarBox
 
@@ -28,3 +31,15 @@ def test_toolbar_box_properties():
     assert tb_box.toolbar_location == "right"
     assert tb_box.tools == []
     assert tb_box.merge_tools is True
+
+
+@mock.patch('bokeh.io._show_with_state')
+def test_toolbar_box_with_no_children_does_not_raise_a_bokeh_warning(mock__show_with_state):
+    # This is the normal way a ToolbarBox would be instantiated for example in
+    # a gridplot. So we don't want to worry people with warnings. The children
+    # for the ToolbarBox are created on the JS side.
+
+    tb_box = ToolbarBox()
+    with mock.patch('bokeh.core.validation.check.logger') as mock_logger:
+        check_integrity([tb_box])
+        assert mock_logger.warning.call_count == 0
Repository: bokeh/bokeh

Issue:
Charts Heatmap uses deprecated attribute internally
This causes a deprecation warning everytime Heatmap is used:

```
/Users/fpliger/dev/repos/bokeh/bokeh/charts/builder.py:604: UserWarning: Chart property `sort_legend` was deprecated in 0.12             and will be removed in the future. Use `legend_sort_field` and             `legend_sort_direction` instead.
  `legend_sort_direction` instead.")
```



Discussion:

Resolving patch:
diff --git a/bokeh/charts/builders/heatmap_builder.py b/bokeh/charts/builders/heatmap_builder.py
--- a/bokeh/charts/builders/heatmap_builder.py
+++ b/bokeh/charts/builders/heatmap_builder.py
@@ -143,8 +143,9 @@ def setup(self):
 
         # sort the legend by the color selection, reversed compared to how the values
         # were assigned to color
-        if len(self.sort_legend) == 0:
-            self.sort_legend = [('color', True)]
+        if self.legend_sort_field is None:
+            self.legend_sort_field = 'color'
+            self.legend_sort_direction = "ascending"
 
         # find any bin operations applied to get the bin width and height
         for op in self._data.operations:


Test patch:
Repository: bokeh/bokeh

Issue:
undeprecate .from_df
With server apps it is necessary to update `.data` all "at once" so a method to construct a dictionary for `.data` is actually useful and needed. Going to un-deprecate for now, can discuss other ideas for this functionality later. 



Discussion:

Resolving patch:
diff --git a/bokeh/models/sources.py b/bokeh/models/sources.py
--- a/bokeh/models/sources.py
+++ b/bokeh/models/sources.py
@@ -114,7 +114,6 @@ def _data_from_df(df):
         return new_data
 
     @classmethod
-    @deprecated("Bokeh 0.9.3", "ColumnDataSource initializer")
     def from_df(cls, data):
         """ Create a ``dict`` of columns from a Pandas DataFrame,
         suitable for creating a ColumnDataSource.
@@ -126,8 +125,6 @@ def from_df(cls, data):
             dict(str, list)
 
         """
-        import warnings
-        warnings.warn("Method deprecated in Bokeh 0.9.3")
         return cls._data_from_df(data)
 
     def to_df(self):


Test patch:
Repository: bokeh/bokeh

Issue:
Draw Legend After WebGL glyphs
<img width="906" alt="screen shot 2016-06-24 at 6 50 29 pm" src="https://cloud.githubusercontent.com/assets/433221/16357521/c6f00a1c-3abe-11e6-8835-0e4bb17550d4.png">



Discussion:
@brendancol do note that you can put legends outside the plot area now, though. See `examples/models/legends.py`

@bryevdv sweetness. Thats a good alternative.


Resolving patch:
diff --git a/examples/webgl/iris_blend.py b/examples/webgl/iris_blend.py
--- a/examples/webgl/iris_blend.py
+++ b/examples/webgl/iris_blend.py
@@ -23,10 +23,10 @@
 p.yaxis.axis_label = 'Petal Width'
 
 p.diamond(flowers["petal_length"], flowers["petal_width"],
-          color=colors1, line_alpha=0.5, fill_alpha=0.2, size=25)
+          color=colors1, line_alpha=0.5, fill_alpha=0.2, size=25, legend='diamonds')
 
 p.circle(flowers["petal_length"], flowers["petal_width"],
-         color=colors2, line_alpha=0.5, fill_alpha=0.2, size=10)
+         color=colors2, line_alpha=0.5, fill_alpha=0.2, size=10, legend='circles')
 
 output_file("iris_blend.html", title="iris_blend.py example")
 


Test patch:
Repository: bokeh/bokeh

Issue:
Typo in bokeh.models.tools.TapTool `behavior` attr default
Is 'defult' not default.

``` python
    ...
    behavior = Enum("select", "inspect", defult="select", help="""
    ...
```



Discussion:

Resolving patch:
diff --git a/bokeh/models/tools.py b/bokeh/models/tools.py
--- a/bokeh/models/tools.py
+++ b/bokeh/models/tools.py
@@ -274,7 +274,7 @@ class TapTool(Tap):
     defaults to all renderers on a plot.
     """)
 
-    behavior = Enum("select", "inspect", defult="select", help="""
+    behavior = Enum("select", "inspect", default="select", help="""
     This tool can be configured to either make selections or inspections
     on associated data sources. The difference is that selection changes
     propagate across bokeh and other components (e.g. selection glyph)


Test patch:
Repository: bokeh/bokeh

Issue:
spectrogram example improvements
- [x] `ontinue` typo in `audio.py`
- [x] more reduction of excessive data xfer
- [x] ~~~styling~~~



Discussion:

Resolving patch:
diff --git a/examples/app/spectrogram/audio.py b/examples/app/spectrogram/audio.py
--- a/examples/app/spectrogram/audio.py
+++ b/examples/app/spectrogram/audio.py
@@ -40,4 +40,4 @@ def _get_audio_data():
             bins = [simps(a) for a in np.split(power, NUM_BINS)]
             data['values'] = signal, spectrum, bins
         except:
-            ontinue
+            continue
diff --git a/examples/app/spectrogram/main.py b/examples/app/spectrogram/main.py
--- a/examples/app/spectrogram/main.py
+++ b/examples/app/spectrogram/main.py
@@ -26,8 +26,7 @@
            render_as_text=False, width=1000)
 
 waterfall_source = WaterfallSource(palette=PALETTE, num_grams=NUM_GRAMS,
-                                   gram_length=GRAM_LENGTH, tile_width=TILE_WIDTH,
-                                   data=dict(x=[], image=[]))
+                                   gram_length=GRAM_LENGTH, tile_width=TILE_WIDTH)
 waterfall_plot = figure(plot_width=990, plot_height=300, min_border_left=80,
                         x_range=[0, NUM_GRAMS], y_range=[0, MAX_FREQ_KHZ], **PLOTARGS)
 waterfall_plot.grid.grid_line_color = None
diff --git a/examples/app/spectrogram/waterfall.py b/examples/app/spectrogram/waterfall.py
--- a/examples/app/spectrogram/waterfall.py
+++ b/examples/app/spectrogram/waterfall.py
@@ -1,9 +1,9 @@
 from os.path import dirname, join
 
 from bokeh.core.properties import List, Float, Seq, Color, Int
-from bokeh.models import ColumnDataSource
+from bokeh.models import DataSource
 
-class WaterfallSource(ColumnDataSource):
+class WaterfallSource(DataSource):
 
     __implementation__ = open(join(dirname(__file__), "waterfall.coffee")).read()
 
@@ -16,3 +16,6 @@ class WaterfallSource(ColumnDataSource):
     gram_length = Int()
 
     tile_width = Int()
+
+    @property
+    def column_names(self): return ['x', 'image']


Test patch:
Repository: bokeh/bokeh

Issue:
Remove io logic from charts
Rip out all the io (file, server, notebook) related logic completely. Maybe there are some convenience methods that defer to `bokeh.io` but actual implementation should be in `bokeh.io`



Discussion:
as an update, all io in `bokeh.charts` has been deprecated since `0.11` would support removing it at any time.


Resolving patch:
diff --git a/bokeh/charts/chart.py b/bokeh/charts/chart.py
--- a/bokeh/charts/chart.py
+++ b/bokeh/charts/chart.py
@@ -309,57 +309,6 @@ def make_grid(self, dimension, ticker):
 
         return grid
 
-
-    @property
-    def filename(self):
-        warnings.warn("Chart property 'filename' was deprecated in 0.11 \
-            and will be removed in the future.")
-        from bokeh.io import output_file
-        output_file("default.html")
-
-    @filename.setter
-    def filename(self, filename):
-        warnings.warn("Chart property 'filename' was deprecated in 0.11 \
-            and will be removed in the future.")
-        from bokeh.io import output_file
-        output_file(filename)
-
-    @property
-    def server(self):
-        warnings.warn("Chart property 'server' was deprecated in 0.11 \
-            and will be removed in the future.")
-        from bokeh.io import output_server
-        output_server("default")
-
-    @server.setter
-    def server(self, session_id):
-        warnings.warn("Chart property 'server' was deprecated in 0.11 \
-            and will be removed in the future.")
-        from bokeh.io import output_server
-        if session_id:
-            if isinstance(session_id, bool):
-                session_id='default'
-            output_server(session_id)
-
-    @property
-    def notebook(self):
-        warnings.warn("Chart property 'notebook' was deprecated in 0.11 \
-            and will be removed in the future.")
-        from bokeh.io import output_notebook
-        output_notebook()
-
-    @notebook.setter
-    def notebook(self, flag):
-        warnings.warn("Chart property 'notebook' was deprecated in 0.11 \
-            and will be removed in the future.")
-        from bokeh.io import output_notebook
-        output_notebook()
-
-    @deprecated("Bokeh 0.11", "bokeh.io.show")
-    def show(self):
-        import bokeh.io
-        bokeh.io.show(self)
-
     annular_wedge = _glyph_function(glyphs.AnnularWedge)
 
     annulus = _glyph_function(glyphs.Annulus)


Test patch:
Repository: bokeh/bokeh

Issue:
Typo in categorical example plot title
File examples/plotting/file/categorical.py contains a typo in plot name.



Discussion:

Resolving patch:
diff --git a/examples/plotting/file/categorical.py b/examples/plotting/file/categorical.py
--- a/examples/plotting/file/categorical.py
+++ b/examples/plotting/file/categorical.py
@@ -4,7 +4,7 @@
 factors = ["a", "b", "c", "d", "e", "f", "g", "h"]
 x =  [50, 40, 65, 10, 25, 37, 80, 60]
 
-dot = figure(title="Catgorical Dot Plot", tools="", toolbar_location=None,
+dot = figure(title="Categorical Dot Plot", tools="", toolbar_location=None,
             y_range=factors, x_range=[0,100])
 
 dot.segment(0, factors, x, factors, line_width=2, line_color="green", )


Test patch:
Repository: bokeh/bokeh

Issue:
Feature request: Make tool coalescence optional in gridplot



Discussion:

Resolving patch:
diff --git a/bokeh/layouts.py b/bokeh/layouts.py
--- a/bokeh/layouts.py
+++ b/bokeh/layouts.py
@@ -311,6 +311,9 @@ def gridplot(*args, **kwargs):
             :class:`~bokeh.models.tools.ToolbarBox`). If none is supplied,
             ToolbarBox's defaults will be used.
 
+        merge_tools (``True``, ``False``): Combine tools from all child plots into
+            a single toolbar.
+
     Returns:
         Row or Column: A row or column containing the grid toolbar and the grid
             of plots (depending on whether the toolbar is left/right or
@@ -336,6 +339,7 @@ def gridplot(*args, **kwargs):
     plot_width = kwargs.get('plot_width')
     plot_height = kwargs.get('plot_height')
     ncols = kwargs.get('ncols')
+    merge_tools = kwargs.get('merge_tools', True)
 
     # Integrity checks & set-up
     if responsive:
@@ -364,7 +368,7 @@ def gridplot(*args, **kwargs):
         row_tools = []
         row_children = []
         for item in row:
-            if isinstance(item, Plot):
+            if merge_tools and isinstance(item, Plot):
                 row_tools = row_tools + item.toolbar.tools
                 item.toolbar_location = None
             if item is None:
@@ -387,6 +391,9 @@ def gridplot(*args, **kwargs):
 
     grid = Column(children=rows, sizing_mode=sizing_mode)
 
+    if not merge_tools:
+        return grid
+
     # Make the toolbar
     if toolbar_location:
         if not toolbar_options:
diff --git a/sphinx/source/docs/user_guide/source_examples/tools_position_toolbar.py b/sphinx/source/docs/user_guide/source_examples/tools_position_toolbar.py
--- a/sphinx/source/docs/user_guide/source_examples/tools_position_toolbar.py
+++ b/sphinx/source/docs/user_guide/source_examples/tools_position_toolbar.py
@@ -4,7 +4,8 @@
 
 # create a new plot with the toolbar below
 p = figure(plot_width=400, plot_height=400,
-           title=None, toolbar_location="below")
+           title=None, toolbar_location="below",
+           toolbar_sticky=False)
 
 p.circle([1, 2, 3, 4, 5], [2, 5, 8, 2, 7], size=10)
 
diff --git a/sphinx/source/docs/user_guide/source_examples/tools_position_toolbar_clash.py b/sphinx/source/docs/user_guide/source_examples/tools_position_toolbar_clash.py
new file mode 100644
--- /dev/null
+++ b/sphinx/source/docs/user_guide/source_examples/tools_position_toolbar_clash.py
@@ -0,0 +1,11 @@
+from bokeh.plotting import figure, output_file, show
+
+output_file("toolbar.html")
+
+# create a new plot with the toolbar below
+p = figure(plot_width=400, plot_height=400,
+           title=None, toolbar_location="below")
+
+p.circle([1, 2, 3, 4, 5], [2, 5, 8, 2, 7], size=10)
+
+show(p)


Test patch:
Repository: bokeh/bokeh

Issue:
docstring of ``add_tools`` not correct.



Discussion:

Resolving patch:
diff --git a/bokeh/models/plots.py b/bokeh/models/plots.py
--- a/bokeh/models/plots.py
+++ b/bokeh/models/plots.py
@@ -246,7 +246,7 @@ def add_layout(self, obj, place='center'):
             getattr(self, place).append(obj)
 
     def add_tools(self, *tools):
-        ''' Adds an tools to the plot.
+        ''' Adds tools to the plot.
 
         Args:
             *tools (Tool) : the tools to add to the Plot


Test patch:
Repository: bokeh/bokeh

Issue:
Update add_glyph docstring 
plot.py add_glyph returns GlyphRenderer not Glyph

this tripped me up for a minute



Discussion:

Resolving patch:
diff --git a/bokeh/models/plots.py b/bokeh/models/plots.py
--- a/bokeh/models/plots.py
+++ b/bokeh/models/plots.py
@@ -282,7 +282,7 @@ def add_glyph(self, source_or_glyph, glyph=None, **kw):
             Glyph initializer.
 
         Returns:
-            Glyph
+            GlyphRenderer
 
         '''
         if glyph is not None:


Test patch:
Repository: bokeh/bokeh

Issue:
Improve Les Mis example
Two improvements need to be made:
1. Currently, the "non-interacting" squares read out as really really small floats, e.g. "1.27e-123".  We should change these actual values to 0, but also add an ability to suppress the hover tooltip to not display anything for those values.
2. It would be really nice to make the axis labels light up/change color to show when the user hovers over a square, like in the D3 version: http://bost.ocks.org/mike/miserables/



Discussion:
We can definitely enable hover highlighting with hover policy now. I'm not sure about the small values, that is actually surprising and will need a look. 


Resolving patch:
diff --git a/examples/plotting/file/les_mis.py b/examples/plotting/file/les_mis.py
--- a/examples/plotting/file/les_mis.py
+++ b/examples/plotting/file/les_mis.py
@@ -54,7 +54,8 @@
 p.xaxis.major_label_orientation = np.pi/3
 
 p.rect('xname', 'yname', 0.9, 0.9, source=source,
-       color='colors', alpha='alphas', line_color=None)
+       color='colors', alpha='alphas', line_color=None,
+       hover_line_color='black', hover_color='colors')
 
 p.select_one(HoverTool).tooltips = [
     ('names', '@yname, @xname'),


Test patch: