crystal_toolkit.core.mpcomponent module
- class crystal_toolkit.core.mpcomponent.MPComponent(default_data: MSONable | dict | str | None = None, id: str | None = None, links: dict[str, str] | None = None, storage_type: Literal['memory', 'local', 'session'] = 'memory', disable_callbacks: bool = False)[source]
- Bases: - ABC- The abstract base class for an MPComponent. MPComponent is designed to help render an MSONable object. - static all_app_stores() Div[source]
- This must be included somewhere in your Crystal Toolkit Dash app’s layout for interactivity to work. This is a hidden element that contains the MSON for each MPComponent. - Returns: a html.Div Dash Layout 
 - property all_ids: list[str]
- List of all ids generated by this component - Type
- return 
 
 - property all_stores: list[str]
- List of all store ids generated by this component - Type
- return 
 
 - app = None
 - cache = None
 - create_store(name: str, initial_data: MSONable | dict | str | None = None, storage_type: Literal['memory', 'local', 'session'] = 'memory', debug_clear: bool = False)[source]
- Generate a dcc.Store to hold something (MSONable object, Dict or string), and register it so that it will be included in the Dash app automatically. - The initial data will be stored in a class attribute as self._initial_data[name]. - Parameters
- name – name for the store 
- initial_data – initial data to include 
- storage_type – as in dcc.Store 
- debug_clear – set to True to empty the store if using 
- storage (persistent) – 
 
 
 - static datauri_from_fig(fig, fmt: str = 'png', width: int = 600, height: int = 400, scale: int = 4) str[source]
- Generate a data URI from a Plotly Figure. - Parameters
- fig – Plotly Figure object or corresponding dictionary 
- fmt – “png”, “jpg”, etc. (see PlotlyScope for supported formats) 
- width – width in pixels 
- height – height in pixels 
- scale – scale factor 
 
- Returns
 
 - static from_data(data)[source]
- Converts the contents of a dcc.Store back into a Python object. :param data: contents of a dcc.Store created by to_data :return: a Python object 
 - generate_callbacks(app, cache)[source]
- Generate all callbacks associated with the layouts in this app. Assume that “suppress_callback_exceptions” is True, since it is not always guaranteed that all layouts will be displayed to the end user at all times, but it’s important the callbacks are defined on the server. 
 - get_bool_input(kwarg_label: str, default: bool | None = None, state: dict | None = None, label: str | None = None, help_str: str = None, **kwargs)[source]
- For Python classes which take boolean values as inputs, this will generate a corresponding Dash input layout. - Parameters
- kwarg_label – The name of the corresponding Python input, this is used 
 - to name the component. :param label: A description for this input. :param default: A default value for this input. :param state: Used to set default state for this input, use a dict with the - kwarg_label as a key - and the default value as a value. Ignored if default is set. It can be useful
- to use state if you want to set defaults for multiple inputs from a single dictionary. 
 - Parameters
- help_str – Text for a tooltip when hovering over label. 
- Returns
- a Dash layout 
 
 - get_choice_input(kwarg_label: str, default: str | None = None, state: dict | None = None, label: str | None = None, help_str: str = None, options: list[dict] | None = None, clearable: bool = False, **kwargs)[source]
- For Python classes which take pre-defined values as inputs, this will generate a corresponding input layout using mpc.Select. - Parameters
- kwarg_label – The name of the corresponding Python input, this is used 
 - to name the component. :param label: A description for this input. :param default: A default value for this input. :param state: Used to set default state for this input, use a dict with the kwarg_label as a key and the default value as a value. Ignored if default is set. It can be useful to use state if you want to set defaults for multiple inputs from a single dictionary. :param help_str: Text for a tooltip when hovering over label. :param options: Options to choose from, as per dcc.Dropdown :param clearable: If True, will allow Dropdown to be cleared after a selection is made. :return: a Dash layout 
 - get_dict_input(kwarg_label: str, default: Any | None = None, state: dict | None = None, label: str | None = None, help_str: str = None, key_name: str = 'key', value_name: str = 'value')[source]
- Parameters
- kwarg_label – 
- default – 
- state – 
- label – 
- help_str – 
- key_name – 
- value_name – 
 
- Returns
 
 - get_figure_placeholder(figure_id: str) Div[source]
- Get a layout to act as a placeholder for an interactive figure. - When used with generate_static_figure_callbacks, and assuming kaleido is installed on the server, a static image placeholder will be generated. - Returns
 
 - get_numerical_input(kwarg_label: str, default: int | float | list | None = None, state: dict | None = None, label: str | None = None, help_str: str = None, is_int: bool = False, shape: tuple[int, ...] = (), **kwargs)[source]
- For Python classes which take matrices as inputs, this will generate a corresponding Dash input layout. - Parameters
- kwarg_label – The name of the corresponding Python input, this is used 
 - to name the component. :param label: A description for this input. :param default: A default value for this input. :param state: Used to set default state for this input, use a dict with the kwarg_label as a key and the default value as a value. Ignored if default is set. It can be useful to use state if you want to set defaults for multiple inputs from a single dictionary. :param help_str: Text for a tooltip when hovering over label. :param is_int: if True, will use a numeric input :param shape: (3, 3) for matrix, (1, 3) for vector, (1, 1) for scalar :return: a Dash layout 
 - get_slider_input(kwarg_label: str, default: Any | None = None, state: dict = None, label: str | None = None, help_str: str = None, multiple: bool = False, **kwargs)[source]
 - id(name: str = 'default', is_kwarg: bool = False, idx=False, hint=None, is_store: bool = False) str | dict[str, str][source]
- Generate an id from a name combined with the base id of the MPComponent itself, useful for generating ids of individual components in the layout. - In the special case of the id of an element that is used to re-construct a keyword argument for a specific class, it will store information necessary to reconstruct that keyword argument (e.g. its type hint and, in the case of a vector or matrix, the corresponding index). - A hint could be a tuple for a numpy array of that shape, e.g. (3, 3) for a 3x3 matrix, (1, 3) for a vector, or “literal” to parse kwarg value using ast.literal_eval, or “bool” to parse a boolean value. In future iterations, we may be able to replace this with native Python type hints. The problem here is being able to specify array shape where appropriate. - Parameters
- name – e.g. “default” 
 - Returns: e.g. “MPComponent_default” 
 - property initial_data
- Initial data for all the stores defined by component, keyed by store name. - Type
- return 
 
 - layout() Div[source]
- Returns
- A Dash layout for the full component. Basic implementation 
 - provided, but should in general be overridden. 
 - reconstruct_kwargs_from_state(state=None, kwarg_labels=None) dict[source]
- Generate - Parameters
- state – optional, a Dash callback context input or state 
- kwarg_labels – optional, parse only a specific kwarg or list of kwargs 
 
- Returns
- A dictionary of keyword arguments with their values 
 
 - static register_app(app: Dash)[source]
- This method must be called at least once in your Crystal Toolkit Dash app if you want to enable interactivity with the MPComponents. The “app” variable is a special global variable used by Dash/Flask, and registering it with MPComponent allows callbacks to be registered with the app on instantiation. - Parameters
- app – a Dash app instance 
 
 - static register_cache(cache: Cache)[source]
- This method must be called at least once in your Crystal Toolkit Dash app if you want to enable callback caching. Callback caching is one of the easiest ways to see significant performance improvements, especially for callbacks that are computationally expensive. - Parameters
- cache – a flask_caching Cache instance