Skip to content

Conversation

@googlyrahman
Copy link

The PR sync the main and async branch.

chandra-siri and others added 11 commits December 9, 2025 13:32
…upload (#1654)

feat: send entire object checksum in the final api call of resumable
upload

fixes b/461994245

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
feat: Support urllib3 >= 2.6.0

**Context**:
* This library implements a custom decoders ( `_GzipDecoder` ,
`_BrotliDecoder` ) which inherit from `urllib3.response.ContentDecoder`
* Interface of `urllib3.response.ContentDecoder` was changed in
[2.6.0](https://urllib3.readthedocs.io/en/stable/changelog.html#id1) to
fix security vulnerability for highly compressed data reads.
(Decompression bombs)

Hence we need to change our interfaces as well. 

**Changes**
* Add `max_length` param on decompress method, provide default value of
-1 (same as urllib3's decompress)
* Provide backwards compatibility  ( ie urllib3 <= 2.5.0)
🤖 I have created a release *beep* *boop*
---


##
[3.7.0](v3.6.0...v3.7.0)
(2025-12-09)


### Features

* Auto enable mTLS when supported certificates are detected
([#1637](#1637))
([4e91c54](4e91c54))
* Send entire object checksum in the final api call of resumable upload
([#1654](#1654))
([ddce7e5](ddce7e5))
* Support urllib3 &gt;= 2.6.0
([#1658](#1658))
([57405e9](57405e9))


### Bug Fixes

* **bucket:** Move blob fails when the new blob name contains characters
that need to be url encoded
([#1605](#1605))
([ec470a2](ec470a2))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: Chandra Shekhar Sirimala <chandrasiri@google.com>
chore: add gcs-fs as CODEOWNERS
fix: close write object stream always. 

otherwise Task will remain for long time until GC kills it and it'll
throw this `"Task was destroyed but it is pending!"`
…1636)

fix(experimental): no state lookup while opening bidi-write stream
This PR adds support for Python 3.14 to the library.

Key changes include:
- Updating `setup.py` to include the Python 3.14 classifier.
- Updating `testing/constraints-3.14.txt` to specify `grpcio >= 1.75.1`.
- Updating `noxfile.py` to include 3.14 sessions and set default to
3.14.
- Updating `.github/sync-repo-settings.yaml` to include 3.14 in required
checks.

Tests were run locally using the `python-multi` Docker image for Python
3.9 and 3.14. Some unit tests failed due to environment issues within
the container, but these are not expected to occur in the CI
environment.

---------

Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
Co-authored-by: Anthonios Partheniou <partheniou@google.com>
…nt (#1668)

skip failing samples due to public access prevention enforcement. 

More Details on b/469643064
chore: add system test for cloud path
chore: add system 3.9 tests as required
feat: expose persisted size in MRD (MultiRangeReader)
@googlyrahman googlyrahman requested review from a team as code owners December 18, 2025 07:01
@product-auto-label product-auto-label bot added the size: l Pull request size is large. label Dec 18, 2025
@product-auto-label product-auto-label bot added the api: storage Issues related to the googleapis/python-storage API. label Dec 18, 2025
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @googlyrahman, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request synchronizes the main and async branches, primarily focusing on advancing Python version support to include Python 3.14 and refining the asynchronous I/O mechanisms for Google Cloud Storage. It also updates CI/CD pipelines, adjusts code ownership, and introduces a significant improvement in resumable upload checksum handling to bolster data integrity. These changes collectively ensure the library remains current with Python ecosystem developments and offers more robust and efficient storage interactions.

Highlights

  • Python 3.14 Support: Official support for Python 3.14 has been added across the project, including updates to noxfile.py, setup.py, and CONTRIBUTING.rst. Older Python 3.5 and 3.6 versions have been deprecated.
  • Asynchronous I/O Enhancements: Asynchronous object writers and downloaders have been improved with the introduction of persisted_size tracking and a streamlined open method for AsyncAppendableObjectWriter.
  • Resumable Upload Checksum: The system now sends the entire object checksum in the final API call for resumable uploads, enhancing data integrity verification.
  • CI/CD and Codeowner Updates: Kokoro presubmit configurations have been updated for Python 3.9 and 3.14, and the @googleapis/gcs-fs team has been added to CODEOWNERS and .repo-metadata.json.
  • Urllib3 Compatibility: A fallback mechanism has been implemented for urllib3 decompression to ensure compatibility with versions older than 2.6.0.
  • Version Bump and Changelog: The project version has been updated to 3.7.0, incorporating new features like mTLS auto-enablement and a fix for move_blob URL encoding issues.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request synchronizes the main and async branches, introducing a variety of changes. Key updates include dropping support for older Python versions while adding support for Python 3.14, updating dependencies, and enhancing CI configurations. A notable feature is the ability to send checksums with the final chunk of resumable uploads for improved data integrity. The experimental asyncio modules have also received several bug fixes and improvements. The tests have been updated accordingly to cover these changes. Overall, the changes are well-implemented and improve the library. I have one minor suggestion to fix a typo in a docstring.

:type read_ranges: List[Tuple[int, int, "BytesIO"]]
:param read_ranges: A list of tuples, where each tuple represents a
byte range (start_byte, bytes_to_read, writeable_buffer). Buffer has
combintaion of byte_range and writeable buffer in format -
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

There's a typo in the docstring. combintaion should be combination.

Suggested change
combintaion of byte_range and writeable buffer in format -
combination of byte_range and writeable buffer in format -

@googlyrahman googlyrahman added kokoro:run Add this label to force Kokoro to re-run the tests. kokoro:force-run Add this label to force Kokoro to re-run the tests. labels Dec 18, 2025
@yoshi-kokoro yoshi-kokoro removed kokoro:run Add this label to force Kokoro to re-run the tests. kokoro:force-run Add this label to force Kokoro to re-run the tests. labels Dec 18, 2025
fix: add system test for opening with read_handle
@googlyrahman googlyrahman added kokoro:run Add this label to force Kokoro to re-run the tests. kokoro:force-run Add this label to force Kokoro to re-run the tests. labels Dec 19, 2025
@yoshi-kokoro yoshi-kokoro removed kokoro:run Add this label to force Kokoro to re-run the tests. kokoro:force-run Add this label to force Kokoro to re-run the tests. labels Dec 19, 2025
@googlyrahman googlyrahman enabled auto-merge (squash) December 19, 2025 07:13
@googlyrahman googlyrahman added kokoro:run Add this label to force Kokoro to re-run the tests. kokoro:force-run Add this label to force Kokoro to re-run the tests. labels Dec 19, 2025
@yoshi-kokoro yoshi-kokoro removed kokoro:run Add this label to force Kokoro to re-run the tests. kokoro:force-run Add this label to force Kokoro to re-run the tests. labels Dec 19, 2025
chore: Prevent OS Login key accumulation in e2e tests
@googlyrahman googlyrahman merged commit 096642f into async Dec 19, 2025
14 of 16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

api: storage Issues related to the googleapis/python-storage API. size: l Pull request size is large.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants