def put_block_list(<EOL>self, container_name, blob_name, block_list, content_settings=None,<EOL>metadata=None, validate_content=False, lease_id=None, if_modified_since=None,<EOL>if_unmodified_since=None, if_match=None, if_none_match=None,<EOL>timeout=None):
_validate_encryption_unsupported(self.require_encryption, self.key_encryption_key)<EOL>return self._put_block_list(<EOL>container_name,<EOL>blob_name,<EOL>block_list,<EOL>content_settings=content_settings,<EOL>metadata=metadata,<EOL>validate_content=validate_content,<EOL>lease_id=lease_id,<EOL>if_modified_since=if_modified_since,<EOL>if_unmodified_since=if_unmodified_since,<EOL>if_match=if_match,<EOL>if_none_match=if_none_match,<EOL>timeout=timeout<EOL>)<EOL>
Writes a blob by specifying the list of block IDs that make up the blob.
In order to be written as part of a blob, a block must have been
successfully written to the server in a prior Put Block operation.

You can call Put Block List to update a blob by uploading only those
blocks that have changed, then committing the new and existing blocks
together. You can do this by specifying whether to commit a block from
the committed block list or from the uncommitted block list, or to commit
the most recently uploaded version of the block, whichever list it may
belong to.

:param str container_name:
    Name of existing container.
:param str blob_name:
    Name of existing blob.
:param block_list:
    A list of :class:`~azure.storeage.blob.models.BlobBlock` containing the block ids and block state.
:type block_list: list of :class:`~azure.storage.blob.models.BlobBlock`
:param ~azure.storage.blob.models.ContentSettings content_settings:
    ContentSettings object used to set properties on the blob.
:param metadata:
    Name-value pairs associated with the blob as metadata.
:type metadata: a dict mapping str to str
:param bool validate_content:
    If true, calculates an MD5 hash of the block list content. The storage
    service checks the hash of the block list content that has arrived
    with the hash that was sent. This is primarily valuable for detecting
    bitflips on the wire if using http instead of https as https (the default)
    will already validate. Note that this check is associated with
    the block list content, and not with the content of the blob itself.
:param str lease_id:
    Required if the blob has an active lease.
:param datetime if_modified_since:
    A DateTime value. Azure expects the date value passed in to be UTC.
    If timezone is included, any non-UTC datetimes will be converted to UTC.
    If a date is passed in without timezone info, it is assumed to be UTC.
    Specify this header to perform the operation only
    if the resource has been modified since the specified time.
:param datetime if_unmodified_since:
    A DateTime value. Azure expects the date value passed in to be UTC.
    If timezone is included, any non-UTC datetimes will be converted to UTC.
    If a date is passed in without timezone info, it is assumed to be UTC.
    Specify this header to perform the operation only if
    the resource has not been modified since the specified date/time.
:param str if_match:
    An ETag value, or the wildcard character (*). Specify this header to perform
    the operation only if the resource's ETag matches the value specified.
:param str if_none_match:
    An ETag value, or the wildcard character (*). Specify this header
    to perform the operation only if the resource's ETag does not match
    the value specified. Specify the wildcard character (*) to perform
    the operation only if the resource does not exist, and fail the
    operation if it does exist.
:param int timeout:
    The timeout parameter is expressed in seconds.
:return: ETag and last modified properties for the updated Block Blob
:rtype: :class:`~azure.storage.blob.models.ResourceProperties`