human
Complete the below
@transfer_doc(BlockBlobService.create_blob_from_path)
def upload_blob(client, container_name, blob_name, file_path, blob_type=None, content_settings=None, metadata=None, validate_content=False, maxsize_condition=None, max_connections=2, lease_id=None, if_modified_since=None, if_unmodified_since=None, if_match=None, if_none_match=None, timeout=None):

    ''''Upload a blob to a container.'
    '''

=====
Write me a the Python program you requested?
assistant
#Here is the Python program you requested.
    def upload_append_blob():
        if (not client.exists(container_name, blob_name)):
            client.create_blob(container_name=container_name, blob_name=blob_name, content_settings=content_settings, metadata=metadata, lease_id=lease_id, if_modified_since=if_modified_since, if_match=if_match, if_none_match=if_none_match, timeout=timeout)
        append_blob_args = {'container_name': container_name, 'blob_name': blob_name, 'file_path': file_path, 'progress_callback': _update_progress, 'maxsize_condition': maxsize_condition, 'lease_id': lease_id, 'timeout': timeout}
        if supported_api_version(ResourceType.DATA_STORAGE, min_api='2016-05-31'):
            append_blob_args['validate_content'] = validate_content
        return client.append_blob_from_path(**append_blob_args)
    def upload_block_blob():
        import os
        if (os.path.isfile(file_path) and (os.stat(file_path).st_size > (((200 * 1024) * 1024) * 1024))):
            client.MAX_BLOCK_SIZE = ((100 * 1024) * 1024)
            client.MAX_SINGLE_PUT_SIZE = ((256 * 1024) * 1024)
        create_blob_args = {'container_name': container_name, 'blob_name': blob_name, 'file_path': file_path, 'progress_callback': _update_progress, 'content_settings': content_settings, 'metadata': metadata, 'max_connections': max_connections, 'lease_id': lease_id, 'if_modified_since': if_modified_since, 'if_unmodified_since': if_unmodified_since, 'if_match': if_match, 'if_none_match': if_none_match, 'timeout': timeout}
        if supported_api_version(ResourceType.DATA_STORAGE, min_api='2016-05-31'):
            create_blob_args['validate_content'] = validate_content
        return client.create_blob_from_path(**create_blob_args)
    type_func = {'append': upload_append_blob, 'block': upload_block_blob, 'page': upload_block_blob}
    return type_func[blob_type]()