def copy_blob(self, container_name, blob_name, copy_source,<EOL>metadata=None,<EOL>source_if_modified_since=None,<EOL>source_if_unmodified_since=None,<EOL>source_if_match=None, source_if_none_match=None,<EOL>destination_if_modified_since=None,<EOL>destination_if_unmodified_since=None,<EOL>destination_if_match=None,<EOL>destination_if_none_match=None,<EOL>destination_lease_id=None,<EOL>source_lease_id=None, timeout=None):
return self._copy_blob(container_name, blob_name, copy_source,<EOL>metadata,<EOL>None,<EOL>source_if_modified_since, source_if_unmodified_since,<EOL>source_if_match, source_if_none_match,<EOL>destination_if_modified_since,<EOL>destination_if_unmodified_since,<EOL>destination_if_match,<EOL>destination_if_none_match,<EOL>destination_lease_id,<EOL>source_lease_id, timeout,<EOL>False)<EOL>
Copies a blob asynchronously. This operation returns a copy operation 
properties object, including a copy ID you can use to check or abort the 
copy operation. The Blob service copies blobs on a best-effort basis.

The source blob for a copy operation may be a block blob, an append blob, 
or a page blob. If the destination blob already exists, it must be of the 
same blob type as the source blob. Any existing destination blob will be 
overwritten. The destination blob cannot be modified while a copy operation 
is in progress.

When copying from a page blob, the Blob service creates a destination page 
blob of the source blob's length, initially containing all zeroes. Then 
the source page ranges are enumerated, and non-empty ranges are copied. 

For a block blob or an append blob, the Blob service creates a committed 
blob of zero length before returning from this operation. When copying 
from a block blob, all committed blocks and their block IDs are copied. 
Uncommitted blocks are not copied. At the end of the copy operation, the 
destination blob will have the same committed block count as the source.

When copying from an append blob, all committed blocks are copied. At the 
end of the copy operation, the destination blob will have the same committed 
block count as the source.

For all blob types, you can call get_blob_properties on the destination 
blob to check the status of the copy operation. The final blob will be 
committed when the copy completes.

:param str container_name:
    Name of the destination container. The container must exist.
:param str blob_name:
    Name of the destination blob. If the destination blob exists, it will 
    be overwritten. Otherwise, it will be created.
:param str copy_source:
    A URL of up to 2 KB in length that specifies an Azure file or blob. 
    The value should be URL-encoded as it would appear in a request URI. 
    If the source is in another account, the source must either be public 
    or must be authenticated via a shared access signature. If the source 
    is public, no authentication is required.
    Examples:
    https://myaccount.blob.core.windows.net/mycontainer/myblob
    https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>
    https://otheraccount.blob.core.windows.net/mycontainer/myblob?sastoken
:param metadata:
    Name-value pairs associated with the blob as metadata. If no name-value 
    pairs are specified, the operation will copy the metadata from the 
    source blob or file to the destination blob. If one or more name-value 
    pairs are specified, the destination blob is created with the specified 
    metadata, and metadata is not copied from the source blob or file. 
:type metadata: dict(str, str)
:param datetime source_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 conditional header to copy the blob only if the source
    blob has been modified since the specified date/time.
:param datetime source_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 conditional header to copy the blob only if the source blob
    has not been modified since the specified date/time.
:param ETag source_if_match:
    An ETag value, or the wildcard character (*). Specify this conditional
    header to copy the source blob only if its ETag matches the value
    specified. If the ETag values do not match, the Blob service returns
    status code 412 (Precondition Failed). This header cannot be specified
    if the source is an Azure File.
:param ETag source_if_none_match:
    An ETag value, or the wildcard character (*). Specify this conditional
    header to copy the blob only if its ETag does not match the value
    specified. If the values are identical, the Blob service returns status
    code 412 (Precondition Failed). This header cannot be specified if the
    source is an Azure File.
:param datetime destination_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 conditional header to copy the blob only
    if the destination blob has been modified since the specified date/time.
    If the destination blob has not been modified, the Blob service returns
    status code 412 (Precondition Failed).
:param datetime destination_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 conditional header to copy the blob only
    if the destination blob has not been modified since the specified
    date/time. If the destination blob has been modified, the Blob service
    returns status code 412 (Precondition Failed).
:param ETag destination_if_match:
    An ETag value, or the wildcard character (*). Specify an ETag value for
    this conditional header to copy the blob only if the specified ETag value
    matches the ETag value for an existing destination blob. If the ETag for
    the destination blob does not match the ETag specified for If-Match, the
    Blob service returns status code 412 (Precondition Failed).
:param ETag destination_if_none_match:
    An ETag value, or the wildcard character (*). Specify an ETag value for
    this conditional header to copy the blob only if the specified ETag value
    does not match the ETag value for the destination blob. Specify the wildcard
    character (*) to perform the operation only if the destination blob does not
    exist. If the specified condition isn't met, the Blob service returns status
    code 412 (Precondition Failed).
:param str destination_lease_id:
    The lease ID specified for this header must match the lease ID of the
    destination blob. If the request does not include the lease ID or it is not
    valid, the operation fails with status code 412 (Precondition Failed).
:param str source_lease_id:
    Specify this to perform the Copy Blob operation only if
    the lease ID given matches the active lease ID of the source blob.
:param int timeout:
    The timeout parameter is expressed in seconds.
:return: Copy operation properties such as status, source, and ID.
:rtype: :class:`~azure.storage.blob.models.CopyProperties`