':type table_name: str
:param table_name: The name of the table.  The class handles
batch writes to a single table.
:type client: ``botocore.client.Client``
:param client: A botocore client.  Note this client
**must** have the dynamodb customizations applied
to it for transforming AttributeValues into the
wire protocol.  What this means in practice is that
you need to use a client that comes from a DynamoDB
resource if you\'re going to instantiate this class
directly, i.e
``boto3.resource(\'dynamodb\').Table(\'foo\').meta.client``.
:type flush_amount: int
:param flush_amount: The number of items to keep in
a local buffer before sending a batch_write_item
request to DynamoDB.
:type overwrite_by_pkeys: list(string)
:param overwrite_by_pkeys: De-duplicate request items in buffer
if match new request item on specified primary keys. i.e
``["partition_key1", "sort_key2", "sort_key3"]``'

def __init__(self, table_name, client, flush_amount=25, overwrite_by_pkeys=None):

    self._table_name = table_name
    self._client = client
    self._items_buffer = []
    self._flush_amount = flush_amount
    self._overwrite_by_pkeys = overwrite_by_pkeys
