We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
allow users to specify explicit tick labels
`FixedTicker` allows users to specify fixed tick locations, but also need to allow users to specify explicit tick labels


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `sphinx/source/docs/user_guide/examples/styling_fixed_ticker.py`
Content:
```
1 from bokeh.plotting import figure, output_file, show
2 from bokeh.models import FixedTicker
3 
4 output_file("axes.html")
5 
6 p = figure(plot_width=400, plot_height=400)
7 p.circle([1,2,3,4,5], [2,5,8,2,7], size=10)
8 
9 p.xaxis[0].ticker=FixedTicker(ticks=[2, 3.5, 4])
10 
11 show(p)
12
```

Path: `bokeh/models/axes.py`
Content:
```
1 ''' Guide renderers for various kinds of axes that can be added to
2 Bokeh plots
3 
4 '''
5 from __future__ import absolute_import
6 
7 from ..core.has_props import abstract
8 from ..core.properties import Auto, Datetime, Either, Enum, Float, Include, Instance, Int, Override, String, Tuple
9 from ..core.property_mixins import LineProps, TextProps
10 
11 from .formatters import BasicTickFormatter, CategoricalTickFormatter, DatetimeTickFormatter, LogTickFormatter, TickFormatter
12 from .renderers import GuideRenderer
13 from .tickers import Ticker, BasicTicker, LogTicker, CategoricalTicker, DatetimeTicker
14 
15 @abstract
16 class Axis(GuideRenderer):
17     ''' A base class that defines common properties for all axis types.
18 
19     '''
20 
21     bounds = Either(Auto, Tuple(Float, Float), Tuple(Datetime, Datetime), help="""
22     Bounds for the rendered axis. If unset, the axis will span the
23     entire plot in the given dimension.
24     """)
25 
26     x_range_name = String('default', help="""
27     A particular (named) x-range to use for computing screen
28     locations when rendering an axis on the plot. If unset, use the
29     default x-range.
30     """)
31 
32     y_range_name = String('default', help="""
33     A particular (named) y-range to use for computing screen
34     locations when rendering an axis on the plot. If unset, use the
35     default y-range.
36     """)
37 
38     ticker = Instance(Ticker, help="""
39     A Ticker to use for computing locations of axis components.
40     """)
41 
42     formatter = Instance(TickFormatter, help="""
43     A TickFormatter to use for formatting the visual appearance
44     of ticks.
45     """)
46 
47     axis_label = String(default='', help="""
48     A text label for the axis, displayed parallel to the axis rule.
49 
50     .. note::
51         LaTeX notation is not currently supported; please see
52         :bokeh-issue:`647` to track progress or contribute.
53 
54     """)
55 
56     axis_label_standoff = Int(default=5, help="""
57     The distance in pixels that the axis labels should be offset
58     from the tick labels.
59     """)
60 
61     axis_label_props = Include(TextProps, help="""
62     The %s of the axis label.
63     """)
64 
65     axis_label_text_font_size = Override(default={'value': "10pt"})
66 
67     axis_label_text_font_style = Override(default="italic")
68 
69     major_label_standoff = Int(default=5, help="""
70     The distance in pixels that the major tick labels should be
71     offset from the associated ticks.
72     """)
73 
74     major_label_orientation = Either(Enum("horizontal", "vertical"), Float, help="""
75     What direction the major label text should be oriented. If a
76     number is supplied, the angle of the text is measured from horizontal.
77     """)
78 
79     major_label_props = Include(TextProps, help="""
80     The %s of the major tick labels.
81     """)
82 
83     major_label_text_align = Override(default="center")
84 
85     major_label_text_baseline = Override(default="alphabetic")
86 
87     major_label_text_font_size = Override(default={'value': "8pt"})
88 
89     axis_props = Include(LineProps, help="""
90     The %s of the axis line.
91     """)
92 
93     major_tick_props = Include(LineProps, help="""
94     The %s of the major ticks.
95     """)
96 
97     major_tick_in = Int(default=2, help="""
98     The distance in pixels that major ticks should extend into the
99     main plot area.
100     """)
101 
102     major_tick_out = Int(default=6, help="""
103     The distance in pixels that major ticks should extend out of the
104     main plot area.
105     """)
106 
107     minor_tick_props = Include(LineProps, help="""
108     The %s of the minor ticks.
109     """)
110 
111     minor_tick_in = Int(default=0, help="""
112     The distance in pixels that minor ticks should extend into the
113     main plot area.
114     """)
115 
116     minor_tick_out = Int(default=4, help="""
117     The distance in pixels that major ticks should extend out of the
118     main plot area.
119     """)
120 
121 @abstract
122 class ContinuousAxis(Axis):
123     ''' A base class for all numeric, non-categorical axes types.
124 
125     '''
126     pass
127 
128 class LinearAxis(ContinuousAxis):
129     ''' An axis that picks nice numbers for tick locations on a
130     linear scale. Configured with a ``BasicTickFormatter`` by default.
131 
132     '''
133     ticker = Override(default=lambda: BasicTicker())
134 
135     formatter = Override(default=lambda: BasicTickFormatter())
136 
137 class LogAxis(ContinuousAxis):
138     ''' An axis that picks nice numbers for tick locations on a
139     log scale. Configured with a ``LogTickFormatter`` by default.
140 
141     '''
142     ticker = Override(default=lambda: LogTicker())
143 
144     formatter = Override(default=lambda: LogTickFormatter())
145 
146 class CategoricalAxis(Axis):
147     ''' An axis that picks evenly spaced tick locations for a
148     collection of categories/factors.
149 
150     '''
151     ticker = Override(default=lambda: CategoricalTicker())
152 
153     formatter = Override(default=lambda: CategoricalTickFormatter())
154 
155 class DatetimeAxis(LinearAxis):
156     ''' An LinearAxis that picks nice numbers for tick locations on
157     a datetime scale. Configured with a ``DatetimeTickFormatter`` by
158     default.
159 
160     '''
161 
162     ticker = Override(default=lambda: DatetimeTicker())
163 
164     formatter = Override(default=lambda: DatetimeTickFormatter())
165
```
--- 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/axes.py b/bokeh/models/axes.py
--- a/bokeh/models/axes.py
+++ b/bokeh/models/axes.py
@@ -5,12 +5,12 @@
 from __future__ import absolute_import
 
 from ..core.has_props import abstract
-from ..core.properties import Auto, Datetime, Either, Enum, Float, Include, Instance, Int, Override, String, Tuple
+from ..core.properties import Auto, Datetime, Dict, Either, Enum, Float, Include, Instance, Int, Override, Seq, String, Tuple
 from ..core.property_mixins import LineProps, TextProps
 
 from .formatters import BasicTickFormatter, CategoricalTickFormatter, DatetimeTickFormatter, LogTickFormatter, TickFormatter
 from .renderers import GuideRenderer
-from .tickers import Ticker, BasicTicker, LogTicker, CategoricalTicker, DatetimeTicker
+from .tickers import Ticker, BasicTicker, LogTicker, CategoricalTicker, DatetimeTicker, FixedTicker
 
 @abstract
 class Axis(GuideRenderer):
@@ -37,7 +37,29 @@
 
     ticker = Instance(Ticker, help="""
     A Ticker to use for computing locations of axis components.
-    """)
+
+    The property may also be passed a sequence of floating point numbers as
+    a shorthand for creating and configuring a ``FixedTicker``, e.g. the
+    following code
+
+    .. code-block:: python
+
+        from bokeh.plotting import figure
+
+        p = figure()
+        p.xaxis.ticker = [10, 20, 37.4]
+
+    is equivalent to:
+
+    .. code-block:: python
+
+        from bokeh.plotting import figure
+        from bokeh.models.tickers import FixedTicker
+
+        p = figure()
+        p.xaxis.ticker = FixedTicker(ticks=[10, 20, 37.4])
+
+    """).accepts(Seq(Float), lambda ticks: FixedTicker(ticks=ticks))
 
     formatter = Instance(TickFormatter, help="""
     A TickFormatter to use for formatting the visual appearance
@@ -76,6 +98,11 @@
     number is supplied, the angle of the text is measured from horizontal.
     """)
 
+    major_label_overrides = Dict(Either(Float, String), String, default={}, help="""
+    Provide explicit tick label values for specific tick locations that
+    override normal formatting.
+    """)
+
     major_label_props = Include(TextProps, help="""
     The %s of the major tick labels.
     """)
diff --git a/sphinx/source/docs/user_guide/examples/styling_fixed_ticker.py b/sphinx/source/docs/user_guide/examples/styling_fixed_ticker.py
--- a/sphinx/source/docs/user_guide/examples/styling_fixed_ticker.py
+++ b/sphinx/source/docs/user_guide/examples/styling_fixed_ticker.py
@@ -1,11 +1,10 @@
 from bokeh.plotting import figure, output_file, show
-from bokeh.models import FixedTicker
 
-output_file("axes.html")
+output_file("fixed_ticks.html")
 
 p = figure(plot_width=400, plot_height=400)
 p.circle([1,2,3,4,5], [2,5,8,2,7], size=10)
 
-p.xaxis[0].ticker=FixedTicker(ticks=[2, 3.5, 4])
+p.xaxis.ticker = [2, 3.5, 4]
 
 show(p)

{"golden_diff": "diff --git a/bokeh/models/axes.py b/bokeh/models/axes.py\n--- a/bokeh/models/axes.py\n+++ b/bokeh/models/axes.py\n@@ -5,12 +5,12 @@\n from __future__ import absolute_import\n \n from ..core.has_props import abstract\n-from ..core.properties import Auto, Datetime, Either, Enum, Float, Include, Instance, Int, Override, String, Tuple\n+from ..core.properties import Auto, Datetime, Dict, Either, Enum, Float, Include, Instance, Int, Override, Seq, String, Tuple\n from ..core.property_mixins import LineProps, TextProps\n \n from .formatters import BasicTickFormatter, CategoricalTickFormatter, DatetimeTickFormatter, LogTickFormatter, TickFormatter\n from .renderers import GuideRenderer\n-from .tickers import Ticker, BasicTicker, LogTicker, CategoricalTicker, DatetimeTicker\n+from .tickers import Ticker, BasicTicker, LogTicker, CategoricalTicker, DatetimeTicker, FixedTicker\n \n @abstract\n class Axis(GuideRenderer):\n@@ -37,7 +37,29 @@\n \n     ticker = Instance(Ticker, help=\"\"\"\n     A Ticker to use for computing locations of axis components.\n-    \"\"\")\n+\n+    The property may also be passed a sequence of floating point numbers as\n+    a shorthand for creating and configuring a ``FixedTicker``, e.g. the\n+    following code\n+\n+    .. code-block:: python\n+\n+        from bokeh.plotting import figure\n+\n+        p = figure()\n+        p.xaxis.ticker = [10, 20, 37.4]\n+\n+    is equivalent to:\n+\n+    .. code-block:: python\n+\n+        from bokeh.plotting import figure\n+        from bokeh.models.tickers import FixedTicker\n+\n+        p = figure()\n+        p.xaxis.ticker = FixedTicker(ticks=[10, 20, 37.4])\n+\n+    \"\"\").accepts(Seq(Float), lambda ticks: FixedTicker(ticks=ticks))\n \n     formatter = Instance(TickFormatter, help=\"\"\"\n     A TickFormatter to use for formatting the visual appearance\n@@ -76,6 +98,11 @@\n     number is supplied, the angle of the text is measured from horizontal.\n     \"\"\")\n \n+    major_label_overrides = Dict(Either(Float, String), String, default={}, help=\"\"\"\n+    Provide explicit tick label values for specific tick locations that\n+    override normal formatting.\n+    \"\"\")\n+\n     major_label_props = Include(TextProps, help=\"\"\"\n     The %s of the major tick labels.\n     \"\"\")\ndiff --git a/sphinx/source/docs/user_guide/examples/styling_fixed_ticker.py b/sphinx/source/docs/user_guide/examples/styling_fixed_ticker.py\n--- a/sphinx/source/docs/user_guide/examples/styling_fixed_ticker.py\n+++ b/sphinx/source/docs/user_guide/examples/styling_fixed_ticker.py\n@@ -1,11 +1,10 @@\n from bokeh.plotting import figure, output_file, show\n-from bokeh.models import FixedTicker\n \n-output_file(\"axes.html\")\n+output_file(\"fixed_ticks.html\")\n \n p = figure(plot_width=400, plot_height=400)\n p.circle([1,2,3,4,5], [2,5,8,2,7], size=10)\n \n-p.xaxis[0].ticker=FixedTicker(ticks=[2, 3.5, 4])\n+p.xaxis.ticker = [2, 3.5, 4]\n \n show(p)\n", "issue": "allow users to specify explicit tick labels\n`FixedTicker` allows users to specify fixed tick locations, but also need to allow users to specify explicit tick labels\n\n", "before_files": [{"content": "from bokeh.plotting import figure, output_file, show\nfrom bokeh.models import FixedTicker\n\noutput_file(\"axes.html\")\n\np = figure(plot_width=400, plot_height=400)\np.circle([1,2,3,4,5], [2,5,8,2,7], size=10)\n\np.xaxis[0].ticker=FixedTicker(ticks=[2, 3.5, 4])\n\nshow(p)\n", "path": "sphinx/source/docs/user_guide/examples/styling_fixed_ticker.py"}, {"content": "''' Guide renderers for various kinds of axes that can be added to\nBokeh plots\n\n'''\nfrom __future__ import absolute_import\n\nfrom ..core.has_props import abstract\nfrom ..core.properties import Auto, Datetime, Either, Enum, Float, Include, Instance, Int, Override, String, Tuple\nfrom ..core.property_mixins import LineProps, TextProps\n\nfrom .formatters import BasicTickFormatter, CategoricalTickFormatter, DatetimeTickFormatter, LogTickFormatter, TickFormatter\nfrom .renderers import GuideRenderer\nfrom .tickers import Ticker, BasicTicker, LogTicker, CategoricalTicker, DatetimeTicker\n\n@abstract\nclass Axis(GuideRenderer):\n    ''' A base class that defines common properties for all axis types.\n\n    '''\n\n    bounds = Either(Auto, Tuple(Float, Float), Tuple(Datetime, Datetime), help=\"\"\"\n    Bounds for the rendered axis. If unset, the axis will span the\n    entire plot in the given dimension.\n    \"\"\")\n\n    x_range_name = String('default', help=\"\"\"\n    A particular (named) x-range to use for computing screen\n    locations when rendering an axis on the plot. If unset, use the\n    default x-range.\n    \"\"\")\n\n    y_range_name = String('default', help=\"\"\"\n    A particular (named) y-range to use for computing screen\n    locations when rendering an axis on the plot. If unset, use the\n    default y-range.\n    \"\"\")\n\n    ticker = Instance(Ticker, help=\"\"\"\n    A Ticker to use for computing locations of axis components.\n    \"\"\")\n\n    formatter = Instance(TickFormatter, help=\"\"\"\n    A TickFormatter to use for formatting the visual appearance\n    of ticks.\n    \"\"\")\n\n    axis_label = String(default='', help=\"\"\"\n    A text label for the axis, displayed parallel to the axis rule.\n\n    .. note::\n        LaTeX notation is not currently supported; please see\n        :bokeh-issue:`647` to track progress or contribute.\n\n    \"\"\")\n\n    axis_label_standoff = Int(default=5, help=\"\"\"\n    The distance in pixels that the axis labels should be offset\n    from the tick labels.\n    \"\"\")\n\n    axis_label_props = Include(TextProps, help=\"\"\"\n    The %s of the axis label.\n    \"\"\")\n\n    axis_label_text_font_size = Override(default={'value': \"10pt\"})\n\n    axis_label_text_font_style = Override(default=\"italic\")\n\n    major_label_standoff = Int(default=5, help=\"\"\"\n    The distance in pixels that the major tick labels should be\n    offset from the associated ticks.\n    \"\"\")\n\n    major_label_orientation = Either(Enum(\"horizontal\", \"vertical\"), Float, help=\"\"\"\n    What direction the major label text should be oriented. If a\n    number is supplied, the angle of the text is measured from horizontal.\n    \"\"\")\n\n    major_label_props = Include(TextProps, help=\"\"\"\n    The %s of the major tick labels.\n    \"\"\")\n\n    major_label_text_align = Override(default=\"center\")\n\n    major_label_text_baseline = Override(default=\"alphabetic\")\n\n    major_label_text_font_size = Override(default={'value': \"8pt\"})\n\n    axis_props = Include(LineProps, help=\"\"\"\n    The %s of the axis line.\n    \"\"\")\n\n    major_tick_props = Include(LineProps, help=\"\"\"\n    The %s of the major ticks.\n    \"\"\")\n\n    major_tick_in = Int(default=2, help=\"\"\"\n    The distance in pixels that major ticks should extend into the\n    main plot area.\n    \"\"\")\n\n    major_tick_out = Int(default=6, help=\"\"\"\n    The distance in pixels that major ticks should extend out of the\n    main plot area.\n    \"\"\")\n\n    minor_tick_props = Include(LineProps, help=\"\"\"\n    The %s of the minor ticks.\n    \"\"\")\n\n    minor_tick_in = Int(default=0, help=\"\"\"\n    The distance in pixels that minor ticks should extend into the\n    main plot area.\n    \"\"\")\n\n    minor_tick_out = Int(default=4, help=\"\"\"\n    The distance in pixels that major ticks should extend out of the\n    main plot area.\n    \"\"\")\n\n@abstract\nclass ContinuousAxis(Axis):\n    ''' A base class for all numeric, non-categorical axes types.\n\n    '''\n    pass\n\nclass LinearAxis(ContinuousAxis):\n    ''' An axis that picks nice numbers for tick locations on a\n    linear scale. Configured with a ``BasicTickFormatter`` by default.\n\n    '''\n    ticker = Override(default=lambda: BasicTicker())\n\n    formatter = Override(default=lambda: BasicTickFormatter())\n\nclass LogAxis(ContinuousAxis):\n    ''' An axis that picks nice numbers for tick locations on a\n    log scale. Configured with a ``LogTickFormatter`` by default.\n\n    '''\n    ticker = Override(default=lambda: LogTicker())\n\n    formatter = Override(default=lambda: LogTickFormatter())\n\nclass CategoricalAxis(Axis):\n    ''' An axis that picks evenly spaced tick locations for a\n    collection of categories/factors.\n\n    '''\n    ticker = Override(default=lambda: CategoricalTicker())\n\n    formatter = Override(default=lambda: CategoricalTickFormatter())\n\nclass DatetimeAxis(LinearAxis):\n    ''' An LinearAxis that picks nice numbers for tick locations on\n    a datetime scale. Configured with a ``DatetimeTickFormatter`` by\n    default.\n\n    '''\n\n    ticker = Override(default=lambda: DatetimeTicker())\n\n    formatter = Override(default=lambda: DatetimeTickFormatter())\n", "path": "bokeh/models/axes.py"}], "after_files": [{"content": "from bokeh.plotting import figure, output_file, show\n\noutput_file(\"fixed_ticks.html\")\n\np = figure(plot_width=400, plot_height=400)\np.circle([1,2,3,4,5], [2,5,8,2,7], size=10)\n\np.xaxis.ticker = [2, 3.5, 4]\n\nshow(p)\n", "path": "sphinx/source/docs/user_guide/examples/styling_fixed_ticker.py"}, {"content": "''' Guide renderers for various kinds of axes that can be added to\nBokeh plots\n\n'''\nfrom __future__ import absolute_import\n\nfrom ..core.has_props import abstract\nfrom ..core.properties import Auto, Datetime, Dict, Either, Enum, Float, Include, Instance, Int, Override, Seq, String, Tuple\nfrom ..core.property_mixins import LineProps, TextProps\n\nfrom .formatters import BasicTickFormatter, CategoricalTickFormatter, DatetimeTickFormatter, LogTickFormatter, TickFormatter\nfrom .renderers import GuideRenderer\nfrom .tickers import Ticker, BasicTicker, LogTicker, CategoricalTicker, DatetimeTicker, FixedTicker\n\n@abstract\nclass Axis(GuideRenderer):\n    ''' A base class that defines common properties for all axis types.\n\n    '''\n\n    bounds = Either(Auto, Tuple(Float, Float), Tuple(Datetime, Datetime), help=\"\"\"\n    Bounds for the rendered axis. If unset, the axis will span the\n    entire plot in the given dimension.\n    \"\"\")\n\n    x_range_name = String('default', help=\"\"\"\n    A particular (named) x-range to use for computing screen\n    locations when rendering an axis on the plot. If unset, use the\n    default x-range.\n    \"\"\")\n\n    y_range_name = String('default', help=\"\"\"\n    A particular (named) y-range to use for computing screen\n    locations when rendering an axis on the plot. If unset, use the\n    default y-range.\n    \"\"\")\n\n    ticker = Instance(Ticker, help=\"\"\"\n    A Ticker to use for computing locations of axis components.\n\n    The property may also be passed a sequence of floating point numbers as\n    a shorthand for creating and configuring a ``FixedTicker``, e.g. the\n    following code\n\n    .. code-block:: python\n\n        from bokeh.plotting import figure\n\n        p = figure()\n        p.xaxis.ticker = [10, 20, 37.4]\n\n    is equivalent to:\n\n    .. code-block:: python\n\n        from bokeh.plotting import figure\n        from bokeh.models.tickers import FixedTicker\n\n        p = figure()\n        p.xaxis.ticker = FixedTicker(ticks=[10, 20, 37.4])\n\n    \"\"\").accepts(Seq(Float), lambda ticks: FixedTicker(ticks=ticks))\n\n    formatter = Instance(TickFormatter, help=\"\"\"\n    A TickFormatter to use for formatting the visual appearance\n    of ticks.\n    \"\"\")\n\n    axis_label = String(default='', help=\"\"\"\n    A text label for the axis, displayed parallel to the axis rule.\n\n    .. note::\n        LaTeX notation is not currently supported; please see\n        :bokeh-issue:`647` to track progress or contribute.\n\n    \"\"\")\n\n    axis_label_standoff = Int(default=5, help=\"\"\"\n    The distance in pixels that the axis labels should be offset\n    from the tick labels.\n    \"\"\")\n\n    axis_label_props = Include(TextProps, help=\"\"\"\n    The %s of the axis label.\n    \"\"\")\n\n    axis_label_text_font_size = Override(default={'value': \"10pt\"})\n\n    axis_label_text_font_style = Override(default=\"italic\")\n\n    major_label_standoff = Int(default=5, help=\"\"\"\n    The distance in pixels that the major tick labels should be\n    offset from the associated ticks.\n    \"\"\")\n\n    major_label_orientation = Either(Enum(\"horizontal\", \"vertical\"), Float, help=\"\"\"\n    What direction the major label text should be oriented. If a\n    number is supplied, the angle of the text is measured from horizontal.\n    \"\"\")\n\n    major_label_overrides = Dict(Either(Float, String), String, default={}, help=\"\"\"\n    Provide explicit tick label values for specific tick locations that\n    override normal formatting.\n    \"\"\")\n\n    major_label_props = Include(TextProps, help=\"\"\"\n    The %s of the major tick labels.\n    \"\"\")\n\n    major_label_text_align = Override(default=\"center\")\n\n    major_label_text_baseline = Override(default=\"alphabetic\")\n\n    major_label_text_font_size = Override(default={'value': \"8pt\"})\n\n    axis_props = Include(LineProps, help=\"\"\"\n    The %s of the axis line.\n    \"\"\")\n\n    major_tick_props = Include(LineProps, help=\"\"\"\n    The %s of the major ticks.\n    \"\"\")\n\n    major_tick_in = Int(default=2, help=\"\"\"\n    The distance in pixels that major ticks should extend into the\n    main plot area.\n    \"\"\")\n\n    major_tick_out = Int(default=6, help=\"\"\"\n    The distance in pixels that major ticks should extend out of the\n    main plot area.\n    \"\"\")\n\n    minor_tick_props = Include(LineProps, help=\"\"\"\n    The %s of the minor ticks.\n    \"\"\")\n\n    minor_tick_in = Int(default=0, help=\"\"\"\n    The distance in pixels that minor ticks should extend into the\n    main plot area.\n    \"\"\")\n\n    minor_tick_out = Int(default=4, help=\"\"\"\n    The distance in pixels that major ticks should extend out of the\n    main plot area.\n    \"\"\")\n\n@abstract\nclass ContinuousAxis(Axis):\n    ''' A base class for all numeric, non-categorical axes types.\n\n    '''\n    pass\n\nclass LinearAxis(ContinuousAxis):\n    ''' An axis that picks nice numbers for tick locations on a\n    linear scale. Configured with a ``BasicTickFormatter`` by default.\n\n    '''\n    ticker = Override(default=lambda: BasicTicker())\n\n    formatter = Override(default=lambda: BasicTickFormatter())\n\nclass LogAxis(ContinuousAxis):\n    ''' An axis that picks nice numbers for tick locations on a\n    log scale. Configured with a ``LogTickFormatter`` by default.\n\n    '''\n    ticker = Override(default=lambda: LogTicker())\n\n    formatter = Override(default=lambda: LogTickFormatter())\n\nclass CategoricalAxis(Axis):\n    ''' An axis that picks evenly spaced tick locations for a\n    collection of categories/factors.\n\n    '''\n    ticker = Override(default=lambda: CategoricalTicker())\n\n    formatter = Override(default=lambda: CategoricalTickFormatter())\n\nclass DatetimeAxis(LinearAxis):\n    ''' An LinearAxis that picks nice numbers for tick locations on\n    a datetime scale. Configured with a ``DatetimeTickFormatter`` by\n    default.\n\n    '''\n\n    ticker = Override(default=lambda: DatetimeTicker())\n\n    formatter = Override(default=lambda: DatetimeTickFormatter())\n", "path": "bokeh/models/axes.py"}]}