'Keyword Arguments:
group_id (str): name of the consumer group to join for dynamic
partition assignment (if enabled), and to use for fetching and
committing offsets. Default: \'kafka-python-default-group\'
session_timeout_ms (int): The timeout used to detect failures when
using Kafka\'s group managementment facilities. Default: 30000
heartbeat_interval_ms (int): The expected time in milliseconds
between heartbeats to the consumer coordinator when using
Kafka\'s group management feature. Heartbeats are used to ensure
that the consumer\'s session stays active and to facilitate
rebalancing when new consumers join or leave the group. The
value must be set lower than session_timeout_ms, but typically
should be set no higher than 1/3 of that value. It can be
adjusted even lower to control the expected time for normal
rebalances. Default: 3000
retry_backoff_ms (int): Milliseconds to backoff when retrying on
errors. Default: 100.'

def __init__(self, client, metrics, **configs):

    self.config = copy.copy(self.DEFAULT_CONFIG)
    for key in self.config:
        if (key in configs):
            self.config[key] = configs[key]
    self._client = client
    self.generation = OffsetCommitRequest[2].DEFAULT_GENERATION_ID
    self.member_id = JoinGroupRequest[0].UNKNOWN_MEMBER_ID
    self.group_id = self.config['group_id']
    self.coordinator_id = None
    self.rejoin_needed = True
    self.rejoining = False
    self.heartbeat = Heartbeat(**self.config)
    self.heartbeat_task = HeartbeatTask(weakref.proxy(self))
    self.sensors = GroupCoordinatorMetrics(self.heartbeat, metrics, self.config['metric_group_prefix'])
