GOOGLE-CLOUD-STORAGE(1)

NAME
google-cloud-storage - google-cloud-storage Documentation

[image: stable] [image]
 <https://github.com/googleapis/google-cloud-python/blob/main/README.rst#stability-levels> [image: pypi] [image]
 <https://pypi.org/project/google-cloud-storage/> [image: versions] [image]
 <https://pypi.org/project/google-cloud-storage/>

Google Cloud Storage <https://cloud.google.com/storage> is a managed service for storing unstructured data. Cloud Storage allows world-wide storage and retrieval of any amount of data at any time. You can use Cloud Storage for a range of scenarios including serving website content, storing data for archival and disaster recovery, or distributing large data objects to users via direct download.

NOTE: 3.0 Major Version Notes are available. Feedback welcome.

A comprehensive list of changes in each version may be found in the CHANGELOG <https://github.com/googleapis/python-storage/blob/main/CHANGELOG.md>.

•   Product Documentation <https://cloud.google.com/storage>

•   Client Library Documentation <https://cloud.google.com/python/docs/reference/storage/latest/summary_overview>

•   github.com/googleapis/python-storage <https://github.com/googleapis/python-storage>

    Certain control plane and long-running operations for Cloud Storage (including Folder and Managed Folder operations) are supported via the Storage Control Client <https://cloud.google.com/python/docs/reference/google-cloud-storage-control/latest>. The Storage Control API <https://cloud.google.com/storage/docs/reference/rpc/google.storage.control.v2> creates one space to perform metadata-specific, control plane, and long-running operations apart from the Storage API.

    Read more about the client libraries for Cloud APIs, including the older Google APIs Client Libraries, in Client Libraries Explained <https://cloud.google.com/apis/docs/client-libraries-explained>.

QUICK START

In order to use this library, you first need to go through the following steps. A step-by-step guide may also be found in Get Started with Client Libraries <https://cloud.google.com/storage/docs/reference/libraries#client-libraries-install-python>.

1.  Select or create a Cloud Platform project. <https://console.cloud.google.com/project>

2.  Enable billing for your project. <https://cloud.google.com/billing/docs/how-to/modify-project#enable_billing_for_a_project>

3.  Enable the Google Cloud Storage API. <https://console.cloud.google.com/flows/enableapi?apiid=storage-api.googleapis.com>

4.  Setup Authentication. <https://cloud.google.com/docs/authentication/client-libraries>

  Installation

Install this library in a virtual environment using venv <https://docs.python.org/3/library/venv.html>. venv <https://docs.python.org/3/library/venv.html> is a tool that creates isolated Python environments. These isolated environments can have separate versions of Python packages, which allows you to isolate one project's dependencies from the dependencies of other projects.

With venv <https://docs.python.org/3/library/venv.html>, it's possible to install this library without needing system install permissions, and without clashing with the installed system dependencies.

  Code samples and snippets

Code samples and snippets live in the samples/ <https://github.com/googleapis/python-storage/tree/main/samples> folder.

  Supported Python Versions

Our client libraries are compatible with all current active <https://devguide.python.org/devcycle/#in-development-main-branch> and maintenance <https://devguide.python.org/devcycle/#maintenance-branches> versions of Python.

Python >= 3.7

  Unsupported Python Versions

Python <= 3.6

If you are using an end-of-life <https://devguide.python.org/devcycle/#end-of-life-branches> version of Python, we recommend that you update as soon as possible to an actively supported version.

  Mac/Linux

    python3 -m venv <your-env>
    source <your-env>/bin/activate
    pip install google-cloud-storage

  Windows

    py -m venv <your-env>
    .\<your-env>\Scripts\activate
    pip install google-cloud-storage

  Example Usage

    # Imports the Google Cloud client library
    from google.cloud import storage
    # Instantiates a client
    storage_client = storage.Client()
    # The name for the new bucket
    bucket_name = "my-new-bucket"
    # Creates the new bucket
    bucket = storage_client.create_bucket(bucket_name)
    print(f"Bucket {bucket.name} created.")

  Tracing With OpenTelemetry

This is a PREVIEW FEATURE: Coverage and functionality are still in development and subject to change.

This library can be configured to use OpenTelemetry <https://opentelemetry.io> to generate traces on calls to Google Cloud Storage. For information on the benefits and utility of tracing, read the Cloud Trace Overview <https://cloud.google.com/trace/docs/overview>.

To enable OpenTelemetry tracing in the Cloud Storage client, first install OpenTelemetry:

    pip install google-cloud-storage[tracing]

Set the ENABLE_GCS_PYTHON_CLIENT_OTEL_TRACES environment variable to selectively opt-in tracing for the Cloud Storage client:

    export ENABLE_GCS_PYTHON_CLIENT_OTEL_TRACES=True

You will also need to tell OpenTelemetry which exporter to use. An example to export traces to Google Cloud Trace can be found below.

    # Install the Google Cloud Trace exporter and propagator, however you can use any exporter of your choice.
    pip install opentelemetry-exporter-gcp-trace opentelemetry-propagator-gcp
    # [Optional] Install the OpenTelemetry Requests Instrumentation to trace the underlying HTTP requests.
    pip install opentelemetry-instrumentation-requests

    from opentelemetry import trace
    from opentelemetry.sdk.trace import TracerProvider
    from opentelemetry.sdk.trace.export import BatchSpanProcessor
    from opentelemetry.exporter.cloud_trace import CloudTraceSpanExporter
    tracer_provider = TracerProvider()
    tracer_provider.add_span_processor(BatchSpanProcessor(CloudTraceSpanExporter()))
    trace.set_tracer_provider(tracer_provider)
    # Optional yet recommended to instrument the requests HTTP library
    from opentelemetry.instrumentation.requests import RequestsInstrumentor
    RequestsInstrumentor().instrument(tracer_provider=tracer_provider)

In this example, tracing data will be published to the Google Cloud Trace <https://cloud.google.com/trace> console. Tracing is most effective when many libraries are instrumented to provide insight over the entire lifespan of a request. For a list of libraries that can be instrumented, refer to the OpenTelemetry Registry <https://opentelemetry.io/ecosystem/registry>.

3.0 MAJOR VERSION NOTES

  Feedback Welcome

If you experience that backwards compatibility for your application is broken with this major version release, please let us know through the Github issues system. While some breaks of backwards compatibility may be unavoidable due to new features in the major version release, we will do our best to minimize them. Thank you.

  Exception Handling

In Python Storage 3.0, the dependency google-resumable-media was integrated. The google-resumable-media dependency included exceptions google.resumable_media.common.InvalidResponse and google.resumable_media.common.DataCorruption, which were often imported directly in user application code. The replacements for these exceptions are google.cloud.storage.exceptions.InvalidResponse and google.cloud.storage.exceptions.DataCorruption. Please update application code to import and use these exceptions instead.

For backwards compatibility, if google-resumable-media is installed, the new exceptions will be defined as subclasses of the old exceptions, so applications should continue to work without modification. This backwards compatibility feature may be removed in a future major version update.

Some users may be using the original exception classes from the google-resumable-media library without explicitly installing that library. So as not to break user applications following this pattern, google-resumable-media is still in the list of dependencies in this package's setup.py file. Applications which do not import directly from google-resumable-media can safely disregard this dependency. This backwards compatibility feature will be removed in a future major version update. Please migrate to using the google.cloud.storage.exceptions classes as above.

  Checksum Defaults

In Python Storage 3.0, uploads and downloads now have a default of "auto" where applicable. "Auto" will use crc32c checksums, except for unusual cases where the fast (C extension) crc32c implementation is not available, in which case it will use md5 instead. Before Python Storage 3.0, the default was md5 for most downloads and None for most uploads. Note that ranged downloads ("start" or "end" set) still do not support any checksumming, and some features in transfer_manager.py still support crc32c only.

Note: The method Blob.upload_from_file() requires a file in bytes mode, but when checksum is set to None, as was the previous default, would not throw an error if passed a file in string mode under some circumstances. With the new defaults, it will now raise a TypeError. Please use a file opened in bytes reading mode as required.

  Miscellaneous

•   The BlobWriter class now attempts to terminate an ongoing resumable upload if the writer exits with an exception.

•   Retry behavior is now identical between media operations (uploads and downloads) and other operations, and custom predicates are now supported for media operations as well.

•   Blob.download_as_filename() will now delete the empty file if it results in a google.cloud.exceptions.NotFound exception (HTTP 404).

•   Previously, object upload, metadata update, and delete methods had retries disabled by default unless the generation or metageneration was specified in the request. This has now changed so that retries are enabled by default.

  Next Steps

•   Read the Google Cloud Storage Product documentation <https://cloud.google.com/storage> to learn more about the product and see How-to Guides.

•   Read the Client Library Documentation <https://cloud.google.com/python/docs/reference/storage/latest/summary_overview> for Google Cloud Storage API to see other available methods on the client.

•   View this README <https://github.com/googleapis/google-cloud-python/blob/main/README.rst> to see the full list of Cloud APIs that we cover.

    Note: Because the storage client uses the third-party requests <https://requests.readthedocs.io/en/stable/api/#module-requests> library by default, it is safe to share instances across threads. In multiprocessing scenarious, best practice is to create client instances after multiprocessing.Pool or multiprocessing.Process <https://docs.python.org/3/library/multiprocessing.html#multiprocessing.Process> invokes os.fork() <https://docs.python.org/3/library/os.html#os.fork>.

GUIDES

  Managing Access to Data

Cloud Storage offers two systems for granting users access your buckets and objects: IAM and Access Control Lists (ACLs). These systems act in parallel - in order for a user to access a Cloud Storage resource, only one of the systems needs to grant that user permission. For additional access control options, see also: Cloud Storage Control Access to Data <https://cloud.google.com/storage/docs/access-control>

  ACL

Cloud Storage uses access control lists (ACLs) to manage object and bucket access. ACLs are the mechanism you use to share files with other users and allow other users to access your buckets and files.

ACLs are suitable for fine-grained control, but you may prefer using IAM to control access at the project level.

google.cloud.storage.bucket.Bucket has a getting method that creates an ACL object under the hood, and you can interact with that using google.cloud.storage.bucket.Bucket.acl():

    client = storage.Client()
    bucket = client.get_bucket(bucket_name)
    acl = bucket.acl

Adding and removing permissions can be done with the following methods (in increasing order of granularity):

•   ACL.all() corresponds to access for all users.

•   ACL.all_authenticated() corresponds to access for all users that are signed into a Google account.

•   ACL.domain() corresponds to access on a per Google Apps domain (ie, example.com).

•   ACL.group() corresponds to access on a per group basis (either by ID or e-mail address).

•   ACL.user() corresponds to access on a per user basis (either by ID or e-mail address).

    And you are able to grant and revoke the following roles:

•   Reading: _ACLEntity.grant_read() and _ACLEntity.revoke_read()

•   Writing: _ACLEntity.grant_write() and _ACLEntity.revoke_write()

•   Owning: _ACLEntity.grant_owner() and _ACLEntity.revoke_owner()

    You can use any of these like any other factory method (these happen to be _ACLEntity factories):

        acl.user("me@example.org").grant_read()
        acl.all_authenticated().grant_write()

    After that, you can save any changes you make with the google.cloud.storage.acl.ACL.save() method:

        acl.save()

    You can alternatively save any existing google.cloud.storage.acl.ACL object (whether it was created by a factory method or not) from a google.cloud.storage.bucket.Bucket:

        bucket.acl.save(acl=acl)

    To get the list of entity and role for each unique pair, the ACL class is iterable:

        print(list(acl))
        # [{'role': 'OWNER', 'entity': 'allUsers'}, ...]

    This list of tuples can be used as the entity and role fields when sending metadata for ACLs to the API.

  IAM

Identity and Access Management (IAM) controls permissioning throughout Google Cloud and allows you to grant permissions at the bucket and project levels. You should use IAM for any permissions that apply to multiple objects in a bucket to reduce the risks of unintended exposure. To use IAM exclusively, enable uniform bucket-level access to disallow ACLs for all Cloud Storage resources. See also: Additional access control options <https://cloud.google.com/storage/docs/access-control#additional_access_control_options>

  Constants used across IAM roles:

•   STORAGE_OBJECT_CREATOR_ROLE = "roles/storage.objectCreator" corresponds to role implying rights to create objects, but not delete or overwrite them.

•   STORAGE_OBJECT_VIEWER_ROLE = "roles/storage.objectViewer" corresponds to role implying rights to view object properties, excluding ACLs.

•   STORAGE_OBJECT_ADMIN_ROLE = "roles/storage.objectAdmin" corresponds to role implying full control of objects.

•   STORAGE_ADMIN_ROLE = "roles/storage.admin" corresponds to role implying full control of objects and buckets.

•   STORAGE_VIEWER_ROLE = "Viewer" corresponds to role that can list buckets.

•   STORAGE_EDITOR_ROLE = "Editor" corresponds to role that can create, list, and delete buckets.

•   STORAGE_OWNER_ROLE = "Owners" corresponds to role that can Can create, list, and delete buckets; and list tag bindings; and control HMAC keys in the project.

  Constants used across IAM permissions:

•   STORAGE_BUCKETS_CREATE = "storage.buckets.create" corresponds to permission that can create buckets.

•   STORAGE_BUCKETS_DELETE = "storage.buckets.delete" corresponds to permission that can delete buckets.

•   STORAGE_BUCKETS_GET = "storage.buckets.get" corresponds to permission that can read bucket metadata, excluding ACLs.

•   STORAGE_BUCKETS_LIST = "storage.buckets.list" corresponds to permission that can list buckets.

•   STORAGE_BUCKETS_GET_IAM_POLICY = "storage.buckets.getIamPolicy" corresponds to permission that can read bucket ACLs.

•   STORAGE_BUCKETS_SET_IAM_POLICY = "storage.buckets.setIamPolicy" corresponds to permission that can update bucket ACLs.

•   STORAGE_BUCKETS_UPDATE = "storage.buckets.update" corresponds to permission that can update buckets, excluding ACLS.

•   STORAGE_OBJECTS_CREATE = "storage.objects.create" corresponds to permission that can add new objects to a bucket.

•   STORAGE_OBJECTS_DELETE = "storage.objects.delete" corresponds to permission that can delete objects.

•   STORAGE_OBJECTS_GET = "storage.objects.get" corresponds to permission that can read object data / metadata, excluding ACLs.

•   STORAGE_OBJECTS_LIST = "storage.objects.list" corresponds to permission that can list objects in a bucket.

•   STORAGE_OBJECTS_GET_IAM_POLICY = "storage.objects.getIamPolicy" corresponds to permission that can read object ACLs.

•   STORAGE_OBJECTS_SET_IAM_POLICY = "storage.objects.setIamPolicy" corresponds to permission that can update object ACLs.

•   STORAGE_OBJECTS_UPDATE = "storage.objects.update" corresponds to permission that can update object metadata, excluding ACLs.

  Conditional Requests Via ETag / Generation / Metageneration Preconditions

Preconditions tell Cloud Storage to only perform a request if the ETag, generation, or metageneration number of the affected object meets your precondition criteria. These checks of the ETag, generation, and metageneration numbers ensure that the object is in the expected state, allowing you to perform safe read-modify-write updates and conditional operations on objects

  Concepts

  ETag

An ETag is returned as part of the response header whenever a resource is returned, as well as included in the resource itself. Users should make no assumptions about the value used in an ETag except that it changes whenever the underlying data changes, per the specification <https://tools.ietf.org/html/rfc7232#section-2.3>

The ETag attribute is set by the GCS back-end, and is read-only in the client library.

  Metageneration

When you create a Bucket, its metageneration is initialized to 1, representing the initial version of the bucket's metadata.

When you first upload a Blob ("Object" in the GCS back-end docs), its metageneration is likewise initialized to 1. representing the initial version of the blob's metadata.

The metageneration attribute is set by the GCS back-end, and is read-only in the client library.

Each time you patch or update the bucket's / blob's metadata, its metageneration is incremented.

  Generation

Each time you upload a new version of a file to a Blob ("Object" in the GCS back-end docs), the Blob's generation is changed, and its metageneration is reset to 1 (the first metadata version for that generation of the blob).

The generation attribute is set by the GCS back-end, and is read-only in the client library.

  See also

•   Storage API Generation Precondition docs <https://cloud.google.com/storage/docs/generations-preconditions>

  Conditional Parameters

  Using if_etag_match

Passing the if_etag_match parameter to a method which retrieves a blob resource (e.g., Blob.reload) makes the operation conditional on whether the blob's current ETag matches the given value. This parameter is not supported for modification (e.g., Blob.update).

  Using if_etag_not_match

Passing the if_etag_not_match parameter to a method which retrieves a blob resource (e.g., Blob.reload) makes the operation conditional on whether the blob's current ETag matches the given value. This parameter is not supported for modification (e.g., Blob.update).

  Using if_generation_match

Passing the if_generation_match parameter to a method which retrieves a blob resource (e.g., Blob.reload) or modifies the blob (e.g., Blob.update) makes the operation conditional on whether the blob's current generation matches the given value.

As a special case, passing 0 as the value for if_generation_match makes the operation succeed only if there are no live versions of the blob.

  Using if_generation_not_match

Passing the if_generation_not_match parameter to a method which retrieves a blob resource (e.g., Blob.reload) or modifies the blob (e.g., Blob.update) makes the operation conditional on whether the blob's current generation does not match the given value.

If no live version of the blob exists, the precondition fails.

As a special case, passing 0 as the value for if_generation_not_match makes the operation succeed only if there is a live version of the blob.

  Using if_metageneration_match

Passing the if_metageneration_match parameter to a method which retrieves a blob or bucket resource (e.g., Blob.reload, Bucket.reload) or modifies the blob or bucket (e.g., Blob.update Bucket.patch) makes the operation conditional on whether the resource's current metageneration matches the given value.

  Using if_metageneration_not_match

Passing the if_metageneration_not_match parameter to a method which retrieves a blob or bucket resource (e.g., Blob.reload, Bucket.reload) or modifies the blob or bucket (e.g., Blob.update Bucket.patch) makes the operation conditional on whether the resource's current metageneration does not match the given value.

  Configuring Timeouts and Retries

When using object methods which invoke Google Cloud Storage API methods, you have several options for how the library handles timeouts and how it retries transient errors.

  Configuring Timeouts

For a number of reasons, methods which invoke API methods may take longer than expected or desired. By default, such methods are applied a default timeout of 60.0 seconds.

The python-storage client uses the timeout mechanics of the underlying requests HTTP library. The connect timeout is the number of seconds to establish a connection to the server. The read timeout is the number of seconds the client will wait for the server to send a response. In most cases, this is the maximum wait time before the server sends the first byte. Please refer to the requests documentation <https://requests.readthedocs.io/en/latest/user/advanced/#timeouts> for details.

You may also choose to configure explicit timeouts in your code, using one of three forms:

•   You can specify a single value for the timeout. The timeout value will be applied to both the connect and the read timeouts. E.g.:

        bucket = client.get_bucket(BUCKET_NAME, timeout=300.0)  # five minutes

•   You can also pass a two-tuple, (connect_timeout, read_timeout), if you would like to set the values separately. E.g.:

        bucket = client.get_bucket(BUCKET_NAME, timeout=(3, 10))

•   You can also pass None as the timeout value: in this case, the library will block indefinitely for a response. E.g.:

        bucket = client.get_bucket(BUCKET_NAME, timeout=None)

    Note: Depending on the retry strategy, a request may be repeated several times using the same timeout each time.

    See also: Timeouts in requests <https://requests.readthedocs.io/en/latest/user/advanced/#timeouts>

  Configuring Retries

Note: For more background on retries, see also the GCS Retry Strategies Document <https://cloud.google.com/storage/docs/retry-strategy#python>

Methods which invoke API methods may fail for a number of reasons, some of which represent "transient" conditions, and thus can be retried automatically. The library tries to provide a sensible default retry policy for each method, base on its semantics:

•   For API requests which are always idempotent, the library uses its DEFAULT_RETRY policy, which retries any API request which returns a "transient" error.

•   For API requests which are idempotent only if the blob has the same "generation", the library uses its DEFAULT_RETRY_IF_GENERATION_SPECIFIED policy, which retries API requests which returns a "transient" error, but only if the original request includes a generation or ifGenerationMatch header.

•   For API requests which are idempotent only if the bucket or blob has the same "metageneration", the library uses its DEFAULT_RETRY_IF_METAGENERATION_SPECIFIED policy, which retries API requests which returns a "transient" error, but only if the original request includes an ifMetagenerationMatch header.

•   For API requests which are idempotent only if the bucket or blob has the same "etag", the library uses its DEFAULT_RETRY_IF_ETAG_IN_JSON policy, which retries API requests which returns a "transient" error, but only if the original request includes an ETAG in its payload.

•   For those API requests which are never idempotent, the library passes retry=None by default, suppressing any retries.

    Rather than using one of the default policies, you may choose to configure an explicit policy in your code.

•   You can pass None as a retry policy to disable retries. E.g.:

        bucket = client.get_bucket(BUCKET_NAME, retry=None)

•   You can modify the default retry behavior and create a copy of DEFAULT_RETRY by calling it with a with_XXX method. E.g.:

        from google.cloud.storage.retry import DEFAULT_RETRY
        # Customize retry with a timeout of 500 seconds (default=120 seconds).
        modified_retry = DEFAULT_RETRY.with_timeout(500.0)
        # Customize retry with an initial wait time of 1.5 (default=1.0).
        # Customize retry with a wait time multiplier per iteration of 1.2 (default=2.0).
        # Customize retry with a maximum wait time of 45.0 (default=60.0).
        modified_retry = modified_retry.with_delay(initial=1.5, multiplier=1.2, maximum=45.0)

•   You can pass an instance of google.api_core.retry.Retry <https://googleapis.dev/python/google-api-core/latest/retry.html#google.api_core.retry.Retry> to enable retries; the passed object will define retriable response codes and errors, as well as configuring backoff and retry interval options. E.g.:

        from google.api_core import exceptions
        from google.api_core.retry import Retry
        _MY_RETRIABLE_TYPES = [
           exceptions.TooManyRequests,  # 429
           exceptions.InternalServerError,  # 500
           exceptions.BadGateway,  # 502
           exceptions.ServiceUnavailable,  # 503
        ]
        def is_retryable(exc):
            return isinstance(exc, _MY_RETRIABLE_TYPES)
        my_retry_policy = Retry(predicate=is_retryable)
        bucket = client.get_bucket(BUCKET_NAME, retry=my_retry_policy)

•   You can pass an instance of google.cloud.storage.retry.ConditionalRetryPolicy, which wraps a RetryPolicy, activating it only if certain conditions are met. This class exists to provide safe defaults for RPC calls that are not technically safe to retry normally (due to potential data duplication or other side-effects) but become safe to retry if a condition such as if_metageneration_match is set. E.g.:

        from google.api_core.retry import Retry
        from google.cloud.storage.retry import ConditionalRetryPolicy
        from google.cloud.storage.retry import is_etag_in_data
        def is_retryable(exc):
            ... # as above
        my_retry_policy = Retry(predicate=is_retryable)
        my_cond_policy = ConditionalRetryPolicy(
            my_retry_policy, conditional_predicate=is_etag_in_data, ["query_params"])
        bucket = client.get_bucket(BUCKET_NAME, retry=my_cond_policy)

API REFERENCE

  ACL Module

  Batches

  Blobs / Objects

  Bucket

  Storage Client

  Constants

  Exceptions

  FileIO

  HMAC Key Metadata

  Notification

  Retry

  Transfer Manager

MORE EXAMPLES

CHANGELOG

  Changelog

PyPI History <https://pypi.org/project/google-cloud-storage/#history>

  3.10.1 <https://github.com/googleapis/python-storage/compare/v3.10.0...v3.10.1> (2026-03-23)

  Bug Fixes

•   raise ValueError if api_endpoint is unset when using AnonymousCredentials in AsyncGrpcClient. (#1778) (17828ea316872938a98a6360b10a2495c54bbbcb <https://github.com/googleapis/python-storage/commit/17828ea316872938a98a6360b10a2495c54bbbcb>)

  3.10.0 <https://github.com/googleapis/python-storage/compare/v3.9.0...v3.10.0> (2026-03-18)

  Features

•   [Bucket Encryption Enforcement] add support for bucket encryption enforcement config (#1742) (2a6e8b00e4e6ff57460373f8e628fd363be47811 <https://github.com/googleapis/python-storage/commit/2a6e8b00e4e6ff57460373f8e628fd363be47811>)

  Perf Improvments

•   [Rapid Buckets Reads] Use raw proto access for read resumption strategy (#1764) (14cfd61ce35365a409650981239ef742cdf375fb <https://github.com/googleapis/python-storage/commit/14cfd61ce35365a409650981239ef742cdf375fb>)

•   [Rapid Buckets Benchmarks] init mp pool & grpc client once, use os.sched_setaffinity (#1751) (a9eb82c1b9b3c6ae5717d47b76284ed0deb5f769 <https://github.com/googleapis/python-storage/commit/a9eb82c1b9b3c6ae5717d47b76284ed0deb5f769>)

•   [Rapid Buckets Writes] don't flush at every append, results in bad perf (#1746) (ab62d728ac7d7be3c4fe9a99d72e35ead310805a <https://github.com/googleapis/python-storage/commit/ab62d728ac7d7be3c4fe9a99d72e35ead310805a>)

  Bug Fixes

•   [Windows] skip downloading blobs whose name contain ":" eg: C: D: etc when application runs in Windows. (#1774) (558198823ed51918db9c0137715d1e7f5b593975 <https://github.com/googleapis/python-storage/commit/558198823ed51918db9c0137715d1e7f5b593975>)

•   [Path Traversal] Prevent path traversal in download_many_to_path (#1768) (700fec3bf7aa37bd5ea4b163cc3f9e8e6892bd5a <https://github.com/googleapis/python-storage/commit/700fec3bf7aa37bd5ea4b163cc3f9e8e6892bd5a>)

•   [Rapid Buckets] pass token correctly, '&' instead of ',' (#1756) (d8dd1e074d2431de9b45e0103181dce749a447a0 <https://github.com/googleapis/python-storage/commit/d8dd1e074d2431de9b45e0103181dce749a447a0>)

  3.9.0 <https://github.com/googleapis/python-storage/compare/v3.8.0...v3.9.0> (2026-02-02)

  Features

•   add get_object method for async grpc client (#1735) (0e5ec29bc6a31b77bcfba4254cef5bffb199095c <https://github.com/googleapis/python-storage/commit/0e5ec29bc6a31b77bcfba4254cef5bffb199095c>)

•   expose DELETE_OBJECT in AsyncGrpcClient (#1718) (c8dd7a0b124c395b7b60189ee78f47aba8d51f7d <https://github.com/googleapis/python-storage/commit/c8dd7a0b124c395b7b60189ee78f47aba8d51f7d>)

•   update generation for MRD (#1730) (08bc7082db7392f13bc8c51511b4afa9c7b157c9 <https://github.com/googleapis/python-storage/commit/08bc7082db7392f13bc8c51511b4afa9c7b157c9>)

•   Move Zonal Buckets features of _experimental (#1728) (74c9ecc54173420bfcd48498a8956088a035af50 <https://github.com/googleapis/python-storage/commit/74c9ecc54173420bfcd48498a8956088a035af50>)

•   add default user agent for grpc (#1726) (7b319469d2e495ea0bf7367f3949190e8f5d9fff <https://github.com/googleapis/python-storage/commit/7b319469d2e495ea0bf7367f3949190e8f5d9fff>)

•   expose finalized_time in blob.py applicable for GET_OBJECT in ZB (#1719) (8e21a7fe54d0a043f31937671003630a1985a5d2 <https://github.com/googleapis/python-storage/commit/8e21a7fe54d0a043f31937671003630a1985a5d2>)

•   add context manager to mrd (#1724) (5ac2808a69195c688ed42c3604d4bfadbb602a66 <https://github.com/googleapis/python-storage/commit/5ac2808a69195c688ed42c3604d4bfadbb602a66>)

•   integrate writes strategy and appendable object writer (#1695) (dbd162b3583e32e6f705a51f5c3fef333a9b89d0 <https://github.com/googleapis/python-storage/commit/dbd162b3583e32e6f705a51f5c3fef333a9b89d0>)

•   Add support for opening via write_handle and fix write_handle type (#1715) (2bc15fa570683ba584230c51b439d189dbdcd580 <https://github.com/googleapis/python-storage/commit/2bc15fa570683ba584230c51b439d189dbdcd580>)

•   Add micro-benchmarks for writes comparing standard (regional) vs rapid (zonal) buckets. (#1707) (dbe9d8b89d975dfbed8c830a5687ccfafea51d5f <https://github.com/googleapis/python-storage/commit/dbe9d8b89d975dfbed8c830a5687ccfafea51d5f>)

•   Add micro-benchmarks for reads comparing standard (regional) vs rapid (zonal) buckets. (#1697) (1917649fac41481da1adea6c2a9f4ab1298a34c4 <https://github.com/googleapis/python-storage/commit/1917649fac41481da1adea6c2a9f4ab1298a34c4>)

•   send user_agent to grpc channel (#1712) (cdb2486bb051dcbfbffc2510aff6aacede5e54d3 <https://github.com/googleapis/python-storage/commit/cdb2486bb051dcbfbffc2510aff6aacede5e54d3>)

•   add samples for appendable objects writes and reads (#1705) (2e1a1eb5cbe1c909f1f892a0cc74fe63c8ef36ff <https://github.com/googleapis/python-storage/commit/2e1a1eb5cbe1c909f1f892a0cc74fe63c8ef36ff>)

•   add samples for appendable objects writes and reads (2e1a1eb5cbe1c909f1f892a0cc74fe63c8ef36ff <https://github.com/googleapis/python-storage/commit/2e1a1eb5cbe1c909f1f892a0cc74fe63c8ef36ff>)

•   add support for generation=0 to avoid overwriting existing objects and add is_stream_open support (#1709) (ea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae <https://github.com/googleapis/python-storage/commit/ea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae>)

•   add support for generation=0 to prevent overwriting existing objects (ea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae <https://github.com/googleapis/python-storage/commit/ea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae>)

•   add is_stream_open property to AsyncAppendableObjectWriter for stream status check (ea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae <https://github.com/googleapis/python-storage/commit/ea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae>)

  Bug Fixes

•   receive eof while closing reads stream (#1733) (2ef63396dca1c36f9b0f0f3cf87a61b5aa4bd465 <https://github.com/googleapis/python-storage/commit/2ef63396dca1c36f9b0f0f3cf87a61b5aa4bd465>)

•   Change contructors of MRD and AAOW AsyncGrpcClient.grpc_client to AsyncGrpcClient (#1727) (e730bf50c4584f737ab86b2e409ddb27b40d2cec <https://github.com/googleapis/python-storage/commit/e730bf50c4584f737ab86b2e409ddb27b40d2cec>)

•   instance grpc client once per process in benchmarks (#1725) (721ea2dd6c6db2aa91fd3b90e56a831aaaa64061 <https://github.com/googleapis/python-storage/commit/721ea2dd6c6db2aa91fd3b90e56a831aaaa64061>)

•   update write handle on every recv() (#1716) (5d9fafe1466b5ccb1db4a814967a5cc8465148a2 <https://github.com/googleapis/python-storage/commit/5d9fafe1466b5ccb1db4a814967a5cc8465148a2>)

•   Fix formatting in setup.py dependencies list (#1713) (cc4831d7e253b265b0b96e08b5479f4c759be442 <https://github.com/googleapis/python-storage/commit/cc4831d7e253b265b0b96e08b5479f4c759be442>)

•   implement requests_done method to signal end of requests in async streams. Gracefully close streams. (#1700) (6c160794afded5e8f4179399f1fe5248e32bf707 <https://github.com/googleapis/python-storage/commit/6c160794afded5e8f4179399f1fe5248e32bf707>)

•   implement requests_done method to signal end of requests in async streams. Gracefully close streams. (6c160794afded5e8f4179399f1fe5248e32bf707 <https://github.com/googleapis/python-storage/commit/6c160794afded5e8f4179399f1fe5248e32bf707>)

  3.8.0 <https://github.com/googleapis/python-storage/compare/v3.7.0...v3.8.0> (2026-01-13)

  Features

•   flush the last chunk in append method (#1699) (89bfe7a5fcd0391da35e9ceccc185279782b5420 <https://github.com/googleapis/python-storage/commit/89bfe7a5fcd0391da35e9ceccc185279782b5420>)

•   add write resumption strategy (#1663) (a57ea0ec786a84c7ae9ed82c6ae5d38ecadba4af <https://github.com/googleapis/python-storage/commit/a57ea0ec786a84c7ae9ed82c6ae5d38ecadba4af>)

•   add bidi stream retry manager. (#1632) (d90f0ee09902a21b186106bcf0a8cb0b81b34340 <https://github.com/googleapis/python-storage/commit/d90f0ee09902a21b186106bcf0a8cb0b81b34340>)

•   implement "append_from_file" (#1686) (1333c956da18b4db753cda98c41c3619c84caf69 <https://github.com/googleapis/python-storage/commit/1333c956da18b4db753cda98c41c3619c84caf69>)

•   make flush size configurable (#1677) (f7095faf0a81239894ff9d277849788b62eb6ac5 <https://github.com/googleapis/python-storage/commit/f7095faf0a81239894ff9d277849788b62eb6ac5>)

•   compute chunk wise checksum for bidi_writes (#1675) (139390cb01f93a2d61e7ec201e3637dffe0b2a34 <https://github.com/googleapis/python-storage/commit/139390cb01f93a2d61e7ec201e3637dffe0b2a34>)

•   expose persisted size in mrd (#1671) (0e2961bef285fc064174a5c18e3db05c7a682521 <https://github.com/googleapis/python-storage/commit/0e2961bef285fc064174a5c18e3db05c7a682521>)

  Bug Fixes

•   add system test for opening with read_handle (#1672) (6dc711dacd4d38c573aa4ca9ad71fe412c0e49c1 <https://github.com/googleapis/python-storage/commit/6dc711dacd4d38c573aa4ca9ad71fe412c0e49c1>)

•   no state lookup while opening bidi-write stream (#1636) (2d5a7b16846a69f3a911844971241899f60cce14 <https://github.com/googleapis/python-storage/commit/2d5a7b16846a69f3a911844971241899f60cce14>)

•   close write object stream always (#1661) (4a609a4b3f4ba1396825911cb02f8a9649135cd5 <https://github.com/googleapis/python-storage/commit/4a609a4b3f4ba1396825911cb02f8a9649135cd5>)

  3.7.0 <https://github.com/googleapis/python-storage/compare/v3.6.0...v3.7.0> (2025-12-09)

  Features

•   Auto enable mTLS when supported certificates are detected (#1637 <https://github.com/googleapis/python-storage/issues/1637>) (4e91c54 <https://github.com/googleapis/python-storage/commit/4e91c541363f0e583bf9dd1b81a95ff2cb618bac>)

•   Send entire object checksum in the final api call of resumable upload (#1654 <https://github.com/googleapis/python-storage/issues/1654>) (ddce7e5 <https://github.com/googleapis/python-storage/commit/ddce7e53a13e6c0487221bb14e88161da7ed9e08>)

•   Support urllib3 >= 2.6.0 (#1658 <https://github.com/googleapis/python-storage/issues/1658>) (57405e9 <https://github.com/googleapis/python-storage/commit/57405e956a7ca579b20582bf6435cec42743c478>)

  Bug Fixes

•   Fix for move_blob <https://github.com/googleapis/python-storage/blob/57405e956a7ca579b20582bf6435cec42743c478/google/cloud/storage/bucket.py#L2256> failure when the new blob name contains characters that need to be url encoded (#1605 <https://github.com/googleapis/python-storage/issues/1605>) (ec470a2 <https://github.com/googleapis/python-storage/commit/ec470a270e189e137c7229cc359367d5a897cdb9>)

  3.6.0 <https://github.com/googleapis/python-storage/compare/v3.5.0...v3.6.0> (2025-11-17)

  Features

•   Add support for partial list buckets (#1606 <https://github.com/googleapis/python-storage/issues/1606>) (92fc2b0 <https://github.com/googleapis/python-storage/commit/92fc2b00429415b9fbe7cba0167778eee60449e2>)

•   Make return_partial_success and unreachable fields public for list Bucket (#1601 <https://github.com/googleapis/python-storage/issues/1601>) (323cddd <https://github.com/googleapis/python-storage/commit/323cddd5d439e04e12614106eab1928fd4008c0b>)

•   zb-experimental: Add async write object stream (5ab8103 <https://github.com/googleapis/python-storage/commit/5ab81032268e875f82a66431d666fe61c9eb394b>)

•   zb-experimental: Add async write object stream (#1612 <https://github.com/googleapis/python-storage/issues/1612>) (5ab8103 <https://github.com/googleapis/python-storage/commit/5ab81032268e875f82a66431d666fe61c9eb394b>)

  Bug Fixes

•   Dont pass credentials to StorageClient (#1608 <https://github.com/googleapis/python-storage/issues/1608>) (195d644 <https://github.com/googleapis/python-storage/commit/195d644c4d4feec98e9a9cd9fad67fc774c50dc8>)

  3.5.0 <https://github.com/googleapis/python-storage/compare/v3.4.1...v3.5.0> (2025-11-05)

  Features

•   experimental: Add base resumption strategy for bidi streams (#1594 <https://github.com/googleapis/python-storage/issues/1594>) (5fb85ea <https://github.com/googleapis/python-storage/commit/5fb85ea544dcc9ed9dca65957c872c3811f02b87>)

•   experimental: Add checksum for bidi reads operation (#1566 <https://github.com/googleapis/python-storage/issues/1566>) (93ce515 <https://github.com/googleapis/python-storage/commit/93ce515d60f0ac77ab83680ba2b4d6a9f57e75d0>)

•   experimental: Add read resumption strategy (#1599 <https://github.com/googleapis/python-storage/issues/1599>) (5d5e895 <https://github.com/googleapis/python-storage/commit/5d5e895e173075da557b58614fecc84086aaf9cb>)

•   experimental: Handle BidiReadObjectRedirectedError for bidi reads (#1600 <https://github.com/googleapis/python-storage/issues/1600>) (71b0f8a <https://github.com/googleapis/python-storage/commit/71b0f8a368a61bed9bd793a059f980562061223e>)

•   Indicate that md5 is used as a CRC (#1522 <https://github.com/googleapis/python-storage/issues/1522>) (961536c <https://github.com/googleapis/python-storage/commit/961536c7bf3652a824c207754317030526b9dd28>)

•   Provide option to update user_agent (#1596 <https://github.com/googleapis/python-storage/issues/1596>) (02f1451 <https://github.com/googleapis/python-storage/commit/02f1451aaa8dacd10a862e97abb62ae48249b9b4>)

  Bug Fixes

•   Deprecate credentials_file argument (74415a2 <https://github.com/googleapis/python-storage/commit/74415a2a120e9bfa42f4f5fc8bd2f8e0d4cf5d18>)

•   Flaky system tests for resumable_media (#1592 <https://github.com/googleapis/python-storage/issues/1592>) (7fee3dd <https://github.com/googleapis/python-storage/commit/7fee3dd3390cfb5475a39d8f8272ea825dbda449>)

•   Make download_ranges compatible with asyncio.create_task(..) (#1591 <https://github.com/googleapis/python-storage/issues/1591>) (faf8b83 <https://github.com/googleapis/python-storage/commit/faf8b83b1f0ac378f8f6f47ce33dc23a866090c9>)

•   Make download_ranges compatible with asyncio.create_task(..) (#1591 <https://github.com/googleapis/python-storage/issues/1591>) (faf8b83 <https://github.com/googleapis/python-storage/commit/faf8b83b1f0ac378f8f6f47ce33dc23a866090c9>)

•   Redact sensitive data from OTEL traces and fix env var parsing (#1553 <https://github.com/googleapis/python-storage/issues/1553>) (a38ca19 <https://github.com/googleapis/python-storage/commit/a38ca1977694def98f65ae7239e300a987bbd262>)

•   Redact sensitive data from OTEL traces and fix env var parsing (#1553 <https://github.com/googleapis/python-storage/issues/1553>) (a38ca19 <https://github.com/googleapis/python-storage/commit/a38ca1977694def98f65ae7239e300a987bbd262>)

•   Use separate header object for each upload in Transfer Manager MPU (#1595 <https://github.com/googleapis/python-storage/issues/1595>) (0d867bd <https://github.com/googleapis/python-storage/commit/0d867bd4f405d2dbeca1edfc8072080c5a96c1cd>)

  3.4.1 <https://github.com/googleapis/python-storage/compare/v3.4.0...v3.5.0> (2025-10-08)

  Bug Fixes

•   Fixes #1561 <https://github.com/googleapis/python-storage/issues/1561> by adding an option to specify the entire object checksum for resumable uploads via the upload_from_string, upload_from_file, and upload_from_filename methods (acb918e <https://github.com/googleapis/python-storage/commit/acb918e20f7092e13d72fc63fe4ae2560bfecd40>)

  3.4.0 <https://github.com/googleapis/python-storage/compare/v3.3.1...v3.4.0> (2025-09-15)

  Features

•   experimental: Add async grpc client (#1537 <https://github.com/googleapis/python-storage/issues/1537>) (ac57b8d <https://github.com/googleapis/python-storage/commit/ac57b8d819a49aef0ed0cb5bb630bf11012f43e3>)

•   experimental: Add grpc client (#1533 <https://github.com/googleapis/python-storage/issues/1533>) (5674587 <https://github.com/googleapis/python-storage/commit/5674587f2aa347ec2787f2bc1e847eaa294bc1ca>)

  Bug Fixes

•   GAPIC generation failed with 'Directory not empty' (#1542 <https://github.com/googleapis/python-storage/issues/1542>) (c80d820 <https://github.com/googleapis/python-storage/commit/c80d8207a8661b84c56cd66bb34de7b5704675b8>)

  3.3.1 <https://github.com/googleapis/python-storage/compare/v3.3.0...v3.3.1> (2025-08-25)

  Bug Fixes

•   Provide option to user to set entire object checksum at "initiate a resumable upload session" and send the same (#1525 <https://github.com/googleapis/python-storage/issues/1525>) (a8109e0 <https://github.com/googleapis/python-storage/commit/a8109e0d02c62542f1bea20373b53864fb776caa>)

•   Send part's checksum for XML MPU part upload (#1529 <https://github.com/googleapis/python-storage/issues/1529>) (2ad77c7 <https://github.com/googleapis/python-storage/commit/2ad77c7d949e84c515c051a0fd4b37b822788dd8>)

  3.3.0 <https://github.com/googleapis/python-storage/compare/v3.2.0...v3.3.0> (2025-08-05)

  Features

•   Add support for bucket IP filter (#1516 <https://github.com/googleapis/python-storage/issues/1516>) (a29073c <https://github.com/googleapis/python-storage/commit/a29073cf58df9c5667305e05c6378284057cda23>)

  Bug Fixes

•   Add logs on AssertionError for issue #1512 <https://github.com/googleapis/python-storage/issues/1512> (#1518 <https://github.com/googleapis/python-storage/issues/1518>) (6a9923e <https://github.com/googleapis/python-storage/commit/6a9923e4fc944f7a7c3906eb7800d23677bd2481>)

  Documentation

•   Update the documentation of move_blob function (#1507 <https://github.com/googleapis/python-storage/issues/1507>) (72252e9 <https://github.com/googleapis/python-storage/commit/72252e940909ce2e3da9cfd80f5b7b43a026f45c>)

  3.2.0 <https://github.com/googleapis/python-storage/compare/v3.1.1...v3.2.0> (2025-07-04)

  Features

•   Adding support of single shot download (#1493 <https://github.com/googleapis/python-storage/issues/1493>) (61c5d5f <https://github.com/googleapis/python-storage/commit/61c5d5f62c88506f200bc6d86b399a2c28715bc4>)

  3.1.1 <https://github.com/googleapis/python-storage/compare/v3.1.0...v3.1.1> (2025-06-13)

  Bug Fixes

•   Add a check for partial response data (#1487 <https://github.com/googleapis/python-storage/issues/1487>) (7e0412a <https://github.com/googleapis/python-storage/commit/7e0412a4fdfedcaa4683d5ef7d9155d5d58efa11>)

•   Add trove classifier for Python 3.13 (0100916 <https://github.com/googleapis/python-storage/commit/01009164beaab8931a1e1684966e3060edcf77b7>)

•   deps: Require google-crc32c >= 1.1.3 (0100916 <https://github.com/googleapis/python-storage/commit/01009164beaab8931a1e1684966e3060edcf77b7>)

•   deps: Require protobuf >= 3.20.2, < 7.0.0 (0100916 <https://github.com/googleapis/python-storage/commit/01009164beaab8931a1e1684966e3060edcf77b7>)

•   deps: Require requests >= 2.22.0 (0100916 <https://github.com/googleapis/python-storage/commit/01009164beaab8931a1e1684966e3060edcf77b7>)

•   Remove setup.cfg configuration for creating universal wheels (#1448 <https://github.com/googleapis/python-storage/issues/1448>) (d3b6b3f <https://github.com/googleapis/python-storage/commit/d3b6b3f96a6f94aa7c371902f48d1363ae6bfb5c>)

•   Resolve issue where pre-release versions of dependencies are installed (0100916 <https://github.com/googleapis/python-storage/commit/01009164beaab8931a1e1684966e3060edcf77b7>)

•   Segmentation fault in tink while writing data (#1490 <https://github.com/googleapis/python-storage/issues/1490>) (2a46c0b <https://github.com/googleapis/python-storage/commit/2a46c0b9e6ec561ae3151d2a9a80c7452634487e>)

  Documentation

•   Move quickstart to top of readme (#1451 <https://github.com/googleapis/python-storage/issues/1451>) (53257cf <https://github.com/googleapis/python-storage/commit/53257cf20a4de3810156ae9576a7092f5527df98>)

•   Update README to break infinite redirect loop (#1450 <https://github.com/googleapis/python-storage/issues/1450>) (03f1594 <https://github.com/googleapis/python-storage/commit/03f1594eb90ea1298a3a23927537c86ac35d33d5>)

  3.1.0 <https://github.com/googleapis/python-storage/compare/v3.0.0...v3.1.0> (2025-02-27)

  Features

•   Add api_key argument to Client constructor (#1441 <https://github.com/googleapis/python-storage/issues/1441>) (c869e15 <https://github.com/googleapis/python-storage/commit/c869e15ec535a0aa50029d30b6a3ce64ff119b5f>)

•   Add Bucket.move_blob() for HNS-enabled buckets (#1431 <https://github.com/googleapis/python-storage/issues/1431>) (24c000f <https://github.com/googleapis/python-storage/commit/24c000fb7b9f576e6d6c6ec5733f3971fe133655>)

  3.0.0 <https://github.com/googleapis/python-storage/compare/v2.19.0...v3.0.0> (2025-01-28)

  ⚠ BREAKING CHANGES

Please consult the README for details on this major version release.

•   The default checksum strategy for uploads has changed from None to "auto" (#1383 <https://github.com/googleapis/python-storage/issues/1383>)

•   The default checksum strategy for downloads has changed from "md5" to "auto" (#1383 <https://github.com/googleapis/python-storage/issues/1383>)

•   Deprecated positional argument "num_retries" has been removed (#1377 <https://github.com/googleapis/python-storage/issues/1377>)

•   Deprecated argument "text_mode" has been removed (#1379 <https://github.com/googleapis/python-storage/issues/1379>)

•   Blob.download_to_filename() now deletes the empty destination file on a 404 (#1394 <https://github.com/googleapis/python-storage/pull/1394>)

•   Media operations now use the same retry backoff, timeout and custom predicate system as non-media operations, which may slightly impact default retry behavior (#1385 <https://github.com/googleapis/python-storage/issues/1385>)

•   Retries are now enabled by default for uploads, blob deletes and blob metadata updates (#1400 <https://github.com/googleapis/python-storage/issues/1400>)

  Features

•   Add "auto" checksum option and make default (#1383 <https://github.com/googleapis/python-storage/issues/1383>) (5375fa0 <https://github.com/googleapis/python-storage/commit/5375fa07385c60cac694025aee123e20cb25bb65>)

•   Blob.download_to_filename() deletes the empty destination file on a 404 (#1394 <https://github.com/googleapis/python-storage/pull/1394>) (066be2d <https://github.com/googleapis/python-storage/commit/066be2db789cfd28d47d143ca0f7ccc9da183682>)

•   Enable custom predicates for media operations (#1385 <https://github.com/googleapis/python-storage/issues/1385>) (f3517bf <https://github.com/googleapis/python-storage/commit/f3517bfcb9e4ab8e4d761eb64a753e64b3d5871d>)

•   Integrate google-resumable-media (#1283 <https://github.com/googleapis/python-storage/issues/1283>) (bd917b4 <https://github.com/googleapis/python-storage/commit/bd917b49d2a20e2e1edee2d32dc65b66da8d6aba>)

•   Retry by default for uploads, blob deletes, metadata updates (#1400 <https://github.com/googleapis/python-storage/issues/1400>) (0426005 <https://github.com/googleapis/python-storage/commit/0426005175079ebdd73c299642a83b8193086d60>)

  Bug Fixes

•   Cancel upload when BlobWriter exits with exception (#1243 <https://github.com/googleapis/python-storage/issues/1243>) (df107d2 <https://github.com/googleapis/python-storage/commit/df107d20a772e9b955d9978cd4a7731869e92cbe>)

•   Changed name of methods Blob.from_string() and Bucket.from_string() to from_uri() (#1335 <https://github.com/googleapis/python-storage/issues/1335>) (58c1d03 <https://github.com/googleapis/python-storage/commit/58c1d038198046665317a0d00eb9630608349476>)

•   Correctly calculate starting offset for retries of ranged reads (#1376 <https://github.com/googleapis/python-storage/issues/1376>) (7b6c9a0 <https://github.com/googleapis/python-storage/commit/7b6c9a0fb3a79d713f951176a690f6e72c4d77c5>)

•   Filter download_kwargs in BlobReader (#1411 <https://github.com/googleapis/python-storage/issues/1411>) (0c21210 <https://github.com/googleapis/python-storage/commit/0c21210450319f6da920982116ee52075105c45a>)

•   Remove deprecated num_retries argument (#1377 <https://github.com/googleapis/python-storage/issues/1377>) (58b5040 <https://github.com/googleapis/python-storage/commit/58b5040933d4b21e0be94357ed5aa14c87969f73>)

•   Remove deprecated text_mode argument (#1379 <https://github.com/googleapis/python-storage/issues/1379>) (4d20a8e <https://github.com/googleapis/python-storage/commit/4d20a8efa8cf37bb7f099b20a8c352c9a0c42659>)

  Documentation

•   Correct formatting and update README.rst (#1427 <https://github.com/googleapis/python-storage/issues/1427>) (2945853 <https://github.com/googleapis/python-storage/commit/29458539773e834b202fef0c77dc439c393b37e8>)

•   Fix issue with exceptions.py documentation (#1328 <https://github.com/googleapis/python-storage/issues/1328>) (22b8c30 <https://github.com/googleapis/python-storage/commit/22b8c304afc7199fbc2dec448a4a3c5eba7d4e3a>)

  2.19.0 <https://github.com/googleapis/python-storage/compare/v2.18.2...v2.19.0> (2024-11-21)

  Features

•   Add integration test for universe domain (#1346 <https://github.com/googleapis/python-storage/issues/1346>) (02a972d <https://github.com/googleapis/python-storage/commit/02a972d35fae6d05edfb26381f6a71e3b8f59d6d>)

•   Add restore_bucket and handling for soft-deleted buckets (#1365 <https://github.com/googleapis/python-storage/issues/1365>) (ab94efd <https://github.com/googleapis/python-storage/commit/ab94efda83f68c974ec91d6b869b09047501031a>)

•   Add support for restore token (#1369 <https://github.com/googleapis/python-storage/issues/1369>) (06ed15b <https://github.com/googleapis/python-storage/commit/06ed15b33dc884da6dffbef5119e47f0fc4e1285>)

•   IAM signBlob retry and universe domain support (#1380 <https://github.com/googleapis/python-storage/issues/1380>) (abc8061 <https://github.com/googleapis/python-storage/commit/abc80615ee00a14bc0e6b095252f6d1eb09c4b45>)

  Bug Fixes

•   Allow signed post policy v4 with service account and token (#1356 <https://github.com/googleapis/python-storage/issues/1356>) (8ec02c0 <https://github.com/googleapis/python-storage/commit/8ec02c0e656a4e6786f256798f4b93b95b50acec>)

•   Do not spam the log with checksum related INFO messages when downloading using transfer_manager (#1357 <https://github.com/googleapis/python-storage/issues/1357>) (42392ef <https://github.com/googleapis/python-storage/commit/42392ef8e38527ce4e50454cdd357425b3f57c87>)

  2.18.2 <https://github.com/googleapis/python-storage/compare/v2.18.1...v2.18.2> (2024-08-08)

  Bug Fixes

•   Add regression test for range read retry issue and bump dependency to fix (#1338 <https://github.com/googleapis/python-storage/issues/1338>) (0323647 <https://github.com/googleapis/python-storage/commit/0323647d768b3be834cfab53efb3c557a47d41c3>)

  2.18.1 <https://github.com/googleapis/python-storage/compare/v2.18.0...v2.18.1> (2024-08-05)

  Bug Fixes

•   Properly escape URL construction for XML MPU API, fixing a path traversal issue that allowed uploads to unintended buckets. Reported by @jdomeracki. (#1333 <https://github.com/googleapis/python-storage/issues/1333>) (bf4d0e0 <https://github.com/googleapis/python-storage/commit/bf4d0e0a2ef1d608d679c22b13d8f5d90b39c7b2>)

  2.18.0 <https://github.com/googleapis/python-storage/compare/v2.17.0...v2.18.0> (2024-07-09)

  Features

•   Add OpenTelemetry Tracing support as a preview feature (#1288 <https://github.com/googleapis/python-storage/issues/1288>) (c2ab0e0 <https://github.com/googleapis/python-storage/commit/c2ab0e035b179a919b27c7f50318472f14656e00>)

  Bug Fixes

•   Allow Protobuf 5.x (#1317 <https://github.com/googleapis/python-storage/issues/1317>) (152b249 <https://github.com/googleapis/python-storage/commit/152b249472a09342777237d47b6c09f99c2d28e6>)

•   Correct notification error message (#1290 <https://github.com/googleapis/python-storage/issues/1290>) (1cb977d <https://github.com/googleapis/python-storage/commit/1cb977daa2d97c255a382ce81f56a43168b0637d>), closes #1289 <https://github.com/googleapis/python-storage/issues/1289>

  2.17.0 <https://github.com/googleapis/python-storage/compare/v2.16.0...v2.17.0> (2024-05-22)

  Features

•   Support HNS enablement in bucket metadata (#1278 <https://github.com/googleapis/python-storage/issues/1278>) (add3c01 <https://github.com/googleapis/python-storage/commit/add3c01f0974e22df7f0b50504d5e83e4235fd81>)

•   Support page_size in bucket.list_blobs (#1275 <https://github.com/googleapis/python-storage/issues/1275>) (c52e882 <https://github.com/googleapis/python-storage/commit/c52e882f65583a7739392926308cc34984561165>)

  Bug Fixes

•   Remove deprecated methods in samples and tests (#1274 <https://github.com/googleapis/python-storage/issues/1274>) (4db96c9 <https://github.com/googleapis/python-storage/commit/4db96c960b07e503c1031c9fa879cf2af195f513>)

  Documentation

•   Reference Storage Control in readme (#1254 <https://github.com/googleapis/python-storage/issues/1254>) (3d6d369 <https://github.com/googleapis/python-storage/commit/3d6d3693d5c1b24cd3d2bbdeabfd78b8bfd4161a>)

•   Update DEFAULT_RETRY_IF_GENERATION_SPECIFIED docstrings (#1234 <https://github.com/googleapis/python-storage/issues/1234>) (bdd426a <https://github.com/googleapis/python-storage/commit/bdd426adf5901faa36115885af868ef50e356a36>)

  2.16.0 <https://github.com/googleapis/python-storage/compare/v2.15.0...v2.16.0> (2024-03-18)

  Features

•   Add support for soft delete (#1229 <https://github.com/googleapis/python-storage/issues/1229>) (3928aa0 <https://github.com/googleapis/python-storage/commit/3928aa0680ec03addae1f792c73abb5c9dc8586f>)

•   Support includeFoldersAsPrefixes (#1223 <https://github.com/googleapis/python-storage/issues/1223>) (7bb8065 <https://github.com/googleapis/python-storage/commit/7bb806538cf3d7a5e16390db1983620933d5e51a>)

  2.15.0 <https://github.com/googleapis/python-storage/compare/v2.14.0...v2.15.0> (2024-02-28)

  Features

•   Support custom universe domains/TPC (#1212 <https://github.com/googleapis/python-storage/issues/1212>) (f4cf041 <https://github.com/googleapis/python-storage/commit/f4cf041a5f2075cecf5f4993f8b7afda0476a52b>)

  Bug Fixes

•   Add "updated" as property for Bucket (#1220 <https://github.com/googleapis/python-storage/issues/1220>) (ae9a53b <https://github.com/googleapis/python-storage/commit/ae9a53b464e7d82c79a019a4111c49a4cdcc3ae0>)

•   Remove utcnow usage (#1215 <https://github.com/googleapis/python-storage/issues/1215>) (8d8a53a <https://github.com/googleapis/python-storage/commit/8d8a53a1368392ad7a1c4352f559c12932c5a9c9>)

  2.14.0 <https://github.com/googleapis/python-storage/compare/v2.13.0...v2.14.0> (2023-12-10)

  Features

•   Add support for Python 3.12 (#1187 <https://github.com/googleapis/python-storage/issues/1187>) (ecf4150 <https://github.com/googleapis/python-storage/commit/ecf41504ba7f2a2c2db2e3c7e267686283d2cab3>)

•   Support object retention lock (#1188 <https://github.com/googleapis/python-storage/issues/1188>) (a179337 <https://github.com/googleapis/python-storage/commit/a1793375cf038ce79d4d4b7077f6b4dcc4b4aeec>)

  Bug Fixes

•   Clarify error message and docstrings in Blob class method (#1196 <https://github.com/googleapis/python-storage/issues/1196>) (92c20d3 <https://github.com/googleapis/python-storage/commit/92c20d3f7520c6b94308ebb156202fdfd1dcd482>)

•   Propagate timeout in BlobWriter (#1186 <https://github.com/googleapis/python-storage/issues/1186>) (22f36da <https://github.com/googleapis/python-storage/commit/22f36da1ce5b04408653ddbdbf35f25ed1072af8>), closes #1184 <https://github.com/googleapis/python-storage/issues/1184>

•   Use native namespace to avoid pkg_resources warnings (#1176 <https://github.com/googleapis/python-storage/issues/1176>) (2ed915e <https://github.com/googleapis/python-storage/commit/2ed915ec4b35df6fad04f42df25e48667148fcf5>)

  2.13.0 <https://github.com/googleapis/python-storage/compare/v2.12.0...v2.13.0> (2023-10-31)

  Features

•   Add Autoclass v2.1 support (#1117 <https://github.com/googleapis/python-storage/issues/1117>) (d38adb6 <https://github.com/googleapis/python-storage/commit/d38adb6a3136152ad68ad8a9c4583d06509307b2>)

•   Add support for custom headers (#1121 <https://github.com/googleapis/python-storage/issues/1121>) (2f92c3a <https://github.com/googleapis/python-storage/commit/2f92c3a2a3a1585d0f77be8fe3c2c5324140b71a>)

  Bug Fixes

•   Blob.from_string parse storage uri with regex (#1170 <https://github.com/googleapis/python-storage/issues/1170>) (0a243fa <https://github.com/googleapis/python-storage/commit/0a243faf5d6ca89b977ea1cf543356e0dd04df95>)

•   Bucket.delete(force=True) now works with version-enabled buckets (#1172 <https://github.com/googleapis/python-storage/issues/1172>) (0de09d3 <https://github.com/googleapis/python-storage/commit/0de09d30ea6083d962be1c1f5341ea14a2456dc7>)

•   Fix typo in Bucket.clear_lifecycle_rules() (#1169 <https://github.com/googleapis/python-storage/issues/1169>) (eae9ebe <https://github.com/googleapis/python-storage/commit/eae9ebed12d26832405c2f29fbdb14b4babf080d>)

  Documentation

•   Fix exception field in tm reference docs (#1164 <https://github.com/googleapis/python-storage/issues/1164>) (eac91cb <https://github.com/googleapis/python-storage/commit/eac91cb6ffb0066248f824fc1f307140dd7c85da>)

  2.12.0 <https://github.com/googleapis/python-storage/compare/v2.11.0...v2.12.0> (2023-10-12)

  Features

•   Add additional_blob_attributes to upload_many_from_filenames (#1162 <https://github.com/googleapis/python-storage/issues/1162>) (c7229f2 <https://github.com/googleapis/python-storage/commit/c7229f2e53151fc2f2eb1268afc67dad87ebbb0a>)

•   Add crc32c_checksum argument to download_chunks_concurrently (#1138 <https://github.com/googleapis/python-storage/issues/1138>) (fc92ad1 <https://github.com/googleapis/python-storage/commit/fc92ad19ff0f9704456452e8c7c47a5f90c29eab>)

•   Add skip_if_exists to download_many (#1161 <https://github.com/googleapis/python-storage/issues/1161>) (c5a983d <https://github.com/googleapis/python-storage/commit/c5a983d5a0b0632811af86fb64664b4382b05512>)

•   Launch transfer manager to GA (#1159 <https://github.com/googleapis/python-storage/issues/1159>) (5c90563 <https://github.com/googleapis/python-storage/commit/5c905637947c45e39ed8ee84911a12e254bde571>)

  Bug Fixes

•   Bump python-auth version to fix issue and remove workaround (#1158 <https://github.com/googleapis/python-storage/issues/1158>) (28c02dd <https://github.com/googleapis/python-storage/commit/28c02dd41010e6d818a77f51c539457b2dbfa233>)

•   Mark _deprecate_threads_param as a wrapper to unblock introspection and docs (#1122 <https://github.com/googleapis/python-storage/issues/1122>) (69bd4a9 <https://github.com/googleapis/python-storage/commit/69bd4a935a995f8f261a589ee2978f58b90224ab>)

  Documentation

•   Add snippets for upload_chunks_concurrently and add chunk_size (#1135 <https://github.com/googleapis/python-storage/issues/1135>) (3a0f551 <https://github.com/googleapis/python-storage/commit/3a0f551436b659afb2208fd558ddb846f4d62d98>)

•   Update formatting and wording in transfer_manager docstrings (#1163 <https://github.com/googleapis/python-storage/issues/1163>) (9e460d8 <https://github.com/googleapis/python-storage/commit/9e460d8106cbfb76caf35df4f6beed159fa2c22d>)

  2.11.0 <https://github.com/googleapis/python-storage/compare/v2.10.0...v2.11.0> (2023-09-19)

  Features

•   Add gccl-gcs-cmd field to X-Goog-API-Client header for Transfer Manager calls (#1119 <https://github.com/googleapis/python-storage/issues/1119>) (14a1909 <https://github.com/googleapis/python-storage/commit/14a1909963cfa41208f4e25b82b7c84c5e02452f>)

•   Add transfer_manager.upload_chunks_concurrently using the XML MPU API (#1115 <https://github.com/googleapis/python-storage/issues/1115>) (56aeb87 <https://github.com/googleapis/python-storage/commit/56aeb8778d25fe245ac2e1e96ef71f0dad1fec0f>)

•   Support configurable retries in upload_chunks_concurrently (#1120 <https://github.com/googleapis/python-storage/issues/1120>) (1271686 <https://github.com/googleapis/python-storage/commit/1271686428c0faffd3dd1b4fd57bfe467d2817d4>)

  Bug Fixes

•   Split retention period tests due to caching change (#1068 <https://github.com/googleapis/python-storage/issues/1068>) (cc191b0 <https://github.com/googleapis/python-storage/commit/cc191b070c520e85030cd4cef6d7d9a7b1dd0bf4>)

  Documentation

•   Add Transfer Manager documentation in c.g.c (#1109 <https://github.com/googleapis/python-storage/issues/1109>) (c1f8724 <https://github.com/googleapis/python-storage/commit/c1f8724dc1c5dc180f36424324def74a5daec620>)

  2.10.0 <https://github.com/googleapis/python-storage/compare/v2.9.0...v2.10.0> (2023-06-14)

  Features

•   Add matchGlob parameter to list_blobs (#1055 <https://github.com/googleapis/python-storage/issues/1055>) (d02098e <https://github.com/googleapis/python-storage/commit/d02098e6d5f656f9802cf0a494b507d77b065be7>)

•   Allow exceptions to be included in batch responses (#1043 <https://github.com/googleapis/python-storage/issues/1043>) (94a35ba <https://github.com/googleapis/python-storage/commit/94a35ba7416804881973f6a5296b430bdcf2832d>)

  Bug Fixes

•   Extend wait for bucket metadata consistency in system tests (#1053 <https://github.com/googleapis/python-storage/issues/1053>) (d78586c <https://github.com/googleapis/python-storage/commit/d78586c388a683b8678f280df0c9456c6e109af7>)

  Documentation

•   Add clarification to batch module (#1045 <https://github.com/googleapis/python-storage/issues/1045>) (11f6024 <https://github.com/googleapis/python-storage/commit/11f6024a4fd0a66e8cdcc6c89c3d33534892386d>)

  2.9.0 <https://github.com/googleapis/python-storage/compare/v2.8.0...v2.9.0> (2023-05-04)

  Features

•   Un-deprecate blob.download_to_file(), bucket.create(), and bucket.list_blobs() (#1013 <https://github.com/googleapis/python-storage/issues/1013>) (aa4f282 <https://github.com/googleapis/python-storage/commit/aa4f282514ebdaf58ced0743859a4ab1458f967c>)

  Bug Fixes

•   Avoid pickling processed credentials (#1016 <https://github.com/googleapis/python-storage/issues/1016>) (7935824 <https://github.com/googleapis/python-storage/commit/7935824049e2e6e430d2e601156730d6366c78f7>)

•   Improve test error message for missing credentials (#1024 <https://github.com/googleapis/python-storage/issues/1024>) (892481a <https://github.com/googleapis/python-storage/commit/892481a2c76fe5747ada3392345c087fb7f8bd8a>)

  Documentation

•   Add sample and sample test for transfer manager (#1027 <https://github.com/googleapis/python-storage/issues/1027>) (4698799 <https://github.com/googleapis/python-storage/commit/4698799101b5847d55edc8267db85257a74c3119>)

•   Remove threads in transfer manager samples (#1029 <https://github.com/googleapis/python-storage/issues/1029>) (30c5146 <https://github.com/googleapis/python-storage/commit/30c51469af2efd4f5becaab7e7b02b207a074267>)

  2.8.0 <https://github.com/googleapis/python-storage/compare/v2.7.0...v2.8.0> (2023-03-29)

  Features

•   Add multiprocessing and chunked downloading to transfer manager (#1002 <https://github.com/googleapis/python-storage/issues/1002>) (e65316b <https://github.com/googleapis/python-storage/commit/e65316b5352a4e15c4dba806e899ad58f8665464>)

  Bug Fixes

•   Add trove classifier for python 3.11 (#971 <https://github.com/googleapis/python-storage/issues/971>) (7886376 <https://github.com/googleapis/python-storage/commit/7886376e5105f705a5fe9d061463cf1e033aecd0>)

•   Remove use of deprecated cgi module (#1006 <https://github.com/googleapis/python-storage/issues/1006>) (3071832 <https://github.com/googleapis/python-storage/commit/30718322f6c7b1d7a3e4cfd44b6e1796f721b655>)

  Documentation

•   Add clarifications to read timeout (#873 <https://github.com/googleapis/python-storage/issues/873>) (8fb26f4 <https://github.com/googleapis/python-storage/commit/8fb26f439cf28ac4ec7a841db1cd0fd60ea77362>)

•   Fix c.g.c structure (#982 <https://github.com/googleapis/python-storage/issues/982>) (d5a2931 <https://github.com/googleapis/python-storage/commit/d5a29318b5c68678ea63eb40a4dfede562f8963e>)

•   Update c.g.c docs and guides (#994 <https://github.com/googleapis/python-storage/issues/994>) (62b4a50 <https://github.com/googleapis/python-storage/commit/62b4a500e40860c54c53d12323434d28739f9812>)

  2.7.0 <https://github.com/googleapis/python-storage/compare/v2.6.0...v2.7.0> (2022-12-07)

  Features

•   Add "transfer_manager" module for concurrent uploads and downloads, as a preview feature (#943 <https://github.com/googleapis/python-storage/issues/943>) (9998a5e <https://github.com/googleapis/python-storage/commit/9998a5e1c9e9e8920c4d40e13e39095585de657a>)

•   Add use_auth_w_custom_endpoint support (#941 <https://github.com/googleapis/python-storage/issues/941>) (5291c08 <https://github.com/googleapis/python-storage/commit/5291c08cc76a7dbd853e51c19c944f6336c14d26>)

  Bug Fixes

•   Implement closed property on fileio.py classes (#907 <https://github.com/googleapis/python-storage/issues/907>) (64406ca <https://github.com/googleapis/python-storage/commit/64406ca70cef98a81f6bb9da6e602196f4235178>)

  2.6.0 <https://github.com/googleapis/python-storage/compare/v2.5.0...v2.6.0> (2022-11-07)

  Features

•   Add Autoclass support and samples (#791 <https://github.com/googleapis/python-storage/issues/791>) (9ccdc5f <https://github.com/googleapis/python-storage/commit/9ccdc5f2e8a9e28b2df47260d639b6af2708fe9a>), closes #797 <https://github.com/googleapis/python-storage/issues/797>

•   Add predefined_acl to create_resumable_upload_session (#878 <https://github.com/googleapis/python-storage/issues/878>) (2b3e8f9 <https://github.com/googleapis/python-storage/commit/2b3e8f967df95d45c35e150b201e77b8962c7e9b>)

•   Enable delete_blobs() to preserve generation (#840 <https://github.com/googleapis/python-storage/issues/840>) (8fd4c37 <https://github.com/googleapis/python-storage/commit/8fd4c376bd5f031836feb8101c9c0c0d1c2e969d>), closes #814 <https://github.com/googleapis/python-storage/issues/814>

•   Make tests run against environments other than prod (#883 <https://github.com/googleapis/python-storage/issues/883>) (7dfeb62 <https://github.com/googleapis/python-storage/commit/7dfeb622bb966e368786e3c9be67ad77b3150725>)

  Bug Fixes

•   Align bucket bound hostname url builder consistency (#875 <https://github.com/googleapis/python-storage/issues/875>) (8a24add <https://github.com/googleapis/python-storage/commit/8a24add52f0bc7dbcb3ec427bd3e4551b3afcbf5>)

•   BlobWriter.close() will do nothing if already closed (#887 <https://github.com/googleapis/python-storage/issues/887>) (7707220 <https://github.com/googleapis/python-storage/commit/770722034072cfcaafc18340e91746957ef31397>)

•   Remove client side validations (#868 <https://github.com/googleapis/python-storage/issues/868>) (928ebbc <https://github.com/googleapis/python-storage/commit/928ebbccbe183666f3b35adb7226bd259d4e71c0>)

  Documentation

•   Update comments in list_blobs sample (#866 <https://github.com/googleapis/python-storage/issues/866>) (9469f5d <https://github.com/googleapis/python-storage/commit/9469f5dd5ca6d546a47efbc3d673a401ead9d632>)

•   Clarify prefixes entity in list_blobs usage (#837 <https://github.com/googleapis/python-storage/issues/837>) (7101f47 <https://github.com/googleapis/python-storage/commit/7101f47fde663eec4bbaaa246c7fe4e973ca2506>)

•   Streamline docs for migration (#876 <https://github.com/googleapis/python-storage/issues/876>) (7c8a178 <https://github.com/googleapis/python-storage/commit/7c8a178978d2022482afd301242ae79b2f9c737a>)

•   Update docstring for lifecycle_rules to match generator behavior (#841 <https://github.com/googleapis/python-storage/issues/841>) (36fb81b <https://github.com/googleapis/python-storage/commit/36fb81b5b0e5b7e65b9db434c997617136bfc3fc>)

  2.5.0 <https://github.com/googleapis/python-storage/compare/v2.4.0...v2.5.0> (2022-07-24)

  Features

•   Custom Placement Config Dual Region Support (#819 <https://github.com/googleapis/python-storage/issues/819>) (febece7 <https://github.com/googleapis/python-storage/commit/febece76802252278bb7626d931973a76561382a>)

  Documentation

•   open file-like objects in byte mode for uploads (#824 <https://github.com/googleapis/python-storage/issues/824>) (4bd3d1d <https://github.com/googleapis/python-storage/commit/4bd3d1ddf21196b075bbd84cdcb553c5d7355b93>)

  2.4.0 <https://github.com/googleapis/python-storage/compare/v2.3.0...v2.4.0> (2022-06-07)

  Features

•   add AbortIncompleteMultipartUpload lifecycle rule (#765 <https://github.com/googleapis/python-storage/issues/765>) (b2e5150 <https://github.com/googleapis/python-storage/commit/b2e5150f191c04acb47ad98cef88512451aff81d>)

•   support OLM Prefix/Suffix (#773 <https://github.com/googleapis/python-storage/issues/773>) (187cf50 <https://github.com/googleapis/python-storage/commit/187cf503194cf636640ca8ba787f9e8c216ea763>)

  Bug Fixes

•   fix rewrite object in CMEK enabled bucket (#807 <https://github.com/googleapis/python-storage/issues/807>) (9b3cbf3 <https://github.com/googleapis/python-storage/commit/9b3cbf3789c21462eac3c776cd29df12701e792f>)

  Documentation

•   fix changelog header to consistent size (#802 <https://github.com/googleapis/python-storage/issues/802>) (4dd0907 <https://github.com/googleapis/python-storage/commit/4dd0907b68e20d1ffcd0fe350831867197917e0d>)

•   samples: Update the Recovery Point Objective (RPO) sample output (#725 <https://github.com/googleapis/python-storage/issues/725>) (b0bf411 <https://github.com/googleapis/python-storage/commit/b0bf411f8fec8712b3eeb99a2dd33de6d82312f8>)

•   Update generation_metageneration.rst with a missing space (#798 <https://github.com/googleapis/python-storage/issues/798>) (1e7cdb6 <https://github.com/googleapis/python-storage/commit/1e7cdb655beb2a61a0d1b984c4d0468ec31bf463>)

•   update retry docs (#808 <https://github.com/googleapis/python-storage/issues/808>) (c365d5b <https://github.com/googleapis/python-storage/commit/c365d5bbd78292adb6861da3cdfae9ab7b39b844>)

  2.3.0 <https://github.com/googleapis/python-storage/compare/v2.2.1...v2.3.0> (2022-04-12)

  Features

•   add dual region bucket support and sample (#748 <https://github.com/googleapis/python-storage/issues/748>) (752e8ab <https://github.com/googleapis/python-storage/commit/752e8ab42d23afd68738e4d7ca6cdeee416dfd50>)

•   track invocation id for retry metrics (#741 <https://github.com/googleapis/python-storage/issues/741>) (bd56931 <https://github.com/googleapis/python-storage/commit/bd5693164e7331df5f14186fd002e72e5203d7ee>)

  Bug Fixes

•   deps: drop pkg_resources (#744 <https://github.com/googleapis/python-storage/issues/744>) (e963f33 <https://github.com/googleapis/python-storage/commit/e963f33ced2852b64d721d69928b54443461ec9c>)

  Documentation

•   fix links in blob module (#759 <https://github.com/googleapis/python-storage/issues/759>) (9b29314 <https://github.com/googleapis/python-storage/commit/9b2931430b0796ffb23ec4efacd82dacad36f40f>)

  2.2.1 <https://github.com/googleapis/python-storage/compare/v2.2.0...v2.2.1> (2022-03-15)

  Bug Fixes

•   remove py.typed marker file for PEP 561 (#735 <https://github.com/googleapis/python-storage/issues/735>) (f77d2f7 <https://github.com/googleapis/python-storage/commit/f77d2f787f435f2f898e9babcdab81225672ad4f>), closes #734 <https://github.com/googleapis/python-storage/issues/734>

  2.2.0 <https://github.com/googleapis/python-storage/compare/v2.1.0...v2.2.0> (2022-03-14)

  Features

•   allow no project in client methods using storage emulator (#703 <https://github.com/googleapis/python-storage/issues/703>) (bcde0ec <https://github.com/googleapis/python-storage/commit/bcde0ec619d7d303892bcc0863b7f977c79f7649>)

  Bug Fixes

•   add user agent in python-storage when calling resumable media (c7bf615 <https://github.com/googleapis/python-storage/commit/c7bf615909a04f3bab3efb1047a9f4ba659bba19>)

•   deps: require google-api-core>=1.31.5, >=2.3.2 (#722 <https://github.com/googleapis/python-storage/issues/722>) (e9aab38 <https://github.com/googleapis/python-storage/commit/e9aab389f868799d4425133954bad4f1cbb85786>)

•   Fix BlobReader handling of interleaved reads and seeks (#721 <https://github.com/googleapis/python-storage/issues/721>) (5d1cfd2 <https://github.com/googleapis/python-storage/commit/5d1cfd2050321481a3bc4acbe80537ea666506fa>)

•   retry client side requests timeout (#727 <https://github.com/googleapis/python-storage/issues/727>) (e0b3b35 <https://github.com/googleapis/python-storage/commit/e0b3b354d51e4be7c563d7f2f628a7139df842c0>)

  Documentation

•   fixed download_blob_to_file example (#704 <https://github.com/googleapis/python-storage/issues/704>) (2c94d98 <https://github.com/googleapis/python-storage/commit/2c94d98ed21cc768cfa54fac3d734254fc4d8480>)

  2.1.0 <https://github.com/googleapis/python-storage/compare/v2.0.0...v2.1.0> (2022-01-19)

  Features

•   add turbo replication support and samples (#622 <https://github.com/googleapis/python-storage/issues/622>) (4dafc81 <https://github.com/googleapis/python-storage/commit/4dafc815470480ce9de7f0357e331d3fbd0ae9b7>)

•   avoid authentication with storage emulator (#679 <https://github.com/googleapis/python-storage/issues/679>) (8789afa <https://github.com/googleapis/python-storage/commit/8789afaaa1b2bd6f03fae72e3d87ce004ec10129>)

•   remove python 3.6 support (#689 <https://github.com/googleapis/python-storage/issues/689>) (8aa4130 <https://github.com/googleapis/python-storage/commit/8aa4130ee068a1922161c8ca54a53a4a51d65ce0>)

  2.0.0 <https://github.com/googleapis/python-storage/compare/v1.44.0...v2.0.0> (2022-01-12)

  ⚠ BREAKING CHANGES

•   Remove Python 2 support (#657)

  Features

•   Remove Python 2 support (#657 <https://github.com/googleapis/python-storage/issues/657>) (b611670 <https://github.com/googleapis/python-storage/commit/b6116700a4a32d28404c39018138e545f3f7910e>)

  1.44.0 <https://www.github.com/googleapis/python-storage/compare/v1.43.0...v1.44.0> (2022-01-05)

  Features

•   add raw_download kwarg to BlobReader (#668 <https://www.github.com/googleapis/python-storage/issues/668>) (10cdad6 <https://www.github.com/googleapis/python-storage/commit/10cdad630739a324ae0b16a3d14a67ca4c8a23c2>)

  Documentation

•   Describe code sample more specifically (#660 <https://www.github.com/googleapis/python-storage/issues/660>) (0459cb4 <https://www.github.com/googleapis/python-storage/commit/0459cb4e866696c46385a5ad72e2a85db810a36b>)

•   refresh readme instructions (#667 <https://www.github.com/googleapis/python-storage/issues/667>) (ceb9314 <https://www.github.com/googleapis/python-storage/commit/ceb931403a755f2a0bdc20144287dbc4700c3360>)

•   This is just a simple PR to better describe what the code is doing in the comments. (0459cb4 <https://www.github.com/googleapis/python-storage/commit/0459cb4e866696c46385a5ad72e2a85db810a36b>)

•   use writeable streamin example for 'download_blob_to_file' (#676 <https://www.github.com/googleapis/python-storage/issues/676>) (96092d4 <https://www.github.com/googleapis/python-storage/commit/96092d4be36be478f9671e8940de4fd09cc6f7f0>)

  1.43.0 <https://www.github.com/googleapis/python-storage/compare/v1.42.3...v1.43.0> (2021-11-15)

  Features

•   add ignore_flush parameter to BlobWriter (#644 <https://www.github.com/googleapis/python-storage/issues/644>) (af9c9dc <https://www.github.com/googleapis/python-storage/commit/af9c9dc83d8582167b74105167af17c9809455de>)

•   add support for Python 3.10 (#615 <https://www.github.com/googleapis/python-storage/issues/615>) (f81a2d0 <https://www.github.com/googleapis/python-storage/commit/f81a2d054616c1ca1734997a16a8f47f98ab346b>)

  Bug Fixes

•   raise a ValueError in BucketNotification.create() if a topic name is not set (#617 <https://www.github.com/googleapis/python-storage/issues/617>) (9dd78df <https://www.github.com/googleapis/python-storage/commit/9dd78df444d21af51af7858e8958b505a26c0b79>)

  Documentation

•   add contributing and authoring guides under samples/ (#633 <https://www.github.com/googleapis/python-storage/issues/633>) (420591a <https://www.github.com/googleapis/python-storage/commit/420591a2b71f823dbe80f4a4405d8a514f87e0fb>)

•   add links to samples and how to guides (#641 <https://www.github.com/googleapis/python-storage/issues/641>) (49f78b0 <https://www.github.com/googleapis/python-storage/commit/49f78b09fed6d9f486639fd0a72542c30a0df084>)

•   add README to samples subdirectory (#639 <https://www.github.com/googleapis/python-storage/issues/639>) (58af882 <https://www.github.com/googleapis/python-storage/commit/58af882c047c31f59486513c568737082bca6350>)

•   update samples readme with cli args (#651 <https://www.github.com/googleapis/python-storage/issues/651>) (75dda81 <https://www.github.com/googleapis/python-storage/commit/75dda810e808074d18dfe7915f1403ad01bf2f02>)

  1.42.3 <https://www.github.com/googleapis/python-storage/compare/v1.42.2...v1.42.3> (2021-09-30)

  Bug Fixes

•   changeover unspecified to inherited (#603 <https://www.github.com/googleapis/python-storage/issues/603>) (283a419 <https://www.github.com/googleapis/python-storage/commit/283a4196865d9b5275e87f54737d1faee40cc946>)

•   check response code in batch.finish (#609 <https://www.github.com/googleapis/python-storage/issues/609>) (318a286 <https://www.github.com/googleapis/python-storage/commit/318a286d709427bfe9f3a37e933c255ac51b3033>)

•   skip tests that use unspecified pap until we get the change in (#600 <https://www.github.com/googleapis/python-storage/issues/600>) (38b9b55 <https://www.github.com/googleapis/python-storage/commit/38b9b5582e2c6bbd1acab2b49410084170466fad>)

  1.42.2 <https://www.github.com/googleapis/python-storage/compare/v1.42.1...v1.42.2> (2021-09-16)

  Bug Fixes

•   add preconditions and retry config support to ACL patch operationss (#586 <https://www.github.com/googleapis/python-storage/issues/586>) (4333caf <https://www.github.com/googleapis/python-storage/commit/4333caf3674d78b3dfbc161a796abac604d57953>)

•   add unpinned protobuf for python3 (#592 <https://www.github.com/googleapis/python-storage/issues/592>) (53f7ad0 <https://www.github.com/googleapis/python-storage/commit/53f7ad0204ad425011da9162d1a78f8276c837eb>)

•   pin six as a required dependency (#589 <https://www.github.com/googleapis/python-storage/issues/589>) (9ca97bf <https://www.github.com/googleapis/python-storage/commit/9ca97bf9139c71cd033c78af73da904b27d8ff50>)

  1.42.1 <https://www.github.com/googleapis/python-storage/compare/v1.42.0...v1.42.1> (2021-09-07)

  Bug Fixes

•   do not append duplicates to user agent string (#570 <https://www.github.com/googleapis/python-storage/issues/570>) (57cf3a1 <https://www.github.com/googleapis/python-storage/commit/57cf3a1f27292939ed097ef8afa3f4392c4b83e0>)

  Documentation

•   pass explicit 'client' in '{Blob.Bucket}.from_string' examples (#545 <https://www.github.com/googleapis/python-storage/issues/545>) (6eff22d <https://www.github.com/googleapis/python-storage/commit/6eff22db0e8c8689208ee52fa815f3ea00675094>)

  1.42.0 <https://www.github.com/googleapis/python-storage/compare/v1.41.1...v1.42.0> (2021-08-05)

  Features

•   add 'page_size' parameter to 'Bucket.list_blobs, list_buckets (#520 <https://www.github.com/googleapis/python-storage/issues/520>) (c5f4ad8 <https://www.github.com/googleapis/python-storage/commit/c5f4ad8fddd1849a4229b0126c4c022bccb90128>)

  Bug Fixes

•   deps: add explicit ranges for 'google-api-core' and 'google-auth' (#530 <https://www.github.com/googleapis/python-storage/issues/530>) (310f207 <https://www.github.com/googleapis/python-storage/commit/310f207411da0382af310172344f19c644c14e6a>)

•   downloading no longer marks metadata fields as 'changed' (#523 <https://www.github.com/googleapis/python-storage/issues/523>) (160d1ec <https://www.github.com/googleapis/python-storage/commit/160d1ecb41f1f269b25cb68b2d2f7daf418bf01c>)

•   make 'requests.exceptions.ChunkedEncodingError retryable by default (#526 <https://www.github.com/googleapis/python-storage/issues/526>) (4abb403 <https://www.github.com/googleapis/python-storage/commit/4abb40310eca7ec45afc4bc5e4dfafbe083e74d2>)

  Documentation

•   update supported / removed Python versions in README (#519 <https://www.github.com/googleapis/python-storage/issues/519>) (1f1b138 <https://www.github.com/googleapis/python-storage/commit/1f1b138865fb171535ee0cf768aff1987ed58914>)

  1.41.1 <https://www.github.com/googleapis/python-storage/compare/v1.41.0...v1.41.1> (2021-07-20)

  Bug Fixes

•   deps: pin {api,cloud}-core, auth to allow 2.x versions on Python 3 (#512 <https://www.github.com/googleapis/python-storage/issues/512>) (4d7500e <https://www.github.com/googleapis/python-storage/commit/4d7500e39c51efd817b8363b69c88be040f3edb8>)

•   remove trailing commas from error message constants (#505 <https://www.github.com/googleapis/python-storage/issues/505>) (d4a86ce <https://www.github.com/googleapis/python-storage/commit/d4a86ceb7a7c5e00ba7bae37c7078d52478040ff>), closes #501 <https://www.github.com/googleapis/python-storage/issues/501>

  Documentation

•   replace usage of deprecated function download_as_string in docs (#508 <https://www.github.com/googleapis/python-storage/issues/508>) (8dfa4d4 <https://www.github.com/googleapis/python-storage/commit/8dfa4d429dce94b671dc3e3755e52ab82733f61a>)

  1.41.0 <https://www.github.com/googleapis/python-storage/compare/v1.40.0...v1.41.0> (2021-07-13)

  Features

•   add support for Etag headers on reads (#489 <https://www.github.com/googleapis/python-storage/issues/489>) (741d3fd <https://www.github.com/googleapis/python-storage/commit/741d3fda4e4280022cede29ebeb7c2ea09e73b6f>)

  Bug Fixes

•   deps: update minimum dependency versions to pick up bugfixes (#496 <https://www.github.com/googleapis/python-storage/issues/496>) (92251a5 <https://www.github.com/googleapis/python-storage/commit/92251a5c8ea4d663773506eb1c630201a657aa69>), closes #494 <https://www.github.com/googleapis/python-storage/issues/494>

•   populate etag / generation / metageneration properties during download (#488 <https://www.github.com/googleapis/python-storage/issues/488>) (49ba14c <https://www.github.com/googleapis/python-storage/commit/49ba14c9c47dbe6bc2bb45d53bbe5621c131fbcb>)

•   revise and rename is_etag_in_json(data) (#483 <https://www.github.com/googleapis/python-storage/issues/483>) (0a52546 <https://www.github.com/googleapis/python-storage/commit/0a5254647bf1155874fe48f3891bcc34a76b0b81>)

  1.40.0 <https://www.github.com/googleapis/python-storage/compare/v1.39.0...v1.40.0> (2021-06-30)

  Features

•   add preconditions and retry configuration to blob.create_resumable_upload_session (#484 <https://www.github.com/googleapis/python-storage/issues/484>) (0ae35ee <https://www.github.com/googleapis/python-storage/commit/0ae35eef0fe82fe60bc095c4b183102bb1dabeeb>)

•   add public access prevention to bucket IAM configuration (#304 <https://www.github.com/googleapis/python-storage/issues/304>) (e3e57a9 <https://www.github.com/googleapis/python-storage/commit/e3e57a9c779d6b87852063787f19e27c76b1bb14>)

  Bug Fixes

•   replace default retry for upload operations (#480 <https://www.github.com/googleapis/python-storage/issues/480>) (c027ccf <https://www.github.com/googleapis/python-storage/commit/c027ccf4279fb05e041754294f10744b7d81beea>)

  1.39.0 <https://www.github.com/googleapis/python-storage/compare/v1.38.0...v1.39.0> (2021-06-21)

  Features

•   media operation retries can be configured using the same interface as with non-media operation (#447 <https://www.github.com/googleapis/python-storage/issues/447>) (0dbbb8a <https://www.github.com/googleapis/python-storage/commit/0dbbb8ac17a4b632707485ee6c7cc15e4670efaa>)

  Bug Fixes

•   add ConnectionError to default retry (#445 <https://www.github.com/googleapis/python-storage/issues/445>) (8344253 <https://www.github.com/googleapis/python-storage/commit/8344253a1969b9d04b81f87a6d7bddd3ddb55006>)

•   apply idempotency policies for ACLs (#458 <https://www.github.com/googleapis/python-storage/issues/458>) (2232f38 <https://www.github.com/googleapis/python-storage/commit/2232f38933dbdfeb4f6585291794d332771ffdf2>)

•   replace python lifecycle action parsing ValueError with warning (#437 <https://www.github.com/googleapis/python-storage/issues/437>) (2532d50 <https://www.github.com/googleapis/python-storage/commit/2532d506b44fc1ef0fa0a996822d29e7459c465a>)

•   revise blob.compose query parameters if_generation_match (#454 <https://www.github.com/googleapis/python-storage/issues/454>) (70d19e7 <https://www.github.com/googleapis/python-storage/commit/70d19e72831dee112bb07f38b50beef4890c1155>)

  Documentation

•   streamline 'timeout' / 'retry' docs in docstrings (#461 <https://www.github.com/googleapis/python-storage/issues/461>) (78b2eba <https://www.github.com/googleapis/python-storage/commit/78b2eba81003b437cd24f2b8d269ea2455682507>)

•   streamline docstrings for conditional parmas (#464 <https://www.github.com/googleapis/python-storage/issues/464>) (6999370 <https://www.github.com/googleapis/python-storage/commit/69993702390322df07cc2e818003186a47524c2b>)

  1.38.0 <https://www.github.com/googleapis/python-storage/compare/v1.37.1...v1.38.0> (2021-04-26)

  Features

•   add getters and setters for encryption_key and kms_key_name (#409 <https://www.github.com/googleapis/python-storage/issues/409>) (2adfb59 <https://www.github.com/googleapis/python-storage/commit/2adfb593d5ad19320affe480455568c1410b9d93>)

  Bug Fixes

•   retry auth.TransportError errors (#418 <https://www.github.com/googleapis/python-storage/issues/418>) (23a8db8 <https://www.github.com/googleapis/python-storage/commit/23a8db839909a0781343cb18edffaea06a0b7092>)

  Documentation

•   revise docstrings for generate_signed_url (#408 <https://www.github.com/googleapis/python-storage/issues/408>) (f090548 <https://www.github.com/googleapis/python-storage/commit/f090548437142b635191e90dcee1acd4c38e565c>)

  1.37.1 <https://www.github.com/googleapis/python-storage/compare/v1.37.0...v1.37.1> (2021-04-02)

  Bug Fixes

•   Ensure consistency check in test runs even if expected error occurs (#402 <https://www.github.com/googleapis/python-storage/issues/402>) (416bcd4 <https://www.github.com/googleapis/python-storage/commit/416bcd42406ec57e51f04e5d9b0c58509f80520c>)

•   silence expected errors for routine operations on BlobReader (#400 <https://www.github.com/googleapis/python-storage/issues/400>) (d52853b <https://www.github.com/googleapis/python-storage/commit/d52853b420f50012e02c395f5407e3018922c048>)

  1.37.0 <https://www.github.com/googleapis/python-storage/compare/v1.36.2...v1.37.0> (2021-03-24)

  Features

•   add blob.open() for file-like I/O (#385 <https://www.github.com/googleapis/python-storage/issues/385>) (440a0a4 <https://www.github.com/googleapis/python-storage/commit/440a0a4ffe00b1f7c562b0e9c1e47dbadeca33e1>), closes #29 <https://www.github.com/googleapis/python-storage/issues/29>

  Bug Fixes

•   update user_project usage and documentation in bucket/client class methods (#396 <https://www.github.com/googleapis/python-storage/issues/396>) (1a2734b <https://www.github.com/googleapis/python-storage/commit/1a2734ba6d316ce51e4e141571331e86196462b9>)

  1.36.2 <https://www.github.com/googleapis/python-storage/compare/v1.36.1...v1.36.2> (2021-03-09)

  Bug Fixes

•   update batch connection to request api endpoint info from client (#392 <https://www.github.com/googleapis/python-storage/issues/392>) (91fc6d9 <https://www.github.com/googleapis/python-storage/commit/91fc6d9870a36308b15a827ed6a691e5b4669b62>)

  1.36.1 <https://www.github.com/googleapis/python-storage/compare/v1.36.0...v1.36.1> (2021-02-19)

  Bug Fixes

•   allow metadata keys to be cleared (#383 <https://www.github.com/googleapis/python-storage/issues/383>) (79d27da <https://www.github.com/googleapis/python-storage/commit/79d27da9fe842e44a9091076ea0ef52c5ef5ff72>), closes #381 <https://www.github.com/googleapis/python-storage/issues/381>

•   allow signed url version v4 without signed credentials (#356 <https://www.github.com/googleapis/python-storage/issues/356>) (3e69bf9 <https://www.github.com/googleapis/python-storage/commit/3e69bf92496616c5de28094dd42260b35c3bf982>)

•   correctly encode bytes for V2 signature (#382 <https://www.github.com/googleapis/python-storage/issues/382>) (f44212b <https://www.github.com/googleapis/python-storage/commit/f44212b7b91a67ca661898400fe632f9fb3ec8f6>)

  1.36.0 <https://www.github.com/googleapis/python-storage/compare/v1.35.1...v1.36.0> (2021-02-10)

  Features

•   add mtls support (#367 <https://www.github.com/googleapis/python-storage/issues/367>) (d35ab35 <https://www.github.com/googleapis/python-storage/commit/d35ab3537d1828505f614d32b79b67173c9438c0>)

  Bug Fixes

•   correctly decode times without microseconds (#375 <https://www.github.com/googleapis/python-storage/issues/375>) (37a1eb5 <https://www.github.com/googleapis/python-storage/commit/37a1eb54095b4f857771784007dd049ffafbc11d>), closes #363 <https://www.github.com/googleapis/python-storage/issues/363>

•   expose num_retries parameter for blob upload methods (#353 <https://www.github.com/googleapis/python-storage/issues/353>) (fdabd6a <https://www.github.com/googleapis/python-storage/commit/fdabd6af74da4b15fbb5d40fb8f80a9b478b9607>), closes #352 <https://www.github.com/googleapis/python-storage/issues/352>

•   pass the unused parameter (#349 <https://www.github.com/googleapis/python-storage/issues/349>) (5c60d24 <https://www.github.com/googleapis/python-storage/commit/5c60d240aa98d2a1dcc6933d6da2ce60ea1b7559>)

•   set custom_time on uploads (#374 <https://www.github.com/googleapis/python-storage/issues/374>) (f048be1 <https://www.github.com/googleapis/python-storage/commit/f048be10416f51cea4e6c8c5b805df7b5d9c4d32>), closes #372 <https://www.github.com/googleapis/python-storage/issues/372>

  1.35.1 <https://www.github.com/googleapis/python-storage/compare/v1.35.0...v1.35.1> (2021-01-28)

  Bug Fixes

•   address incorrect usage of request preconditions (#366 <https://www.github.com/googleapis/python-storage/issues/366>) (321658c <https://www.github.com/googleapis/python-storage/commit/321658c3b9ccaf22d08dd881c93206590f8275b7>)

•   Amend default retry behavior for bucket operations on client (#358 <https://www.github.com/googleapis/python-storage/issues/358>) (b91e57d <https://www.github.com/googleapis/python-storage/commit/b91e57d6ca314ac4feaec30bf355fcf7ac4468c0>)

  1.35.0 <https://www.github.com/googleapis/python-storage/compare/v1.34.0...v1.35.0> (2020-12-14)

  Features

•   support ConnectionError retries for media operations (#342 <https://www.github.com/googleapis/python-storage/issues/342>) (e55b25b <https://www.github.com/googleapis/python-storage/commit/e55b25be1e32f17b17bffe1da99fca5062f180cb>)

  1.34.0 <https://www.github.com/googleapis/python-storage/compare/v1.33.0...v1.34.0> (2020-12-11)

  Features

•   make retry parameter public and added in other methods (#331 <https://www.github.com/googleapis/python-storage/issues/331>) (910e34c <https://www.github.com/googleapis/python-storage/commit/910e34c57de5823bc3a04adbd87cbfe27fb41882>)

  Bug Fixes

•   avoid triggering global logging config (#333 <https://www.github.com/googleapis/python-storage/issues/333>) (602108a <https://www.github.com/googleapis/python-storage/commit/602108a976503271fe0d85c8d7891ce8083aca89>), closes #332 <https://www.github.com/googleapis/python-storage/issues/332>

•   fall back to 'charset' of 'content_type' in 'download_as_text' (#326 <https://www.github.com/googleapis/python-storage/issues/326>) (63ff233 <https://www.github.com/googleapis/python-storage/commit/63ff23387f5873c609490be8e58d69ba34a10a5e>), closes #319 <https://www.github.com/googleapis/python-storage/issues/319>

•   fix conditional retry handling of camelCase query params (#340 <https://www.github.com/googleapis/python-storage/issues/340>) (4ff6141 <https://www.github.com/googleapis/python-storage/commit/4ff614161f6a2654a59706f4f72b5fbb614e70ec>)

•   retry uploads only conditionally (#316 <https://www.github.com/googleapis/python-storage/issues/316>) (547740c <https://www.github.com/googleapis/python-storage/commit/547740c0a898492e76ce5e60dd20c7ddb8a53d1f>)

•   update 'custom_time' setter to record change (#323 <https://www.github.com/googleapis/python-storage/issues/323>) (5174154 <https://www.github.com/googleapis/python-storage/commit/5174154fe73bb6581efc3cd32ebe12014ceab306>), closes #322 <https://www.github.com/googleapis/python-storage/issues/322>

  1.33.0 <https://www.github.com/googleapis/python-storage/compare/v1.32.0...v1.33.0> (2020-11-16)

  Features

•   add classifiers for python3.9 and remove for python3.5 (#295 <https://www.github.com/googleapis/python-storage/issues/295>) (f072825 <https://www.github.com/googleapis/python-storage/commit/f072825ce03d774fd95d9fe3db95a8c7130b0e8a>)

•   add testing support for Python 3.9, drop Python 3.5 (#313 <https://www.github.com/googleapis/python-storage/issues/313>) (fa14009 <https://www.github.com/googleapis/python-storage/commit/fa140092877a277abbb23785657590a274a86d61>)

  Bug Fixes

•   use passed-in client within Blob.from_string and helpers (#290 <https://www.github.com/googleapis/python-storage/issues/290>) (d457ce3 <https://www.github.com/googleapis/python-storage/commit/d457ce3e161555c9117ae288ec0c9cd5f8d5fe3a>), closes #286 <https://www.github.com/googleapis/python-storage/issues/286>

•   preserve metadata value when uploading new file content (#298 <https://www.github.com/googleapis/python-storage/issues/298>) (5ab6b0d <https://www.github.com/googleapis/python-storage/commit/5ab6b0d9a2b27ae830740a7a0226fc1e241e9ec4>), closes #293 <https://www.github.com/googleapis/python-storage/issues/293>

  1.32.0 <https://www.github.com/googleapis/python-storage/compare/v1.31.2...v1.32.0> (2020-10-16)

  Features

•   retry API calls with exponential backoff (#287 <https://www.github.com/googleapis/python-storage/issues/287>) (fbe5d9c <https://www.github.com/googleapis/python-storage/commit/fbe5d9ca8684c6a992dcdee977fc8dd012a96a5c>)

  Bug Fixes

•   field policy return string (#282 <https://www.github.com/googleapis/python-storage/issues/282>) (c356b84 <https://www.github.com/googleapis/python-storage/commit/c356b8484a758548d5f4823a495ab70c798cfaaf>)

•   self-upload files for Unicode system test (#296 <https://www.github.com/googleapis/python-storage/issues/296>) (6f865d9 <https://www.github.com/googleapis/python-storage/commit/6f865d97a19278884356055dfeeaae92f7c63cc1>)

•   use version.py for versioning, avoid issues with discovering version via get_distribution (#288 <https://www.github.com/googleapis/python-storage/issues/288>) (fcd1c4f <https://www.github.com/googleapis/python-storage/commit/fcd1c4f7c947eb95d6937783fd69670a570f145e>)

  1.31.2 <https://www.github.com/googleapis/python-storage/compare/v1.31.1...v1.31.2> (2020-09-23)

  Documentation

•   fix docstring example for 'blob.generate_signed_url' (#278 <https://www.github.com/googleapis/python-storage/issues/278>) (2dc91c9 <https://www.github.com/googleapis/python-storage/commit/2dc91c947e3693023b4478a15c460693808ea2d9>)

  1.31.1 <https://www.github.com/googleapis/python-storage/compare/v1.31.0...v1.31.1> (2020-09-16)

  Bug Fixes

•   add requests as a dependency (#271 <https://www.github.com/googleapis/python-storage/issues/271>) (ec52b38 <https://www.github.com/googleapis/python-storage/commit/ec52b38df211fad18a86d7e16d83db79de59d5f5>)

•   preserve existing blob hashes when 'X-Goog-Hash header' is not present (#267 <https://www.github.com/googleapis/python-storage/issues/267>) (277afb8 <https://www.github.com/googleapis/python-storage/commit/277afb83f464d77b163f2722272092df4180411e>)

•   blob: base64 includes additional characters (#258 <https://www.github.com/googleapis/python-storage/issues/258>) (cf0774a <https://www.github.com/googleapis/python-storage/commit/cf0774aa8ffd45d340aff9a7d2236d8d65c8ae93>)

  Documentation

•   add docs signed_url expiration take default utc (#250 <https://www.github.com/googleapis/python-storage/issues/250>) (944ab18 <https://www.github.com/googleapis/python-storage/commit/944ab1827b3ca0bd1d3aafc2829245290e9bde59>)

  1.31.0 <https://www.github.com/googleapis/python-storage/compare/v1.30.0...v1.31.0> (2020-08-26)

  Features

•   add configurable checksumming for blob uploads and downloads (#246 <https://www.github.com/googleapis/python-storage/issues/246>) (23b7d1c <https://www.github.com/googleapis/python-storage/commit/23b7d1c3155deae3c804c510dee3a7cec97cd46c>)

•   add support for 'Blob.custom_time' and lifecycle rules (#199 <https://www.github.com/googleapis/python-storage/issues/199>) (180873d <https://www.github.com/googleapis/python-storage/commit/180873de139f7f8e00b7bef423bc15760cf68cc2>)

•   error message return from api (#235 <https://www.github.com/googleapis/python-storage/issues/235>) (a8de586 <https://www.github.com/googleapis/python-storage/commit/a8de5868f32b45868f178f420138fcd2fe42f5fd>)

•   storage: add support of daysSinceNoncurrentTime and noncurrentTimeBefore (#162 <https://www.github.com/googleapis/python-storage/issues/162>) (136c097 <https://www.github.com/googleapis/python-storage/commit/136c0970f8ef7ad4751104e3b8b7dd3204220a67>)

•   pass 'client_options' to base class ctor (#225 <https://www.github.com/googleapis/python-storage/issues/225>) (e1f91fc <https://www.github.com/googleapis/python-storage/commit/e1f91fcca6c001bc3b0c5f759a7a003fcf60c0a6>), closes #210 <https://www.github.com/googleapis/python-storage/issues/210>

•   rename 'Blob.download_as_{string,bytes}', add 'Blob.download_as_text' (#182 <https://www.github.com/googleapis/python-storage/issues/182>) (73107c3 <https://www.github.com/googleapis/python-storage/commit/73107c35f23c4a358e957c2b8188300a7fa958fe>)

  Bug Fixes

•   change datetime.now to utcnow (#251 <https://www.github.com/googleapis/python-storage/issues/251>) (3465d08 <https://www.github.com/googleapis/python-storage/commit/3465d08e098edb250dee5e97d1fb9ded8bae5700>), closes #228 <https://www.github.com/googleapis/python-storage/issues/228>

•   extract hashes correctly during download (#238 <https://www.github.com/googleapis/python-storage/issues/238>) (23cfb65 <https://www.github.com/googleapis/python-storage/commit/23cfb65c3a3b10759c67846e162e4ed77a3f5307>)

•   repair mal-formed docstring (#255 <https://www.github.com/googleapis/python-storage/issues/255>) (e722376 <https://www.github.com/googleapis/python-storage/commit/e722376371cb8a3acc46d6c84fb41f4e874f41aa>)

  Documentation

•   update docs build (via synth) (#222 <https://www.github.com/googleapis/python-storage/issues/222>) (4c5adfa <https://www.github.com/googleapis/python-storage/commit/4c5adfa6e05bf018d72ee1a7e99679fd55f2c662>)

  1.30.0 <https://www.github.com/googleapis/python-storage/compare/v1.29.0...v1.30.0> (2020-07-24)

  Features

•   add timeouts to Blob methods where missing (#185 <https://www.github.com/googleapis/python-storage/issues/185>) (6eeb855 <https://www.github.com/googleapis/python-storage/commit/6eeb855aa0e6a7835d1d4f6e72951e43af22ab57>)

•   auto-populate standard headers for non-chunked downloads (#204 <https://www.github.com/googleapis/python-storage/issues/204>) (d8432cd <https://www.github.com/googleapis/python-storage/commit/d8432cd65a4e9b38eebd1ade2ff00f2f44bb0ef6>), closes #24 <https://www.github.com/googleapis/python-storage/issues/24>

•   migrate to Service Account Credentials API (#189 <https://www.github.com/googleapis/python-storage/issues/189>) (e4990d0 <https://www.github.com/googleapis/python-storage/commit/e4990d06043dbd8d1a417f3a1a67fe8746071f1c>)

  Bug Fixes

•   add multiprocessing.rst to synthool excludes (#186 <https://www.github.com/googleapis/python-storage/issues/186>) (4d76e38 <https://www.github.com/googleapis/python-storage/commit/4d76e3882210ed2818a43256265f6df31348d410>)

  Documentation

•   fix indent in code blocks (#171 <https://www.github.com/googleapis/python-storage/issues/171>) (62d1543 <https://www.github.com/googleapis/python-storage/commit/62d1543e18040b286b23464562aa6eb998074c54>), closes #170 <https://www.github.com/googleapis/python-storage/issues/170>

•   remove doubled word in docstring (#209 <https://www.github.com/googleapis/python-storage/issues/209>) (7a4e7a5 <https://www.github.com/googleapis/python-storage/commit/7a4e7a5974abedb0b7b2e110cacbfcd0a40346b6>)

  Documentation

•   fix indent in code blocks (#171 <https://www.github.com/googleapis/python-storage/issues/171>) (62d1543 <https://www.github.com/googleapis/python-storage/commit/62d1543e18040b286b23464562aa6eb998074c54>), closes #170 <https://www.github.com/googleapis/python-storage/issues/170>

•   remove doubled word in docstring (#209 <https://www.github.com/googleapis/python-storage/issues/209>) (7a4e7a5 <https://www.github.com/googleapis/python-storage/commit/7a4e7a5974abedb0b7b2e110cacbfcd0a40346b6>)

  Dependencies

•   prep for grmp-1.0.0 release (#211 <https://www.github.com/googleapis/python-storage/issues/211>) (55bae9a <https://www.github.com/googleapis/python-storage/commit/55bae9a0e7c0db512c10c6b3b621cd2ef05c9729>)

  1.29.0 <https://www.github.com/googleapis/python-storage/compare/v1.28.1...v1.29.0> (2020-06-09)

  Features

•   add generationmatch args into Blob.compose() (#122 <https://www.github.com/googleapis/python-storage/issues/122>) (dc01c59 <https://www.github.com/googleapis/python-storage/commit/dc01c59e036164326aeeea164098cf2e6e0dc12c>)

•   add Bucket.reload() and Bucket.update() wrappers to restrict generation match args (#153 <https://www.github.com/googleapis/python-storage/issues/153>) (76dd9ac <https://www.github.com/googleapis/python-storage/commit/76dd9ac7e8b7765defc5b521cfe059e08e33c65c>), closes #127 <https://www.github.com/googleapis/python-storage/issues/127>

•   add helper for bucket bound hostname URLs (#137 <https://www.github.com/googleapis/python-storage/issues/137>) (b26f9fa <https://www.github.com/googleapis/python-storage/commit/b26f9fa8a767b7d5affea8d2c4b87163ce979fd2>), closes #121 <https://www.github.com/googleapis/python-storage/issues/121>

•   add ifgenerationmatch support for Bucket.rename_blob() (#141 <https://www.github.com/googleapis/python-storage/issues/141>) (f52efc8 <https://www.github.com/googleapis/python-storage/commit/f52efc807355c82aa3ea621cdadcc316175f0abf>)

•   add ifgenerationMatch support, pt1 (#123 <https://www.github.com/googleapis/python-storage/issues/123>) (0944442 <https://www.github.com/googleapis/python-storage/commit/094444280dd7b7735e24071e5381508cbd392260>)

•   add offset and includeTrailingPrefix options to list_blobs (#125 <https://www.github.com/googleapis/python-storage/issues/125>) (d84c0dd <https://www.github.com/googleapis/python-storage/commit/d84c0ddfd00fa731acfe9899c668041456b08ab7>)

•   Create CODEOWNERS (#135 <https://www.github.com/googleapis/python-storage/issues/135>) (32a8d55 <https://www.github.com/googleapis/python-storage/commit/32a8d55b6ec56a9f7c0a3502fbe23c1ba1cc8ad2>)

  Bug Fixes

•   add documentaion of list_blobs with user project (#147 <https://www.github.com/googleapis/python-storage/issues/147>) (792b21f <https://www.github.com/googleapis/python-storage/commit/792b21fd2263b518d56f79cab6a4a1bb06c6e4e7>)

•   add projection parameter to blob.reload method (#146 <https://www.github.com/googleapis/python-storage/issues/146>) (ddad20b <https://www.github.com/googleapis/python-storage/commit/ddad20b3c3d2e6bf482e34dad85fa4b0ff90e1b1>)

•   add unused variables to method generation match (#152 <https://www.github.com/googleapis/python-storage/issues/152>) (f6574bb <https://www.github.com/googleapis/python-storage/commit/f6574bb84c60c30989d05dba97b423579360cdb2>)

•   change the method names in snippets file (#161 <https://www.github.com/googleapis/python-storage/issues/161>) (e516ed9 <https://www.github.com/googleapis/python-storage/commit/e516ed9be518e30df4e201d3242f979c0b081086>)

•   fix upload object with bucket cmek enabled (#158 <https://www.github.com/googleapis/python-storage/issues/158>) (5f27ffa <https://www.github.com/googleapis/python-storage/commit/5f27ffa3b1b55681453b594a0ef9e2811fc5f0c8>)

•   set default POST policy scheme to "http" (#172 <https://www.github.com/googleapis/python-storage/issues/172>) (90c020d <https://www.github.com/googleapis/python-storage/commit/90c020d69a69ebc396416e4086a2e0838932130c>)

  1.28.1 <https://www.github.com/googleapis/python-storage/compare/v1.28.0...v1.28.1> (2020-04-28)

  Bug Fixes

•   anonymous credentials for private bucket (#107 <https://www.github.com/googleapis/python-storage/issues/107>) (6152ab4 <https://www.github.com/googleapis/python-storage/commit/6152ab4067d39ba824f9b6a17b83859dd7236cec>)

•   add bucket name into POST policy conditions (#118 <https://www.github.com/googleapis/python-storage/issues/118>) (311ecab <https://www.github.com/googleapis/python-storage/commit/311ecabf8acc3018cef0697dd29483693f7722b9>)

  1.28.0 <https://www.github.com/googleapis/python-storage/compare/v1.27.0...v1.28.0> (2020-04-22)

  Features

•   add arguments for *GenerationMatch uploading options (#111 <https://www.github.com/googleapis/python-storage/issues/111>) (b11aa5f <https://www.github.com/googleapis/python-storage/commit/b11aa5f00753b094580847bc62c154ae0e584dbc>)

  Bug Fixes

•   fix incorrect mtime by UTC offset (#42 <https://www.github.com/googleapis/python-storage/issues/42>) (76bd652 <https://www.github.com/googleapis/python-storage/commit/76bd652a3078d94e03e566b6a387fc488ab26910>)

•   remove expiration strict conversion (#106 <https://www.github.com/googleapis/python-storage/issues/106>) (9550dad <https://www.github.com/googleapis/python-storage/commit/9550dad6e63e249110fc9dcda245061b76dacdcf>), closes #105 <https://www.github.com/googleapis/python-storage/issues/105>

  1.27.0 <https://www.github.com/googleapis/python-storage/compare/v1.26.0...v1.27.0> (2020-04-01)

  Features

•   generate signed URLs for blobs/buckets using virtual hostname (#58 <https://www.github.com/googleapis/python-storage/issues/58>) (23df542 <https://www.github.com/googleapis/python-storage/commit/23df542d0669852b05139023d5ef1ae14a09f4c7>)

•   Add cname support for V4 signature (#72 <https://www.github.com/googleapis/python-storage/issues/72>) (cc853af <https://www.github.com/googleapis/python-storage/commit/cc853af6bf8e44e5b16e8cdfb3a275629ffb1f27>)

•   add conformance tests for virtual hosted style signed URLs (#83 <https://www.github.com/googleapis/python-storage/issues/83>) (5adc8b0 <https://www.github.com/googleapis/python-storage/commit/5adc8b0e6ffe28185a4085cd1fc8c1b4998094aa>)

•   add get notification method (#77 <https://www.github.com/googleapis/python-storage/issues/77>) (f602252 <https://www.github.com/googleapis/python-storage/commit/f6022521bee0824e1b291211703afc5eae6c6891>)

•   improve v4 signature query parameters encoding (#48 <https://www.github.com/googleapis/python-storage/issues/48>) (8df0b55 <https://www.github.com/googleapis/python-storage/commit/8df0b554a1904787889309707f08c6b8683cad44>)

  Bug Fixes

•   fix blob metadata to None regression (#60 <https://www.github.com/googleapis/python-storage/issues/60>) (a834d1b <https://www.github.com/googleapis/python-storage/commit/a834d1b54aa96152ced4d841c4e0c241acd2d8d8>)

•   add classifer for Python 3.8 (#63 <https://www.github.com/googleapis/python-storage/issues/63>) (1b9b6bc <https://www.github.com/googleapis/python-storage/commit/1b9b6bc2601ee336a8399266852fb850e368b30a>)

•   make v4 signing formatting consistent w/ spec (#56 <https://www.github.com/googleapis/python-storage/issues/56>) (8712da8 <https://www.github.com/googleapis/python-storage/commit/8712da84c93600a736e72a097c42a49b4724347d>)

•   use correct IAM object admin role (#71 <https://www.github.com/googleapis/python-storage/issues/71>) (2e27edd <https://www.github.com/googleapis/python-storage/commit/2e27edd3fe65cd5e17c12bf11f2b58f611937d61>)

•   remove docstring of retrun in reload method (#78 <https://www.github.com/googleapis/python-storage/issues/78>) (4abeb1c <https://www.github.com/googleapis/python-storage/commit/4abeb1c0810c4e5d716758536da9fc204fa4c2a9>)

•   use OrderedDict while encoding POST policy (#95 <https://www.github.com/googleapis/python-storage/issues/95>) (df560e1 <https://www.github.com/googleapis/python-storage/commit/df560e178369a6d03140e412a25af6ec7444f5a1>)

  1.26.0 <https://www.github.com/googleapis/python-storage/compare/v1.25.0...v1.26.0> (2020-02-12)

  Features

•   add support for signing URLs using token (#9889 <https://www.github.com/googleapis/google-cloud-python/issues/9889>) (ad280bf <https://www.github.com/googleapis/python-storage/commit/ad280bf506d3d7a37c402d06eac07422a5fe80af>)

•   add timeout parameter to public methods (#44 <https://www.github.com/googleapis/python-storage/issues/44>) (63abf07 <https://www.github.com/googleapis/python-storage/commit/63abf0778686df1caa001270dd22f9df0daf0c78>)

  Bug Fixes

•   fix documentation of max_result parameter in list_blob (#43 <https://www.github.com/googleapis/python-storage/issues/43>) (ff15f19 <https://www.github.com/googleapis/python-storage/commit/ff15f19d3a5830acdd540181dc6e9d07ca7d88ee>)

•   fix system test and change scope for iam access token (#47 <https://www.github.com/googleapis/python-storage/issues/47>) (bc5375f <https://www.github.com/googleapis/python-storage/commit/bc5375f4c88f7e6ad1afbe7667c49d9a846e9757>)

•   remove low version error assertion from iam conditions system tests (#53 <https://www.github.com/googleapis/python-storage/issues/53>) (8904aee <https://www.github.com/googleapis/python-storage/commit/8904aee9ad5dc01ab83e1460b6f186a739668eb7>)

  1.25.0

01-16-2020 11:00 PST

  Implementation Changes

•   fix: replace unsafe six.PY3 with PY2 for better future compatibility with Python 4 (#10081 <https://github.com/GoogleCloudPlatform/google-cloud-python/pull/10081>)

•   fix(storage): fix document of delete blob (#10015 <https://github.com/GoogleCloudPlatform/google-cloud-python/pull/10015>)

  New Features

•   feat(storage): support optionsRequestedPolicyVersion (#9989 <https://github.com/GoogleCloudPlatform/google-cloud-python/pull/9989>)

  Dependencies

•   chore(storage): bump core dependency to 1.2.0 (#10160 <https://github.com/GoogleCloudPlatform/google-cloud-python/pull/10160>)

  1.24.1

01-02-2020 13:20 PST

  Implementation Changes

•   Add 'ARCHIVE' storage class (#9533 <https://github.com/googleapis/google-cloud-python/pull/9533>)

  1.24.0

01-02-2020 10:39 PST

  Implementation Changes

-str() metadata for for blob (#9796 <https://github.com/googleapis/google-cloud-python/pull/9796>)

  New Features

•   Add timeout parameter to Batch interface to match google-cloud-core (#10010 <https://github.com/googleapis/google-cloud-python/pull/10010>)

  1.23.0

11-12-2019 12:57 PST

  Implementation Changes

•   Move create_bucket implementation from Bucket to Client. (#8604 <https://github.com/googleapis/google-cloud-python/pull/8604>)

  New Features

•   Add opt-in raw download support. (#9572 <https://github.com/googleapis/google-cloud-python/pull/9572>)

  Dependencies

•   Pin google-resumable-media >= 0.5.0, < 0.6dev. (#9572 <https://github.com/googleapis/google-cloud-python/pull/9572>)

  Documentation

•   Add python 2 sunset banner to documentation. (#9036 <https://github.com/googleapis/google-cloud-python/pull/9036>)

  Internal / Testing Changes

•   Fix query-string order dependent assert. (#9728 <https://github.com/googleapis/google-cloud-python/pull/9728>)

•   Normalize VPCSC configuration in system tests. (#9616 <https://github.com/googleapis/google-cloud-python/pull/9616>)

  1.22.0

11-05-2019 10:22 PST

  New Features

•   Add UBLA attrs to IAMConfiguration. (#9475 <https://github.com/googleapis/google-cloud-python/pull/9475>)

  1.21.0

10-28-2019 21:52 PDT

  Implementation Changes

•   Add gcloud-python header to user agent (#9551 <https://github.com/googleapis/google-cloud-python/pull/9551>)

•   Don't report a gapic version for storage (#9549 <https://github.com/googleapis/google-cloud-python/pull/9549>)

•   Update storage endpoint from www.googleapis.com to storage.googleapis.com (#9543 <https://github.com/googleapis/google-cloud-python/pull/9543>)

•   Call anonymous client method to remove dependency of google application credentials (#9455 <https://github.com/googleapis/google-cloud-python/pull/9455>)

•   Enable CSEK w/ V4 signed URLs (#9450 <https://github.com/googleapis/google-cloud-python/pull/9450>)

  New Features

•   Support predefined ACLs in Bucket.create (#9334 <https://github.com/googleapis/google-cloud-python/pull/9334>)

  Documentation

•   Add hmac_key and notification documentation rst files (#9529 <https://github.com/googleapis/google-cloud-python/pull/9529>)

•   Remove references to the old authentication credentials (#9456 <https://github.com/googleapis/google-cloud-python/pull/9456>)

•   Clarify docstring for Blob.download_as_string (#9332 <https://github.com/googleapis/google-cloud-python/pull/9332>)

  1.20.0

09-26-2019 06:45 PDT

  New Features

•   Add user_project param to HMAC-related methods. (#9237 <https://github.com/googleapis/google-cloud-python/pull/9237>)

•   Add Blob.from_string and Bucket.from_string factories. (#9143 <https://github.com/googleapis/google-cloud-python/pull/9143>)

  Documentation

•   Fix intersphinx reference to requests. (#9294 <https://github.com/googleapis/google-cloud-python/pull/9294>)

•   Fix deep / broken URL for service account setup. (#9164 <https://github.com/googleapis/google-cloud-python/pull/9164>)

  Internal / Testing Changes

•   Fix typo in _helpers.py. (#9239 <https://github.com/googleapis/google-cloud-python/pull/9239>)

•   In systests, retry bucket creation on 503. (#9248 <https://github.com/googleapis/google-cloud-python/pull/9248>)

•   Avoid using REGIONAL / MULTI_REGIONAL in examples, tests. (#9205 <https://github.com/googleapis/google-cloud-python/pull/9205>)

•   Move benchwrapper into tests/perf. (#9246 <https://github.com/googleapis/google-cloud-python/pull/9246>)

•   Add support for STORAGE_EMULATOR_HOST; add benchwrapper script. (#9219 <https://github.com/googleapis/google-cloud-python/pull/9219>)

  1.19.0

08-28-2019 09:45 PDT

  Implementation Changes

•   Expose 'HMACKeyMetadata.id' field. (#9115 <https://github.com/googleapis/google-cloud-python/pull/9115>)

•   Make 'Blob.bucket' a readonly property. (#9113 <https://github.com/googleapis/google-cloud-python/pull/9113>)

•   Clarify 'response_type' for signed_url methods. (#8942 <https://github.com/googleapis/google-cloud-python/pull/8942>)

  New Features

•   Add client_options to constructors for manual clients. (#9054 <https://github.com/googleapis/google-cloud-python/pull/9054>)

  Documentation

•   Remove compatability badges from READMEs. (#9035 <https://github.com/googleapis/google-cloud-python/pull/9035>)

  Internal / Testing Changes

•   Remove CI for gh-pages, use googleapis.dev for api_core refs. (#9085 <https://github.com/googleapis/google-cloud-python/pull/9085>)

•   Fix tests broken by yesterday's google-resumable-media release. (#9119 <https://github.com/googleapis/google-cloud-python/pull/9119>)

•   Harden 'test_access_to_public_bucket' systest against 429 / 503 errors. (#8997 <https://github.com/googleapis/google-cloud-python/pull/8997>)

  1.18.0

08-07-2019 00:37 PDT

  New Features

•   Add HMAC key support. (#8430 <https://github.com/googleapis/google-cloud-python/pull/8430>)

  Documentation

•   Mark old storage classes as legacy, not deprecated. (#8887 <https://github.com/googleapis/google-cloud-python/pull/8887>)

  Internal / Testing Changes

•   Normalize 'lint' / 'blacken' support under nox. (#8831 <https://github.com/googleapis/google-cloud-python/pull/8831>)

•   Update intersphinx mapping for requests. (#8805 <https://github.com/googleapis/google-cloud-python/pull/8805>)

  1.17.0

07-24-2019 12:37 PDT

  New Features

•   Add Bucket.location_type property. (#8570 <https://github.com/googleapis/google-cloud-python/pull/8570>)

•   Add Client.list_blobs(bucket_or_name). (#8375 <https://github.com/googleapis/google-cloud-python/pull/8375>)

  Implementation Changes

•   Retry bucket creation in signing setup. (#8620 <https://github.com/googleapis/google-cloud-python/pull/8620>)

•   Fix URI -> blob name conversion in Client download_blob_to_file. (#8440 <https://github.com/googleapis/google-cloud-python/pull/8440>)

•   Avoid escaping tilde in blob public / signed URLs. (#8434 <https://github.com/googleapis/google-cloud-python/pull/8434>)

•   Add generation to 'Blob.repr'. (#8423 <https://github.com/googleapis/google-cloud-python/pull/8423>)

  Documentation

•   Link to googleapis.dev documentation in READMEs. (#8705 <https://github.com/googleapis/google-cloud-python/pull/8705>)

•   Add compatibility check badges to READMEs. (#8288 <https://github.com/googleapis/google-cloud-python/pull/8288>)

•   Fix example in Client.download_blob_to_file docstring. (#8629 <https://github.com/googleapis/google-cloud-python/pull/8629>)

•   Remove typing information for kwargs to not conflict with type checkers (#8546 <https://github.com/googleapis/google-cloud-python/pull/8546>)

  Internal / Testing Changes

•   Skip failing test_bpo_set_unset_preserves_acls systest. (#8617 <https://github.com/googleapis/google-cloud-python/pull/8617>)

•   Add nox session 'docs'. (#8478 <https://github.com/googleapis/google-cloud-python/pull/8478>)

•   Add docs job to publish to googleapis.dev. (#8464 <https://github.com/googleapis/google-cloud-python/pull/8464>)

  1.16.1

06-04-2019 11:09 PDT

  Dependencies

•   Don't pin google-api-core in libs using google-cloud-core. (#8213 <https://github.com/googleapis/google-cloud-python/pull/8213>)

  Documentation

•   Fix example in download_blob_to_file docstring. (#8201 <https://github.com/googleapis/google-cloud-python/pull/8201>)

•   Tweak fields docstring further. (#8040 <https://github.com/googleapis/google-cloud-python/pull/8040>)

•   Improve docs for fields argument to Bucket.list_blobs. (#8023 <https://github.com/googleapis/google-cloud-python/pull/8023>)

•   Fix docs typo. (#8027 <https://github.com/googleapis/google-cloud-python/pull/8027>)

  Internal / Testing Changes

•   Retry harder in face of 409/429 during module teardown. (#8113 <https://github.com/googleapis/google-cloud-python/pull/8113>)

•   Add more retries for 429s during teardown operations. (#8112 <https://github.com/googleapis/google-cloud-python/pull/8112>)

  1.16.0

05-16-2019 12:55 PDT

  New Features

•   Update Client.create_bucket to take a Bucket object or string. (#7820 <https://github.com/googleapis/google-cloud-python/pull/7820>)

•   Update Client.get_bucket to take a Bucket object or string. (#7856 <https://github.com/googleapis/google-cloud-python/pull/7856>)

•   Add Client.download_blob_to_file method. (#7949 <https://github.com/googleapis/google-cloud-python/pull/7949>)

•   Add client_info support to client / connection. (#7872 <https://github.com/googleapis/google-cloud-python/pull/7872>)

  Dependencies

•   Pin google-cloud-core >= 1.0.0, < 2.0dev. (#7993 <https://github.com/googleapis/google-cloud-python/pull/7993>)

•   Pin google-auth >= 1.2.0. (#7798 <https://github.com/googleapis/google-cloud-python/pull/7798>)

  1.15.0

04-17-2019 15:37 PDT

  New Features

•   Add support for V4 signed URLs (#7460 <https://github.com/googleapis/google-cloud-python/pull/7460>)

•   Add generation arguments to bucket / blob methods. (#7444 <https://github.com/googleapis/google-cloud-python/pull/7444>)

  Implementation Changes

•   Remove classifier for Python 3.4 for end-of-life. (#7535 <https://github.com/googleapis/google-cloud-python/pull/7535>)

•   Ensure that 'Blob.reload' passes encryption headers. (#7441 <https://github.com/googleapis/google-cloud-python/pull/7441>)

  Documentation

•   Update client library documentation URLs. (#7307 <https://github.com/googleapis/google-cloud-python/pull/7307>)

  Internal / Testing Changes

•   Fix failing system tests (#7714 <https://github.com/googleapis/google-cloud-python/pull/7714>)

•   Increase number of retries for 429 errors. (#7484 <https://github.com/googleapis/google-cloud-python/pull/7484>)

•   Un-flake KMS integration tests expecting empty bucket. (#7479 <https://github.com/googleapis/google-cloud-python/pull/7479>)

  1.14.0

02-06-2019 12:49 PST

  New Features

•   Add 'Bucket.iam_configuration' property, enabling Bucket-Policy-Only. (#7066 <https://github.com/googleapis/google-cloud-python/pull/7066>)

  Documentation

•   Improve docs for 'generate_signed_url'. (#7201 <https://github.com/googleapis/google-cloud-python/pull/7201>)

  1.13.2

12-17-2018 17:02 PST

  Implementation Changes

•   Update Blob.update_storage_class to support rewrite tokens. (#6527 <https://github.com/googleapis/google-cloud-python/pull/6527>)

  Internal / Testing Changes

•   Skip signing tests for insufficient credentials (#6917 <https://github.com/googleapis/google-cloud-python/pull/6917>)

•   Document Python 2 deprecation (#6910 <https://github.com/googleapis/google-cloud-python/pull/6910>)

•   Normalize docs for page_size / max_results / page_token. (#6842 <https://github.com/googleapis/google-cloud-python/pull/6842>)

  1.13.1

12-10-2018 13:31 PST

  Implementation Changes

•   Import iam.policy from google.api_core. (#6741 <https://github.com/googleapis/google-cloud-python/pull/6741>)

•   Accomodate new back-end restriction on retention period. (#6388 <https://github.com/googleapis/google-cloud-python/pull/6388>)

•   Avoid deleting a blob renamed to itself (#6365 <https://github.com/googleapis/google-cloud-python/pull/6365>)

  Dependencies

•   Update dependency to google-cloud-core (#6835 <https://github.com/googleapis/google-cloud-python/pull/6835>)

•   Bump minimum api_core version for all GAPIC libs to 1.4.1. (#6391 <https://github.com/googleapis/google-cloud-python/pull/6391>)

  Documentation

•   Normalize use of support level badges (#6159 <https://github.com/googleapis/google-cloud-python/pull/6159>)

  Internal / Testing Changes

•   Blacken libraries (#6794 <https://github.com/googleapis/google-cloud-python/pull/6794>)

•   Add templates for flake8, coveragerc, noxfile, and black. (#6642 <https://github.com/googleapis/google-cloud-python/pull/6642>)

•   Harden teardown in system tests. (#6444 <https://github.com/googleapis/google-cloud-python/pull/6444>)

•   Harden create_bucket call in systests vs. 429 TooManyRequests. (#6401 <https://github.com/googleapis/google-cloud-python/pull/6401>)

•   Skip public bucket test in VPC Service Controls (#6230 <https://github.com/googleapis/google-cloud-python/pull/6230>)

•   Fix lint failure. (#6219 <https://github.com/googleapis/google-cloud-python/pull/6219>)

•   Disable test running in VPC Service Controls restricted environment (#6215 <https://github.com/googleapis/google-cloud-python/pull/6215>)

•   Use new Nox (#6175 <https://github.com/googleapis/google-cloud-python/pull/6175>)

  1.13.0

  New Features

•   Add support for bucket retention policies (#5534 <https://github.com/googleapis/google-cloud-python/pull/5534>)

•   Allow destination.content_type to be None in Blob.compose. (#6031 <https://github.com/googleapis/google-cloud-python/pull/6031>)

  Implementation Changes

•   Ensure that method for Blob.generate_signed_url is uppercase. (#6110 <https://github.com/googleapis/google-cloud-python/pull/6110>)

  Documentation

•   Clarify GCS URL signing limitations on GCE (#6104 <https://github.com/googleapis/google-cloud-python/pull/6104>)

•   Redirect renamed 'usage.html'/'client.html' -> 'index.html'. (#5996 <https://github.com/googleapis/google-cloud-python/pull/5996>)

  1.12.0

  New Features

•   Add support for Python 3.7, drop support for Python 3.4. (#5942 <https://github.com/GoogleCloudPlatform/google-cloud-python/pull/5942>)

•   Add lifecycle rules helpers to bucket. (#5877 <https://github.com/GoogleCloudPlatform/google-cloud-python/pull/5877>)

  Implementation Changes

•   Add 'stacklevel=2' to deprecation warnings. (#5897 <https://github.com/GoogleCloudPlatform/google-cloud-python/pull/5897>)

  Documentation

•   Storage docs: fix typos. (#5933 <https://github.com/GoogleCloudPlatform/google-cloud-python/pull/5933>)

•   Prep storage docs for repo split. (#5923 <https://github.com/GoogleCloudPlatform/google-cloud-python/pull/5923>)

  Internal / Testing Changes

•   Harden systest teardown further. (#5900 <https://github.com/GoogleCloudPlatform/google-cloud-python/pull/5900>)

•   Nox: use inplace installs (#5865 <https://github.com/GoogleCloudPlatform/google-cloud-python/pull/5865>)

  1.11.0

  Implementation Changes

•   Preserve message / args from an InvalidResponse. (#5492)

•   Fix generating signed urls for blobs with non-ascii names. (#5625)

•   Move bucket location specification to Bucket.create; deprecate Bucket.location setter (#5808)

  New Features

•   Add Client.get_service_account_email. (#5765)

  Documentation

•   Clarify None values for resource-backed properties. (#5509)

•   Elaborate docs for {Bucket,Blob}.make_{public,private}; note how to enable anonymous accesss to Blob.public_url. (#5767)

  Internal / Testing Changes

•   Harden create_bucket systest against 429 responses. (#5535)

•   Add system test: signed URLs w/ non-ASCII blob name. (#5626)

•   Harden tearDownModule against 429 TooManyRequests. (#5701)

•   Retry notification.create() on 503 ServiceUnavailable. (#5741)

•   Fix failing KMS system tests. (#5832, #5837, #5860)

  1.10.0

  New Features

•   Add support for KMS keys (#5259)

•   Add {Blob,Bucket}make_private method (#5336)

  Internal / Testing Changes

•   Modify system tests to use prerelease versions of grpcio (#5304)

  1.9.0

  Implementation Changes

•   Change GCS batch endpoint from /batch to /batch/storage/v1 (#5040)

  New Features

•   Allow uploading files larger than 2GB by using Resumable Media Requests (#5187)

•   Add range downloads (#5081)

  Documentation

•   Update docstring to reflect correct units (#5277)

•   Replace link to 404 object IAM docs with a note on limited utility. (#5181)

•   Update doc reference in GCS client documentation (#5084)

•   Add see also for Bucket.create method call for Client.create_bucket() documentation. (#5073)

•   Link out to requester pays docs. (#5065)

  Internal / Testing Changes

•   Add testing support for Python 3.7; remove testing support for Python 3.4. (#5295)

•   Fix bad trove classifier

•   Remove unused var (flake8 warning) (#5280)

•   Fix unit test moving batch to batch/storage/v1 (#5082)

  1.8.0

  New features

•   Implement predefined acl (#4757)

•   Add support for resumable signed url generation (#4789)

  Implementation changes

•   Do not quote embedded slashes for public / signed URLs (#4716)

  Dependencies

•   Update dependency range for api-core to include v1.0.0 releases (#4944)

  Documentation

•   Missing word in docstring (#4763)

  Testing and internal changes

•   Install local dependencies when running lint (#4936)

•   Re-enable lint for tests, remove usage of pylint (#4921)

•   Normalize all setup.py files (#4909)

  1.7.0

  Features

•   Enable anonymous access to blobs in public buckets (#4315)

•   Make project optional / overridable for storage client (#4381)

•   Relax regex used to test for valid project IDs (#4543)

•   Add support for source_generation parameter to Bucket.copy_blob (#4546)

  1.6.0

  Documentation

•   Added link to "Python Development Environment Setup Guide" in project README (#4187, h/t to @michaelawyu)

  Dependencies

•   Upgrading to google-cloud-core >= 0.28.0 and adding dependency on google-api-core (#4221, #4280)

•   Requiring google-resumable-media >= 0.3.1 (#4244)

    PyPI: https://pypi.org/project/google-cloud-storage/1.6.0/

  Google Cloud Storage API

Overview of the APIs available for Google Cloud Storage API.

  All entries

Classes, methods and properties & attributes for Google Cloud Storage API.

classes <https://cloud.google.com/python/docs/reference/storage/latest/summary_class.html>

methods <https://cloud.google.com/python/docs/reference/storage/latest/summary_method.html>

properties and attributes <https://cloud.google.com/python/docs/reference/storage/latest/summary_property.html>

Author
Google APIs

Copyright
2019, Google