This docs on this page refers to a PREVIOUS VERSION. For the latest stable release, go to https://docs.bokeh.org/

Archived docs for versions <= 1.0.4 have had to be modified from their original published configuration, and may be missing some features (e.g. source listing)

All users are encourage to update to version 1.1 or later, as soon as they are able.

bokeh.core.property_mixins — Bokeh 0.12.14 documentation

Source code for bokeh.core.property_mixins

''' Mix-in classes that bulk add groups of properties to Bokeh models.

Some groups of properties often show up in Bokeh models together. For
instance, any model that exposes a fill color property for use when
rendering will almost always want to expose a fill alpha as well. To
reduce boilerplate code and simplify defining models with these sets
of properties, use the mix-in classes in this module:

* |FillProps| --- properties for fill color and alpha

* |LineProps| --- properties for line color, dashing, width, etc.

* |TextProps| --- properties for text color, font, etc.

To include these properties in a Bokeh model, use the |Include| property
as shown here:

.. code-block:: python

    class SomeGlyph(Glyph):

        fill_props = Include(FillProps, use_prefix=False, help="""
        The %s values for the annular wedges.
        """)

This adds all the fill properties ``fill_color`` and ``fill_alpha`` to this
model with one simple statement. Note that the help string contains a
placeholder format `%s`. When docs for this class are rendered by the
:ref:`bokeh.sphinxext.bokeh_model` Sphinx extension, the placeholder will
be replaced with more information specific to each property. The setting
``use_prefix`` means that the names of the properties added to ``SomeGlyph``
are exactly ``fill_alpha`` and ``fill_color``. Some situations require a
different usage, for more information see the docs for |Include|.

.. |Include| replace:: :class:`~bokeh.core.properties.Include`

.. |FillProps| replace:: :class:`~bokeh.core.property_mixins.FillProps`
.. |LineProps| replace:: :class:`~bokeh.core.property_mixins.LineProps`
.. |TextProps| replace:: :class:`~bokeh.core.property_mixins.TextProps`

'''
from __future__ import absolute_import

from .enums import LineJoin, LineCap, FontStyle, TextAlign, TextBaseline
from .has_props import HasProps
from .properties import Color, ColorSpec, DashPattern, Enum, FontSize, FontSizeSpec, Include, Int, Float, NumberSpec, Percent, String, value


_color_help = """
A color to use to %s with.

Acceptable values are:

- any of the 147 named `CSS colors`_, e.g ``'green'``, ``'indigo'``
- an RGB(A) hex value, e.g., ``'#FF0000'``, ``'#44444444'``
- a 3-tuple of integers (r,g,b) between 0 and 255
- a 4-tuple of (r,g,b,a) where r,g,b are integers between 0..255 and a is between 0..1

.. _CSS colors: http://www.w3schools.com/cssref/css_colornames.asp

"""

_alpha_help = """
An alpha value to use to %s with.

Acceptable values are floating point numbers between 0 (transparent)
and 1 (opaque).

"""

[docs]class FillProps(HasProps): ''' Properties relevant to rendering fill regions. Mirrors the BokehJS ``properties.Fill`` class. ''' fill_color = ColorSpec(default="gray", help=_color_help % "fill paths") fill_alpha = NumberSpec(default=1.0, accept_datetime=False, help=_alpha_help % "fill paths")
[docs]class ScalarFillProps(HasProps): ''' Properties relevant to rendering fill regions. Mirrors the BokehJS ``properties.Fill`` class. ''' fill_color = Color(default="gray", help=_color_help) fill_alpha = Percent(default=1.0, help=_alpha_help)
_line_width_help = """ Stroke width in units of pixels. """ class BaseLineProps(HasProps): line_join = Enum(LineJoin, help=""" How path segments should be joined together. Acceptable values are: - ``'miter'`` |miter_join| - ``'round'`` |round_join| - ``'bevel'`` |bevel_join| .. |miter_join| image:: /_images/miter_join.png :height: 15 .. |round_join| image:: /_images/round_join.png :height: 15 .. |bevel_join| image:: /_images/bevel_join.png :height: 15 """) line_cap = Enum(LineCap, help=""" How path segments should be terminated. Acceptable values are: - ``'butt'`` |butt_cap| - ``'round'`` |round_cap| - ``'square'`` |square_cap| .. |butt_cap| image:: /_images/butt_cap.png :height: 12 .. |round_cap| image:: /_images/round_cap.png :height: 12 .. |square_cap| image:: /_images/square_cap.png :height: 12 """) line_dash = DashPattern(help=""" How should the line be dashed. """) line_dash_offset = Int(0, help=""" The distance into the ``line_dash`` (in pixels) that the pattern should start from. """)
[docs]class LineProps(HasProps): ''' Properties relevant to rendering path operations. Mirrors the BokehJS ``properties.Line`` class. ''' base_line_props = Include(BaseLineProps, use_prefix=False) line_color = ColorSpec(default="black", help=_color_help % "stroke paths") line_width = NumberSpec(default=1, accept_datetime=False, help=_line_width_help) line_alpha = NumberSpec(default=1.0, accept_datetime=False, help=_alpha_help % "stroke paths")
[docs]class ScalarLineProps(HasProps): ''' Properties relevant to rendering path operations. Mirrors the BokehJS ``properties.Line`` class. ''' base_line_props = Include(BaseLineProps, use_prefix=False) line_color = Color(default="black", help=_color_help % "stroke paths") line_width = Float(default=1, help=_line_width_help) line_alpha = Percent(default=1.0, help=_alpha_help % "stroke paths")
class BaseTextProps(HasProps): text_font = String("helvetica", help=""" Name of a font to use for rendering text, e.g., ``'times'``, ``'helvetica'``. """) text_font_style = Enum(FontStyle, help=""" A style to use for rendering text. Acceptable values are: - ``'normal'`` normal text - ``'italic'`` *italic text* - ``'bold'`` **bold text** """) text_align = Enum(TextAlign, help=""" Horizontal anchor point to use when rendering text. Acceptable values are: - ``'left'`` - ``'right'`` - ``'center'`` """) text_baseline = Enum(TextBaseline, default="bottom", help=""" Vertical anchor point to use when rendering text. Acceptable values are: - ``'top'`` - ``'middle'`` - ``'bottom'`` - ``'alphabetic'`` - ``'hanging'`` - ``'ideographic'`` """) text_line_height = Float(default=1.2, help=""" In multi-line text, how much additional space should be allocated for each line. The value is provided as a number, but should be treated as a percentage of font size. The default is 120%. Setting it to 1.0, so 100%, means no additional space will be used. """)
[docs]class TextProps(HasProps): ''' Properties relevant to rendering text. Mirrors the BokehJS ``properties.Text`` class. .. note:: There is currently only support for filling text. An interface to stroke the outlines of text has not yet been exposed. ''' base_text_props = Include(BaseTextProps, use_prefix=False) text_font_size = FontSizeSpec(value("12pt")) text_color = ColorSpec(default="#444444", help=_color_help % "fill text") text_alpha = NumberSpec(default=1.0, accept_datetime=False, help=_alpha_help % "fill text")
[docs]class ScalarTextProps(HasProps): ''' Properties relevant to rendering text. Mirrors the BokehJS ``properties.Text`` class. .. note:: There is currently only support for filling text. An interface to stroke the outlines of text has not yet been exposed. ''' base_text_props = Include(BaseTextProps, use_prefix=False) # XXX not great text_font_size = FontSize("12pt") text_color = Color(default="#444444", help=_color_help % "fill text") text_alpha = Percent(default=1.0, help=_alpha_help % "fill text")