Changelog

PyPI History

2.8.0 (2023-03-29)

Features

  • Add multiprocessing and chunked downloading to transfer manager (#1002) (e65316b)

Bug Fixes

Documentation

2.7.0 (2022-12-07)

Features

  • Add “transfer_manager” module for concurrent uploads and downloads, as a preview feature (#943) (9998a5e)

  • Add use_auth_w_custom_endpoint support (#941) (5291c08)

Bug Fixes

  • Implement closed property on fileio.py classes (#907) (64406ca)

2.6.0 (2022-11-07)

Features

  • Add Autoclass support and samples (#791) (9ccdc5f), closes #797

  • Add predefined_acl to create_resumable_upload_session (#878) (2b3e8f9)

  • Enable delete_blobs() to preserve generation (#840) (8fd4c37), closes #814

  • Make tests run against environments other than prod (#883) (7dfeb62)

Bug Fixes

  • Align bucket bound hostname url builder consistency (#875) (8a24add)

  • BlobWriter.close() will do nothing if already closed (#887) (7707220)

  • Remove client side validations (#868) (928ebbc)

Documentation

  • Update comments in list_blobs sample (#866) (9469f5d)

  • Clarify prefixes entity in list_blobs usage (#837) (7101f47)

  • Streamline docs for migration (#876) (7c8a178)

  • Update docstring for lifecycle_rules to match generator behavior (#841) (36fb81b)

2.5.0 (2022-07-24)

Features

  • Custom Placement Config Dual Region Support (#819) (febece7)

Documentation

  • open file-like objects in byte mode for uploads (#824) (4bd3d1d)

2.4.0 (2022-06-07)

Features

  • add AbortIncompleteMultipartUpload lifecycle rule (#765) (b2e5150)

  • support OLM Prefix/Suffix (#773) (187cf50)

Bug Fixes

  • fix rewrite object in CMEK enabled bucket (#807) (9b3cbf3)

Documentation

  • fix changelog header to consistent size (#802) (4dd0907)

  • samples: Update the Recovery Point Objective (RPO) sample output (#725) (b0bf411)

  • Update generation_metageneration.rst with a missing space (#798) (1e7cdb6)

  • update retry docs (#808) (c365d5b)

2.3.0 (2022-04-12)

Features

  • add dual region bucket support and sample (#748) (752e8ab)

  • track invocation id for retry metrics (#741) (bd56931)

Bug Fixes

Documentation

2.2.1 (2022-03-15)

Bug Fixes

2.2.0 (2022-03-14)

Features

  • allow no project in client methods using storage emulator (#703) (bcde0ec)

Bug Fixes

  • add user agent in python-storage when calling resumable media (c7bf615)

  • deps: require google-api-core>=1.31.5, >=2.3.2 (#722) (e9aab38)

  • Fix BlobReader handling of interleaved reads and seeks (#721) (5d1cfd2)

  • retry client side requests timeout (#727) (e0b3b35)

Documentation

2.1.0 (2022-01-19)

Features

2.0.0 (2022-01-12)

⚠ BREAKING CHANGES

  • Remove Python 2 support (#657)

Features

1.44.0 (2022-01-05)

Features

  • add raw_download kwarg to BlobReader (#668) (10cdad6)

Documentation

  • Describe code sample more specifically (#660) (0459cb4)

  • refresh readme instructions (#667) (ceb9314)

  • This is just a simple PR to better describe what the code is doing in the comments. (0459cb4)

  • use writeable streamin example for ‘download_blob_to_file’ (#676) (96092d4)

1.43.0 (2021-11-15)

Features

Bug Fixes

  • raise a ValueError in BucketNotification.create() if a topic name is not set (#617) (9dd78df)

Documentation

  • add contributing and authoring guides under samples/ (#633) (420591a)

  • add links to samples and how to guides (#641) (49f78b0)

  • add README to samples subdirectory (#639) (58af882)

  • update samples readme with cli args (#651) (75dda81)

1.42.3 (2021-09-30)

Bug Fixes

  • changeover unspecified to inherited (#603) (283a419)

  • check response code in batch.finish (#609) (318a286)

  • skip tests that use unspecified pap until we get the change in (#600) (38b9b55)

1.42.2 (2021-09-16)

Bug Fixes

  • add preconditions and retry config support to ACL patch operationss (#586) (4333caf)

  • add unpinned protobuf for python3 (#592) (53f7ad0)

  • pin six as a required dependency (#589) (9ca97bf)

1.42.1 (2021-09-07)

Bug Fixes

  • do not append duplicates to user agent string (#570) (57cf3a1)

Documentation

  • pass explicit ‘client’ in ‘{Blob.Bucket}.from_string’ examples (#545) (6eff22d)

1.42.0 (2021-08-05)

Features

  • add ‘page_size’ parameter to ‘Bucket.list_blobs, list_buckets (#520) (c5f4ad8)

Bug Fixes

  • deps: add explicit ranges for ‘google-api-core’ and ‘google-auth’ (#530) (310f207)

  • downloading no longer marks metadata fields as ‘changed’ (#523) (160d1ec)

  • make ‘requests.exceptions.ChunkedEncodingError retryable by default (#526) (4abb403)

Documentation

  • update supported / removed Python versions in README (#519) (1f1b138)

1.41.1 (2021-07-20)

Bug Fixes

  • deps: pin {api,cloud}-core, auth to allow 2.x versions on Python 3 (#512) (4d7500e)

  • remove trailing commas from error message constants (#505) (d4a86ce), closes #501

Documentation

  • replace usage of deprecated function download_as_string in docs (#508) (8dfa4d4)

1.41.0 (2021-07-13)

Features

  • add support for Etag headers on reads (#489) (741d3fd)

Bug Fixes

  • deps: update minimum dependency versions to pick up bugfixes (#496) (92251a5), closes #494

  • populate etag / generation / metageneration properties during download (#488) (49ba14c)

  • revise and rename is_etag_in_json(data) (#483) (0a52546)

1.40.0 (2021-06-30)

Features

  • add preconditions and retry configuration to blob.create_resumable_upload_session (#484) (0ae35ee)

  • add public access prevention to bucket IAM configuration (#304) (e3e57a9)

Bug Fixes

  • replace default retry for upload operations (#480) (c027ccf)

1.39.0 (2021-06-21)

Features

  • media operation retries can be configured using the same interface as with non-media operation (#447) (0dbbb8a)

Bug Fixes

  • add ConnectionError to default retry (#445) (8344253)

  • apply idempotency policies for ACLs (#458) (2232f38)

  • replace python lifecycle action parsing ValueError with warning (#437) (2532d50)

  • revise blob.compose query parameters if_generation_match (#454) (70d19e7)

Documentation

  • streamline ‘timeout’ / ‘retry’ docs in docstrings (#461) (78b2eba)

  • streamline docstrings for conditional parmas (#464) (6999370)

1.38.0 (2021-04-26)

Features

  • add getters and setters for encryption_key and kms_key_name (#409) (2adfb59)

Bug Fixes

Documentation

  • revise docstrings for generate_signed_url (#408) (f090548)

1.37.1 (2021-04-02)

Bug Fixes

  • Ensure consistency check in test runs even if expected error occurs (#402) (416bcd4)

  • silence expected errors for routine operations on BlobReader (#400) (d52853b)

1.37.0 (2021-03-24)

Features

Bug Fixes

  • update user_project usage and documentation in bucket/client class methods (#396) (1a2734b)

1.36.2 (2021-03-09)

Bug Fixes

  • update batch connection to request api endpoint info from client (#392) (91fc6d9)

1.36.1 (2021-02-19)

Bug Fixes

  • allow metadata keys to be cleared (#383) (79d27da), closes #381

  • allow signed url version v4 without signed credentials (#356) (3e69bf9)

  • correctly encode bytes for V2 signature (#382) (f44212b)

1.36.0 (2021-02-10)

Features

Bug Fixes

1.35.1 (2021-01-28)

Bug Fixes

  • address incorrect usage of request preconditions (#366) (321658c)

  • Amend default retry behavior for bucket operations on client (#358) (b91e57d)

1.35.0 (2020-12-14)

Features

  • support ConnectionError retries for media operations (#342) (e55b25b)

1.34.0 (2020-12-11)

Features

  • make retry parameter public and added in other methods (#331) (910e34c)

Bug Fixes

  • avoid triggering global logging config (#333) (602108a), closes #332

  • fall back to ‘charset’ of ‘content_type’ in ‘download_as_text’ (#326) (63ff233), closes #319

  • fix conditional retry handling of camelCase query params (#340) (4ff6141)

  • retry uploads only conditionally (#316) (547740c)

  • update ‘custom_time’ setter to record change (#323) (5174154), closes #322

1.33.0 (2020-11-16)

Features

  • add classifiers for python3.9 and remove for python3.5 (#295) (f072825)

  • add testing support for Python 3.9, drop Python 3.5 (#313) (fa14009)

Bug Fixes

  • use passed-in client within Blob.from_string and helpers (#290) (d457ce3), closes #286

  • preserve metadata value when uploading new file content (#298) (5ab6b0d), closes #293

1.32.0 (2020-10-16)

Features

  • retry API calls with exponential backoff (#287) (fbe5d9c)

Bug Fixes

  • field policy return string (#282) (c356b84)

  • self-upload files for Unicode system test (#296) (6f865d9)

  • use version.py for versioning, avoid issues with discovering version via get_distribution (#288) (fcd1c4f)

1.31.2 (2020-09-23)

Documentation

  • fix docstring example for ‘blob.generate_signed_url’ (#278) (2dc91c9)

1.31.1 (2020-09-16)

Bug Fixes

  • add requests as a dependency (#271) (ec52b38)

  • preserve existing blob hashes when ‘X-Goog-Hash header’ is not present (#267) (277afb8)

  • blob: base64 includes additional characters (#258) (cf0774a)

Documentation

  • add docs signed_url expiration take default utc (#250) (944ab18)

1.31.0 (2020-08-26)

Features

  • add configurable checksumming for blob uploads and downloads (#246) (23b7d1c)

  • add support for ‘Blob.custom_time’ and lifecycle rules (#199) (180873d)

  • error message return from api (#235) (a8de586)

  • storage: add support of daysSinceNoncurrentTime and noncurrentTimeBefore (#162) (136c097)

  • pass ‘client_options’ to base class ctor (#225) (e1f91fc), closes #210

  • rename ‘Blob.download_as_{string,bytes}’, add ‘Blob.download_as_text’ (#182) (73107c3)

Bug Fixes

Documentation

1.30.0 (2020-07-24)

Features

  • add timeouts to Blob methods where missing (#185) (6eeb855)

  • auto-populate standard headers for non-chunked downloads (#204) (d8432cd), closes #24

  • migrate to Service Account Credentials API (#189) (e4990d0)

Bug Fixes

  • add multiprocessing.rst to synthool excludes (#186) (4d76e38)

Documentation

Documentation

Dependencies

1.29.0 (2020-06-09)

Features

  • add generationmatch args into Blob.compose() (#122) (dc01c59)

  • add Bucket.reload() and Bucket.update() wrappers to restrict generation match args (#153) (76dd9ac), closes #127

  • add helper for bucket bound hostname URLs (#137) (b26f9fa), closes #121

  • add ifgenerationmatch support for Bucket.rename_blob() (#141) (f52efc8)

  • add ifgenerationMatch support, pt1 (#123) (0944442)

  • add offset and includeTrailingPrefix options to list_blobs (#125) (d84c0dd)

  • Create CODEOWNERS (#135) (32a8d55)

Bug Fixes

  • add documentaion of list_blobs with user project (#147) (792b21f)

  • add projection parameter to blob.reload method (#146) (ddad20b)

  • add unused variables to method generation match (#152) (f6574bb)

  • change the method names in snippets file (#161) (e516ed9)

  • fix upload object with bucket cmek enabled (#158) (5f27ffa)

  • set default POST policy scheme to “http” (#172) (90c020d)

1.28.1 (2020-04-28)

Bug Fixes

  • anonymous credentials for private bucket (#107) (6152ab4)

  • add bucket name into POST policy conditions (#118) (311ecab)

1.28.0 (2020-04-22)

Features

  • add arguments for *GenerationMatch uploading options (#111) (b11aa5f)

Bug Fixes

1.27.0 (2020-04-01)

Features

  • generate signed URLs for blobs/buckets using virtual hostname (#58) (23df542)

  • Add cname support for V4 signature (#72) (cc853af)

  • add conformance tests for virtual hosted style signed URLs (#83) (5adc8b0)

  • add get notification method (#77) (f602252)

  • improve v4 signature query parameters encoding (#48) (8df0b55)

Bug Fixes

  • fix blob metadata to None regression (#60) (a834d1b)

  • add classifer for Python 3.8 (#63) (1b9b6bc)

  • make v4 signing formatting consistent w/ spec (#56) (8712da8)

  • use correct IAM object admin role (#71) (2e27edd)

  • remove docstring of retrun in reload method (#78) (4abeb1c)

  • use OrderedDict while encoding POST policy (#95) (df560e1)

1.26.0 (2020-02-12)

Features

  • add support for signing URLs using token (#9889) (ad280bf)

  • add timeout parameter to public methods (#44) (63abf07)

Bug Fixes

  • fix documentation of max_result parameter in list_blob (#43) (ff15f19)

  • fix system test and change scope for iam access token (#47) (bc5375f)

  • remove low version error assertion from iam conditions system tests (#53) (8904aee)

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)

  • fix(storage): fix document of delete blob (#10015)

New Features

  • feat(storage): support optionsRequestedPolicyVersion (#9989)

Dependencies

  • chore(storage): bump core dependency to 1.2.0 (#10160)

1.24.1

01-02-2020 13:20 PST

Implementation Changes

  • Add ‘ARCHIVE’ storage class (#9533)

1.24.0

01-02-2020 10:39 PST

Implementation Changes

-str() metadata for for blob (#9796)

New Features

  • Add timeout parameter to Batch interface to match google-cloud-core (#10010)

1.23.0

11-12-2019 12:57 PST

Implementation Changes

  • Move create_bucket implementation from Bucket to Client. (#8604)

New Features

  • Add opt-in raw download support. (#9572)

Dependencies

  • Pin google-resumable-media >= 0.5.0, < 0.6dev. (#9572)

Documentation

  • Add python 2 sunset banner to documentation. (#9036)

Internal / Testing Changes

  • Fix query-string order dependent assert. (#9728)

  • Normalize VPCSC configuration in system tests. (#9616)

1.22.0

11-05-2019 10:22 PST

New Features

  • Add UBLA attrs to IAMConfiguration. (#9475)

1.21.0

10-28-2019 21:52 PDT

Implementation Changes

  • Add gcloud-python header to user agent (#9551)

  • Don’t report a gapic version for storage (#9549)

  • Update storage endpoint from www.googleapis.com to storage.googleapis.com (#9543)

  • Call anonymous client method to remove dependency of google application credentials (#9455)

  • Enable CSEK w/ V4 signed URLs (#9450)

New Features

  • Support predefined ACLs in Bucket.create (#9334)

Documentation

  • Add hmac_key and notification documentation rst files (#9529)

  • Remove references to the old authentication credentials (#9456)

  • Clarify docstring for Blob.download_as_string (#9332)

1.20.0

09-26-2019 06:45 PDT

New Features

  • Add user_project param to HMAC-related methods. (#9237)

  • Add Blob.from_string and Bucket.from_string factories. (#9143)

Documentation

  • Fix intersphinx reference to requests. (#9294)

  • Fix deep / broken URL for service account setup. (#9164)

Internal / Testing Changes

  • Fix typo in _helpers.py. (#9239)

  • In systests, retry bucket creation on 503. (#9248)

  • Avoid using REGIONAL / MULTI_REGIONAL in examples, tests. (#9205)

  • Move benchwrapper into tests/perf. (#9246)

  • Add support for STORAGE_EMULATOR_HOST; add benchwrapper script. (#9219)

1.19.0

08-28-2019 09:45 PDT

Implementation Changes

  • Expose ‘HMACKeyMetadata.id’ field. (#9115)

  • Make ‘Blob.bucket’ a readonly property. (#9113)

  • Clarify ‘response_type’ for signed_url methods. (#8942)

New Features

  • Add client_options to constructors for manual clients. (#9054)

Documentation

  • Remove compatability badges from READMEs. (#9035)

Internal / Testing Changes

  • Remove CI for gh-pages, use googleapis.dev for api_core refs. (#9085)

  • Fix tests broken by yesterday’s google-resumable-media release. (#9119)

  • Harden ‘test_access_to_public_bucket’ systest against 429 / 503 errors. (#8997)

1.18.0

08-07-2019 00:37 PDT

New Features

  • Add HMAC key support. (#8430)

Documentation

  • Mark old storage classes as legacy, not deprecated. (#8887)

Internal / Testing Changes

  • Normalize ‘lint’ / ‘blacken’ support under nox. (#8831)

  • Update intersphinx mapping for requests. (#8805)

1.17.0

07-24-2019 12:37 PDT

New Features

  • Add Bucket.location_type property. (#8570)

  • Add Client.list_blobs(bucket_or_name). (#8375)

Implementation Changes

  • Retry bucket creation in signing setup. (#8620)

  • Fix URI -> blob name conversion in Client download_blob_to_file. (#8440)

  • Avoid escaping tilde in blob public / signed URLs. (#8434)

  • Add generation to ‘Blob.repr’. (#8423)

Documentation

  • Link to googleapis.dev documentation in READMEs. (#8705)

  • Add compatibility check badges to READMEs. (#8288)

  • Fix example in Client.download_blob_to_file docstring. (#8629)

  • Remove typing information for kwargs to not conflict with type checkers (#8546)

Internal / Testing Changes

  • Skip failing test_bpo_set_unset_preserves_acls systest. (#8617)

  • Add nox session ‘docs’. (#8478)

  • Add docs job to publish to googleapis.dev. (#8464)

1.16.1

06-04-2019 11:09 PDT

Dependencies

  • Don’t pin google-api-core in libs using google-cloud-core. (#8213)

Documentation

  • Fix example in download_blob_to_file docstring. (#8201)

  • Tweak fields docstring further. (#8040)

  • Improve docs for fields argument to Bucket.list_blobs. (#8023)

  • Fix docs typo. (#8027)

Internal / Testing Changes

  • Retry harder in face of 409/429 during module teardown. (#8113)

  • Add more retries for 429s during teardown operations. (#8112)

1.16.0

05-16-2019 12:55 PDT

New Features

  • Update Client.create_bucket to take a Bucket object or string. (#7820)

  • Update Client.get_bucket to take a Bucket object or string. (#7856)

  • Add Client.download_blob_to_file method. (#7949)

  • Add client_info support to client / connection. (#7872)

Dependencies

  • Pin google-cloud-core >= 1.0.0, < 2.0dev. (#7993)

  • Pin google-auth >= 1.2.0. (#7798)

1.15.0

04-17-2019 15:37 PDT

New Features

  • Add support for V4 signed URLs (#7460)

  • Add generation arguments to bucket / blob methods. (#7444)

Implementation Changes

  • Remove classifier for Python 3.4 for end-of-life. (#7535)

  • Ensure that ‘Blob.reload’ passes encryption headers. (#7441)

Documentation

  • Update client library documentation URLs. (#7307)

Internal / Testing Changes

  • Fix failing system tests (#7714)

  • Increase number of retries for 429 errors. (#7484)

  • Un-flake KMS integration tests expecting empty bucket. (#7479)

1.14.0

02-06-2019 12:49 PST

New Features

  • Add ‘Bucket.iam_configuration’ property, enabling Bucket-Policy-Only. (#7066)

Documentation

  • Improve docs for ‘generate_signed_url’. (#7201)

1.13.2

12-17-2018 17:02 PST

Implementation Changes

  • Update Blob.update_storage_class to support rewrite tokens. (#6527)

Internal / Testing Changes

  • Skip signing tests for insufficient credentials (#6917)

  • Document Python 2 deprecation (#6910)

  • Normalize docs for page_size / max_results / page_token. (#6842)

1.13.1

12-10-2018 13:31 PST

Implementation Changes

  • Import iam.policy from google.api_core. (#6741)

  • Accomodate new back-end restriction on retention period. (#6388)

  • Avoid deleting a blob renamed to itself (#6365)

Dependencies

  • Update dependency to google-cloud-core (#6835)

  • Bump minimum api_core version for all GAPIC libs to 1.4.1. (#6391)

Documentation

  • Normalize use of support level badges (#6159)

Internal / Testing Changes

  • Blacken libraries (#6794)

  • Add templates for flake8, coveragerc, noxfile, and black. (#6642)

  • Harden teardown in system tests. (#6444)

  • Harden create_bucket call in systests vs. 429 TooManyRequests. (#6401)

  • Skip public bucket test in VPC Service Controls (#6230)

  • Fix lint failure. (#6219)

  • Disable test running in VPC Service Controls restricted environment (#6215)

  • Use new Nox (#6175)

1.13.0

New Features

  • Add support for bucket retention policies (#5534)

  • Allow destination.content_type to be None in Blob.compose. (#6031)

Implementation Changes

  • Ensure that method for Blob.generate_signed_url is uppercase. (#6110)

Documentation

  • Clarify GCS URL signing limitations on GCE (#6104)

  • Redirect renamed ‘usage.html’/’client.html’ -> ‘index.html’. (#5996)

1.12.0

New Features

  • Add support for Python 3.7, drop support for Python 3.4. (#5942)

  • Add lifecycle rules helpers to bucket. (#5877)

Implementation Changes

  • Add ‘stacklevel=2’ to deprecation warnings. (#5897)

Documentation

  • Storage docs: fix typos. (#5933)

  • Prep storage docs for repo split. (#5923)

Internal / Testing Changes

  • Harden systest teardown further. (#5900)

  • Nox: use inplace installs (#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/