code: def get_extended(self, config):
          
          if not config.extends or self._extended:
              return config
          extended_config = ContainerConfiguration()
          for ext_name in config.extends:
              ext_cfg_base = self._containers.get(ext_name)
              if not ext_cfg_base:
                  raise KeyError(ext_name)
              ext_cfg = self.get_extended(ext_cfg_base)
              extended_config.merge_from_obj(ext_cfg)
          extended_config.merge_from_obj(config)
          return extended_config
docs: Generates a configuration that includes all inherited values.
  
          :param config: Container configuration.
          :type config: ContainerConfiguration
          :return: A merged (shallow) copy of all inherited configurations merged with the container configuration.
          :rtype: ContainerConfiguration