docstr: Update all the class traits having ``config=True`` in metadata.
  
  For any class trait with a ``config`` metadata attribute that is
  ``True``, we update the trait with the value of the corresponding
  config entry.
code: def _config_changed(self, change: Bunch) -> None:
      """Update all the class traits having ``config=True`` in metadata.
  
      For any class trait with a ``config`` metadata attribute that is
      ``True``, we update the trait with the value of the corresponding
      config entry.
      """
      # Get all traits with a config metadata entry that is True
      traits = self.traits(config=True)
  
      # We auto-load config section for this class as well as any parent
      # classes that are Configurable subclasses.  This starts with Configurable
      # and works down the mro loading the config for each section.
      section_names = self.section_names()
      self._load_config(
          change.new, traits=traits, section_names=section_names
      )
  
imports: from __future__ import annotations
  import logging
  import typing
  from copy import deepcopy
  from textwrap import dedent
  from traitlets.traitlets import Any, Container, Dict, HasTraits, Instance, TraitType, default, observe, observe_compat, validate
  from traitlets.utils import warnings
  from traitlets.utils.bunch import Bunch
  from traitlets.utils.text import indent, wrap_paragraphs
  from .loader import Config, DeferredConfig, LazyConfigValue, _is_section_key
label_desc: Use image node_id 5 for calling the Configurable obj's underlying member method code with example usage: obj._config_changed(change) without return types