code: def describe_configs(self, resources, **kwargs):
          
  
          f, futmap = AdminClient._make_futures(resources, ConfigResource,
                                                AdminClient._make_resource_result)
  
          super(AdminClient, self).describe_configs(resources, f, **kwargs)
  
          return futmap
docs: Get configuration for the specified resources.
  
          The future result() value is a dict(<configname, ConfigEntry>).
  
          :warning: Multiple resources and resource types may be requested,
                    but at most one resource of type RESOURCE_BROKER is allowed
                    per call since these resource requests must be sent to the
                    broker specified in the resource.
  
          :param list(ConfigResource) resources: Resources to get configuration for.
          :param float request_timeout: Set the overall request timeout in seconds,
                    including broker lookup, request transmission, operation time
                    on broker, and response. Default: `socket.timeout.ms*1000.0`
          :param bool validate_only: Tell broker to only validate the request,
                    without creating the partitions. Default: False
  
          :returns: a dict of futures for each resource, keyed by the ConfigResource.
          :rtype: dict(<ConfigResource, future>)
  
          :raises KafkaException: Operation failed locally or on broker.
          :raises TypeException: Invalid input.
          :raises ValueException: Invalid input.