code: def apply_object(self, config_obj, apply_on=None):
          # type: (object, Optional[Tuple[str, ...]]) -> None
          
          self._init_flat_pointers()
          try:
              config_obj_keys = vars(config_obj).keys()  # type: Iterable[str]
          except TypeError:
              config_obj_keys = filter(lambda k: k[0] != '_', dir(config_obj))
  
          for config_key in config_obj_keys:
              if apply_on:
                  flat_key = apply_on + (config_key, )
              else:
                  flat_key = (config_key, )
  
              if flat_key in self._flat_pointers:
                  container, orig_key = self._flat_pointers[flat_key]
                  container[orig_key] = getattr(config_obj, config_key)
docs: Apply additional configuration from any Python object
  
          This will look for object attributes that exist in the base_config and apply their values  on the current
          configuration object