prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Typo in range_tool example
  There is a small typo "range_rool" in the range_tool.py example. I would like to use this issue to create my first pull request and see how the process works.
  
  </issue>
  <code>
  [start of examples/plotting/file/range_tool.py]
  1 import numpy as np
  2 
  3 from bokeh.io import show
  4 from bokeh.layouts import column
  5 from bokeh.models import ColumnDataSource, RangeTool
  6 from bokeh.plotting import figure
  7 from bokeh.sampledata.stocks import AAPL
  8 
  9 dates = np.array(AAPL['date'], dtype=np.datetime64)
  10 source = ColumnDataSource(data=dict(date=dates, close=AAPL['adj_close']))
  11 
  12 p = figure(plot_height=300, plot_width=800, tools="", toolbar_location=None,
  13            x_axis_type="datetime", x_axis_location="above",
  14            background_fill_color="#efefef", x_range=(dates[1500], dates[2500]))
  15 
  16 p.line('date', 'close', source=source)
  17 p.yaxis.axis_label = 'Price'
  18 
  19 select = figure(title="Drag the middle and edges of the selection box to change the range above",
  20                 plot_height=130, plot_width=800, y_range=p.y_range,
  21                 x_axis_type="datetime", y_axis_type=None,
  22                 tools="", toolbar_location=None, background_fill_color="#efefef")
  23 
  24 range_rool = RangeTool(x_range=p.x_range)
  25 range_rool.overlay.fill_color = "navy"
  26 range_rool.overlay.fill_alpha = 0.2
  27 
  28 select.line('date', 'close', source=source)
  29 select.ygrid.grid_line_color = None
  30 select.add_tools(range_rool)
  31 select.toolbar.active_multi = range_rool
  32 
  33 show(column(p, select))
  34
  [end of examples/plotting/file/range_tool.py]
  </code>
  
  I need you to solve this issue by generating a single patch file that I can apply directly to this repository using git apply. Please respond with a single patch file in the following format.
  <patch>
  diff --git a/file.py b/file.py
  --- a/file.py
  +++ b/file.py
  @@ -1,27 +1,35 @@
   def euclidean(a, b):
  -    while b:
  -        a, b = b, a % b
  -    return a
  +    if b == 0:
  +        return a
  +    return euclidean(b, a % b)
   
   
   def bresenham(x0, y0, x1, y1):
       points = []
       dx = abs(x1 - x0)
       dy = abs(y1 - y0)
  -    sx = 1 if x0 < x1 else -1
  -    sy = 1 if y0 < y1 else -1
  -    err = dx - dy
  +    x, y = x0, y0
  +    sx = -1 if x0 > x1 else 1
  +    sy = -1 if y0 > y1 else 1
   
  -    while True:
  -        points.append((x0, y0))
  -        if x0 == x1 and y0 == y1:
  -            break
  -        e2 = 2 * err
  -        if e2 > -dy:
  -            err -= dy
  -            x0 += sx
  -        if e2 < dx:
  -            err += dx
  -            y0 += sy
  +    if dx > dy:
  +        err = dx / 2.0
  +        while x != x1:
  +            points.append((x, y))
  +            err -= dy
  +            if err < 0:
  +                y += sy
  +                err += dx
  +            x += sx
  +    else:
  +        err = dy / 2.0
  +        while y != y1:
  +            points.append((x, y))
  +            err -= dx
  +            if err < 0:
  +                x += sx
  +                err += dy
  +            y += sy
  +
  +    points.append((x, y))
       return points
  
  </patch>
golden_diff: diff --git a/examples/plotting/file/range_tool.py b/examples/plotting/file/range_tool.py
  --- a/examples/plotting/file/range_tool.py
  +++ b/examples/plotting/file/range_tool.py
  @@ -21,13 +21,13 @@
                   x_axis_type="datetime", y_axis_type=None,
                   tools="", toolbar_location=None, background_fill_color="#efefef")
   
  -range_rool = RangeTool(x_range=p.x_range)
  -range_rool.overlay.fill_color = "navy"
  -range_rool.overlay.fill_alpha = 0.2
  +range_tool = RangeTool(x_range=p.x_range)
  +range_tool.overlay.fill_color = "navy"
  +range_tool.overlay.fill_alpha = 0.2
   
   select.line('date', 'close', source=source)
   select.ygrid.grid_line_color = None
  -select.add_tools(range_rool)
  -select.toolbar.active_multi = range_rool
  +select.add_tools(range_tool)
  +select.toolbar.active_multi = range_tool
   
   show(column(p, select))
  
verification_info: {"golden_diff": "diff --git a/examples/plotting/file/range_tool.py b/examples/plotting/file/range_tool.py\n--- a/examples/plotting/file/range_tool.py\n+++ b/examples/plotting/file/range_tool.py\n@@ -21,13 +21,13 @@\n                 x_axis_type=\"datetime\", y_axis_type=None,\n                 tools=\"\", toolbar_location=None, background_fill_color=\"#efefef\")\n \n-range_rool = RangeTool(x_range=p.x_range)\n-range_rool.overlay.fill_color = \"navy\"\n-range_rool.overlay.fill_alpha = 0.2\n+range_tool = RangeTool(x_range=p.x_range)\n+range_tool.overlay.fill_color = \"navy\"\n+range_tool.overlay.fill_alpha = 0.2\n \n select.line('date', 'close', source=source)\n select.ygrid.grid_line_color = None\n-select.add_tools(range_rool)\n-select.toolbar.active_multi = range_rool\n+select.add_tools(range_tool)\n+select.toolbar.active_multi = range_tool\n \n show(column(p, select))\n", "issue": "Typo in range_tool example\nThere is a small typo \"range_rool\" in the range_tool.py example. I would like to use this issue to create my first pull request and see how the process works.\n", "before_files": [{"content": "import numpy as np\n\nfrom bokeh.io import show\nfrom bokeh.layouts import column\nfrom bokeh.models import ColumnDataSource, RangeTool\nfrom bokeh.plotting import figure\nfrom bokeh.sampledata.stocks import AAPL\n\ndates = np.array(AAPL['date'], dtype=np.datetime64)\nsource = ColumnDataSource(data=dict(date=dates, close=AAPL['adj_close']))\n\np = figure(plot_height=300, plot_width=800, tools=\"\", toolbar_location=None,\n           x_axis_type=\"datetime\", x_axis_location=\"above\",\n           background_fill_color=\"#efefef\", x_range=(dates[1500], dates[2500]))\n\np.line('date', 'close', source=source)\np.yaxis.axis_label = 'Price'\n\nselect = figure(title=\"Drag the middle and edges of the selection box to change the range above\",\n                plot_height=130, plot_width=800, y_range=p.y_range,\n                x_axis_type=\"datetime\", y_axis_type=None,\n                tools=\"\", toolbar_location=None, background_fill_color=\"#efefef\")\n\nrange_rool = RangeTool(x_range=p.x_range)\nrange_rool.overlay.fill_color = \"navy\"\nrange_rool.overlay.fill_alpha = 0.2\n\nselect.line('date', 'close', source=source)\nselect.ygrid.grid_line_color = None\nselect.add_tools(range_rool)\nselect.toolbar.active_multi = range_rool\n\nshow(column(p, select))\n", "path": "examples/plotting/file/range_tool.py"}]}