We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Extend TextInput with `placeholder` 
`placeholder` and `pattern` are nice features in HTML to give the user info about the field and to validate the user-input.

Add `placeholder` and `pattern` to `TextInput` in python, extend `text_input.coffee` and the `text_input_template.eco` 


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `bokeh/models/widgets/inputs.py`
Content:
```
1 """ Various kinds of input widgets and form controls.
2 
3 """
4 from __future__ import absolute_import
5 
6 from ...core.properties import abstract
7 from ...core.properties import Bool, Int, Float, String, Date, RelativeDelta, Enum, List, Tuple, Either, Instance
8 from ..callbacks import Callback
9 from .widget import Widget
10 from ...core.enums import SliderCallbackPolicy
11 
12 @abstract
13 class InputWidget(Widget):
14     """ Abstract base class for input widgets. `InputWidget`` is not
15     generally useful to instantiate on its own.
16 
17     """
18 
19     title = String(default="", help="""
20     Widget's label.
21     """)
22 
23     @classmethod
24     def coerce_value(cls, val):
25         prop_obj = cls.lookup('value')
26         if isinstance(prop_obj, Float):
27             return float(val)
28         elif isinstance(prop_obj, Int):
29             return int(val)
30         elif isinstance(prop_obj, String):
31             return str(val)
32         else:
33             return val
34 
35 class TextInput(InputWidget):
36     """ Single-line input widget. """
37 
38     value = String(default="", help="""
39     Initial or entered text value.
40     """)
41 
42     callback = Instance(Callback, help="""
43     A callback to run in the browser whenever the user unfocuses the TextInput
44     widget by hitting Enter or clicking outside of the text box area.
45     """)
46 
47 
48 class AutocompleteInput(TextInput):
49     """ Single-line input widget with auto-completion. """
50 
51     completions = List(String, help="""
52     A list of completion strings. This will be used to guide the
53     user upon typing the beginning of a desired value.
54     """)
55 
56 
57 class Select(InputWidget):
58     """ Single-select widget.
59 
60     """
61 
62     options = List(Either(String, Tuple(String, String)), help="""
63     Available selection options. Options may be provided either as a list of
64     possible string values, or as a list of tuples, each of the form
65     ``(value, label)``. In the latter case, the visible widget text for each
66     value will be corresponding given label.
67     """)
68 
69     value = String(default="", help="""
70     Initial or selected value.
71     """)
72 
73     callback = Instance(Callback, help="""
74     A callback to run in the browser whenever the current Select dropdown
75     value changes.
76     """)
77 
78 class MultiSelect(InputWidget):
79     """ Multi-select widget.
80 
81     """
82 
83     options = List(Either(String, Tuple(String, String)), help="""
84     Available selection options. Options may be provided either as a list of
85     possible string values, or as a list of tuples, each of the form
86     ``(value, label)``. In the latter case, the visible widget text for each
87     value will be corresponding given label.
88     """)
89 
90     value = List(String, help="""
91     Initial or selected values.
92     """)
93 
94     callback = Instance(Callback, help="""
95     A callback to run in the browser whenever the current dropdown value
96     changes.
97     """)
98 
99 class Slider(InputWidget):
100     """ Slider-based number selection widget.
101 
102     """
103 
104     value = Float(default=0.5, help="""
105     Initial or selected value.
106     """)
107 
108     start = Float(default=0, help="""
109     The minimum allowable value.
110     """)
111 
112     end = Float(default=1, help="""
113     The maximum allowable value.
114     """)
115 
116     step = Float(default=0.1, help="""
117     The step between consecutive values.
118     """)
119 
120     orientation = Enum("horizontal", "vertical", help="""
121     Orient the slider either horizontally (default) or vertically.
122     """)
123 
124     callback = Instance(Callback, help="""
125     A callback to run in the browser whenever the current Slider value changes.
126     """)
127 
128     callback_throttle = Float(default=200, help="""
129     Number of microseconds to pause between callback calls as the slider is moved.
130     """)
131 
132     callback_policy = Enum(SliderCallbackPolicy, default="throttle", help="""
133     When the callback is initiated. This parameter can take on only one of three options:
134 
135        "continuous": the callback will be executed immediately for each movement of the slider
136        "throttle": the callback will be executed at most every ``callback_throttle`` milliseconds.
137        "mouseup": the callback will be executed only once when the slider is released.
138 
139        The `mouseup` policy is intended for scenarios in which the callback is expensive in time.
140     """)
141 
142 class RangeSlider(InputWidget):
143     """ Range-slider based range selection widget
144 
145     """
146 
147     range = Tuple(Float, Float, default=(0.1, 0.9), help="""
148     Initial or selected range.
149     """)
150 
151     start = Float(default=0, help="""
152     The minimum allowable value.
153     """)
154 
155     end = Float(default=1, help="""
156     The maximum allowable value.
157     """)
158 
159     step = Float(default=0.1, help="""
160     The step between consecutive values.
161     """)
162 
163     orientation = Enum("horizontal", "vertical", help="""
164     Orient the slider either horizontally (default) or vertically.
165     """)
166 
167     callback = Instance(Callback, help="""
168     A callback to run in the browser whenever the current Slider value changes.
169     """)
170 
171     callback_throttle = Float(default=200, help="""
172     Number of microseconds to pause between callback calls as the slider is moved.
173     """)
174 
175     callback_policy = Enum(SliderCallbackPolicy, default="throttle", help="""
176     When the callback is initiated. This parameter can take on only one of three options:
177 
178        "continuous": the callback will be executed immediately for each movement of the slider
179        "throttle": the callback will be executed at most every ``callback_throttle`` milliseconds.
180        "mouseup": the callback will be executed only once when the slider is released.
181 
182        The `mouseup` policy is intended for scenarios in which the callback is expensive in time.
183     """)
184 
185 
186 class DateRangeSlider(InputWidget):
187     """ Slider-based date range selection widget.
188 
189     """
190 
191     value = Tuple(Date, Date, help="""
192     The initial or selected date range.
193     """)
194 
195     bounds = Tuple(Date, Date, help="""
196     The earliest and latest allowable dates.
197     """)
198 
199     range = Tuple(RelativeDelta, RelativeDelta, help="""
200     [TDB]
201     """)
202 
203     step = RelativeDelta(help="""
204     The step between consecutive dates.
205     """)
206 
207     # formatter = Either(String, Function(Date))
208     # scales = DateRangeSliderScales ... # first, next, stop, label, format
209 
210     enabled = Bool(True, help="""
211     Enable or disable this widget.
212     """)
213 
214     arrows = Bool(True, help="""
215     Whether to show clickable arrows on both ends of the slider.
216     """)
217 
218     value_labels = Enum("show", "hide", "change", help="""
219     Show or hide value labels on both sides of the slider.
220     """)
221 
222     wheel_mode = Enum("scroll", "zoom", default=None, help="""
223     Whether mouse zoom should scroll or zoom selected range (or
224     do nothing).
225     """)
226 
227     callback = Instance(Callback, help="""
228     A callback to run in the browser whenever either slider's value changes.
229     """)
230 
231 class DatePicker(InputWidget):
232     """ Calendar-based date picker widget.
233 
234     """
235 
236     value = Date(help="""
237     The initial or picked date.
238     """)
239 
240     min_date = Date(default=None, help="""
241     Optional earliest allowable date.
242     """)
243 
244     max_date = Date(default=None, help="""
245     Optional latest allowable date.
246     """)
247 
248     callback = Instance(Callback, help="""
249     A callback to run in the browser whenever the current date value changes.
250     """)
251
```
--- 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/bokeh/models/widgets/inputs.py b/bokeh/models/widgets/inputs.py
--- a/bokeh/models/widgets/inputs.py
+++ b/bokeh/models/widgets/inputs.py
@@ -43,6 +43,10 @@
     A callback to run in the browser whenever the user unfocuses the TextInput
     widget by hitting Enter or clicking outside of the text box area.
     """)
+    
+    placeholder = String(default="", help="""
+    Placeholder for empty input field
+    """)
 
 
 class AutocompleteInput(TextInput):

{"golden_diff": "diff --git a/bokeh/models/widgets/inputs.py b/bokeh/models/widgets/inputs.py\n--- a/bokeh/models/widgets/inputs.py\n+++ b/bokeh/models/widgets/inputs.py\n@@ -43,6 +43,10 @@\n     A callback to run in the browser whenever the user unfocuses the TextInput\n     widget by hitting Enter or clicking outside of the text box area.\n     \"\"\")\n+    \n+    placeholder = String(default=\"\", help=\"\"\"\n+    Placeholder for empty input field\n+    \"\"\")\n \n \n class AutocompleteInput(TextInput):\n", "issue": "Extend TextInput with `placeholder` \n`placeholder` and `pattern` are nice features in HTML to give the user info about the field and to validate the user-input.\n\nAdd `placeholder` and `pattern` to `TextInput` in python, extend `text_input.coffee` and the `text_input_template.eco` \n\n", "before_files": [{"content": "\"\"\" Various kinds of input widgets and form controls.\n\n\"\"\"\nfrom __future__ import absolute_import\n\nfrom ...core.properties import abstract\nfrom ...core.properties import Bool, Int, Float, String, Date, RelativeDelta, Enum, List, Tuple, Either, Instance\nfrom ..callbacks import Callback\nfrom .widget import Widget\nfrom ...core.enums import SliderCallbackPolicy\n\n@abstract\nclass InputWidget(Widget):\n    \"\"\" Abstract base class for input widgets. `InputWidget`` is not\n    generally useful to instantiate on its own.\n\n    \"\"\"\n\n    title = String(default=\"\", help=\"\"\"\n    Widget's label.\n    \"\"\")\n\n    @classmethod\n    def coerce_value(cls, val):\n        prop_obj = cls.lookup('value')\n        if isinstance(prop_obj, Float):\n            return float(val)\n        elif isinstance(prop_obj, Int):\n            return int(val)\n        elif isinstance(prop_obj, String):\n            return str(val)\n        else:\n            return val\n\nclass TextInput(InputWidget):\n    \"\"\" Single-line input widget. \"\"\"\n\n    value = String(default=\"\", help=\"\"\"\n    Initial or entered text value.\n    \"\"\")\n\n    callback = Instance(Callback, help=\"\"\"\n    A callback to run in the browser whenever the user unfocuses the TextInput\n    widget by hitting Enter or clicking outside of the text box area.\n    \"\"\")\n\n\nclass AutocompleteInput(TextInput):\n    \"\"\" Single-line input widget with auto-completion. \"\"\"\n\n    completions = List(String, help=\"\"\"\n    A list of completion strings. This will be used to guide the\n    user upon typing the beginning of a desired value.\n    \"\"\")\n\n\nclass Select(InputWidget):\n    \"\"\" Single-select widget.\n\n    \"\"\"\n\n    options = List(Either(String, Tuple(String, String)), help=\"\"\"\n    Available selection options. Options may be provided either as a list of\n    possible string values, or as a list of tuples, each of the form\n    ``(value, label)``. In the latter case, the visible widget text for each\n    value will be corresponding given label.\n    \"\"\")\n\n    value = String(default=\"\", help=\"\"\"\n    Initial or selected value.\n    \"\"\")\n\n    callback = Instance(Callback, help=\"\"\"\n    A callback to run in the browser whenever the current Select dropdown\n    value changes.\n    \"\"\")\n\nclass MultiSelect(InputWidget):\n    \"\"\" Multi-select widget.\n\n    \"\"\"\n\n    options = List(Either(String, Tuple(String, String)), help=\"\"\"\n    Available selection options. Options may be provided either as a list of\n    possible string values, or as a list of tuples, each of the form\n    ``(value, label)``. In the latter case, the visible widget text for each\n    value will be corresponding given label.\n    \"\"\")\n\n    value = List(String, help=\"\"\"\n    Initial or selected values.\n    \"\"\")\n\n    callback = Instance(Callback, help=\"\"\"\n    A callback to run in the browser whenever the current dropdown value\n    changes.\n    \"\"\")\n\nclass Slider(InputWidget):\n    \"\"\" Slider-based number selection widget.\n\n    \"\"\"\n\n    value = Float(default=0.5, help=\"\"\"\n    Initial or selected value.\n    \"\"\")\n\n    start = Float(default=0, help=\"\"\"\n    The minimum allowable value.\n    \"\"\")\n\n    end = Float(default=1, help=\"\"\"\n    The maximum allowable value.\n    \"\"\")\n\n    step = Float(default=0.1, help=\"\"\"\n    The step between consecutive values.\n    \"\"\")\n\n    orientation = Enum(\"horizontal\", \"vertical\", help=\"\"\"\n    Orient the slider either horizontally (default) or vertically.\n    \"\"\")\n\n    callback = Instance(Callback, help=\"\"\"\n    A callback to run in the browser whenever the current Slider value changes.\n    \"\"\")\n\n    callback_throttle = Float(default=200, help=\"\"\"\n    Number of microseconds to pause between callback calls as the slider is moved.\n    \"\"\")\n\n    callback_policy = Enum(SliderCallbackPolicy, default=\"throttle\", help=\"\"\"\n    When the callback is initiated. This parameter can take on only one of three options:\n\n       \"continuous\": the callback will be executed immediately for each movement of the slider\n       \"throttle\": the callback will be executed at most every ``callback_throttle`` milliseconds.\n       \"mouseup\": the callback will be executed only once when the slider is released.\n\n       The `mouseup` policy is intended for scenarios in which the callback is expensive in time.\n    \"\"\")\n\nclass RangeSlider(InputWidget):\n    \"\"\" Range-slider based range selection widget\n\n    \"\"\"\n\n    range = Tuple(Float, Float, default=(0.1, 0.9), help=\"\"\"\n    Initial or selected range.\n    \"\"\")\n\n    start = Float(default=0, help=\"\"\"\n    The minimum allowable value.\n    \"\"\")\n\n    end = Float(default=1, help=\"\"\"\n    The maximum allowable value.\n    \"\"\")\n\n    step = Float(default=0.1, help=\"\"\"\n    The step between consecutive values.\n    \"\"\")\n\n    orientation = Enum(\"horizontal\", \"vertical\", help=\"\"\"\n    Orient the slider either horizontally (default) or vertically.\n    \"\"\")\n\n    callback = Instance(Callback, help=\"\"\"\n    A callback to run in the browser whenever the current Slider value changes.\n    \"\"\")\n\n    callback_throttle = Float(default=200, help=\"\"\"\n    Number of microseconds to pause between callback calls as the slider is moved.\n    \"\"\")\n\n    callback_policy = Enum(SliderCallbackPolicy, default=\"throttle\", help=\"\"\"\n    When the callback is initiated. This parameter can take on only one of three options:\n\n       \"continuous\": the callback will be executed immediately for each movement of the slider\n       \"throttle\": the callback will be executed at most every ``callback_throttle`` milliseconds.\n       \"mouseup\": the callback will be executed only once when the slider is released.\n\n       The `mouseup` policy is intended for scenarios in which the callback is expensive in time.\n    \"\"\")\n\n\nclass DateRangeSlider(InputWidget):\n    \"\"\" Slider-based date range selection widget.\n\n    \"\"\"\n\n    value = Tuple(Date, Date, help=\"\"\"\n    The initial or selected date range.\n    \"\"\")\n\n    bounds = Tuple(Date, Date, help=\"\"\"\n    The earliest and latest allowable dates.\n    \"\"\")\n\n    range = Tuple(RelativeDelta, RelativeDelta, help=\"\"\"\n    [TDB]\n    \"\"\")\n\n    step = RelativeDelta(help=\"\"\"\n    The step between consecutive dates.\n    \"\"\")\n\n    # formatter = Either(String, Function(Date))\n    # scales = DateRangeSliderScales ... # first, next, stop, label, format\n\n    enabled = Bool(True, help=\"\"\"\n    Enable or disable this widget.\n    \"\"\")\n\n    arrows = Bool(True, help=\"\"\"\n    Whether to show clickable arrows on both ends of the slider.\n    \"\"\")\n\n    value_labels = Enum(\"show\", \"hide\", \"change\", help=\"\"\"\n    Show or hide value labels on both sides of the slider.\n    \"\"\")\n\n    wheel_mode = Enum(\"scroll\", \"zoom\", default=None, help=\"\"\"\n    Whether mouse zoom should scroll or zoom selected range (or\n    do nothing).\n    \"\"\")\n\n    callback = Instance(Callback, help=\"\"\"\n    A callback to run in the browser whenever either slider's value changes.\n    \"\"\")\n\nclass DatePicker(InputWidget):\n    \"\"\" Calendar-based date picker widget.\n\n    \"\"\"\n\n    value = Date(help=\"\"\"\n    The initial or picked date.\n    \"\"\")\n\n    min_date = Date(default=None, help=\"\"\"\n    Optional earliest allowable date.\n    \"\"\")\n\n    max_date = Date(default=None, help=\"\"\"\n    Optional latest allowable date.\n    \"\"\")\n\n    callback = Instance(Callback, help=\"\"\"\n    A callback to run in the browser whenever the current date value changes.\n    \"\"\")\n", "path": "bokeh/models/widgets/inputs.py"}], "after_files": [{"content": "\"\"\" Various kinds of input widgets and form controls.\n\n\"\"\"\nfrom __future__ import absolute_import\n\nfrom ...core.properties import abstract\nfrom ...core.properties import Bool, Int, Float, String, Date, RelativeDelta, Enum, List, Tuple, Either, Instance\nfrom ..callbacks import Callback\nfrom .widget import Widget\nfrom ...core.enums import SliderCallbackPolicy\n\n@abstract\nclass InputWidget(Widget):\n    \"\"\" Abstract base class for input widgets. `InputWidget`` is not\n    generally useful to instantiate on its own.\n\n    \"\"\"\n\n    title = String(default=\"\", help=\"\"\"\n    Widget's label.\n    \"\"\")\n\n    @classmethod\n    def coerce_value(cls, val):\n        prop_obj = cls.lookup('value')\n        if isinstance(prop_obj, Float):\n            return float(val)\n        elif isinstance(prop_obj, Int):\n            return int(val)\n        elif isinstance(prop_obj, String):\n            return str(val)\n        else:\n            return val\n\nclass TextInput(InputWidget):\n    \"\"\" Single-line input widget. \"\"\"\n\n    value = String(default=\"\", help=\"\"\"\n    Initial or entered text value.\n    \"\"\")\n\n    callback = Instance(Callback, help=\"\"\"\n    A callback to run in the browser whenever the user unfocuses the TextInput\n    widget by hitting Enter or clicking outside of the text box area.\n    \"\"\")\n    \n    placeholder = String(default=\"\", help=\"\"\"\n    Placeholder for empty input field\n    \"\"\")\n\n\nclass AutocompleteInput(TextInput):\n    \"\"\" Single-line input widget with auto-completion. \"\"\"\n\n    completions = List(String, help=\"\"\"\n    A list of completion strings. This will be used to guide the\n    user upon typing the beginning of a desired value.\n    \"\"\")\n\n\nclass Select(InputWidget):\n    \"\"\" Single-select widget.\n\n    \"\"\"\n\n    options = List(Either(String, Tuple(String, String)), help=\"\"\"\n    Available selection options. Options may be provided either as a list of\n    possible string values, or as a list of tuples, each of the form\n    ``(value, label)``. In the latter case, the visible widget text for each\n    value will be corresponding given label.\n    \"\"\")\n\n    value = String(default=\"\", help=\"\"\"\n    Initial or selected value.\n    \"\"\")\n\n    callback = Instance(Callback, help=\"\"\"\n    A callback to run in the browser whenever the current Select dropdown\n    value changes.\n    \"\"\")\n\nclass MultiSelect(InputWidget):\n    \"\"\" Multi-select widget.\n\n    \"\"\"\n\n    options = List(Either(String, Tuple(String, String)), help=\"\"\"\n    Available selection options. Options may be provided either as a list of\n    possible string values, or as a list of tuples, each of the form\n    ``(value, label)``. In the latter case, the visible widget text for each\n    value will be corresponding given label.\n    \"\"\")\n\n    value = List(String, help=\"\"\"\n    Initial or selected values.\n    \"\"\")\n\n    callback = Instance(Callback, help=\"\"\"\n    A callback to run in the browser whenever the current dropdown value\n    changes.\n    \"\"\")\n\nclass Slider(InputWidget):\n    \"\"\" Slider-based number selection widget.\n\n    \"\"\"\n\n    value = Float(default=0.5, help=\"\"\"\n    Initial or selected value.\n    \"\"\")\n\n    start = Float(default=0, help=\"\"\"\n    The minimum allowable value.\n    \"\"\")\n\n    end = Float(default=1, help=\"\"\"\n    The maximum allowable value.\n    \"\"\")\n\n    step = Float(default=0.1, help=\"\"\"\n    The step between consecutive values.\n    \"\"\")\n\n    orientation = Enum(\"horizontal\", \"vertical\", help=\"\"\"\n    Orient the slider either horizontally (default) or vertically.\n    \"\"\")\n\n    callback = Instance(Callback, help=\"\"\"\n    A callback to run in the browser whenever the current Slider value changes.\n    \"\"\")\n\n    callback_throttle = Float(default=200, help=\"\"\"\n    Number of microseconds to pause between callback calls as the slider is moved.\n    \"\"\")\n\n    callback_policy = Enum(SliderCallbackPolicy, default=\"throttle\", help=\"\"\"\n    When the callback is initiated. This parameter can take on only one of three options:\n\n       \"continuous\": the callback will be executed immediately for each movement of the slider\n       \"throttle\": the callback will be executed at most every ``callback_throttle`` milliseconds.\n       \"mouseup\": the callback will be executed only once when the slider is released.\n\n       The `mouseup` policy is intended for scenarios in which the callback is expensive in time.\n    \"\"\")\n\nclass RangeSlider(InputWidget):\n    \"\"\" Range-slider based range selection widget\n\n    \"\"\"\n\n    range = Tuple(Float, Float, default=(0.1, 0.9), help=\"\"\"\n    Initial or selected range.\n    \"\"\")\n\n    start = Float(default=0, help=\"\"\"\n    The minimum allowable value.\n    \"\"\")\n\n    end = Float(default=1, help=\"\"\"\n    The maximum allowable value.\n    \"\"\")\n\n    step = Float(default=0.1, help=\"\"\"\n    The step between consecutive values.\n    \"\"\")\n\n    orientation = Enum(\"horizontal\", \"vertical\", help=\"\"\"\n    Orient the slider either horizontally (default) or vertically.\n    \"\"\")\n\n    callback = Instance(Callback, help=\"\"\"\n    A callback to run in the browser whenever the current Slider value changes.\n    \"\"\")\n\n    callback_throttle = Float(default=200, help=\"\"\"\n    Number of microseconds to pause between callback calls as the slider is moved.\n    \"\"\")\n\n    callback_policy = Enum(SliderCallbackPolicy, default=\"throttle\", help=\"\"\"\n    When the callback is initiated. This parameter can take on only one of three options:\n\n       \"continuous\": the callback will be executed immediately for each movement of the slider\n       \"throttle\": the callback will be executed at most every ``callback_throttle`` milliseconds.\n       \"mouseup\": the callback will be executed only once when the slider is released.\n\n       The `mouseup` policy is intended for scenarios in which the callback is expensive in time.\n    \"\"\")\n\n\nclass DateRangeSlider(InputWidget):\n    \"\"\" Slider-based date range selection widget.\n\n    \"\"\"\n\n    value = Tuple(Date, Date, help=\"\"\"\n    The initial or selected date range.\n    \"\"\")\n\n    bounds = Tuple(Date, Date, help=\"\"\"\n    The earliest and latest allowable dates.\n    \"\"\")\n\n    range = Tuple(RelativeDelta, RelativeDelta, help=\"\"\"\n    [TDB]\n    \"\"\")\n\n    step = RelativeDelta(help=\"\"\"\n    The step between consecutive dates.\n    \"\"\")\n\n    # formatter = Either(String, Function(Date))\n    # scales = DateRangeSliderScales ... # first, next, stop, label, format\n\n    enabled = Bool(True, help=\"\"\"\n    Enable or disable this widget.\n    \"\"\")\n\n    arrows = Bool(True, help=\"\"\"\n    Whether to show clickable arrows on both ends of the slider.\n    \"\"\")\n\n    value_labels = Enum(\"show\", \"hide\", \"change\", help=\"\"\"\n    Show or hide value labels on both sides of the slider.\n    \"\"\")\n\n    wheel_mode = Enum(\"scroll\", \"zoom\", default=None, help=\"\"\"\n    Whether mouse zoom should scroll or zoom selected range (or\n    do nothing).\n    \"\"\")\n\n    callback = Instance(Callback, help=\"\"\"\n    A callback to run in the browser whenever either slider's value changes.\n    \"\"\")\n\nclass DatePicker(InputWidget):\n    \"\"\" Calendar-based date picker widget.\n\n    \"\"\"\n\n    value = Date(help=\"\"\"\n    The initial or picked date.\n    \"\"\")\n\n    min_date = Date(default=None, help=\"\"\"\n    Optional earliest allowable date.\n    \"\"\")\n\n    max_date = Date(default=None, help=\"\"\"\n    Optional latest allowable date.\n    \"\"\")\n\n    callback = Instance(Callback, help=\"\"\"\n    A callback to run in the browser whenever the current date value changes.\n    \"\"\")\n", "path": "bokeh/models/widgets/inputs.py"}]}