bokeh.core.property.bases#

Provide base classes for the Bokeh property system.

Note

These classes form part of the very low-level machinery that implements the Bokeh model and property system. It is unlikely that any of these classes or their methods will be applicable to any standard usage or to anyone who is not directly developing on Bokeh’s own infrastructure.

class ContainerProperty(*type_params: type[Property[T]] | Property[T], default: T | UndefinedType | IntrinsicType = Intrinsic, help: str | None = None)[source]#

A base class for Container-like type properties.

class PrimitiveProperty(*, default: T | UndefinedType | IntrinsicType = Intrinsic, help: str | None = None)[source]#

A base class for simple property types.

Subclasses should define a class attribute _underlying_type that is a tuple of acceptable type values for the property.

Example

A trivial version of a Float property might look like:

class Float(PrimitiveProperty):
    _underlying_type = (numbers.Real,)
validate(value: Any, detail: bool = True) None[source]#

Determine whether we can set this property from this value.

Validation happens before transform()

Parameters:
  • value (obj) – the value to validate against this property type

  • detail (bool, options) –

    whether to construct detailed exceptions

    Generating detailed type validation error messages can be expensive. When doing type checks internally that will not escape exceptions to users, these messages can be skipped by setting this value to False (default: True)

Returns:

None

Raises:

ValueError if the value is not valid for this property type

class Property(*, default: T | UndefinedType | IntrinsicType = Intrinsic, help: str | None = None)[source]#

Base class for Bokeh property instances, which can be added to Bokeh Models.

Parameters:
  • default (obj, optional) – A default value for attributes created from this property to have.

  • help (str or None, optional) – A documentation string for this property. It will be automatically used by the bokeh_prop extension when generating Spinx documentation. (default: None)

__call__(*, default: T | UndefinedType | IntrinsicType = Intrinsic, help: str | None = None) Property[T][source]#

Clone this property and allow to override default and help.

__eq__(other: object) bool[source]#

Return self==value.

__init__(*, default: T | UndefinedType | IntrinsicType = Intrinsic, help: str | None = None) None[source]#
__repr__() str[source]#

Return repr(self).

__str__() str[source]#

Return str(self).

accepts(tp: type[Property[Any]] | Property[Any], converter: Callable[[Any], T]) Property[T][source]#

Declare that other types may be converted to this property type.

Parameters:
  • tp (Property) – A type that may be converted automatically to this property type.

  • converter (callable) – A function accepting value to perform conversion of the value to this property type.

Returns:

self

asserts(fn: Callable[[HasProps, T], bool], msg_or_fn: str | Callable[[HasProps, str, T], None]) Property[T][source]#

Assert that prepared values satisfy given conditions.

Assertions are intended in enforce conditions beyond simple value type validation. For instance, this method can be use to assert that the columns of a ColumnDataSource all collectively have the same length at all times.

Parameters:
  • fn (callable) – A function accepting (obj, value) that returns True if the value passes the assertion, or False otherwise.

  • msg_or_fn (str or callable) – A message to print in case the assertion fails, or a function accepting (obj, name, value) to call in in case the assertion fails.

Returns:

self

is_valid(value: Any) bool[source]#

Whether the value passes validation

Parameters:

value (obj) – the value to validate against this property type

Returns:

True if valid, False otherwise

make_descriptors(name: str) list[PropertyDescriptor[T]][source]#

Return a list of PropertyDescriptor instances to install on a class, in order to delegate attribute access to this property.

Parameters:

name (str) – the name of the property these descriptors are for

Returns:

list[PropertyDescriptor]

The descriptors returned are collected by the MetaHasProps metaclass and added to HasProps subclasses during class creation.

matches(new: T, old: T) bool[source]#

Whether two parameters match values.

If either new or old is a NumPy array or Pandas Series or Index, then the result of np.array_equal will determine if the values match.

Otherwise, the result of standard Python equality will be returned.

Returns:

True, if new and old match, False otherwise

themed_default(cls: type[HasProps], name: str, theme_overrides: dict[str, Any] | None, *, no_eval: bool = False) T[source]#

The default, transformed by prepare_value() and the theme overrides.

transform(value: Any) T[source]#

Change the value into the canonical format for this property.

Parameters:

value (obj) – the value to apply transformation to.

Returns:

transformed value

Return type:

obj

validate(value: Any, detail: bool = True) None[source]#

Determine whether we can set this property from this value.

Validation happens before transform()

Parameters:
  • value (obj) – the value to validate against this property type

  • detail (bool, options) –

    whether to construct detailed exceptions

    Generating detailed type validation error messages can be expensive. When doing type checks internally that will not escape exceptions to users, these messages can be skipped by setting this value to False (default: True)

Returns:

None

Raises:

ValueError if the value is not valid for this property type

wrap(value: T) T[source]#

Some property types need to wrap their values in special containers, etc.

__hash__ = None#
property readonly: bool#

Whether this property is read-only.

Read-only properties may only be modified by the client (i.e., by BokehJS in the browser).

property serialized: bool#

Whether the property should be serialized when serializing an object.

This would be False for a “virtual” or “convenience” property that duplicates information already available in other properties, for example.

validation_on() bool[source]#

Check if property validation is currently active

Returns:

bool