docstr: extract my config from a global Config object
  
  will construct a Config object of only the config values that apply to me
  based on my mro(), as well as those of my parent(s) if they exist.
  
  If I am Bar and my parent is Foo, and their parent is Tim,
  this will return merge following config sections, in this order::
  
      [Bar, Foo.Bar, Tim.Foo.Bar]
  
  With the last item being the highest priority.
code: def _find_my_config(self, cfg: Config) -> t.Any:
      """extract my config from a global Config object
  
      will construct a Config object of only the config values that apply to me
      based on my mro(), as well as those of my parent(s) if they exist.
  
      If I am Bar and my parent is Foo, and their parent is Tim,
      this will return merge following config sections, in this order::
  
          [Bar, Foo.Bar, Tim.Foo.Bar]
  
      With the last item being the highest priority.
      """
      cfgs = [cfg]
      if self.parent:
          cfgs.append(self.parent._find_my_config(cfg))
      my_config = Config()
      for c in cfgs:
          for sname in self.section_names():
              # Don't do a blind getattr as that would cause the config to
              # dynamically create the section with name Class.__name__.
              if c._has_section(sname):
                  my_config.merge(c[sname])
      return my_config
  
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 3 for calling the Configurable obj's underlying member method code with example usage: obj._find_my_config(cfg) and returns: my_config