Source code for bokeh.core.validation.check
''' Provide the ``check_integrity`` function.
'''
from __future__ import absolute_import
import logging
logger = logging.getLogger(__name__)
[docs]def check_integrity(models):
''' Apply validation and integrity checks to a collection of Bokeh models.
Args:
models (seq[Model]) : a collection of Models to test
Returns:
None
This function will emit log warning and error messages for all error or
warning conditions that are detected. For example, layouts without any
children will trigger a warning:
.. code-block:: python
>>> empty_row = Row
>>> check_integrity([empty_row])
W-1002 (EMPTY_LAYOUT): Layout has no children: Row(id='2404a029-c69b-4e30-9b7d-4b7b6cdaad5b', ...)
'''
messages = dict(error=[], warning=[])
for model in models:
validators = []
for name in dir(model):
if not name.startswith("_check"): continue
obj = getattr(model, name)
if getattr(obj, "validator_type", None):
validators.append(obj)
for func in validators:
messages[func.validator_type].extend(func())
for msg in sorted(messages['error']):
logger.error("E-%d (%s): %s: %s" % msg)
for msg in sorted(messages['warning']):
logger.warning("W-%d (%s): %s: %s" % msg)
# This will be turned on in a future release
# if len(messages['error']) or (len(messages['warning']) and settings.strict()):
# raise RuntimeError("Errors encountered during validation (see log output)")