text: #-----------------------------------------------------------------------------
  # Copyright (c) 2012 - 2022, Anaconda, Inc., and Bokeh Contributors.
  # All rights reserved.
  #
  # The full license is in the file LICENSE.txt, distributed with this software.
  #-----------------------------------------------------------------------------
  ''' The validation module provides the capability to perform integrity
  checks on an entire collection of Bokeh models.
  
  To create a Bokeh visualization, the central task is to assemble a collection
  model objects from |bokeh.models| into a graph that represents the scene that
  should be created in the client. It is possible to to this "by hand", using the
  model objects directly. However, to make this process easier, Bokeh provides
  higher level interfaces such as |bokeh.plotting| for users.
  
  These interfaces automate common "assembly" steps, to ensure a Bokeh object
  graph is created in a consistent, predictable way. However, regardless of what
  interface is used, it is possible to put Bokeh models together in ways that are
  incomplete, or that do not make sense in some way.
  
  To assist with diagnosing potential problems, Bokeh performs a validation step
  when outputting a visualization for display. This module contains error and
  warning codes as well as helper functions for defining validation checks.
  
  One use case for warnings is to loudly point users in the right direction
  when they accidentally do something that they probably didn't mean to do - this
  is the case for EMPTY_LAYOUT for instance. Since warnings don't necessarily
  indicate misuse, they are configurable. To silence a warning, use the silence
  function provided.
  
  .. code-block:: python
  
      >>> from bokeh.core.validation import silence
      >>> from bokeh.core.validation.warnings import EMPTY_LAYOUT
      >>> silence(EMPTY_LAYOUT, True)
  
  '''
  
  #-----------------------------------------------------------------------------
  # Boilerplate
  #-----------------------------------------------------------------------------
  from __future__ import annotations
  
  import logging # isort:skip
  log = logging.getLogger(__name__)
  
  #-----------------------------------------------------------------------------
  # Imports
  #-----------------------------------------------------------------------------
  
  # Bokeh imports
  from . import errors  # NOQA
  from . import warnings  # NOQA
  from .check import (
      check_integrity,
      process_validation_issues,
      silence,
      silenced,
  )
  from .decorators import error, warning
  
  #-----------------------------------------------------------------------------
  # Globals and constants
  #-----------------------------------------------------------------------------
  
  #-----------------------------------------------------------------------------
  # General API
  #-----------------------------------------------------------------------------
  
  #-----------------------------------------------------------------------------
  # Dev API
  #-----------------------------------------------------------------------------
  
  #-----------------------------------------------------------------------------
  # Private API
  #-----------------------------------------------------------------------------
  
  #-----------------------------------------------------------------------------
  # Code
  #-----------------------------------------------------------------------------
  