def get_page_ranges(<EOL>self, container_name, blob_name, snapshot=None, start_range=None,<EOL>end_range=None, lease_id=None, if_modified_since=None,<EOL>if_unmodified_since=None, if_match=None, if_none_match=None, timeout=None):
_validate_not_none('<STR_LIT>', container_name)<EOL>_validate_not_none('<STR_LIT>', blob_name)<EOL>request = HTTPRequest()<EOL>request.method = '<STR_LIT:GET>'<EOL>request.host = self._get_host()<EOL>request.path = _get_path(container_name, blob_name)<EOL>request.query = [<EOL>('<STR_LIT>', '<STR_LIT>'),<EOL>('<STR_LIT>', _to_str(snapshot)),<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>if start_range is not None:<EOL><INDENT>_validate_and_format_range_headers(<EOL>request,<EOL>start_range,<EOL>end_range,<EOL>start_range_required=False,<EOL>end_range_required=False,<EOL>align_to_page=True)<EOL><DEDENT>response = self._perform_request(request)<EOL>return _convert_xml_to_page_ranges(response)<EOL>
Returns the list of valid page ranges for a Page Blob or snapshot
of a page blob.

:param str container_name:
    Name of existing container.
:param str blob_name:
    Name of existing blob.
:param str snapshot:
    The snapshot parameter is an opaque DateTime value that,
    when present, specifies the blob snapshot to retrieve information
    from.
:param int start_range:
    Start of byte range to use for getting valid page ranges.
    If no end_range is given, all bytes after the start_range will be searched.
    Pages must be aligned with 512-byte boundaries, the start offset
    must be a modulus of 512 and the end offset must be a modulus of
    512-1. Examples of valid byte ranges are 0-511, 512-, etc.
:param int end_range:
    End of byte range to use for getting valid page ranges.
    If end_range is given, start_range must be provided.
    This range will return valid page ranges for from the offset start up to
    offset end.
    Pages must be aligned with 512-byte boundaries, the start offset
    must be a modulus of 512 and the end offset must be a modulus of
    512-1. Examples of valid byte ranges are 0-511, 512-, etc.
: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: A list of valid Page Ranges for the Page Blob.
:rtype: list of :class:`~azure.storage.blob.models.PageRange`