We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
visual changes to subway map
With the current subway map its not apparent where we are on the map. Suggestions to improve the visual effect include making the horizontal line thinner and/or the 'gray' location indicator to something more obvious like red or blue. 

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `panel/pipeline.py`
Content:
```
1 from __future__ import absolute_import, division, unicode_literals
2 
3 import os
4 
5 import param
6 import numpy as np
7 
8 from .layout import Row, Column, HSpacer, VSpacer
9 from .pane import HoloViews, Markdown, Pane
10 from .param import Param
11 from .util import param_reprs
12 
13 
14 class Pipeline(param.Parameterized):
15     """
16     Allows connecting a linear series of panels to define a workflow.
17     Each stage in a pipeline should declare a panel method which
18     returns a panel object that can be displayed and annotate its
19     outputs using the param.output decorator.
20     """
21 
22     debug = param.Boolean(default=False, precedence=-1, doc="""
23         Whether to raise errors, useful for debugging while building an application.""")
24 
25     inherit_params = param.Boolean(default=True, precedence=-1, doc="""
26         Whether parameters should be inherited between pipeline stages""")
27 
28     next = param.Action(default=lambda x: x.param.trigger('next'))
29 
30     previous = param.Action(default=lambda x: x.param.trigger('previous'))
31 
32     def __init__(self, stages=[], **params):
33         try:
34             import holoviews as hv
35         except:
36             raise ImportError('Pipeline requires holoviews to be installed')
37 
38         self._stages = list(stages)
39         self._stage = 0
40         super(Pipeline, self).__init__(**params)
41         self._error = Markdown('')
42         self._states = []
43         self._state = None
44         self._progress_sel = hv.streams.Selection1D()
45         self._progress_sel.add_subscriber(self._set_stage)
46         prev_button =  Param(self.param, parameters=['previous'], show_name=False)
47         next_button =  Param(self.param, parameters=['next'], show_name=False)
48         prev_button.layout[0].disabled = True
49         self._progress_bar = Row(self._make_progress, prev_button, next_button)
50         spinner = Pane(os.path.join(os.path.dirname(__file__), 'assets', 'spinner.gif'))
51         self._spinner_layout = Row(HSpacer(), Column(VSpacer(), spinner, VSpacer()), HSpacer())
52         stage_layout = Row()
53         if len(stages):
54             stage_layout.append(self._init_stage())
55         self._layout = Column(self._progress_bar, self._error, stage_layout)
56 
57     def add_stage(self, name, stage):
58         self._validate(stage)
59         self._stages.append((name, stage))
60         if len(self._stages) == 1:
61             self._layout[2].append(self._init_stage())
62 
63     def _validate(self, stage):
64         if any(stage is s for n, s in self._stages):
65             raise ValueError('Stage %s is already in pipeline' % stage)
66         elif not ((isinstance(stage, type) and issubclass(stage, param.Parameterized))
67                   or isinstance(stage, param.Parameterized)):
68             raise ValueError('Pipeline stages must be Parameterized classes or instances.')
69 
70     def __repr__(self):
71         repr_str = 'Pipeline:'
72         for i, (name, stage) in enumerate(self._stages):
73             if isinstance(stage, param.Parameterized):
74                 cls_name = type(stage).__name__
75             else:
76                 cls_name = stage.__name__
77             params = ', '.join(param_reprs(stage))
78             repr_str += '\n    [%d] %s: %s(%s)' % (i, name, cls_name, params)
79         return repr_str
80 
81     def __getitem__(self, index):
82         return self._stages[index][1]
83 
84     @property
85     def layout(self):
86         self._progress_bar[0] = self._make_progress
87         return self._layout
88 
89 
90     def _init_stage(self):
91         name, stage = self._stages[self._stage]
92         kwargs = {}
93         if self._state:
94             results = {}
95             for name, (_, method, index) in self._state.param.outputs().items():
96                 if name not in stage.param:
97                     continue
98                 if method not in results:
99                     results[method] = method()
100                 result = results[method]
101                 if index is not None:
102                     result = result[index]
103                 kwargs[name] = result
104             if self.inherit_params:
105                 params = [k for k, v in self._state.param.objects('existing').items()
106                           if v.precedence is None or v.precedence >= 0]
107                 kwargs.update({k: v for k, v in self._state.param.get_param_values()
108                                if k in stage.param and k != 'name' and k in params})
109 
110         if isinstance(stage, param.Parameterized):
111             stage.set_param(**kwargs)
112             self._state = stage
113         else:
114             self._state = stage(**kwargs)
115         if len(self._states) <= self._stage:
116             self._states.append(self._state)
117         else:
118             self._states[self._stage] = self._state
119         return self._state.panel()
120 
121     def _set_stage(self, index):
122         idx = index[0]
123         steps = idx-self._stage
124         if steps < 0:
125             for i in range(abs(steps)):
126                 e = self._previous()
127                 if e:
128                     break
129         else:
130             for i in range(steps):
131                 e = self._next()
132                 if e:
133                     break
134 
135     def _update_button(self):
136         # Disable previous button
137         if self._stage == 0:
138             self._progress_bar[1].layout[0].disabled = True
139         else:
140             self._progress_bar[1].layout[0].disabled = False
141 
142         # Disable next button
143         if self._stage == len(self._stages)-1:
144             self._progress_bar[2].layout[0].disabled = True
145         else:
146             self._progress_bar[2].layout[0].disabled = False
147 
148     @param.depends('next', watch=True)
149     def _next(self):
150         self._stage += 1
151         prev_state = self._layout[2][0]
152         self._layout[2][0] = self._spinner_layout
153         try:
154             new_stage = self._init_stage()
155             self._layout[2][0] = new_stage
156             self._update_button()
157         except Exception as e:
158             self._stage -= 1
159             self._error.object = ('Next stage raised following error:\n\n\t%s: %s'
160                                   % (type(e).__name__, str(e)))
161             self._layout[2][0] = prev_state
162             if self.debug:
163                 raise e
164             return e
165         else:
166             self._error.object = ''
167 
168     @param.depends('previous', watch=True)
169     def _previous(self):
170         self._stage -= 1
171         try:
172             self._state = self._states[self._stage]
173             self._layout[2][0] = self._state.panel()
174             self._update_button()
175         except Exception as e:
176             self._stage += 1
177             self._error.object = ('Previous stage raised following error:\n\n\t%s: %s'
178                                   % (type(e).__name__, str(e)))
179             if self.debug:
180                 raise e
181         else:
182             self._error.object = ''
183 
184     @param.depends('previous', 'next')
185     def _make_progress(self):
186         import holoviews as hv
187         import holoviews.plotting.bokeh # noqa
188         stages = len(self._stages)
189         line = hv.Path([[(0, 0), (stages-1, 0)]]).options(
190             line_width=10, color='black', backend='bokeh'
191         )
192         vals = np.arange(stages)
193         active = [1 if v == self._stage else 0 for v in vals]
194         points = hv.Points((vals, np.zeros(stages), active), vdims=['active']).options(
195             color_index='active', line_color='black', cmap={0: 'white', 1: 'gray'},
196             show_legend=False, size=20, default_tools=[], tools=['tap'],
197             nonselection_alpha=1, backend='bokeh'
198         )
199         point_labels = points.add_dimension('text', 0, [n for n, _ in self._stages], vdim=True)
200         labels = hv.Labels(point_labels).options(yoffset=-2.5, backend='bokeh')
201         self._progress_sel.source = points
202         hv_plot = (line * points * labels).options(
203             xaxis=None, yaxis=None, width=800, show_frame=False, toolbar=None,
204             height=80, xlim=(-0.5, stages-0.5), ylim=(-4, 1.5),
205             clone=False, backend='bokeh'
206         )
207         return HoloViews(hv_plot, backend='bokeh')
208
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/panel/pipeline.py b/panel/pipeline.py
--- a/panel/pipeline.py
+++ b/panel/pipeline.py
@@ -187,12 +187,12 @@
         import holoviews.plotting.bokeh # noqa
         stages = len(self._stages)
         line = hv.Path([[(0, 0), (stages-1, 0)]]).options(
-            line_width=10, color='black', backend='bokeh'
+            line_width=6, color='black', backend='bokeh'
         )
         vals = np.arange(stages)
         active = [1 if v == self._stage else 0 for v in vals]
         points = hv.Points((vals, np.zeros(stages), active), vdims=['active']).options(
-            color_index='active', line_color='black', cmap={0: 'white', 1: 'gray'},
+            color_index='active', line_color='black', cmap={0: 'white', 1: '#5cb85c'},
             show_legend=False, size=20, default_tools=[], tools=['tap'],
             nonselection_alpha=1, backend='bokeh'
         )

{"golden_diff": "diff --git a/panel/pipeline.py b/panel/pipeline.py\n--- a/panel/pipeline.py\n+++ b/panel/pipeline.py\n@@ -187,12 +187,12 @@\n         import holoviews.plotting.bokeh # noqa\n         stages = len(self._stages)\n         line = hv.Path([[(0, 0), (stages-1, 0)]]).options(\n-            line_width=10, color='black', backend='bokeh'\n+            line_width=6, color='black', backend='bokeh'\n         )\n         vals = np.arange(stages)\n         active = [1 if v == self._stage else 0 for v in vals]\n         points = hv.Points((vals, np.zeros(stages), active), vdims=['active']).options(\n-            color_index='active', line_color='black', cmap={0: 'white', 1: 'gray'},\n+            color_index='active', line_color='black', cmap={0: 'white', 1: '#5cb85c'},\n             show_legend=False, size=20, default_tools=[], tools=['tap'],\n             nonselection_alpha=1, backend='bokeh'\n         )\n", "issue": "visual changes to subway map\nWith the current subway map its not apparent where we are on the map. Suggestions to improve the visual effect include making the horizontal line thinner and/or the 'gray' location indicator to something more obvious like red or blue. \n", "before_files": [{"content": "from __future__ import absolute_import, division, unicode_literals\n\nimport os\n\nimport param\nimport numpy as np\n\nfrom .layout import Row, Column, HSpacer, VSpacer\nfrom .pane import HoloViews, Markdown, Pane\nfrom .param import Param\nfrom .util import param_reprs\n\n\nclass Pipeline(param.Parameterized):\n    \"\"\"\n    Allows connecting a linear series of panels to define a workflow.\n    Each stage in a pipeline should declare a panel method which\n    returns a panel object that can be displayed and annotate its\n    outputs using the param.output decorator.\n    \"\"\"\n\n    debug = param.Boolean(default=False, precedence=-1, doc=\"\"\"\n        Whether to raise errors, useful for debugging while building an application.\"\"\")\n\n    inherit_params = param.Boolean(default=True, precedence=-1, doc=\"\"\"\n        Whether parameters should be inherited between pipeline stages\"\"\")\n\n    next = param.Action(default=lambda x: x.param.trigger('next'))\n\n    previous = param.Action(default=lambda x: x.param.trigger('previous'))\n\n    def __init__(self, stages=[], **params):\n        try:\n            import holoviews as hv\n        except:\n            raise ImportError('Pipeline requires holoviews to be installed')\n\n        self._stages = list(stages)\n        self._stage = 0\n        super(Pipeline, self).__init__(**params)\n        self._error = Markdown('')\n        self._states = []\n        self._state = None\n        self._progress_sel = hv.streams.Selection1D()\n        self._progress_sel.add_subscriber(self._set_stage)\n        prev_button =  Param(self.param, parameters=['previous'], show_name=False)\n        next_button =  Param(self.param, parameters=['next'], show_name=False)\n        prev_button.layout[0].disabled = True\n        self._progress_bar = Row(self._make_progress, prev_button, next_button)\n        spinner = Pane(os.path.join(os.path.dirname(__file__), 'assets', 'spinner.gif'))\n        self._spinner_layout = Row(HSpacer(), Column(VSpacer(), spinner, VSpacer()), HSpacer())\n        stage_layout = Row()\n        if len(stages):\n            stage_layout.append(self._init_stage())\n        self._layout = Column(self._progress_bar, self._error, stage_layout)\n\n    def add_stage(self, name, stage):\n        self._validate(stage)\n        self._stages.append((name, stage))\n        if len(self._stages) == 1:\n            self._layout[2].append(self._init_stage())\n\n    def _validate(self, stage):\n        if any(stage is s for n, s in self._stages):\n            raise ValueError('Stage %s is already in pipeline' % stage)\n        elif not ((isinstance(stage, type) and issubclass(stage, param.Parameterized))\n                  or isinstance(stage, param.Parameterized)):\n            raise ValueError('Pipeline stages must be Parameterized classes or instances.')\n\n    def __repr__(self):\n        repr_str = 'Pipeline:'\n        for i, (name, stage) in enumerate(self._stages):\n            if isinstance(stage, param.Parameterized):\n                cls_name = type(stage).__name__\n            else:\n                cls_name = stage.__name__\n            params = ', '.join(param_reprs(stage))\n            repr_str += '\\n    [%d] %s: %s(%s)' % (i, name, cls_name, params)\n        return repr_str\n\n    def __getitem__(self, index):\n        return self._stages[index][1]\n\n    @property\n    def layout(self):\n        self._progress_bar[0] = self._make_progress\n        return self._layout\n\n\n    def _init_stage(self):\n        name, stage = self._stages[self._stage]\n        kwargs = {}\n        if self._state:\n            results = {}\n            for name, (_, method, index) in self._state.param.outputs().items():\n                if name not in stage.param:\n                    continue\n                if method not in results:\n                    results[method] = method()\n                result = results[method]\n                if index is not None:\n                    result = result[index]\n                kwargs[name] = result\n            if self.inherit_params:\n                params = [k for k, v in self._state.param.objects('existing').items()\n                          if v.precedence is None or v.precedence >= 0]\n                kwargs.update({k: v for k, v in self._state.param.get_param_values()\n                               if k in stage.param and k != 'name' and k in params})\n\n        if isinstance(stage, param.Parameterized):\n            stage.set_param(**kwargs)\n            self._state = stage\n        else:\n            self._state = stage(**kwargs)\n        if len(self._states) <= self._stage:\n            self._states.append(self._state)\n        else:\n            self._states[self._stage] = self._state\n        return self._state.panel()\n\n    def _set_stage(self, index):\n        idx = index[0]\n        steps = idx-self._stage\n        if steps < 0:\n            for i in range(abs(steps)):\n                e = self._previous()\n                if e:\n                    break\n        else:\n            for i in range(steps):\n                e = self._next()\n                if e:\n                    break\n\n    def _update_button(self):\n        # Disable previous button\n        if self._stage == 0:\n            self._progress_bar[1].layout[0].disabled = True\n        else:\n            self._progress_bar[1].layout[0].disabled = False\n\n        # Disable next button\n        if self._stage == len(self._stages)-1:\n            self._progress_bar[2].layout[0].disabled = True\n        else:\n            self._progress_bar[2].layout[0].disabled = False\n\n    @param.depends('next', watch=True)\n    def _next(self):\n        self._stage += 1\n        prev_state = self._layout[2][0]\n        self._layout[2][0] = self._spinner_layout\n        try:\n            new_stage = self._init_stage()\n            self._layout[2][0] = new_stage\n            self._update_button()\n        except Exception as e:\n            self._stage -= 1\n            self._error.object = ('Next stage raised following error:\\n\\n\\t%s: %s'\n                                  % (type(e).__name__, str(e)))\n            self._layout[2][0] = prev_state\n            if self.debug:\n                raise e\n            return e\n        else:\n            self._error.object = ''\n\n    @param.depends('previous', watch=True)\n    def _previous(self):\n        self._stage -= 1\n        try:\n            self._state = self._states[self._stage]\n            self._layout[2][0] = self._state.panel()\n            self._update_button()\n        except Exception as e:\n            self._stage += 1\n            self._error.object = ('Previous stage raised following error:\\n\\n\\t%s: %s'\n                                  % (type(e).__name__, str(e)))\n            if self.debug:\n                raise e\n        else:\n            self._error.object = ''\n\n    @param.depends('previous', 'next')\n    def _make_progress(self):\n        import holoviews as hv\n        import holoviews.plotting.bokeh # noqa\n        stages = len(self._stages)\n        line = hv.Path([[(0, 0), (stages-1, 0)]]).options(\n            line_width=10, color='black', backend='bokeh'\n        )\n        vals = np.arange(stages)\n        active = [1 if v == self._stage else 0 for v in vals]\n        points = hv.Points((vals, np.zeros(stages), active), vdims=['active']).options(\n            color_index='active', line_color='black', cmap={0: 'white', 1: 'gray'},\n            show_legend=False, size=20, default_tools=[], tools=['tap'],\n            nonselection_alpha=1, backend='bokeh'\n        )\n        point_labels = points.add_dimension('text', 0, [n for n, _ in self._stages], vdim=True)\n        labels = hv.Labels(point_labels).options(yoffset=-2.5, backend='bokeh')\n        self._progress_sel.source = points\n        hv_plot = (line * points * labels).options(\n            xaxis=None, yaxis=None, width=800, show_frame=False, toolbar=None,\n            height=80, xlim=(-0.5, stages-0.5), ylim=(-4, 1.5),\n            clone=False, backend='bokeh'\n        )\n        return HoloViews(hv_plot, backend='bokeh')\n", "path": "panel/pipeline.py"}], "after_files": [{"content": "from __future__ import absolute_import, division, unicode_literals\n\nimport os\n\nimport param\nimport numpy as np\n\nfrom .layout import Row, Column, HSpacer, VSpacer\nfrom .pane import HoloViews, Markdown, Pane\nfrom .param import Param\nfrom .util import param_reprs\n\n\nclass Pipeline(param.Parameterized):\n    \"\"\"\n    Allows connecting a linear series of panels to define a workflow.\n    Each stage in a pipeline should declare a panel method which\n    returns a panel object that can be displayed and annotate its\n    outputs using the param.output decorator.\n    \"\"\"\n\n    debug = param.Boolean(default=False, precedence=-1, doc=\"\"\"\n        Whether to raise errors, useful for debugging while building an application.\"\"\")\n\n    inherit_params = param.Boolean(default=True, precedence=-1, doc=\"\"\"\n        Whether parameters should be inherited between pipeline stages\"\"\")\n\n    next = param.Action(default=lambda x: x.param.trigger('next'))\n\n    previous = param.Action(default=lambda x: x.param.trigger('previous'))\n\n    def __init__(self, stages=[], **params):\n        try:\n            import holoviews as hv\n        except:\n            raise ImportError('Pipeline requires holoviews to be installed')\n\n        self._stages = list(stages)\n        self._stage = 0\n        super(Pipeline, self).__init__(**params)\n        self._error = Markdown('')\n        self._states = []\n        self._state = None\n        self._progress_sel = hv.streams.Selection1D()\n        self._progress_sel.add_subscriber(self._set_stage)\n        prev_button =  Param(self.param, parameters=['previous'], show_name=False)\n        next_button =  Param(self.param, parameters=['next'], show_name=False)\n        prev_button.layout[0].disabled = True\n        self._progress_bar = Row(self._make_progress, prev_button, next_button)\n        spinner = Pane(os.path.join(os.path.dirname(__file__), 'assets', 'spinner.gif'))\n        self._spinner_layout = Row(HSpacer(), Column(VSpacer(), spinner, VSpacer()), HSpacer())\n        stage_layout = Row()\n        if len(stages):\n            stage_layout.append(self._init_stage())\n        self._layout = Column(self._progress_bar, self._error, stage_layout)\n\n    def add_stage(self, name, stage):\n        self._validate(stage)\n        self._stages.append((name, stage))\n        if len(self._stages) == 1:\n            self._layout[2].append(self._init_stage())\n\n    def _validate(self, stage):\n        if any(stage is s for n, s in self._stages):\n            raise ValueError('Stage %s is already in pipeline' % stage)\n        elif not ((isinstance(stage, type) and issubclass(stage, param.Parameterized))\n                  or isinstance(stage, param.Parameterized)):\n            raise ValueError('Pipeline stages must be Parameterized classes or instances.')\n\n    def __repr__(self):\n        repr_str = 'Pipeline:'\n        for i, (name, stage) in enumerate(self._stages):\n            if isinstance(stage, param.Parameterized):\n                cls_name = type(stage).__name__\n            else:\n                cls_name = stage.__name__\n            params = ', '.join(param_reprs(stage))\n            repr_str += '\\n    [%d] %s: %s(%s)' % (i, name, cls_name, params)\n        return repr_str\n\n    def __getitem__(self, index):\n        return self._stages[index][1]\n\n    @property\n    def layout(self):\n        self._progress_bar[0] = self._make_progress\n        return self._layout\n\n\n    def _init_stage(self):\n        name, stage = self._stages[self._stage]\n        kwargs = {}\n        if self._state:\n            results = {}\n            for name, (_, method, index) in self._state.param.outputs().items():\n                if name not in stage.param:\n                    continue\n                if method not in results:\n                    results[method] = method()\n                result = results[method]\n                if index is not None:\n                    result = result[index]\n                kwargs[name] = result\n            if self.inherit_params:\n                params = [k for k, v in self._state.param.objects('existing').items()\n                          if v.precedence is None or v.precedence >= 0]\n                kwargs.update({k: v for k, v in self._state.param.get_param_values()\n                               if k in stage.param and k != 'name' and k in params})\n\n        if isinstance(stage, param.Parameterized):\n            stage.set_param(**kwargs)\n            self._state = stage\n        else:\n            self._state = stage(**kwargs)\n        if len(self._states) <= self._stage:\n            self._states.append(self._state)\n        else:\n            self._states[self._stage] = self._state\n        return self._state.panel()\n\n    def _set_stage(self, index):\n        idx = index[0]\n        steps = idx-self._stage\n        if steps < 0:\n            for i in range(abs(steps)):\n                e = self._previous()\n                if e:\n                    break\n        else:\n            for i in range(steps):\n                e = self._next()\n                if e:\n                    break\n\n    def _update_button(self):\n        # Disable previous button\n        if self._stage == 0:\n            self._progress_bar[1].layout[0].disabled = True\n        else:\n            self._progress_bar[1].layout[0].disabled = False\n\n        # Disable next button\n        if self._stage == len(self._stages)-1:\n            self._progress_bar[2].layout[0].disabled = True\n        else:\n            self._progress_bar[2].layout[0].disabled = False\n\n    @param.depends('next', watch=True)\n    def _next(self):\n        self._stage += 1\n        prev_state = self._layout[2][0]\n        self._layout[2][0] = self._spinner_layout\n        try:\n            new_stage = self._init_stage()\n            self._layout[2][0] = new_stage\n            self._update_button()\n        except Exception as e:\n            self._stage -= 1\n            self._error.object = ('Next stage raised following error:\\n\\n\\t%s: %s'\n                                  % (type(e).__name__, str(e)))\n            self._layout[2][0] = prev_state\n            if self.debug:\n                raise e\n            return e\n        else:\n            self._error.object = ''\n\n    @param.depends('previous', watch=True)\n    def _previous(self):\n        self._stage -= 1\n        try:\n            self._state = self._states[self._stage]\n            self._layout[2][0] = self._state.panel()\n            self._update_button()\n        except Exception as e:\n            self._stage += 1\n            self._error.object = ('Previous stage raised following error:\\n\\n\\t%s: %s'\n                                  % (type(e).__name__, str(e)))\n            if self.debug:\n                raise e\n        else:\n            self._error.object = ''\n\n    @param.depends('previous', 'next')\n    def _make_progress(self):\n        import holoviews as hv\n        import holoviews.plotting.bokeh # noqa\n        stages = len(self._stages)\n        line = hv.Path([[(0, 0), (stages-1, 0)]]).options(\n            line_width=6, color='black', backend='bokeh'\n        )\n        vals = np.arange(stages)\n        active = [1 if v == self._stage else 0 for v in vals]\n        points = hv.Points((vals, np.zeros(stages), active), vdims=['active']).options(\n            color_index='active', line_color='black', cmap={0: 'white', 1: '#5cb85c'},\n            show_legend=False, size=20, default_tools=[], tools=['tap'],\n            nonselection_alpha=1, backend='bokeh'\n        )\n        point_labels = points.add_dimension('text', 0, [n for n, _ in self._stages], vdim=True)\n        labels = hv.Labels(point_labels).options(yoffset=-2.5, backend='bokeh')\n        self._progress_sel.source = points\n        hv_plot = (line * points * labels).options(\n            xaxis=None, yaxis=None, width=800, show_frame=False, toolbar=None,\n            height=80, xlim=(-0.5, stages-0.5), ylim=(-4, 1.5),\n            clone=False, backend='bokeh'\n        )\n        return HoloViews(hv_plot, backend='bokeh')\n", "path": "panel/pipeline.py"}]}