-
Notifications
You must be signed in to change notification settings - Fork 172
Comparing changes
Open a pull request
base repository: googleapis/python-storage
base: v3.9.0
head repository: googleapis/python-storage
compare: v3.10.0
- 20 commits
- 53 files changed
- 11 contributors
Commits on Feb 4, 2026
-
chore: Migrate gsutil usage to gcloud storage (#1732)
Automated: Migrate {target_path} from gsutil to gcloud storage This CL is part of the on going effort to migrate from the legacy `gsutil` tool to the new and improved `gcloud storage` command-line interface. `gcloud storage` is the recommended and modern tool for interacting with Google Cloud Storage, offering better performance, unified authentication, and a more consistent command structure with other `gcloud` components. 🚀 ### Automation Details This change was **generated automatically** by an agent that targets users of `gsutil`. The transformations applied are based on the [gsutil to gcloud storage migration guide](http://go/gsutil-gcloud-storage-migration-guide). ###⚠️ Action Required: Please Review and Test Carefully While we have based the automation on the migration guide, every use case is unique. **It is crucial that you thoroughly test these changes in environments appropriate to your use-case before merging.** Be aware of potential differences between `gsutil` and `gcloud storage` that could impact your workflows. For instance, the structure of command output may have changed, requiring updates to any scripts that parse it. Similarly, command behavior can differ subtly; the `gcloud storage rsync` command has a different file deletion logic than `gsutil rsync`, which could lead to unintended file deletions. Our migration guides can help guide you through a list of mappings and some notable differences between the two tools. Standard presubmit tests are run as part of this CL's workflow. **If you need to target an additional test workflow or require assistance with testing, please let us know.** Please verify that all your Cloud Storage operations continue to work as expected to avoid any potential disruptions in production. ### Support and Collaboration The `GCS CLI` team is here to help! If you encounter any issues, have a complex use case that this automated change doesn't cover, or face any other blockers, please don't hesitate to reach out. We are happy to work with you to test and adjust these changes as needed. **Contact:** `[email protected]` We appreciate your partnership in this important migration effort! #gsutil-migration Co-authored-by: Chandra Shekhar Sirimala <[email protected]>Configuration menu - View commit details
-
Copy full SHA for 2231120 - Browse repository at this point
Copy the full SHA 2231120View commit details -
chore: add depreciation warning for generation_number (#1740)
Add a warning that generation_number will be deprecated in the next major release.
Configuration menu - View commit details
-
Copy full SHA for d9b1923 - Browse repository at this point
Copy the full SHA d9b1923View commit details
Commits on Feb 11, 2026
-
chore: remove python 3.9 support. (#1748)
chore: remove python 3.9 support. Details in b/483015736
Configuration menu - View commit details
-
Copy full SHA for 5f1a1ea - Browse repository at this point
Copy the full SHA 5f1a1eaView commit details -
fix: don't flush at every append, results in bad perf (#1746)
fix: don't flush at every append, results in bad perf
Configuration menu - View commit details
-
Copy full SHA for ab62d72 - Browse repository at this point
Copy the full SHA ab62d72View commit details
Commits on Feb 19, 2026
-
feat: add time based benchmarks (#1749)
feat: add time based benchmarks
Configuration menu - View commit details
-
Copy full SHA for 09b1d9d - Browse repository at this point
Copy the full SHA 09b1d9dView commit details -
fix: init mp pool & grpc client once, use os.sched_setaffinity (#1751)
fix: init mp pool & grpc client once, use os.sched_setaffinity - mp pool is initalize once per benchmark run, otherwise time to init pool is affecting throughput calculations. - grpc client should be intialized once per process in an event loop, otherwise processes get stuck . - os.sched_setaffinity helps in pinning the process to a set of cores to avoid hard irq from nic.
Configuration menu - View commit details
-
Copy full SHA for a9eb82c - Browse repository at this point
Copy the full SHA a9eb82cView commit details
Commits on Feb 23, 2026
-
fix: pass token correctly, '&' instead of ',' (#1756)
fix: pass token correctly, '&' instead of ',' --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for d8dd1e0 - Browse repository at this point
Copy the full SHA d8dd1e0View commit details
Commits on Feb 26, 2026
-
chore: replace old teams with cloud-sdk-python-team and gcs-team (#1758)
This PR replaces the old yoshi-python team with cloud-sdk-python-team, gcs-fs with gcs-fs-team, and gcs-sdk-team with gcs-team. b/478003109
Configuration menu - View commit details
-
Copy full SHA for 4d98e32 - Browse repository at this point
Copy the full SHA 4d98e32View commit details
Commits on Mar 3, 2026
-
chore: add Rapid x region sys test (#1765)
feat: Add system test for cross-region buckets - Adds a new system test, test_basic_wrd_x_region, to verify functionality with cross-region GCS buckets. - Also updates the Cloud Build configuration to pass the necessary _CROSS_REGION_BUCKET environment variable to the test environment This PR is a cherry-picked from #1760 because that PR is blocked by b/489420625Configuration menu - View commit details
-
Copy full SHA for 810441c - Browse repository at this point
Copy the full SHA 810441cView commit details
Commits on Mar 10, 2026
-
feat: Triger bidi conformance tests (#1757)
feat: Triger bidi conformance tests Changes / fixes - When (read/write) stream breaks, don't do `.close` on it. (this leads to reading the same error message again and again until retry loop times out) - Bidi Conf test were ran directly as a module , change that so that they get triggered in Kokoro (done that by adding `test_` so that pytest pickup the tests) - Provide a way to create anonymous connection in grpc client. - Unit tests and other minor changes. ~blocked because of b/489420625~ --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for 8dd0a80 - Browse repository at this point
Copy the full SHA 8dd0a80View commit details
Commits on Mar 11, 2026
-
fix(transfer_manager): Prevent path traversal in `download_many_to_pa…
…th` (#1768) fix(transfer_manager): Prevent path traversal in download_many_to_path This PR addresses a security vulnerability where `download_many_to_path` could be exploited to write files outside the intended destination directory. The fix ensures that the resolved path for each blob download remains within the bounds of the user-provided `destination_directory`. If a blob name would result in a path outside this directory (e.g., by using `../`), a warning is issued, and that specific blob download is skipped. This prevents directory traversal attacks. Absolute paths in blob names (e.g., `/etc/passwd`) are now treated as relative to the `destination_directory`, so `/etc/passwd` will be downloaded to `destination_directory/etc/passwd`. See b/449616593 for more details. BREAKING CHANGE: Blobs that would resolve to a path outside the `destination_directory` are no longer downloaded. While this is a security fix, users relying on the previous behavior to write files outside the target directory will see a change.
Configuration menu - View commit details
-
Copy full SHA for 700fec3 - Browse repository at this point
Copy the full SHA 700fec3View commit details -
chore: clean up release please configuration files (#1667)
Release please is no longer used by Python repositories in the `googleapis` Github organization. Please review the maintain guide for librarian which supersedes release-please. As an example, `librarian release stage` will create a release PR https://github.com/googleapis/librarian/blob/main/doc/library-maintainer-guide.md
Configuration menu - View commit details
-
Copy full SHA for eee4b3c - Browse repository at this point
Copy the full SHA eee4b3cView commit details
Commits on Mar 13, 2026
-
chore: don't use mtls in gcb until b/492452834 is fixed (#1769)
chore: don't use mtls in gcb until b/492452834 is fixed Details in b/492452834
Configuration menu - View commit details
-
Copy full SHA for 35b39b6 - Browse repository at this point
Copy the full SHA 35b39b6View commit details
Commits on Mar 16, 2026
-
chore: skip hmac tests until b/493225655 is fixed (#1771)
Skipping hmac tests if they fail with a 412 PreconditionFailed. This is occurring because the testing project python-docs-samples-tests has the constraints/iam.disableServiceAccountKeyCreation Organization Policy enforced.
Configuration menu - View commit details
-
Copy full SHA for 141f7ac - Browse repository at this point
Copy the full SHA 141f7acView commit details
Commits on Mar 17, 2026
-
feat: add support for bucket encryption enforcement config (#1742)
Implemented bucket encryption enforcement configuration support. Added `EncryptionEnforcementConfig` and `BucketEncryption` classes. Added `encryption` property to `Bucket`. Added unit tests. --- *PR created automatically by Jules for task [10151670798613550332](https://jules.google.com/task/10151670798613550332) started by @rajeevpodar* --------- Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> Co-authored-by: rajeevpodar <[email protected]> Co-authored-by: Nidhi Nandwani <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 2a6e8b0 - Browse repository at this point
Copy the full SHA 2a6e8b0View commit details -
feat(storage): Use raw proto access for read resumption strategy (#1764)
The proto-plus library provides protocol buffer message classes that behave like native Python types. While convenient, my profiling confirms this abstraction comes with a significant performance penalty in our hot paths. Every time we access a field on a proto-plus object, the library triggers dynamic lookups and wrapper instantiation. In our hot data ingestion loop, this overhead accumulates rapidly over multiple chunks. My benchmarking shows that accessing the underlying C++ Protobuf directly is ~2x faster than going through the proto-plus wrapper (measured over 30,000 iterations). While 30,000 operations might sound high, it corresponds to downloading just 60GB of data (assuming 2MB chunks) for accessing just one attribute. For high-performance workloads (e.g., downloading at 1GB/s) so it only takes 60s to complete the process. Additionally this wrapper overhead introduces measurable latency not just for data access, but for every metadata check and state update that repeats per chunk. This PR bypass proto-plus in our critical IO loops and interact directly with the underlying C++ Protobuf structures. This eliminates the "Wrapper tax" without changing the external behavior of the application.
Configuration menu - View commit details
-
Copy full SHA for 14cfd61 - Browse repository at this point
Copy the full SHA 14cfd61View commit details
Commits on Mar 18, 2026
-
feat(storage): support returning skipped items as UserWarning in down…
…load_many_to_path (#1773) This PR updates `download_many_to_path` return type in transfer_manager.py It now returns `List[None|Exception|UserWarning]` - `None` for successful download - `UserWarning` for - file skipped because `skip_if_exists=True` was provided and file exists. - Resolve path in either invalid or skips destination_directory (because of `..`) - `Exception` if error occurred during download.
Configuration menu - View commit details
-
Copy full SHA for c5735c3 - Browse repository at this point
Copy the full SHA c5735c3View commit details -
fix(storage): skip downloading blobs whose name contain
":"eg: `C……:` `D:` etc when application runs in Windows. (#1774) skip downloading blobs whose name contain `":" ` eg: `C:` `D:` etc when application runs in Windows.
Configuration menu - View commit details
-
Copy full SHA for 5581988 - Browse repository at this point
Copy the full SHA 5581988View commit details -
feat(samples): add argparse and clarify traversal support in download…
…_many snippet (#1775) This PR adds argparse support to the download_many snippet for CLI testing, and updates the description containing traversal safety.
Configuration menu - View commit details
-
Copy full SHA for 21bb20f - Browse repository at this point
Copy the full SHA 21bb20fView commit details -
chore: librarian release pull request: 20260318T145147Z (#1776)
PR created by the Librarian CLI to initialize a release. Merging this PR will auto trigger a release. Librarian Version: v1.0.2-0.20251119154421-36c3e21ad3ac Language Image: us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/python-librarian-generator@sha256:8e2c32496077054105bd06c54a59d6a6694287bc053588e24debe6da6920ad91 <details><summary>google-cloud-storage: 3.10.0</summary> ## [3.10.0](v3.9.0...v3.10.0) (2026-03-18) ### Features * [Bucket Encryption Enforcement] add support for bucket encryption enforcement config (#1742) ([2a6e8b0](2a6e8b0)) ### Perf Improvments * [Rapid Buckets Reads] Use raw proto access for read resumption strategy (#1764) ([14cfd61](14cfd61)) * [Rapid Buckets Benchmarks] init mp pool & grpc client once, use os.sched_setaffinity (#1751) ([a9eb82c](a9eb82c)) * [Rapid Buckets Writes] don't flush at every append, results in bad perf (#1746) ([ab62d72](ab62d72)) ### Bug Fixes * [Windows] skip downloading blobs whose name contain `":" ` eg: `C:` `D:` etc when application runs in Windows. (#1774) ([5581988](5581988)) * [Path Traversal] Prevent path traversal in `download_many_to_path` (#1768) ([700fec3](700fec3)) * [Rapid Buckets] pass token correctly, '&' instead of ',' (#1756) ([d8dd1e0](d8dd1e0)) </details>
Configuration menu - View commit details
-
Copy full SHA for 8b7fbde - Browse repository at this point
Copy the full SHA 8b7fbdeView commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v3.9.0...v3.10.0