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, encryption_data=None):
_validate_not_none('<STR_LIT>', container_name)<EOL>_validate_not_none('<STR_LIT>', blob_name)<EOL>_validate_not_none('<STR_LIT>', block_list)<EOL>request = HTTPRequest()<EOL>request.method = '<STR_LIT>'<EOL>request.host_locations = self._get_host_locations()<EOL>request.path = _get_path(container_name, blob_name)<EOL>request.query = {<EOL>'<STR_LIT>': '<STR_LIT>',<EOL>'<STR_LIT>': _int_to_str(timeout),<EOL>}<EOL>request.headers = {<EOL>'<STR_LIT>': _to_str(lease_id),<EOL>'<STR_LIT>': _datetime_to_utc_string(if_modified_since),<EOL>'<STR_LIT>': _datetime_to_utc_string(if_unmodified_since),<EOL>'<STR_LIT>': _to_str(if_match),<EOL>'<STR_LIT>': _to_str(if_none_match),<EOL>}<EOL>_add_metadata_headers(metadata, request)<EOL>if content_settings is not None:<EOL><INDENT>request.headers.update(content_settings._to_headers())<EOL><DEDENT>request.body = _get_request_body(<EOL>_convert_block_list_to_xml(block_list))<EOL>if validate_content:<EOL><INDENT>computed_md5 = _get_content_md5(request.body)<EOL>request.headers['<STR_LIT>'] = _to_str(computed_md5)<EOL><DEDENT>if encryption_data is not None:<EOL><INDENT>request.headers['<STR_LIT>'] = encryption_data<EOL><DEDENT>return self._perform_request(request, _parse_base_properties)<EOL>
See put_block_list for more details. This helper method
allows for encryption or other such special behavior because
it is safely handled by the library. These behaviors are
prohibited in the public version of this function.
:param str encryption_data:
    A JSON formatted string containing the encryption metadata generated for this 
    blob if it was encrypted all at once upon upload. This should only be passed
    in by internal methods.