Skip to content

feat(storage): support delete_source_objects in compose API#17015

Closed
nidhiii-27 wants to merge 71 commits into
mainfrom
feat-storage-compose-delete-source-objects-5220279067164674388
Closed

feat(storage): support delete_source_objects in compose API#17015
nidhiii-27 wants to merge 71 commits into
mainfrom
feat-storage-compose-delete-source-objects-5220279067164674388

Conversation

@nidhiii-27
Copy link
Copy Markdown
Contributor

This PR adds support for the delete_source_objects parameter in the Blob.compose method of the google-cloud-storage package. This aligns the Python SDK with feature parity in the Java SDK.

Key changes:

  • Updated Blob.compose signature to accept delete_source_objects.
  • Updated Blob.compose docstring.
  • Included deleteSourceObjects in the JSON request body sent to the GCS REST API.
  • Added a unit test test_compose_w_delete_source_objects to test_blob.py to verify correct serialization.
  • Verified that all unit tests for Blob pass.

PR created automatically by Jules for task 5220279067164674388 started by @nidhiii-27

Implements the delete_source_objects parameter in Blob.compose() to allow
automatic deletion of source objects upon successful composition.

Reference PR: googleapis/google-cloud-java#12873

Co-authored-by: nidhiii-27 <224584462+nidhiii-27@users.noreply.github.com>
@google-labs-jules
Copy link
Copy Markdown
Contributor

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

Copy link
Copy Markdown
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 introduces the delete_source_objects parameter to the Blob.compose method, allowing source objects to be automatically deleted after a successful composition. The changes include updates to the method signature, docstrings, and request payload construction, along with a new unit test to verify the functionality. I have no feedback to provide.

Implements the delete_source_objects parameter in Blob.compose() to allow
automatic deletion of source objects upon successful composition.

Also adds unit and system tests to verify the new parameter.

Reference PR: googleapis/google-cloud-java#12873

Co-authored-by: nidhiii-27 <224584462+nidhiii-27@users.noreply.github.com>
@nidhiii-27 nidhiii-27 marked this pull request as ready for review May 12, 2026 04:07
@nidhiii-27 nidhiii-27 requested a review from a team as a code owner May 12, 2026 04:07
Comment thread packages/google-cloud-storage/tests/system/test_blob.py
Comment thread packages/google-cloud-storage/tests/system/test_blob.py
Comment thread packages/google-cloud-storage/tests/unit/test_blob.py Outdated
…PR feedback)

- Removed unnecessary fixture usage in system test.
- Ensured destination metadata is not empty in unit test by setting content_type.
- verified end-to-end functionality in system test.

Reference PR: googleapis/google-cloud-java#12873

Co-authored-by: nidhiii-27 <224584462+nidhiii-27@users.noreply.github.com>
Comment thread packages/google-cloud-storage/tests/system/test_blob.py Outdated
google-labs-jules Bot and others added 2 commits May 13, 2026 08:11
…PR feedback)

- Re-added blobs_to_delete fixture in system test.
- Implemented conditional cleanup for source objects in system test.
- Ensured destination metadata is populated in unit test.
- Verified end-to-end functionality.

Reference PR: googleapis/google-cloud-java#12873

Co-authored-by: nidhiii-27 <224584462+nidhiii-27@users.noreply.github.com>
Implements the delete_source_objects parameter in Blob.compose() to allow
automatic deletion of source objects upon successful composition.

Also adds unit and system tests to verify the new parameter and handles PR feedback.

Reference PR: googleapis/google-cloud-java#12873

Co-authored-by: nidhiii-27 <224584462+nidhiii-27@users.noreply.github.com>
@nidhiii-27 nidhiii-27 self-assigned this May 13, 2026
Implements the delete_source_objects parameter in Blob.compose() to allow
automatic deletion of source objects upon successful composition.

Also adds unit and system tests to verify the new parameter and handles PR feedback.

Reference PR: googleapis/google-cloud-java#12873

Co-authored-by: nidhiii-27 <224584462+nidhiii-27@users.noreply.github.com>
zhixiangli and others added 16 commits May 18, 2026 04:59
#16975)

Release the Global Interpreter Lock (GIL) in `_crc32c_extend` and
`_crc32c_value` when processing large, immutable byte buffers (>= 1MB).
This allows other Python threads to run concurrently during expensive
crc32c calculations on large chunks of data.

Fixes #16923 🦕

# Unit Tests

```
.nox/check-3-13/bin/pytest -v tests
==================================================================================================================== test session starts =====================================================================================================================
platform linux -- Python 3.13.12, pytest-9.0.3, pluggy-1.6.0 -- /usr/local/google/home/zhixiangli/Cloudtop/Github/zhixiangli/google-cloud-python/packages/google-crc32c/.nox/check-3-13/bin/python
cachedir: .pytest_cache
rootdir: /usr/local/google/home/zhixiangli/Cloudtop/Github/zhixiangli/google-cloud-python/packages/google-crc32c
configfile: pyproject.toml
collected 42 items                                                                                                                                                                                                                                           

tests/test___init__.py::test_extend_w_empty_chunk PASSED                                                                                                                                                                                               [  2%]
tests/test___init__.py::test_extend_w_multiple_chunks PASSED                                                                                                                                                                                           [  4%]
tests/test___init__.py::test_extend_w_reduce PASSED                                                                                                                                                                                                    [  7%]
tests/test___init__.py::test_value[-0] PASSED                                                                                                                                                                                                          [  9%]
tests/test___init__.py::test_value[\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-2324772522] PASSED                                                                 [ 11%]
tests/test___init__.py::test_value[\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff-1655221059] PASSED                                                                 [ 14%]
tests/test___init__.py::test_value[\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f-1188919630] PASSED                                                                       [ 16%]
tests/test___init__.py::test_value[\x1f\x1e\x1d\x1c\x1b\x1a\x19\x18\x17\x16\x15\x14\x13\x12\x11\x10\x0f\x0e\r\x0c\x0b\n\t\x08\x07\x06\x05\x04\x03\x02\x01\x00-289397596] PASSED                                                                        [ 19%]
tests/test___init__.py::test_value[chunk5-3650501206] PASSED                                                                                                                                                                                           [ 21%]
tests/test___init__.py::test_value[\x01\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x14\x00\x00\x00\x18(\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00-3650501206] PASSED    [ 23%]
tests/test___init__.py::TestChecksum::test_ctor_defaults[python] PASSED                                                                                                                                                                                [ 26%]
tests/test___init__.py::TestChecksum::test_ctor_defaults[cext] PASSED                                                                                                                                                                                  [ 28%]
tests/test___init__.py::TestChecksum::test_ctor_explicit[python] PASSED                                                                                                                                                                                [ 30%]
tests/test___init__.py::TestChecksum::test_ctor_explicit[cext] PASSED                                                                                                                                                                                  [ 33%]
tests/test___init__.py::TestChecksum::test_update[python] PASSED                                                                                                                                                                                       [ 35%]
tests/test___init__.py::TestChecksum::test_update[cext] PASSED                                                                                                                                                                                         [ 38%]
tests/test___init__.py::TestChecksum::test_update_w_multiple_chunks[python] PASSED                                                                                                                                                                     [ 40%]
tests/test___init__.py::TestChecksum::test_update_w_multiple_chunks[cext] PASSED                                                                                                                                                                       [ 42%]
tests/test___init__.py::TestChecksum::test_digest_zero[python] PASSED                                                                                                                                                                                  [ 45%]
tests/test___init__.py::TestChecksum::test_digest_zero[cext] PASSED                                                                                                                                                                                    [ 47%]
tests/test___init__.py::TestChecksum::test_digest_nonzero[python] PASSED                                                                                                                                                                               [ 50%]
tests/test___init__.py::TestChecksum::test_digest_nonzero[cext] PASSED                                                                                                                                                                                 [ 52%]
tests/test___init__.py::TestChecksum::test_hexdigest_zero[python] PASSED                                                                                                                                                                               [ 54%]
tests/test___init__.py::TestChecksum::test_hexdigest_zero[cext] PASSED                                                                                                                                                                                 [ 57%]
tests/test___init__.py::TestChecksum::test_hexdigest_nonzero[python] PASSED                                                                                                                                                                            [ 59%]
tests/test___init__.py::TestChecksum::test_hexdigest_nonzero[cext] PASSED                                                                                                                                                                              [ 61%]
tests/test___init__.py::TestChecksum::test_copy[python] PASSED                                                                                                                                                                                         [ 64%]
tests/test___init__.py::TestChecksum::test_copy[cext] PASSED                                                                                                                                                                                           [ 66%]
tests/test___init__.py::TestChecksum::test_consume_stream[python-1] PASSED                                                                                                                                                                             [ 69%]
tests/test___init__.py::TestChecksum::test_consume_stream[python-3] PASSED                                                                                                                                                                             [ 71%]
tests/test___init__.py::TestChecksum::test_consume_stream[python-5] PASSED                                                                                                                                                                             [ 73%]
tests/test___init__.py::TestChecksum::test_consume_stream[python-7] PASSED                                                                                                                                                                             [ 76%]
tests/test___init__.py::TestChecksum::test_consume_stream[python-11] PASSED                                                                                                                                                                            [ 78%]
tests/test___init__.py::TestChecksum::test_consume_stream[python-13] PASSED                                                                                                                                                                            [ 80%]
tests/test___init__.py::TestChecksum::test_consume_stream[python-48] PASSED                                                                                                                                                                            [ 83%]
tests/test___init__.py::TestChecksum::test_consume_stream[cext-1] PASSED                                                                                                                                                                               [ 85%]
tests/test___init__.py::TestChecksum::test_consume_stream[cext-3] PASSED                                                                                                                                                                               [ 88%]
tests/test___init__.py::TestChecksum::test_consume_stream[cext-5] PASSED                                                                                                                                                                               [ 90%]
tests/test___init__.py::TestChecksum::test_consume_stream[cext-7] PASSED                                                                                                                                                                               [ 92%]
tests/test___init__.py::TestChecksum::test_consume_stream[cext-11] PASSED                                                                                                                                                                              [ 95%]
tests/test___init__.py::TestChecksum::test_consume_stream[cext-13] PASSED                                                                                                                                                                              [ 97%]
tests/test___init__.py::TestChecksum::test_consume_stream[cext-48] PASSED                                                                                                                                                                              [100%]

===================================================================================================================== 42 passed in 0.08s =====================================================================================================================
```

# Perf Tests

## Methodology

Created an independent benchmark script (shown below) that measures the
time taken for `crc32c.value()` on different buffer sizes (10KB to 10MB)
with 1 thread and 4 threads.

## Results


| Size | Threads | Before (s) | After (s) | Speedup |
| :--- | :--- | :--- | :--- | :--- |
| **10KB** | 1 | 0.0001 | 0.0001 | 1.0x |
| | 4 | 0.0031 | 0.0033 | 0.9x |
| **500KB**| 1 | 0.0023 | 0.0022 | 1.0x |
| | 4 | 0.0110 | 0.0110 | 1.0x |
| **1MB** | 1 | 0.0045 | 0.0045 | 1.0x |
| | 4 | 0.0241 | 0.0067 | **3.6x** |
| **5MB** | 1 | 0.0291 | 0.0227 | 1.3x |
| | 4 | 0.1209 | 0.0245 | **4.9x** |
| **10MB** | 1 | 0.0550 | 0.0451 | 1.2x |
| | 4 | 0.2091 | 0.0483 | **4.3x** |

## Conclusion

- **Multi-threaded performance for large buffers (>= 1MB) improved
significantly.** We see speedups of 3.6x to 4.9x when using 4 threads on
buffers of 1MB and larger.
- **No regression for small buffers (< 1MB)** where the GIL is not
released.
- **Single-threaded performance is also slightly better** or comparable,
showing no negative impact from the conditional GIL release overhead.

## Code

```
import time
import concurrent.futures
import os
import sys

try:
    from google_crc32c import _crc32c
    import google_crc32c
    print(f"Successfully imported _crc32c: {_crc32c}")
except ImportError as e:
    print(f"Failed to import _crc32c: {e}")
    print("This benchmark requires the C extension.")
    sys.exit(1)

def benchmark_single_threaded(data, iterations=100):
    start = time.time()
    for _ in range(iterations):
        google_crc32c.value(data)
    return time.time() - start

def benchmark_multi_threaded(data, num_threads=4, iterations=100):
    start = time.time()
    def worker():
        for _ in range(iterations):
            google_crc32c.value(data)
            
    with concurrent.futures.ThreadPoolExecutor(max_workers=num_threads) as executor:
        futures = [executor.submit(worker) for _ in range(num_threads)]
        concurrent.futures.wait(futures)
    return time.time() - start

sizes = {
    "10KB": 10 * 1024,
    "500KB": 500 * 1024,
    "1MB": 1024 * 1024,
    "5MB": 5 * 1024 * 1024,
    "10MB": 10 * 1024 * 1024,
}

print(f"{'Size':<10} | {'Threads':<10} | {'Time (s)':<10}")
print("-" * 35)

# Warmup
dummy_data = os.urandom(1024)
google_crc32c.value(dummy_data)

for name, size in sizes.items():
    data = os.urandom(size)
    
    # Single threaded
    t_single = benchmark_single_threaded(data, iterations=100)
    print(f"{name:<10} | {'1':<10} | {t_single:.4f}")
    
    # Multi threaded
    t_multi = benchmark_multi_threaded(data, num_threads=4, iterations=100)
    print(f"{name:<10} | {'4':<10} | {t_multi:.4f}")
```
….29.0 to 7.29.4 in /packages/bigframes/tests/js (#17012)

Bumps
[@babel/plugin-transform-modules-systemjs](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-modules-systemjs)
from 7.29.0 to 7.29.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/babel/babel/releases">@​babel/plugin-transform-modules-systemjs's
releases</a>.</em></p>
<blockquote>
<h2>v7.29.4 (2026-05-05)</h2>
<h4>:bug: Bug Fix</h4>
<ul>
<li><code>babel-plugin-transform-modules-systemjs</code>
<ul>
<li><a
href="https://redirect.github.com/babel/babel/pull/17974">#17974</a>
[7.x backport]fix(systemjs): improve module string name support (<a
href="https://github.com/JLHwung"><code>@​JLHwung</code></a>)</li>
</ul>
</li>
</ul>
<h4>Committers: 1</h4>
<ul>
<li>Huáng Jùnliàng (<a
href="https://github.com/JLHwung"><code>@​JLHwung</code></a>)</li>
</ul>
<h2>v7.29.3 (2026-04-30)</h2>
<h4>:eyeglasses: Spec Compliance</h4>
<ul>
<li><code>babel-parser</code>
<ul>
<li><a
href="https://redirect.github.com/babel/babel/pull/17923">#17923</a>
Support flow extends bound (<a
href="https://github.com/JLHwung"><code>@​JLHwung</code></a>)</li>
</ul>
</li>
</ul>
<h4>:bug: Bug Fix</h4>
<ul>
<li><code>babel-helper-create-class-features-plugin</code>,
<code>babel-plugin-proposal-decorators</code>
<ul>
<li><a
href="https://redirect.github.com/babel/babel/pull/17931">#17931</a>
fix(decorators): replace super within all removed static elements (<a
href="https://github.com/JLHwung"><code>@​JLHwung</code></a>)</li>
</ul>
</li>
<li><code>babel-register</code>
<ul>
<li><a
href="https://redirect.github.com/babel/babel/pull/17915">#17915</a> Fix
thread synchronization issues in <code>@babel/register</code> (<a
href="https://github.com/liuxingbaoyu"><code>@​liuxingbaoyu</code></a>)</li>
</ul>
</li>
<li><code>babel-compat-data</code>,
<code>babel-plugin-bugfix-safari-rest-destructuring-rhs-array</code>,
<code>babel-preset-env</code>
<ul>
<li><a
href="https://redirect.github.com/babel/babel/pull/17788">#17788</a> Add
bugfix plugin for Safari array rest destructuring bug (<a
href="https://github.com/JLHwung"><code>@​JLHwung</code></a>)</li>
</ul>
</li>
</ul>
<h4>:nail_care: Polish</h4>
<ul>
<li><code>babel-parser</code>
<ul>
<li><a
href="https://redirect.github.com/babel/babel/pull/17782">#17782</a>
Improve trailing comma comment handling (<a
href="https://github.com/JLHwung"><code>@​JLHwung</code></a>)</li>
</ul>
</li>
</ul>
<h4>:memo: Documentation</h4>
<ul>
<li><a
href="https://redirect.github.com/babel/babel/pull/17847">#17847</a>
Replace npmjs.com links with npmx.dev (<a
href="https://github.com/nicolo-ribaudo"><code>@​nicolo-ribaudo</code></a>)</li>
</ul>
<h4>:running_woman: Performance</h4>
<ul>
<li><code>babel-helper-import-to-platform-api</code>,
<code>babel-plugin-proposal-import-wasm-source</code>,
<code>babel-plugin-transform-json-modules</code>
<ul>
<li><a
href="https://redirect.github.com/babel/babel/pull/17818">#17818</a>
Load async Wasm and JSON imports in parallel (<a
href="https://github.com/nicolo-ribaudo"><code>@​nicolo-ribaudo</code></a>)</li>
</ul>
</li>
</ul>
<h4>Committers: 4</h4>
<ul>
<li>Babel Bot (<a
href="https://github.com/babel-bot"><code>@​babel-bot</code></a>)</li>
<li>Huáng Jùnliàng (<a
href="https://github.com/JLHwung"><code>@​JLHwung</code></a>)</li>
<li>Nicolò Ribaudo (<a
href="https://github.com/nicolo-ribaudo"><code>@​nicolo-ribaudo</code></a>)</li>
<li><a
href="https://github.com/liuxingbaoyu"><code>@​liuxingbaoyu</code></a></li>
</ul>
<h2>v7.29.2 (2026-03-16)</h2>
<h4>:eyeglasses: Spec Compliance</h4>
<ul>
<li><code>babel-parser</code>
<ul>
<li><a
href="https://redirect.github.com/babel/babel/pull/17840">#17840</a>
[7.x backport] async x =&gt; {} must be in leading pos (<a
href="https://github.com/JLHwung"><code>@​JLHwung</code></a>)</li>
</ul>
</li>
</ul>
<h4>:bug: Bug Fix</h4>
<ul>
<li><code>babel-helpers</code>,
<code>babel-plugin-transform-async-generator-functions</code>,
<code>babel-preset-env</code>, <code>babel-runtime-corejs3</code>
<ul>
<li><a
href="https://redirect.github.com/babel/babel/pull/17805">#17805</a>
[7.x backport] fix: Properly handle await in finally (<a
href="https://github.com/liuxingbaoyu"><code>@​liuxingbaoyu</code></a>)</li>
</ul>
</li>
<li><code>babel-preset-env</code></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/babel/babel/commit/a458f66074b97d54773db8159af673d23b26079b"><code>a458f66</code></a>
v7.29.4</li>
<li><a
href="https://github.com/babel/babel/commit/32ebd5aaf2526ddd176fd6a3d1e3dc594abdc8d9"><code>32ebd5a</code></a>
[7.x backport]fix(systemjs): improve module string name support (<a
href="https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-modules-systemjs/issues/17974">#17974</a>)</li>
<li>See full diff in <a
href="https://github.com/babel/babel/commits/v7.29.4/packages/babel-plugin-transform-modules-systemjs">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@babel/plugin-transform-modules-systemjs&package-manager=npm_and_yarn&previous-version=7.29.0&new-version=7.29.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/googleapis/google-cloud-python/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This PR updates google-api-core to establish Python 3.10 as the minimum
supported version, dropping support for Python 3.9 and below.

### Changes
**Configuration**: Updated pyproject.toml and noxfile.py to require
Python 3.10+ and remove references to Python 3.7, 3.8, and 3.9. Updated
README.rst and CONTRIBUTING.rst to reflect the new support status.
**Cleanup**: Removed aiter and anext polyfills in test_bidi_async.py and
removed Python < 3.10 polyfills in _python_version_support.py.
**Constraints & Dependencies**:
* Created constraints-3.10.txt using the old 3.9 constraints as a
baseline.
* Bumped grpcio to 1.80.0 and requests to 2.33.0 to avoid issues with
pkg_resources and six warnings on Python 3.10.
* Bumped google-auth to 2.35.0 to satisfy async_rest requirements.
Fixes internal issue: http://b/482126936 🦕
Adds `v1` to existing `google-cloud-geminidataanalytics` client and
switches `default_version` to `v1`.

Towards b/510217868
…i-core (#17016)

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=aiohttp&package-manager=pip&previous-version=3.9.0&new-version=3.13.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/googleapis/google-cloud-python/network/alerts).

</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Anthonios Partheniou <partheniou@google.com>
)

This PR removes the pandas version restrictions from tests that were
skipped for Pandas >= 2.0 without a stated reason and enables testing by
addressing a precision issue in the tests.

It also adds a catch for ImportError when tqdm tries to import
matplotlib when matplotlib is not installed.

It also adds two small ignore pragmas to resolve mypy's struggles with
handling optional imports.

This PR partially fixes #16042 (for bigquery).

For completeness, we did an assessment of any remaining test skips and
they all appear to be legitimate skips that are applied when a
dependency is not installed.

1. PyArrow
2. tqdm (Progress Bar)
3. Pandas
4. OpenTelemetry
5. GeoPandas
6. Shapely
This PR removes Python 3.9 from the default nox session which is used in
continuous builds. Python 3.9 unit tests are still running in presubmits
via Github actions but cannot be tested in continuous builds since
Python 3.9 has been removed from the testing image as of
googleapis/testing-infra-docker#524.
…api-core (#17022)

Bumps [requests](https://github.com/psf/requests) from 2.25.0 to 2.33.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/psf/requests/releases">requests's
releases</a>.</em></p>
<blockquote>
<h2>v2.33.0</h2>
<h2>2.33.0 (2026-03-25)</h2>
<p><strong>Announcements</strong></p>
<ul>
<li>📣 Requests is adding inline types. If you have a typed code base
that uses Requests, please take a look at <a
href="https://redirect.github.com/psf/requests/issues/7271">#7271</a>.
Give it a try, and report any gaps or feedback you may have in the
issue. 📣</li>
</ul>
<p><strong>Security</strong></p>
<ul>
<li>CVE-2026-25645 <code>requests.utils.extract_zipped_paths</code> now
extracts contents to a non-deterministic location to prevent malicious
file replacement. This does not affect default usage of Requests, only
applications calling the utility function directly.</li>
</ul>
<p><strong>Improvements</strong></p>
<ul>
<li>Migrated to a PEP 517 build system using setuptools. (<a
href="https://redirect.github.com/psf/requests/issues/7012">#7012</a>)</li>
</ul>
<p><strong>Bugfixes</strong></p>
<ul>
<li>Fixed an issue where an empty netrc entry could cause malformed
authentication to be applied to Requests on Python 3.11+. (<a
href="https://redirect.github.com/psf/requests/issues/7205">#7205</a>)</li>
</ul>
<p><strong>Deprecations</strong></p>
<ul>
<li>Dropped support for Python 3.9 following its end of support. (<a
href="https://redirect.github.com/psf/requests/issues/7196">#7196</a>)</li>
</ul>
<p><strong>Documentation</strong></p>
<ul>
<li>Various typo fixes and doc improvements.</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/M0d3v1"><code>@​M0d3v1</code></a> made
their first contribution in <a
href="https://redirect.github.com/psf/requests/pull/6865">psf/requests#6865</a></li>
<li><a href="https://github.com/aminvakil"><code>@​aminvakil</code></a>
made their first contribution in <a
href="https://redirect.github.com/psf/requests/pull/7220">psf/requests#7220</a></li>
<li><a href="https://github.com/E8Price"><code>@​E8Price</code></a> made
their first contribution in <a
href="https://redirect.github.com/psf/requests/pull/6960">psf/requests#6960</a></li>
<li><a href="https://github.com/mitre88"><code>@​mitre88</code></a> made
their first contribution in <a
href="https://redirect.github.com/psf/requests/pull/7244">psf/requests#7244</a></li>
<li><a href="https://github.com/magsen"><code>@​magsen</code></a> made
their first contribution in <a
href="https://redirect.github.com/psf/requests/pull/6553">psf/requests#6553</a></li>
<li><a
href="https://github.com/Rohan5commit"><code>@​Rohan5commit</code></a>
made their first contribution in <a
href="https://redirect.github.com/psf/requests/pull/7227">psf/requests#7227</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/psf/requests/blob/main/HISTORY.md#2330-2026-03-25">https://github.com/psf/requests/blob/main/HISTORY.md#2330-2026-03-25</a></p>
<h2>v2.32.5</h2>
<h2>2.32.5 (2025-08-18)</h2>
<p><strong>Bugfixes</strong></p>
<ul>
<li>The SSLContext caching feature originally introduced in 2.32.0 has
created
a new class of issues in Requests that have had negative impact across a
number
of use cases. The Requests team has decided to revert this feature as
long term
maintenance of it is proving to be unsustainable in its current
iteration.</li>
</ul>
<p><strong>Deprecations</strong></p>
<ul>
<li>Added support for Python 3.14.</li>
<li>Dropped support for Python 3.8 following its end of support.</li>
</ul>
<h2>v2.32.4</h2>
<h2>2.32.4 (2025-06-10)</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/psf/requests/blob/main/HISTORY.md">requests's
changelog</a>.</em></p>
<blockquote>
<h2>2.33.0 (2026-03-25)</h2>
<p><strong>Announcements</strong></p>
<ul>
<li>📣 Requests is adding inline types. If you have a typed code base
that
uses Requests, please take a look at <a
href="https://redirect.github.com/psf/requests/issues/7271">#7271</a>.
Give it a try, and report
any gaps or feedback you may have in the issue. 📣</li>
</ul>
<p><strong>Security</strong></p>
<ul>
<li>CVE-2026-25645 <code>requests.utils.extract_zipped_paths</code> now
extracts
contents to a non-deterministic location to prevent malicious file
replacement. This does not affect default usage of Requests, only
applications calling the utility function directly.</li>
</ul>
<p><strong>Improvements</strong></p>
<ul>
<li>Migrated to a PEP 517 build system using setuptools. (<a
href="https://redirect.github.com/psf/requests/issues/7012">#7012</a>)</li>
</ul>
<p><strong>Bugfixes</strong></p>
<ul>
<li>Fixed an issue where an empty netrc entry could cause
malformed authentication to be applied to Requests on
Python 3.11+. (<a
href="https://redirect.github.com/psf/requests/issues/7205">#7205</a>)</li>
</ul>
<p><strong>Deprecations</strong></p>
<ul>
<li>Dropped support for Python 3.9 following its end of support. (<a
href="https://redirect.github.com/psf/requests/issues/7196">#7196</a>)</li>
</ul>
<p><strong>Documentation</strong></p>
<ul>
<li>Various typo fixes and doc improvements.</li>
</ul>
<h2>2.32.5 (2025-08-18)</h2>
<p><strong>Bugfixes</strong></p>
<ul>
<li>The SSLContext caching feature originally introduced in 2.32.0 has
created
a new class of issues in Requests that have had negative impact across a
number
of use cases. The Requests team has decided to revert this feature as
long term
maintenance of it is proving to be unsustainable in its current
iteration.</li>
</ul>
<p><strong>Deprecations</strong></p>
<ul>
<li>Added support for Python 3.14.</li>
<li>Dropped support for Python 3.8 following its end of support.</li>
</ul>
<h2>2.32.4 (2025-06-10)</h2>
<p><strong>Security</strong></p>
<ul>
<li>CVE-2024-47081 Fixed an issue where a maliciously crafted URL and
trusted
environment will retrieve credentials for the wrong hostname/machine
from a
netrc file.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/psf/requests/commit/bc04dfd6dad4cb02cd92f5daa81eb562d280a761"><code>bc04dfd</code></a>
v2.33.0</li>
<li><a
href="https://github.com/psf/requests/commit/66d21cb07bd6255b1280291c4fafb71803cdb3b7"><code>66d21cb</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/psf/requests/commit/8b9bc8fc0f63be84602387913c4b689f19efd028"><code>8b9bc8f</code></a>
Move badges to top of README (<a
href="https://redirect.github.com/psf/requests/issues/7293">#7293</a>)</li>
<li><a
href="https://github.com/psf/requests/commit/e331a288f369973f5de0ec8901c94cae4fa87286"><code>e331a28</code></a>
Remove unused extraction call (<a
href="https://redirect.github.com/psf/requests/issues/7292">#7292</a>)</li>
<li><a
href="https://github.com/psf/requests/commit/753fd08c5eacce0aa0df73fe47e49525c67e0a29"><code>753fd08</code></a>
docs: fix FAQ grammar in httplib2 example</li>
<li><a
href="https://github.com/psf/requests/commit/774a0b837a194ee885d4fdd9ca947900cc3daf71"><code>774a0b8</code></a>
docs(socks): same block as other sections</li>
<li><a
href="https://github.com/psf/requests/commit/9c72a41bec8597f948c9d8caa5dc3f12273b3303"><code>9c72a41</code></a>
Bump github/codeql-action from 4.33.0 to 4.34.1</li>
<li><a
href="https://github.com/psf/requests/commit/ebf71906798ec82f34e07d3168f8b8aecaf8a3be"><code>ebf7190</code></a>
Bump github/codeql-action from 4.32.0 to 4.33.0</li>
<li><a
href="https://github.com/psf/requests/commit/0e4ae38f0c93d4f92a96c774bd52c069d12a4798"><code>0e4ae38</code></a>
docs: exclude Response.is_permanent_redirect from API docs (<a
href="https://redirect.github.com/psf/requests/issues/7244">#7244</a>)</li>
<li><a
href="https://github.com/psf/requests/commit/d568f47278492e630cc990a259047c67991d007a"><code>d568f47</code></a>
docs: clarify Quickstart POST example (<a
href="https://redirect.github.com/psf/requests/issues/6960">#6960</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/psf/requests/compare/v2.25.0...v2.33.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=requests&package-manager=pip&previous-version=2.25.0&new-version=2.33.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/googleapis/google-cloud-python/network/alerts).

</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Anthonios Partheniou <partheniou@google.com>
…rator (#17020)

Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.6.3 to 2.7.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/urllib3/urllib3/releases">urllib3's
releases</a>.</em></p>
<blockquote>
<h2>2.7.0</h2>
<h2>🚀 urllib3 is fundraising for HTTP/2 support</h2>
<p><a
href="https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support">urllib3
is raising ~$40,000 USD</a> to release HTTP/2 support and ensure
long-term sustainable maintenance of the project after a sharp decline
in financial support. If your company or organization uses Python and
would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and
thousands of other projects <a
href="https://opencollective.com/urllib3">please consider contributing
financially</a> to ensure HTTP/2 support is developed sustainably and
maintained for the long-haul.</p>
<p>Thank you for your support.</p>
<h2>Security</h2>
<p>Addressed high-severity security issues. Impact was limited to
specific use cases detailed in the accompanying advisories; overall user
exposure was estimated to be marginal.</p>
<ul>
<li>
<p>Decompression-bomb safeguards of the streaming API were bypassed:</p>
<ol>
<li>When <code>HTTPResponse.drain_conn()</code> was called after the
response had been read and decompressed partially. (Reported by <a
href="https://github.com/Cycloctane"><code>@​Cycloctane</code></a>)</li>
<li>During the second <code>HTTPResponse.read(amt=N)</code> or
<code>HTTPResponse.stream(amt=N)</code> call when the response was
decompressed using the official <a
href="https://pypi.org/project/brotli/">Brotli</a> library. (Reported by
<a
href="https://github.com/kimkou2024"><code>@​kimkou2024</code></a>)</li>
</ol>
<p>See GHSA-mf9v-mfxr-j63j for details.</p>
</li>
<li>
<p>HTTP pools created using
<code>ProxyManager.connection_from_url</code> did not strip sensitive
headers specified in <code>Retry.remove_headers_on_redirect</code> when
redirecting to a different host. (GHSA-qccp-gfcp-xxvc reported by <a
href="https://github.com/christos-spearbit"><code>@​christos-spearbit</code></a>)</p>
</li>
</ul>
<h2>Deprecations and Removals</h2>
<ul>
<li>Used <code>FutureWarning</code> instead of
<code>DeprecationWarning</code> for better visibility of existing
deprecation notices. Rescheduled the removal of deprecated features to
version 3.0. (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3763">urllib3/urllib3#3763</a>)</li>
<li>Removed support for end-of-life Python 3.9. (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3720">urllib3/urllib3#3720</a>)</li>
<li>Removed support for end-of-life PyPy3.10. (<a
href="https://redirect.github.com/urllib3/urllib3/issues/4979">urllib3/urllib3#4979</a>)</li>
<li>Bumped the minimum supported pyOpenSSL version to 19.0.0. (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3777">urllib3/urllib3#3777</a>)</li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>Fixed a bug where <code>HTTPResponse.read(amt=None)</code> was
ignoring decompressed data buffered from previous partial reads. (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3636">urllib3/urllib3#3636</a>)</li>
<li>Fixed a bug where <code>HTTPResponse.read()</code> could cache only
part of the response after a partial read when
<code>cache_content=True</code>. (<a
href="https://redirect.github.com/urllib3/urllib3/issues/4967">urllib3/urllib3#4967</a>)</li>
<li>Fixed <code>HTTPResponse.stream()</code> and
<code>HTTPResponse.read_chunked()</code> to handle <code>amt=0</code>.
(<a
href="https://redirect.github.com/urllib3/urllib3/issues/3793">urllib3/urllib3#3793</a>)</li>
<li>Updated <code>_TYPE_BODY</code> type alias to include missing
<code>Iterable[str]</code>, matching the documented and runtime behavior
of chunked request bodies. (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3798">urllib3/urllib3#3798</a>)</li>
<li>Fixed <code>LocationParseError</code> when paths resembling
schemeless URIs were passed to
<code>HTTPConnectionPool.urlopen()</code>. (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3352">urllib3/urllib3#3352</a>)</li>
<li>Fixed <code>BaseHTTPResponse.readinto()</code> type annotation to
accept <code>memoryview</code> in addition to <code>bytearray</code>,
matching the <code>io.RawIOBase.readinto</code> contract and enabling
use with <code>io.BufferedReader</code> without type errors. (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3764">urllib3/urllib3#3764</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/urllib3/urllib3/blob/main/CHANGES.rst">urllib3's
changelog</a>.</em></p>
<blockquote>
<h1>2.7.0 (2026-05-07)</h1>
<h2>Security</h2>
<p>Addressed high-severity security issues.
Impact was limited to specific use cases detailed in the accompanying
advisories; overall user exposure was estimated to be marginal.</p>
<ul>
<li>
<p>Decompression-bomb safeguards of the streaming API were bypassed:</p>
<ol>
<li>When <code>HTTPResponse.drain_conn()</code> was called after the
response had been
read and decompressed partially.</li>
<li>During the second <code>HTTPResponse.read(amt=N)</code> or
<code>HTTPResponse.stream(amt=N)</code> call when the response was
decompressed
using the official <code>Brotli
&lt;https://pypi.org/project/brotli/&gt;</code>__ library.</li>
</ol>
<p>See <code>GHSA-mf9v-mfxr-j63j
&lt;https://github.com/urllib3/urllib3/security/advisories/GHSA-mf9v-mfxr-j63j&gt;</code>__
for details.</p>
</li>
<li>
<p>HTTP pools created using
<code>ProxyManager.connection_from_url</code> did not strip
sensitive headers specified in
<code>Retry.remove_headers_on_redirect</code> when
redirecting to a different host.
(<code>GHSA-qccp-gfcp-xxvc
&lt;https://github.com/urllib3/urllib3/security/advisories/GHSA-qccp-gfcp-xxvc&gt;</code>__)</p>
</li>
</ul>
<h2>Deprecations and Removals</h2>
<ul>
<li>Used <code>FutureWarning</code> instead of
<code>DeprecationWarning</code> for better
visibility of existing deprecation notices. Rescheduled the removal of
deprecated features to version 3.0.
(<code>[#3763](urllib3/urllib3#3763)
&lt;https://github.com/urllib3/urllib3/issues/3763&gt;</code>__)</li>
<li>Removed support for end-of-life Python 3.9.
(<code>[#3720](urllib3/urllib3#3720)
&lt;https://github.com/urllib3/urllib3/issues/3720&gt;</code>__)</li>
<li>Removed support for end-of-life PyPy3.10.
(<code>[#4979](urllib3/urllib3#4979)
&lt;https://github.com/urllib3/urllib3/issues/4979&gt;</code>__)</li>
<li>Bumped the minimum supported pyOpenSSL version to 19.0.0.
(<code>[#3777](urllib3/urllib3#3777)
&lt;https://github.com/urllib3/urllib3/issues/3777&gt;</code>__)</li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>Fixed a bug where <code>HTTPResponse.read(amt=None)</code> was
ignoring decompressed
data buffered from previous partial reads.
(<code>[#3636](urllib3/urllib3#3636)
&lt;https://github.com/urllib3/urllib3/issues/3636&gt;</code>__)</li>
<li>Fixed a bug where <code>HTTPResponse.read()</code> could cache only
part of the
response after a partial read when <code>cache_content=True</code>.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/urllib3/urllib3/commit/9a950b92d999f906b6020bb2d1076ee56cddd5d2"><code>9a950b9</code></a>
Release 2.7.0</li>
<li><a
href="https://github.com/urllib3/urllib3/commit/5ec0de499b9166ca71c65ab04f2a7e4eb0d66fcc"><code>5ec0de4</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/urllib3/urllib3/commit/2bdcc44d1e163fb5cc48a8662425e35e15adfe6a"><code>2bdcc44</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/urllib3/urllib3/commit/f45b0df09d8620ac6ed0491eb9362c8c87b7bc2c"><code>f45b0df</code></a>
Fix a misleading example for <code>ProxyManager</code> (<a
href="https://redirect.github.com/urllib3/urllib3/issues/4970">#4970</a>)</li>
<li><a
href="https://github.com/urllib3/urllib3/commit/577193ca029872384f82c133449e0935f6d8a64b"><code>577193c</code></a>
Switch to nightly PyPy3.11 in CI for now (<a
href="https://redirect.github.com/urllib3/urllib3/issues/4984">#4984</a>)</li>
<li><a
href="https://github.com/urllib3/urllib3/commit/e90af45bb006c3a452a3a21644a2681523f5c7fc"><code>e90af45</code></a>
Avoid infinite loop in <code>HTTPResponse.read_chunked</code> when
<code>amt=0</code> (<a
href="https://redirect.github.com/urllib3/urllib3/issues/4974">#4974</a>)</li>
<li><a
href="https://github.com/urllib3/urllib3/commit/67ed74fdaec6659a6534621ec8e3aaaa6f976210"><code>67ed74f</code></a>
Bump dev dependencies (<a
href="https://redirect.github.com/urllib3/urllib3/issues/4972">#4972</a>)</li>
<li><a
href="https://github.com/urllib3/urllib3/commit/3abd481097b54d87b574ac7ea593c3f40938a84d"><code>3abd481</code></a>
Upgrade mypy to version 1.20.2 (<a
href="https://redirect.github.com/urllib3/urllib3/issues/4978">#4978</a>)</li>
<li><a
href="https://github.com/urllib3/urllib3/commit/2b8725dfcac4f21d4d93cc0cc3a64a33af08f890"><code>2b8725d</code></a>
Drop support for EOL PyPy3.10 (<a
href="https://redirect.github.com/urllib3/urllib3/issues/4979">#4979</a>)</li>
<li><a
href="https://github.com/urllib3/urllib3/commit/2944b2a0a6c573f5548a39cfd17196f98ee21b33"><code>2944b2a</code></a>
Upgrade <code>setup-chrome</code> and <code>setup-firefox</code> to fix
warnings (<a
href="https://redirect.github.com/urllib3/urllib3/issues/4973">#4973</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/urllib3/urllib3/compare/2.6.3...2.7.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=urllib3&package-manager=pip&previous-version=2.6.3&new-version=2.7.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/googleapis/google-cloud-python/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
> ℹ️ **Note**
> 
> This PR body was truncated due to platform limits.

This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) | Type |
Update |
|---|---|---|---|---|---|
| [@babel/preset-env](https://babel.dev/docs/en/next/babel-preset-env)
([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-preset-env))
| [`7.29.2` →
`7.29.5`](https://renovatebot.com/diffs/npm/@babel%2fpreset-env/7.29.2/7.29.5)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fpreset-env/7.29.5?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fpreset-env/7.29.2/7.29.5?slim=true)
| devDependencies | patch |
| [actions/checkout](https://redirect.github.com/actions/checkout) |
`v4` → `v6` |
![age](https://developer.mend.io/api/mc/badges/age/github-tags/actions%2fcheckout/v6.0.2?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/github-tags/actions%2fcheckout/v4/v6.0.2?slim=true)
| action | major |
|
[actions/setup-python](https://redirect.github.com/actions/setup-python)
| `v5` → `v6` |
![age](https://developer.mend.io/api/mc/badges/age/github-tags/actions%2fsetup-python/v6.2.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/github-tags/actions%2fsetup-python/v5/v6.2.0?slim=true)
| action | major |
| [cryptography](https://redirect.github.com/pyca/cryptography)
([changelog](https://cryptography.io/en/latest/changelog/)) | `==47.0.0`
→ `==48.0.0` |
![age](https://developer.mend.io/api/mc/badges/age/pypi/cryptography/48.0.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/cryptography/47.0.0/48.0.0?slim=true)
| | major |
|
[db-dtypes](https://redirect.github.com/googleapis/google-cloud-python/tree/main/packages/db-dtypes)
([source](https://redirect.github.com/googleapis/google-cloud-python)) |
`==1.5.1` → `==1.6.0` |
![age](https://developer.mend.io/api/mc/badges/age/pypi/db-dtypes/1.6.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/db-dtypes/1.5.1/1.6.0?slim=true)
| | minor |
| [dorny/paths-filter](https://redirect.github.com/dorny/paths-filter) |
`v3` → `v4` |
![age](https://developer.mend.io/api/mc/badges/age/github-tags/dorny%2fpaths-filter/v4.0.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/github-tags/dorny%2fpaths-filter/v3/v4.0.1?slim=true)
| action | major |
|
[google-auth](https://redirect.github.com/googleapis/google-auth-library-python)
| `==2.50.0` → `==2.52.0` |
![age](https://developer.mend.io/api/mc/badges/age/pypi/google-auth/2.52.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/google-auth/2.50.0/2.52.0?slim=true)
| | minor |
|
[google-cloud-bigquery-storage](https://redirect.github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-bigquery-storage)
([source](https://redirect.github.com/googleapis/google-cloud-python)) |
`==2.37.0` → `==2.38.0` |
![age](https://developer.mend.io/api/mc/badges/age/pypi/google-cloud-bigquery-storage/2.38.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/google-cloud-bigquery-storage/2.37.0/2.38.0?slim=true)
| | minor |
|
[google-cloud-core](https://redirect.github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-core)
([source](https://redirect.github.com/googleapis/google-cloud-python)) |
`==2.5.1` → `==2.6.0` |
![age](https://developer.mend.io/api/mc/badges/age/pypi/google-cloud-core/2.6.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/google-cloud-core/2.5.1/2.6.0?slim=true)
| | minor |
|
[google-cloud-spanner](https://redirect.github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-spanner)
([source](https://redirect.github.com/googleapis/google-cloud-python)) |
`==3.65.0` → `==3.66.0` |
![age](https://developer.mend.io/api/mc/badges/age/pypi/google-cloud-spanner/3.66.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/google-cloud-spanner/3.65.0/3.66.0?slim=true)
| | minor |
|
[google-cloud-testutils](https://redirect.github.com/googleapis/google-cloud-python/packages/google-cloud-testutils)
([source](https://redirect.github.com/googleapis/google-cloud-python)) |
`==1.7.1` → `==1.8.0` |
![age](https://developer.mend.io/api/mc/badges/age/pypi/google-cloud-testutils/1.8.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/google-cloud-testutils/1.7.1/1.8.0?slim=true)
| | minor |
|
[googleapis-common-protos](https://redirect.github.com/googleapis/google-cloud-python)
([source](https://redirect.github.com/googleapis/google-cloud-python/tree/HEAD/packages/googleapis-common-protos))
| `==1.74.0` → `==1.75.0` |
![age](https://developer.mend.io/api/mc/badges/age/pypi/googleapis-common-protos/1.75.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/googleapis-common-protos/1.74.0/1.75.0?slim=true)
| | minor |
| [idna](https://redirect.github.com/kjd/idna)
([changelog](https://redirect.github.com/kjd/idna/blob/master/HISTORY.rst))
| `==3.13` → `==3.14` |
![age](https://developer.mend.io/api/mc/badges/age/pypi/idna/3.14?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/idna/3.13/3.14?slim=true)
| | minor |
| [jest](https://jestjs.io/)
([source](https://redirect.github.com/jestjs/jest/tree/HEAD/packages/jest))
| [`30.3.0` →
`30.4.2`](https://renovatebot.com/diffs/npm/jest/30.3.0/30.4.2) |
![age](https://developer.mend.io/api/mc/badges/age/npm/jest/30.4.2?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/jest/30.3.0/30.4.2?slim=true)
| devDependencies | minor |
| [jest-environment-jsdom](https://redirect.github.com/jestjs/jest)
([source](https://redirect.github.com/jestjs/jest/tree/HEAD/packages/jest-environment-jsdom))
| [`30.3.0` →
`30.4.1`](https://renovatebot.com/diffs/npm/jest-environment-jsdom/30.3.0/30.4.1)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/jest-environment-jsdom/30.4.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/jest-environment-jsdom/30.3.0/30.4.1?slim=true)
| devDependencies | minor |
| [jsdom](https://redirect.github.com/jsdom/jsdom) | [`29.1.0` →
`29.1.1`](https://renovatebot.com/diffs/npm/jsdom/29.1.0/29.1.1) |
![age](https://developer.mend.io/api/mc/badges/age/npm/jsdom/29.1.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/jsdom/29.1.0/29.1.1?slim=true)
| devDependencies | patch |
| [pandas](https://redirect.github.com/pandas-dev/pandas) | `==2.3.3` →
`==3.0.2` |
![age](https://developer.mend.io/api/mc/badges/age/pypi/pandas/3.0.2?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pandas/2.3.3/3.0.2?slim=true)
| | major |
| [pip](https://redirect.github.com/pypa/pip)
([changelog](https://pip.pypa.io/en/stable/news/)) | `==26.1` →
`==26.1.1` |
![age](https://developer.mend.io/api/mc/badges/age/pypi/pip/26.1.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pip/26.1/26.1.1?slim=true)
| | patch |
| [propcache](https://redirect.github.com/aio-libs/propcache) |
`==0.4.1` → `==0.5.2` |
![age](https://developer.mend.io/api/mc/badges/age/pypi/propcache/0.5.2?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/propcache/0.4.1/0.5.2?slim=true)
| | minor |
|
[proto-plus](https://redirect.github.com/googleapis/google-cloud-python)
| `==1.27.2` → `==1.28.0` |
![age](https://developer.mend.io/api/mc/badges/age/pypi/proto-plus/1.28.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/proto-plus/1.27.2/1.28.0?slim=true)
| | minor |
| [python](https://redirect.github.com/actions/python-versions) | `3.10`
→ `3.14` |
![age](https://developer.mend.io/api/mc/badges/age/github-releases/actions%2fpython-versions/3.14.5?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/github-releases/actions%2fpython-versions/3.10.20/3.14.5?slim=true)
| uses-with | minor |
| [python](https://redirect.github.com/actions/python-versions) | `3.12`
→ `3.14` |
![age](https://developer.mend.io/api/mc/badges/age/github-releases/actions%2fpython-versions/3.14.5?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/github-releases/actions%2fpython-versions/3.12.13/3.14.5?slim=true)
| uses-with | minor |
| [rules_cc](https://redirect.github.com/bazelbuild/rules_cc) | `0.1.1`
→ `0.2.18` |
![age](https://developer.mend.io/api/mc/badges/age/github-releases/bazelbuild%2frules_cc/0.2.18?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/github-releases/bazelbuild%2frules_cc/0.1.1/0.2.18?slim=true)
| http_archive | minor |
| [urllib3](https://redirect.github.com/urllib3/urllib3)
([changelog](https://redirect.github.com/urllib3/urllib3/blob/main/CHANGES.rst))
| `==2.6.3` → `==2.7.0` |
![age](https://developer.mend.io/api/mc/badges/age/pypi/urllib3/2.7.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/urllib3/2.6.3/2.7.0?slim=true)
| | minor |
| [virtualenv](https://redirect.github.com/pypa/virtualenv) | `==21.3.0`
→ `==21.3.1` |
![age](https://developer.mend.io/api/mc/badges/age/pypi/virtualenv/21.3.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/virtualenv/21.3.0/21.3.1?slim=true)
| | patch |

---

### Release Notes

<details>
<summary>babel/babel (@&#8203;babel/preset-env)</summary>

###
[`v7.29.5`](https://redirect.github.com/babel/babel/compare/v7.29.3...v7.29.5)

[Compare
Source](https://redirect.github.com/babel/babel/compare/v7.29.3...v7.29.5)

###
[`v7.29.3`](https://redirect.github.com/babel/babel/compare/v7.29.2...v7.29.3)

[Compare
Source](https://redirect.github.com/babel/babel/compare/v7.29.2...v7.29.3)

</details>

<details>
<summary>actions/checkout (actions/checkout)</summary>

###
[`v6.0.2`](https://redirect.github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v602)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v6.0.1...v6.0.2)

- Fix tag handling: preserve annotations and explicit fetch-tags by
[@&#8203;ericsciple](https://redirect.github.com/ericsciple) in
[#&#8203;2356](https://redirect.github.com/actions/checkout/pull/2356)

###
[`v6.0.1`](https://redirect.github.com/actions/checkout/compare/v6.0.0...v6.0.1)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v6...v6.0.1)

###
[`v6.0.0`](https://redirect.github.com/actions/checkout/compare/v5.0.1...v6.0.0)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v6...v6)

### [`v6`]()

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v5.0.1...v6)

###
[`v5.0.1`](https://redirect.github.com/actions/checkout/releases/tag/v5.0.1)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v5...v5.0.1)

##### What's Changed

- Port v6 cleanup to v5 by
[@&#8203;ericsciple](https://redirect.github.com/ericsciple) in
[#&#8203;2301](https://redirect.github.com/actions/checkout/pull/2301)

**Full Changelog**:
<https://github.com/actions/checkout/compare/v5...v5.0.1>

###
[`v5.0.0`](https://redirect.github.com/actions/checkout/releases/tag/v5.0.0)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v5...v5)

##### What's Changed

- Update actions checkout to use node 24 by
[@&#8203;salmanmkc](https://redirect.github.com/salmanmkc) in
[#&#8203;2226](https://redirect.github.com/actions/checkout/pull/2226)
- Prepare v5.0.0 release by
[@&#8203;salmanmkc](https://redirect.github.com/salmanmkc) in
[#&#8203;2238](https://redirect.github.com/actions/checkout/pull/2238)

##### ⚠️ Minimum Compatible Runner Version

**v2.327.1**\
[Release
Notes](https://redirect.github.com/actions/runner/releases/tag/v2.327.1)

Make sure your runner is updated to this version or newer to use this
release.

**Full Changelog**:
<https://github.com/actions/checkout/compare/v4...v5.0.0>

### [`v5`]()

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4.3.1...v5)

###
[`v4.3.1`](https://redirect.github.com/actions/checkout/releases/tag/v4.3.1)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4.3.0...v4.3.1)

##### What's Changed

- Port v6 cleanup to v4 by
[@&#8203;ericsciple](https://redirect.github.com/ericsciple) in
[#&#8203;2305](https://redirect.github.com/actions/checkout/pull/2305)

**Full Changelog**:
<https://github.com/actions/checkout/compare/v4...v4.3.1>

###
[`v4.3.0`](https://redirect.github.com/actions/checkout/releases/tag/v4.3.0)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4.2.2...v4.3.0)

##### What's Changed

- docs: update README.md by
[@&#8203;motss](https://redirect.github.com/motss) in
[#&#8203;1971](https://redirect.github.com/actions/checkout/pull/1971)
- Add internal repos for checking out multiple repositories by
[@&#8203;mouismail](https://redirect.github.com/mouismail) in
[#&#8203;1977](https://redirect.github.com/actions/checkout/pull/1977)
- Documentation update - add recommended permissions to Readme by
[@&#8203;benwells](https://redirect.github.com/benwells) in
[#&#8203;2043](https://redirect.github.com/actions/checkout/pull/2043)
- Adjust positioning of user email note and permissions heading by
[@&#8203;joshmgross](https://redirect.github.com/joshmgross) in
[#&#8203;2044](https://redirect.github.com/actions/checkout/pull/2044)
- Update README.md by
[@&#8203;nebuk89](https://redirect.github.com/nebuk89) in
[#&#8203;2194](https://redirect.github.com/actions/checkout/pull/2194)
- Update CODEOWNERS for actions by
[@&#8203;TingluoHuang](https://redirect.github.com/TingluoHuang) in
[#&#8203;2224](https://redirect.github.com/actions/checkout/pull/2224)
- Update package dependencies by
[@&#8203;salmanmkc](https://redirect.github.com/salmanmkc) in
[#&#8203;2236](https://redirect.github.com/actions/checkout/pull/2236)
- Prepare release v4.3.0 by
[@&#8203;salmanmkc](https://redirect.github.com/salmanmkc) in
[#&#8203;2237](https://redirect.github.com/actions/checkout/pull/2237)

##### New Contributors

- [@&#8203;motss](https://redirect.github.com/motss) made their first
contribution in
[#&#8203;1971](https://redirect.github.com/actions/checkout/pull/1971)
- [@&#8203;mouismail](https://redirect.github.com/mouismail) made their
first contribution in
[#&#8203;1977](https://redirect.github.com/actions/checkout/pull/1977)
- [@&#8203;benwells](https://redirect.github.com/benwells) made their
first contribution in
[#&#8203;2043](https://redirect.github.com/actions/checkout/pull/2043)
- [@&#8203;nebuk89](https://redirect.github.com/nebuk89) made their
first contribution in
[#&#8203;2194](https://redirect.github.com/actions/checkout/pull/2194)
- [@&#8203;salmanmkc](https://redirect.github.com/salmanmkc) made their
first contribution in
[#&#8203;2236](https://redirect.github.com/actions/checkout/pull/2236)

**Full Changelog**:
<https://github.com/actions/checkout/compare/v4...v4.3.0>

###
[`v4.2.2`](https://redirect.github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v422)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4.2.1...v4.2.2)

- `url-helper.ts` now leverages well-known environment variables by
[@&#8203;jww3](https://redirect.github.com/jww3) in
[#&#8203;1941](https://redirect.github.com/actions/checkout/pull/1941)
- Expand unit test coverage for `isGhes` by
[@&#8203;jww3](https://redirect.github.com/jww3) in
[#&#8203;1946](https://redirect.github.com/actions/checkout/pull/1946)

###
[`v4.2.1`](https://redirect.github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v421)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4.2.0...v4.2.1)

- Check out other refs/\* by commit if provided, fall back to ref by
[@&#8203;orhantoy](https://redirect.github.com/orhantoy) in
[#&#8203;1924](https://redirect.github.com/actions/checkout/pull/1924)

###
[`v4.2.0`](https://redirect.github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v420)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4.1.7...v4.2.0)

- Add Ref and Commit outputs by
[@&#8203;lucacome](https://redirect.github.com/lucacome) in
[#&#8203;1180](https://redirect.github.com/actions/checkout/pull/1180)
- Dependency updates by
[@&#8203;dependabot-](https://redirect.github.com/dependabot-)
[#&#8203;1777](https://redirect.github.com/actions/checkout/pull/1777),
[#&#8203;1872](https://redirect.github.com/actions/checkout/pull/1872)

###
[`v4.1.7`](https://redirect.github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v417)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4.1.6...v4.1.7)

- Bump the minor-npm-dependencies group across 1 directory with 4
updates by [@&#8203;dependabot](https://redirect.github.com/dependabot)
in
[#&#8203;1739](https://redirect.github.com/actions/checkout/pull/1739)
- Bump actions/checkout from 3 to 4 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1697](https://redirect.github.com/actions/checkout/pull/1697)
- Check out other refs/\* by commit by
[@&#8203;orhantoy](https://redirect.github.com/orhantoy) in
[#&#8203;1774](https://redirect.github.com/actions/checkout/pull/1774)
- Pin actions/checkout's own workflows to a known, good, stable version.
by [@&#8203;jww3](https://redirect.github.com/jww3) in
[#&#8203;1776](https://redirect.github.com/actions/checkout/pull/1776)

###
[`v4.1.6`](https://redirect.github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v416)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4.1.5...v4.1.6)

- Check platform to set archive extension appropriately by
[@&#8203;cory-miller](https://redirect.github.com/cory-miller) in
[#&#8203;1732](https://redirect.github.com/actions/checkout/pull/1732)

###
[`v4.1.5`](https://redirect.github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v415)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4.1.4...v4.1.5)

- Update NPM dependencies by
[@&#8203;cory-miller](https://redirect.github.com/cory-miller) in
[#&#8203;1703](https://redirect.github.com/actions/checkout/pull/1703)
- Bump github/codeql-action from 2 to 3 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1694](https://redirect.github.com/actions/checkout/pull/1694)
- Bump actions/setup-node from 1 to 4 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1696](https://redirect.github.com/actions/checkout/pull/1696)
- Bump actions/upload-artifact from 2 to 4 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1695](https://redirect.github.com/actions/checkout/pull/1695)
- README: Suggest `user.email` to be
`41898282+github-actions[bot]@&#8203;users.noreply.github.com` by
[@&#8203;cory-miller](https://redirect.github.com/cory-miller) in
[#&#8203;1707](https://redirect.github.com/actions/checkout/pull/1707)

###
[`v4.1.4`](https://redirect.github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v414)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4.1.3...v4.1.4)

- Disable `extensions.worktreeConfig` when disabling `sparse-checkout`
by [@&#8203;jww3](https://redirect.github.com/jww3) in
[#&#8203;1692](https://redirect.github.com/actions/checkout/pull/1692)
- Add dependabot config by
[@&#8203;cory-miller](https://redirect.github.com/cory-miller) in
[#&#8203;1688](https://redirect.github.com/actions/checkout/pull/1688)
- Bump the minor-actions-dependencies group with 2 updates by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1693](https://redirect.github.com/actions/checkout/pull/1693)
- Bump word-wrap from 1.2.3 to 1.2.5 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1643](https://redirect.github.com/actions/checkout/pull/1643)

###
[`v4.1.3`](https://redirect.github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v413)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4.1.2...v4.1.3)

- Check git version before attempting to disable `sparse-checkout` by
[@&#8203;jww3](https://redirect.github.com/jww3) in
[#&#8203;1656](https://redirect.github.com/actions/checkout/pull/1656)
- Add SSH user parameter by
[@&#8203;cory-miller](https://redirect.github.com/cory-miller) in
[#&#8203;1685](https://redirect.github.com/actions/checkout/pull/1685)
- Update `actions/checkout` version in `update-main-version.yml` by
[@&#8203;jww3](https://redirect.github.com/jww3) in
[#&#8203;1650](https://redirect.github.com/actions/checkout/pull/1650)

###
[`v4.1.2`](https://redirect.github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v412)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4.1.1...v4.1.2)

- Fix: Disable sparse checkout whenever `sparse-checkout` option is not
present [@&#8203;dscho](https://redirect.github.com/dscho) in
[#&#8203;1598](https://redirect.github.com/actions/checkout/pull/1598)

###
[`v4.1.1`](https://redirect.github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v411)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4.1.0...v4.1.1)

- Correct link to GitHub Docs by
[@&#8203;peterbe](https://redirect.github.com/peterbe) in
[#&#8203;1511](https://redirect.github.com/actions/checkout/pull/1511)
- Link to release page from what's new section by
[@&#8203;cory-miller](https://redirect.github.com/cory-miller) in
[#&#8203;1514](https://redirect.github.com/actions/checkout/pull/1514)

###
[`v4.1.0`](https://redirect.github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v410)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4...v4.1.0)

- [Add support for partial checkout
filters](https://redirect.github.com/actions/checkout/pull/1396)

</details>

<details>
<summary>actions/setup-python (actions/setup-python)</summary>

###
[`v6.2.0`](https://redirect.github.com/actions/setup-python/compare/v6.1.0...v6.2.0)

[Compare
Source](https://redirect.github.com/actions/setup-python/compare/v6.1.0...v6.2.0)

###
[`v6.1.0`](https://redirect.github.com/actions/setup-python/releases/tag/v6.1.0)

[Compare
Source](https://redirect.github.com/actions/setup-python/compare/v6...v6.1.0)

##### What's Changed

##### Enhancements:

- Add support for `pip-install` input by
[@&#8203;gowridurgad](https://redirect.github.com/gowridurgad) in
[#&#8203;1201](https://redirect.github.com/actions/setup-python/pull/1201)
- Add graalpy early-access and windows builds by
[@&#8203;timfel](https://redirect.github.com/timfel) in
[#&#8203;880](https://redirect.github.com/actions/setup-python/pull/880)

##### Dependency and Documentation updates:

- Enhanced wording and updated example usage for `allow-prereleases` by
[@&#8203;yarikoptic](https://redirect.github.com/yarikoptic) in
[#&#8203;979](https://redirect.github.com/actions/setup-python/pull/979)
- Upgrade urllib3 from 1.26.19 to 2.5.0 and document breaking changes in
v6 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1139](https://redirect.github.com/actions/setup-python/pull/1139)
- Upgrade typescript from 5.4.2 to 5.9.3 and Documentation update by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1094](https://redirect.github.com/actions/setup-python/pull/1094)
- Upgrade actions/publish-action from 0.3.0 to 0.4.0 & Documentation
update for pip-install input by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1199](https://redirect.github.com/actions/setup-python/pull/1199)
- Upgrade requests from 2.32.2 to 2.32.4 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1130](https://redirect.github.com/actions/setup-python/pull/1130)
- Upgrade prettier from 3.5.3 to 3.6.2 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1234](https://redirect.github.com/actions/setup-python/pull/1234)
- Upgrade [@&#8203;types/node](https://redirect.github.com/types/node)
from 24.1.0 to 24.9.1 and update macos-13 to macos-15-intel by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1235](https://redirect.github.com/actions/setup-python/pull/1235)

##### New Contributors

- [@&#8203;yarikoptic](https://redirect.github.com/yarikoptic) made
their first contribution in
[#&#8203;979](https://redirect.github.com/actions/setup-python/pull/979)

**Full Changelog**:
<https://github.com/actions/setup-python/compare/v6...v6.1.0>

###
[`v6.0.0`](https://redirect.github.com/actions/setup-python/releases/tag/v6.0.0)

[Compare
Source](https://redirect.github.com/actions/setup-python/compare/v6...v6)

#### What's Changed

##### Breaking Changes

- Upgrade to node 24 by
[@&#8203;salmanmkc](https://redirect.github.com/salmanmkc) in
[#&#8203;1164](https://redirect.github.com/actions/setup-python/pull/1164)

Make sure your runner is on version v2.327.1 or later to ensure
compatibility with this release. [See Release
Notes](https://redirect.github.com/actions/runner/releases/tag/v2.327.1)

##### Enhancements:

- Add support for `pip-version` by
[@&#8203;priyagupta108](https://redirect.github.com/priyagupta108) in
[#&#8203;1129](https://redirect.github.com/actions/setup-python/pull/1129)
- Enhance reading from .python-version by
[@&#8203;krystof-k](https://redirect.github.com/krystof-k) in
[#&#8203;787](https://redirect.github.com/actions/setup-python/pull/787)
- Add version parsing from Pipfile by
[@&#8203;aradkdj](https://redirect.github.com/aradkdj) in
[#&#8203;1067](https://redirect.github.com/actions/setup-python/pull/1067)

##### Bug fixes:

- Clarify pythonLocation behaviour for PyPy and GraalPy in environment
variables by
[@&#8203;aparnajyothi-y](https://redirect.github.com/aparnajyothi-y) in
[#&#8203;1183](https://redirect.github.com/actions/setup-python/pull/1183)
- Change missing cache directory error to warning by
[@&#8203;aparnajyothi-y](https://redirect.github.com/aparnajyothi-y) in
[#&#8203;1182](https://redirect.github.com/actions/setup-python/pull/1182)
- Add Architecture-Specific PATH Management for Python with --user Flag
on Windows by
[@&#8203;aparnajyothi-y](https://redirect.github.com/aparnajyothi-y) in
[#&#8203;1122](https://redirect.github.com/actions/setup-python/pull/1122)
- Include python version in PyPy python-version output by
[@&#8203;cdce8p](https://redirect.github.com/cdce8p) in
[#&#8203;1110](https://redirect.github.com/actions/setup-python/pull/1110)
- Update docs: clarification on pip authentication with setup-python by
[@&#8203;priya-kinthali](https://redirect.github.com/priya-kinthali) in
[#&#8203;1156](https://redirect.github.com/actions/setup-python/pull/1156)

##### Dependency updates:

- Upgrade idna from 2.9 to 3.7 in /**tests**/data by
[@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in
[#&#8203;843](https://redirect.github.com/actions/setup-python/pull/843)
- Upgrade form-data to fix critical vulnerabilities
[#&#8203;182](https://redirect.github.com/actions/setup-python/issues/182)
&
[#&#8203;183](https://redirect.github.com/actions/setup-python/issues/183)
by [@&#8203;aparnajyothi-y](https://redirect.github.com/aparnajyothi-y)
in
[#&#8203;1163](https://redirect.github.com/actions/setup-python/pull/1163)
- Upgrade setuptools to 78.1.1 to fix path traversal vulnerability in
PackageIndex.download by
[@&#8203;aparnajyothi-y](https://redirect.github.com/aparnajyothi-y) in
[#&#8203;1165](https://redirect.github.com/actions/setup-python/pull/1165)
- Upgrade actions/checkout from 4 to 5 by
[@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in
[#&#8203;1181](https://redirect.github.com/actions/setup-python/pull/1181)
- Upgrade
[@&#8203;actions/tool-cache](https://redirect.github.com/actions/tool-cache)
from 2.0.1 to 2.0.2 by
[@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in
[#&#8203;1095](https://redirect.github.com/actions/setup-python/pull/1095)

#### New Contributors

- [@&#8203;krystof-k](https://redirect.github.com/krystof-k) made their
first contribution in
[#&#8203;787](https://redirect.github.com/actions/setup-python/pull/787)
- [@&#8203;cdce8p](https://redirect.github.com/cdce8p) made their first
contribution in
[#&#8203;1110](https://redirect.github.com/actions/setup-python/pull/1110)
- [@&#8203;aradkdj](https://redirect.github.com/aradkdj) made their
first contribution in
[#&#8203;1067](https://redirect.github.com/actions/setup-python/pull/1067)

**Full Changelog**:
<https://github.com/actions/setup-python/compare/v5...v6.0.0>

###
[`v6`](https://redirect.github.com/actions/setup-python/compare/v5...v6)

[Compare
Source](https://redirect.github.com/actions/setup-python/compare/v5.6.0...v6)

###
[`v5.6.0`](https://redirect.github.com/actions/setup-python/releases/tag/v5.6.0)

[Compare
Source](https://redirect.github.com/actions/setup-python/compare/v5.5.0...v5.6.0)

#### What's Changed

- Workflow updates related to Ubuntu 20.04 by
[@&#8203;aparnajyothi-y](https://redirect.github.com/aparnajyothi-y) in
[#&#8203;1065](https://redirect.github.com/actions/setup-python/pull/1065)
- Fix for Candidate Not Iterable Error by
[@&#8203;aparnajyothi-y](https://redirect.github.com/aparnajyothi-y) in
[#&#8203;1082](https://redirect.github.com/actions/setup-python/pull/1082)
- Upgrade semver and
[@&#8203;types/semver](https://redirect.github.com/types/semver) by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1091](https://redirect.github.com/actions/setup-python/pull/1091)
- Upgrade prettier from 2.8.8 to 3.5.3 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1046](https://redirect.github.com/actions/setup-python/pull/1046)
- Upgrade ts-jest from 29.1.2 to 29.3.2 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1081](https://redirect.github.com/actions/setup-python/pull/1081)

**Full Changelog**:
<https://github.com/actions/setup-python/compare/v5...v5.6.0>

###
[`v5.5.0`](https://redirect.github.com/actions/setup-python/releases/tag/v5.5.0)

[Compare
Source](https://redirect.github.com/actions/setup-python/compare/v5.4.0...v5.5.0)

#### What's Changed

##### Enhancements:

- Support free threaded Python versions like '3.13t' by
[@&#8203;colesbury](https://redirect.github.com/colesbury) in
[#&#8203;973](https://redirect.github.com/actions/setup-python/pull/973)
- Enhance Workflows: Include ubuntu-arm runners, Add e2e Testing for
free threaded and Upgrade
[@&#8203;action/cache](https://redirect.github.com/action/cache) from
4.0.0 to 4.0.3 by
[@&#8203;priya-kinthali](https://redirect.github.com/priya-kinthali) in
[#&#8203;1056](https://redirect.github.com/actions/setup-python/pull/1056)
- Add support for .tool-versions file in setup-python by
[@&#8203;mahabaleshwars](https://redirect.github.com/mahabaleshwars) in
[#&#8203;1043](https://redirect.github.com/actions/setup-python/pull/1043)

##### Bug fixes:

- Fix architecture for pypy on Linux ARM64 by
[@&#8203;mayeut](https://redirect.github.com/mayeut) in
[#&#8203;1011](https://redirect.github.com/actions/setup-python/pull/1011)
  This update maps arm64 to aarch64 for Linux ARM64 PyPy installations.

##### Dependency updates:

- Upgrade [@&#8203;vercel/ncc](https://redirect.github.com/vercel/ncc)
from 0.38.1 to 0.38.3 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1016](https://redirect.github.com/actions/setup-python/pull/1016)
- Upgrade
[@&#8203;actions/glob](https://redirect.github.com/actions/glob) from
0.4.0 to 0.5.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1015](https://redirect.github.com/actions/setup-python/pull/1015)

#### New Contributors

- [@&#8203;colesbury](https://redirect.github.com/colesbury) made their
first contribution in
[#&#8203;973](https://redirect.github.com/actions/setup-python/pull/973)
- [@&#8203;mahabaleshwars](https://redirect.github.com/mahabaleshwars)
made their first contribution in
[#&#8203;1043](https://redirect.github.com/actions/setup-python/pull/1043)

**Full Changelog**:
<https://github.com/actions/setup-python/compare/v5...v5.5.0>

###
[`v5.4.0`](https://redirect.github.com/actions/setup-python/releases/tag/v5.4.0)

[Compare
Source](https://redirect.github.com/actions/setup-python/compare/v5.3.0...v5.4.0)

#### What's Changed

##### Enhancements:

- Update cache error message by
[@&#8203;aparnajyothi-y](https://redirect.github.com/aparnajyothi-y) in
[#&#8203;968](https://redirect.github.com/actions/setup-python/pull/968)
- Enhance Workflows: Add Ubuntu-24, Remove Python 3.8 by
[@&#8203;priya-kinthali](https://redirect.github.com/priya-kinthali) in
[#&#8203;985](https://redirect.github.com/actions/setup-python/pull/985)
- Configure Dependabot settings by
[@&#8203;HarithaVattikuti](https://redirect.github.com/HarithaVattikuti)
in
[#&#8203;1008](https://redirect.github.com/actions/setup-python/pull/1008)

##### Documentation changes:

- Readme update - recommended permissions by
[@&#8203;benwells](https://redirect.github.com/benwells) in
[#&#8203;1009](https://redirect.github.com/actions/setup-python/pull/1009)
- Improve Advanced Usage examples by
[@&#8203;lrq3000](https://redirect.github.com/lrq3000) in
[#&#8203;645](https://redirect.github.com/actions/setup-python/pull/645)

##### Dependency updates:

- Upgrade `undici` from 5.28.4 to 5.28.5 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1012](https://redirect.github.com/actions/setup-python/pull/1012)
- Upgrade `urllib3` from 1.25.9 to 1.26.19 in /**tests**/data by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;895](https://redirect.github.com/actions/setup-python/pull/895)
- Upgrade `actions/publish-immutable-action` from 0.0.3 to 0.0.4 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1014](https://redirect.github.com/actions/setup-python/pull/1014)
- Upgrade `@actions/http-client` from 2.2.1 to 2.2.3 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1020](https://redirect.github.com/actions/setup-python/pull/1020)
- Upgrade `requests` from 2.24.0 to 2.32.2 in /**tests**/data by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1019](https://redirect.github.com/actions/setup-python/pull/1019)
- Upgrade `@actions/cache` to `^4.0.0` by
[@&#8203;priyagupta108](https://redirect.github.com/priyagupta108) in
[#&#8203;1007](https://redirect.github.com/actions/setup-python/pull/1007)

#### New Contributors

- [@&#8203;benwells](https://redirect.github.com/benwells) made their
first contribution in
[#&#8203;1009](https://redirect.github.com/actions/setup-python/pull/1009)
-
[@&#8203;HarithaVattikuti](https://redirect.github.com/HarithaVattikuti)
made their first contribution in
[#&#8203;1008](https://redirect.github.com/actions/setup-python/pull/1008)
- [@&#8203;lrq3000](https://redirect.github.com/lrq3000) made their
first contribution in
[#&#8203;645](https://redirect.github.com/actions/setup-python/pull/645)

**Full Changelog**:
<https://github.com/actions/setup-python/compare/v5...v5.4.0>

###
[`v5.3.0`](https://redirect.github.com/actions/setup-python/releases/tag/v5.3.0)

[Compare
Source](https://redirect.github.com/actions/setup-python/compare/v5.2.0...v5.3.0)

#### What's Changed

- Add workflow file for publishing releases to immutable action package
by [@&#8203;Jcambass](https://redirect.github.com/Jcambass) in
[#&#8203;941](https://redirect.github.com/actions/setup-python/pull/941)
- Upgrade IA publish by
[@&#8203;Jcambass](https://redirect.github.com/Jcambass) in
[#&#8203;943](https://redirect.github.com/actions/setup-python/pull/943)

##### Bug Fixes:

- Normalise Line Endings to Ensure Cross-Platform Consistency by
[@&#8203;priya-kinthali](https://redirect.github.com/priya-kinthali) in
[#&#8203;938](https://redirect.github.com/actions/setup-python/pull/938)
- Revise `isGhes` logic by
[@&#8203;jww3](https://redirect.github.com/jww3) in
[#&#8203;963](https://redirect.github.com/actions/setup-python/pull/963)
- Bump pillow from 7.2 to 10.2.0 by
[@&#8203;aparnajyothi-y](https://redirect.github.com/aparnajyothi-y) in
[#&#8203;956](https://redirect.github.com/actions/setup-python/pull/956)

##### Enhancements:

- Enhance workflows and documentation updates by
[@&#8203;priya-kinthali](https://redirect.github.com/priya-kinthali) in
[#&#8203;965](https://redirect.github.com/actions/setup-python/pull/965)
- Bump default versions to latest by
[@&#8203;jeffwidman](https://redirect.github.com/jeffwidman) in
[#&#8203;905](https://redirect.github.com/actions/setup-python/pull/905)

#### New Contributors

- [@&#8203;Jcambass](https://redirect.github.com/Jcambass) made their
first contribution in
[#&#8203;941](https://redirect.github.com/actions/setup-python/pull/941)
- [@&#8203;jww3](https://redirect.github.com/jww3) made their first
contribution in
[#&#8203;963](https://redirect.github.com/actions/setup-python/pull/963)

**Full Changelog**:
<https://github.com/actions/setup-python/compare/v5...v5.3.0>

###
[`v5.2.0`](https://redirect.github.com/actions/setup-python/releases/tag/v5.2.0)

[Compare
Source](https://redirect.github.com/actions/setup-python/compare/v5.1.1...v5.2.0)

#### What's Changed

##### Bug fixes:

- Add `.zip` extension to Windows package downloads for `Expand-Archive`
Compatibility by
[@&#8203;priyagupta108](https://redirect.github.com/priyagupta108) in
[#&#8203;916](https://redirect.github.com/actions/setup-python/pull/916)
This addresses compatibility issues on Windows self-hosted runners by
ensuring that the filenames for Python and PyPy package downloads
explicitly include the .zip extension, allowing the Expand-Archive
command to function correctly.
- Add arch to cache key by
[@&#8203;Zxilly](https://redirect.github.com/Zxilly) in
[#&#8203;896](https://redirect.github.com/actions/setup-python/pull/896)
This addresses issues with caching by adding the architecture (arch) to
the cache key, ensuring that cache keys are accurate to prevent
conflicts.
Note: This change may break previous cache keys as they will no longer
be compatible with the new format.

##### Documentation changes:

- Fix display of emojis in contributors doc by
[@&#8203;sciencewhiz](https://redirect.github.com/sciencewhiz) in
[#&#8203;899](https://redirect.github.com/actions/setup-python/pull/899)
- Documentation update for caching poetry dependencies by
[@&#8203;gowridurgad](https://redirect.github.com/gowridurgad) in
[#&#8203;908](https://redirect.github.com/actions/setup-python/pull/908)

##### Dependency updates:

- Bump [@&#8203;iarna/toml](https://redirect.github.com/iarna/toml)
version from 2.2.5 to 3.0.0 by
[@&#8203;priya-kinthali](https://redirect.github.com/priya-kinthali) in
[#&#8203;912](https://redirect.github.com/actions/setup-python/pull/912)
- Bump pyinstaller from 3.6 to 5.13.1 by
[@&#8203;aparnajyothi-y](https://redirect.github.com/aparnajyothi-y) in
[#&#8203;923](https://redirect.github.com/actions/setup-python/pull/923)

#### New Contributors

- [@&#8203;sciencewhiz](https://redirect.github.com/sciencewhiz) made
their first contribution in
[#&#8203;899](https://redirect.github.com/actions/setup-python/pull/899)
- [@&#8203;priyagupta108](https://redirect.github.com/priyagupta108)
made their first contribution in
[#&#8203;916](https://redirect.github.com/actions/setup-python/pull/916)
- [@&#8203;Zxilly](https://redirect.github.com/Zxilly) made their first
contribution in
[#&#8203;896](https://redirect.github.com/actions/setup-python/pull/896)
- [@&#8203;aparnajyothi-y](https://redirect.github.com/aparnajyothi-y)
made their first contribution in
[#&#8203;923](https://redirect.github.com/actions/setup-python/pull/923)

**Full Changelog**:
<https://github.com/actions/setup-python/compare/v5...v5.2.0>

###
[`v5.1.1`](https://redirect.github.com/actions/setup-python/releases/tag/v5.1.1)

[Compare
Source](https://redirect.github.com/actions/setup-python/compare/v5.1.0...v5.1.1)

#### What's Changed

##### Bug fixes:

- fix(ci): update all failing workflows by
[@&#8203;mayeut](https://redirect.github.com/mayeut) in
[#&#8203;863](https://redirect.github.com/actions/setup-python/pull/863)
This update ensures compatibility and optimal performance of workflows
on the latest macOS version.

##### Documentation changes:

- Documentation update for cache by
[@&#8203;gowridurgad](https://redirect.github.com/gowridurgad) in
[#&#8203;873](https://redirect.github.com/actions/setup-python/pull/873)

##### Dependency updates:

- Bump braces from 3.0.2 to 3.0.3 and undici from 5.28.3 to 5.28.4 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;893](https://redirect.github.com/actions/setup-python/pull/893)

#### New Contributors

- [@&#8203;gowridurgad](https://redirect.github.com/gowridurgad) made
their first contribution in
[#&#8203;873](https://redirect.github.com/actions/setup-python/pull/873)

**Full Changelog**:
<https://github.com/actions/setup-python/compare/v5...v5.1.1>

###
[`v5.1.0`](https://redirect.github.com/actions/setup-python/releases/tag/v5.1.0)

[Compare
Source](https://redirect.github.com/actions/setup-python/compare/v5...v5.1.0)

#### What's Changed

- Leveraging the raw API to retrieve the version-manifest, as it does
not impose a rate limit and hence facilitates unrestricted consumption
without the need for a token for Github Enterprise Servers by
[@&#8203;Shegox](https://redirect.github.com/Shegox) in
[#&#8203;766](https://redirect.github.com/actions/setup-python/pull/766).
- Dependency updates by
[@&#8203;dependabot](https://redirect.github.com/dependabot) and
[@&#8203;HarithaVattikuti](https://redirect.github.com/HarithaVattikuti)
in
[#&#8203;817](https://redirect.github.com/actions/setup-python/pull/817)
- Documentation changes for version in README by
[@&#8203;basnijholt](https://redirect.github.com/basnijholt) in
[#&#8203;776](https://redirect.github.com/actions/setup-python/pull/776)
- Documentation changes for link in README by
[@&#8203;ukd1](https://redirect.github.com/ukd1) in
[#&#8203;793](https://redirect.github.com/actions/setup-python/pull/793)
- Documentation changes for link in Advanced Usage by
[@&#8203;Jamim](https://redirect.github.com/Jamim) in
[#&#8203;782](https://redirect.github.com/actions/setup-python/pull/782)
- Documentation changes for avoiding rate limit issues on GHES by
[@&#8203;priya-kinthali](https://redirect.github.com/priya-kinthali) in
[#&#8203;835](https://redirect.github.com/actions/setup-python/pull/835)

#### New Contributors

- [@&#8203;basnijholt](https://redirect.github.com/basnijholt) made
their first contribution in
[#&#8203;776](https://redirect.github.com/actions/setup-python/pull/776)
- [@&#8203;ukd1](https://redirect.github.com/ukd1) made their first
contribution in
[#&#8203;793](https://redirect.github.com/actions/setup-python/pull/793)
- [@&#8203;Jamim](https://redirect.github.com/Jamim) made their first
contribution in
[#&#8203;782](https://redirect.github.com/actions/setup-python/pull/782)
- [@&#8203;Shegox](https://redirect.github.com/Shegox) made their first
contribution in
[#&#8203;766](https://redirect.github.com/actions/setup-python/pull/766)
- [@&#8203;priya-kinthali](https://redirect.github.com/priya-kinthali)
made their first contribution in
[#&#8203;835](https://redirect.github.com/actions/setup-python/pull/835)

**Full Changelog**:
<https://github.com/actions/setup-python/compare/v5.0.0...v5.1.0>

</details>

<details>
<summary>pyca/cryptography (cryptography)</summary>

###
[`v48.0.0`](https://redirect.github.com/pyca/cryptography/compare/47.0.0...48.0.0)

[Compare
Source](https://redirect.github.com/pyca/cryptography/compare/47.0.0...48.0.0)

</details>

<details>
<summary>googleapis/google-cloud-python (db-dtypes)</summary>

###
[`v1.6.0`](https://redirect.github.com/googleapis/google-cloud-python/releases/tag/db-dtypes-v1.6.0):
db-dtypes: v1.6.0

[Compare
Source](https://redirect.github.com/googleapis/google-cloud-python/compare/db-dtypes-v1.5.1...db-dtypes-v1.6.0)

##### Features

- enable mypy session for db-dtypes
([#&#8203;16689](https://redirect.github.com/googleapis/google-cloud-python/issues/16689))
([856731e1](https://redirect.github.com/googleapis/google-cloud-python/commit/856731e1))

</details>

<details>
<summary>dorny/paths-filter (dorny/paths-filter)</summary>

###
[`v4.0.1`](https://redirect.github.com/dorny/paths-filter/releases/tag/v4.0.1)

[Compare
Source](https://redirect.github.com/dorny/paths-filter/compare/v4...v4.0.1)

#### What's Changed

- Support merge queue by
[@&#8203;masaru-iritani](https://redirect.github.com/masaru-iritani) in
[#&#8203;255](https://redirect.github.com/dorny/paths-filter/pull/255)

#### New Contributors

- [@&#8203;masaru-iritani](https://redirect.github.com/masaru-iritani)
made their first contribution in
[#&#8203;255](https://redirect.github.com/dorny/paths-filter/pull/255)

**Full Changelog**:
<https://github.com/dorny/paths-filter/compare/v4.0.0...v4.0.1>

###
[`v4.0.0`](https://redirect.github.com/dorny/paths-filter/blob/HEAD/CHANGELOG.md#v400)

[Compare
Source](https://redirect.github.com/dorny/paths-filter/compare/v4...v4)

- [Update action runtime to
node24](https://redirect.github.com/dorny/paths-filter/pull/294)

###
[`v4`](https://redirect.github.com/dorny/paths-filter/blob/HEAD/CHANGELOG.md#v400)

[Compare
Source](https://redirect.github.com/dorny/paths-filter/compare/v3.0.3...v4)

- [Update action runtime to
node24](https://redirect.github.com/dorny/paths-filter/pull/294)

###
[`v3.0.3`](https://redirect.github.com/dorny/paths-filter/blob/HEAD/CHANGELOG.md#v303)

[Compare
Source](https://redirect.github.com/dorny/paths-filter/compare/v3.0.2...v3.0.3)

- [Add missing
predicate-quantifier](https://redirect.github.com/dorny/paths-filter/pull/279)

###
[`v3.0.2`](https://redirect.github.com/dorny/paths-filter/blob/HEAD/CHANGELOG.md#v302)

[Compare
Source](https://redirect.github.com/dorny/paths-filter/compare/v3.0.1...v3.0.2)

- [Add config parameter for predicate
quantifier](https://redirect.github.com/dorny/paths-filter/pull/224)

###
[`v3.0.1`](https://redirect.github.com/dorny/paths-filter/blob/HEAD/CHANGELOG.md#v301)

[Compare
Source](https://redirect.github.com/dorny/paths-filter/compare/v3...v3.0.1)

- [Compare base and ref when token is
empty](https://redirect.github.com/dorny/paths-filter/pull/133)

</details>

<details>
<summary>kjd/idna (idna)</summary>

###
[`v3.14`](https://redirect.github.com/kjd/idna/compare/v3.13...v3.14)

[Compare
Source](https://redirect.github.com/kjd/idna/compare/v3.13...v3.14)

</details>

<details>
<summary>jestjs/jest (jest)</summary>

###
[`v30.4.2`](https://redirect.github.com/jestjs/jest/blob/HEAD/CHANGELOG.md#3042)

[Compare
Source](https://redirect.github.com/jestjs/jest/compare/v30.4.1...v30.4.2)

##### Fixes

- `[jest-runtime]` Fix named imports from CJS modules whose
`module.exports` is a function with own-property exports
([#&#8203;16150](https://redirect.github.com/jestjs/jest/pull/16150))

###
[`v30.4.1`](https://redirect.github.com/jestjs/jest/blob/HEAD/CHANGELOG.md#3041)

[Compare
Source](https://redirect.github.com/jestjs/jest/compare/v30.4.0...v30.4.1)

##### Features

- `[jest-config, jest-core, jest-runner, jest-schemas, jest-types]`
Allow custom runner configuration options via tuple format
`['runner-path', {options}]`
([#&#8203;16141](https://redirect.github.com/jestjs/jest/pull/16141))

##### Fixes

- `[jest-runtime]` Align CJS-from-ESM default export with Node:
`module.exports` is always the ESM default, `__esModule` unwrapping is
no longer applied
([#&#8203;16143](https://redirect.github.com/jestjs/jest/pull/16143))

###
[`v30.4.0`](https://redirect.github.com/jestjs/jest/blob/HEAD/CHANGELOG.md#3040)

[Compare
Source](https://redirect.github.com/jestjs/jest/compare/v30.3.0...v30.4.0)

##### Features

- `[babel-jest]` Support collecting coverage from `.mts`, `.cts` (and
other) files
([#&#8203;15994](https://redirect.github.com/jestjs/jest/pull/15994))
- `[jest-circus, jest-cli, jest-config, jest-core, jest-jasmine2,
jest-types]` Add `--collect-tests` flag to discover and list tests
without executing them
([#&#8203;16006](https://redirect.github.com/jestjs/jest/pull/16006))
- `[jest-config, jest-runner, jest-worker]` Add
`workerGracefulExitTimeout` config option to control how long workers
are given to exit before being force-killed
([#&#8203;15984](https://redirect.github.com/jestjs/jest/pull/15984))
- `[jest-config]` Add support for `jest.config.mts` as a valid
configuration file
([#&#8203;16005](https://redirect.github.com/jestjs/jest/pull/16005))
- `[jest-config, jest-core, jest-reporters, jest-runner]` `verbose` and
`silent` can now be set per-project; the project-level value overrides
the global value for that project's tests
([#&#8203;16133](https://redirect.github.com/jestjs/jest/pull/16133))
- `[@jest/fake-timers]` Accept `Temporal.Duration` in
`jest.advanceTimersByTime()` and `jest.advanceTimersByTimeAsync()`
([#&#8203;16128](https://redirect.github.com/jestjs/jest/pull/16128))
- `[@jest/fake-timers]` Accept `Temporal.Instant` and
`Temporal.ZonedDateTime` in `jest.setSystemTime()` and
`useFakeTimers({now})`
([#&#8203;16128](https://redirect.github.com/jestjs/jest/pull/16128))
- `[@jest/fake-timers]` Support faking `Temporal.Now.*`
([#&#8203;16131](https://redirect.github.com/jestjs/jest/pull/16131))
- `[jest-mock]` Add `clearMocksOnScope(scope)` on `ModuleMocker` for
clearing every mock function exposed on a scope object
([#&#8203;16088](https://redirect.github.com/jestjs/jest/pull/16088))
- `[jest-resolve]` Add `canResolveSync()` on `Resolver` so callers can
detect when a user-configured resolver only exports an `async` hook
([#&#8203;16064](https://redirect.github.com/jestjs/jest/pull/16064))
- `[jest-runtime]` Use synchronous `evaluate()` for ES modules without
top-level `await` on Node versions that support it (v24.9+), and prefer
the synchronous transform path when a sync transformer is configured
([#&#8203;16062](https://redirect.github.com/jestjs/jest/pull/16062))
- `[jest-runtime]` Support `require()` of ES modules on Node v24.9+
([#&#8203;16074](https://redirect.github.com/jestjs/jest/pull/16074))
- `[jest-runtime]` Validate TC39 import attributes (`with { type: 'json'
}`) on ESM imports
([#&#8203;16127](https://redirect.github.com/jestjs/jest/pull/16127))
- `[@jest/transform]` Add `canTransformSync(filename)` on
`ScriptTransformer` so callers can pick the sync vs async transform path
([#&#8203;16062](https://redirect.github.com/jestjs/jest/pull/16062))
- `[jest-util]` Add `isError` helper
([#&#8203;16076](https://redirect.github.com/jestjs/jest/pull/16076))
- `[pretty-format]` Support React 19
([#&#8203;16123](https://redirect.github.com/jestjs/jest/pull/16123))

##### Fixes

- `[expect-utils]` Fix `toStrictEqual` failing on `structuredClone`
results due to cross-realm constructor mismatch
([#&#8203;15959](https://redirect.github.com/jestjs/jest/pull/15959))
- `[@jest/expect-utils]` Prevent `toMatchObject`/subset matching from
throwing when encountering exotic iterables
([#&#8203;15952](https://redirect.github.com/jestjs/jest/pull/15952))
- `[fake-timers]` Convert `Date` to milliseconds before passing to
`@sinonjs/fake-timers`
([#&#8203;16029](https://redirect.github.com/jestjs/jest/pull/16029))
- `[jest]` Export `GlobalConfig` and `ProjectConfig` TypeScript types
([#&#8203;16132](https://redirect.github.com/jestjs/jest/pull/16132))
- `[jest-circus]` Prevent crash when `asyncError` is undefined for
non-Error throws
([#&#8203;16003](https://redirect.github.com/jestjs/jest/pull/16003))
- `[jest-circus, jest-jasmine2]` Include `Error.cause` in JSON
`failureMessages` output
([#&#8203;15967](https://redirect.github.com/jestjs/jest/pull/15967))
- `[jest-config]` Fix preset path resolution on Windows when the preset
uses subpath `exports`
([#&#8203;15961](https://redirect.github.com/jestjs/jest/pull/15961))
- `[jest-config]` Allow `collectCoverage` and `coverageProvider` in
project config without a validation warning
([#&#8203;16132](https://redirect.github.com/jestjs/jest/pull/16132))
- `[jest-config]` Project config validator now emits "is not supported
in an individual project configuration" instead of "probably a typing
mistake" for known global-only options
([#&#8203;16132](https://redirect.github.com/jestjs/jest/pull/16132))
- `[jest-environment-node]` Fix `--localstorage-file` warning on Node
25+
([#&#8203;16086](https://redirect.github.com/jestjs/jest/pull/16086))
- `[jest-reporters]` Apply global coverage threshold to unmatched
pattern files in addition to glob/path thresholds
([#&#8203;16137](https://redirect.github.com/jestjs/jest/pull/16137))
- `[jest-reporters, jest-runner, jest-runtime, jest-transform]` Fix
coverage report not showing correct code coverage when using `projects`
config option
([#&#8203;16140](https://redirect.github.com/jestjs/jest/pull/16140))
- `[jest-runtime]` Resolve `expect` and `@jest/expect` from the internal
module registry so test-file imports share the same `JestAssertionError`
as the global `expect`
([#&#8203;16130](https://redirect.github.com/jestjs/jest/pull/16130))
- `[jest-runtime]` Improve CJS-from-ESM interop: `__esModule`/Babel
default unwrap, broader named-export coverage, and shared CJS singleton
across importers
([#&#8203;16050](https://redirect.github.com/jestjs/jest/pull/16050))
- `[jest-runtime]` Load `.js` files with ESM syntax but no
`"type":"module"` marker as native ESM
([#&#8203;16050](https://redirect.github.com/jestjs/jest/pull/16050))
- `[jest-runtime]` Extend the `.js`-with-ESM-syntax fallback to
`require()` on Node v24.9+ - falls back to `require(esm)` when the CJS
parser rejects ESM syntax
([#&#8203;16078](https://redirect.github.com/jestjs/jest/pull/16078))
- `[jest-runtime]` Fix deadlocks and double-evaluation in concurrent ESM
and wasm imports
([#&#8203;16050](https://redirect.github.com/jestjs/jest/pull/16050))
- `[jest-runtime]` Fix error when `require()` is called after the Jest
environment has been torn down
([#&#8203;15951](https://redirect.github.com/jestjs/jest/pull/15951))
- `[jest-runtime]` Fix missing error when `import()` is called after the
Jest environment has been torn down
([#&#8203;16080](https://redirect.github.com/jestjs/jest/pull/16080))
- `[jest-runtime]` Fix virtual `unstable_mockModule` registrations not
respected in ESM
([#&#8203;16081](https://redirect.github.com/jestjs/jest/pull/16081))
- `[jest-runtime]` Apply `moduleNameMapper` when resolving modules with
`require.resolve()` and the `paths` option
([#&#8203;16135](https://redirect.github.com/jestjs/jest/pull/16135))

##### Chore & Maintenance

- `[@jest/fake-timers]` Upgrade `@sinonjs/fake-timers`
([#&#8203;16139](https://redirect.github.com/jestjs/jest/pull/16139))
- `[jest-runtime]` Use synchronous `linkRequests` / `instantiate` for
ESM linking on Node v24.9+
([#&#8203;16063](https://redirect.github.com/jestjs/jest/pull/16063))

</details>

<details>
<summary>jsdom/jsdom (jsdom)</summary>

###
[`v29.1.1`](https://redirect.github.com/jsdom/jsdom/compare/v29.1.0...9b9ea7e10b7842cd38c61458a38774cc3b60c24c)

[Compare
Source](https://redirect.github.com/jsdom/jsdom/compare/v29.1.0...v29.1.1)

</details>

<details>
<summary>pandas-dev/pandas (pandas)</summary>

###
[`v3.0.2`](https://redirect.github.com/pandas-dev/pandas/releases/tag/v3.0.2):
pandas 3.0.2

[Compare
Source](https://redirect.github.com/pandas-dev/pandas/compare/v3.0.1...v3.0.2)

We are pleased to announce the release of pandas 3.0.2.
This is a patch release in the 3.0.x series and includes some regression
fixes and bug fixes. We recommend that all users of the 3.0.x series
upgrade to this version.

See the [full
whatsnew](https://pandas.pydata.org/docs/dev/whatsnew/v3.0.2.html) for a
list of all the changes.

Pandas 3.0 supports Python 3.11 and higher.
The release can be installed from PyPI:

```
python -m pip install --upgrade pandas==3.0.*
```

Or from conda-forge

```
conda install -c conda-forge pandas=3.0
```

Please report any issues with the release on the [pandas issue
tracker](https://redirect.github.com/pandas-dev/pandas/issues).

Thanks to all the contributors who made this release possible.

###
[`v3.0.1`](https://redirect.github.com/pandas-dev/pandas/releases/tag/v3.0.1):
pandas 3.0.1

[Compare
Source](https://redirect.github.com/pandas-dev/pandas/compare/v3.0.0...v3.0.1)

We are pleased to announce the release of pandas 3.0.1.
This is a patch release in the 3.0.x series and includes some regression
fixes and bug fixes. We recommend that all users of the 3.0.x series
upgrade to this version.

See the [full
whatsnew](https://pandas.pydata.org/docs/dev/whatsnew/v3.0.1.html) for a
list of all the changes.

Pandas 3.0.0 supports Python 3.11 and 

> ✂ **Note**
> 
> PR body was truncated to here.


</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/googleapis/google-cloud-python).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNTkuMiIsInVwZGF0ZWRJblZlciI6IjQzLjE1OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

---------

Co-authored-by: Anthonios Partheniou <partheniou@google.com>
Bumps [protobuf](https://github.com/protocolbuffers/protobuf) from
4.25.8 to 5.29.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/protocolbuffers/protobuf/releases">protobuf's
releases</a>.</em></p>
<blockquote>
<h2>Protocol Buffers v34.0-rc1</h2>
<h1>Announcements</h1>
<ul>
<li><strong>This version includes breaking changes to: C++, Objective-C,
PHP, Python.</strong></li>
<li>[Bazel] Remove deprecated ProtoInfo.transitive_imports. Use
equivalent transitive_sources instead (<a
href="https://github.com/protocolbuffers/protobuf/commit/0a5c2f6b633c1e5259f566cb42d30fe347b8aadb">https://github.com/protocolbuffers/protobuf/commit/0a5c2f6b633c1e5259f566cb42d30fe347b8aadb</a>)</li>
<li>[C++] Make generator headers private (<a
href="https://github.com/protocolbuffers/protobuf/commit/3a2af3510f0d454dbe3e4dc281674b61c4d20b9e">https://github.com/protocolbuffers/protobuf/commit/3a2af3510f0d454dbe3e4dc281674b61c4d20b9e</a>)</li>
<li>[C++] Add a debug check that the target of CopyFrom is not a
descendant of the source. (<a
href="https://github.com/protocolbuffers/protobuf/commit/7a7589823d2cfaaf7994b050e98d5d553bc9b1c1">https://github.com/protocolbuffers/protobuf/commit/7a7589823d2cfaaf7994b050e98d5d553bc9b1c1</a>)</li>
<li>[C++] Add [[nodiscard]] to many APIs. (<a
href="https://github.com/protocolbuffers/protobuf/commit/a70115f33f9af2c4b2202c800b84837e7fe0d738">https://github.com/protocolbuffers/protobuf/commit/a70115f33f9af2c4b2202c800b84837e7fe0d738</a>)</li>
<li>[C++] Make the arena-enabled constructors of
<code>RepeatedField</code>, <code>RepeatedPtrField</code>, and
<code>Map</code> private. (<a
href="https://github.com/protocolbuffers/protobuf/commit/ef890c3d0c79398c70e047fe5dd893f460ba2336">https://github.com/protocolbuffers/protobuf/commit/ef890c3d0c79398c70e047fe5dd893f460ba2336</a>)</li>
<li>[C++] Remove deprecated FieldDescriptor::label() in OSS. Use
is_repeated() or is_required() instead (<a
href="https://github.com/protocolbuffers/protobuf/commit/b76faa921fdd244f374c7be0bddd4050fc42c292">https://github.com/protocolbuffers/protobuf/commit/b76faa921fdd244f374c7be0bddd4050fc42c292</a>)</li>
<li>[C++] Removes proto2::util::MessageDifferencer::AddIgnoreCriteria
that takes a raw pointer as an argument in favor of the overload that
takes a unique_ptr. Remove macro
PROTOBUF_FUTURE_REMOVE_ADD_IGNORE_CRITERIA (<a
href="https://github.com/protocolbuffers/protobuf/commit/b115358c64127896fed88b8b5ef5d91d86d8cbae">https://github.com/protocolbuffers/protobuf/commit/b115358c64127896fed88b8b5ef5d91d86d8cbae</a>)</li>
<li>[C++] Remove deprecated FieldDescriptor::has_optional_keyword() in
OSS. Use is_repeated() or has_presence() instead (<a
href="https://github.com/protocolbuffers/protobuf/commit/68346ec9348e932664e58c3ecdcd1478f95233a8">https://github.com/protocolbuffers/protobuf/commit/68346ec9348e932664e58c3ecdcd1478f95233a8</a>)</li>
<li>[C++] Remove AddUnusedImportTrackFile() and
ClearUnusedImportTrackFiles(). Remove
PROTOBUF_FUTURE_RENAME_ADD_UNUSED_IMPORT (<a
href="https://github.com/protocolbuffers/protobuf/commit/837a2cd1d6c75402b2503ffe7cd8aeaf25868536">https://github.com/protocolbuffers/protobuf/commit/837a2cd1d6c75402b2503ffe7cd8aeaf25868536</a>)</li>
<li>[C++] Remove deprecated FieldDescriptor::is_optional() in OSS. Use
(!is_required() &amp;&amp; !is_repeated()) instead (<a
href="https://github.com/protocolbuffers/protobuf/commit/9dbc5d479a8e453921485d8d3de47fb3c005f1af">https://github.com/protocolbuffers/protobuf/commit/9dbc5d479a8e453921485d8d3de47fb3c005f1af</a>)</li>
<li>[C++] Remove deprecated UseDeprecatedLegacyJsonFieldConflicts() (<a
href="https://github.com/protocolbuffers/protobuf/commit/c301c2ca286327a21c50c0c4cd877afc9c655b00">https://github.com/protocolbuffers/protobuf/commit/c301c2ca286327a21c50c0c4cd877afc9c655b00</a>)</li>
<li>[C++] All entity names have length limit (2afb0dc)</li>
<li>[ObjC] Remove <code>generate_minimal_imports</code> generation
option warning (<a
href="https://github.com/protocolbuffers/protobuf/commit/45b1297fdaad5a9436d0e207422168c38dc45ac4">https://github.com/protocolbuffers/protobuf/commit/45b1297fdaad5a9436d0e207422168c38dc45ac4</a>)</li>
<li>[ObjC] Fix nullability annotations on some
<code>GPB*Dictionary</code> types. (<a
href="https://github.com/protocolbuffers/protobuf/commit/ea67d6d26a48478a567c404679e3bb99cf230d50">https://github.com/protocolbuffers/protobuf/commit/ea67d6d26a48478a567c404679e3bb99cf230d50</a>)</li>
<li>[ObjC] Remove <code>-[GPBFieldDescriptor optional]</code> (<a
href="https://github.com/protocolbuffers/protobuf/commit/3414dc151eb4dcbdb2ca952e2589993bf7af75c4">https://github.com/protocolbuffers/protobuf/commit/3414dc151eb4dcbdb2ca952e2589993bf7af75c4</a>)</li>
<li>[Other] Remove deprecated flag for enabling MSVC support (<a
href="https://github.com/protocolbuffers/protobuf/commit/97c979be6e0907e1051bee62584dac4594e73fa7">https://github.com/protocolbuffers/protobuf/commit/97c979be6e0907e1051bee62584dac4594e73fa7</a>)</li>
<li>[PHP] Remove deprecated PHP APIs (<a
href="https://github.com/protocolbuffers/protobuf/commit/9c45014099a4f7004fab6dd1278de2f4f2a393c5">https://github.com/protocolbuffers/protobuf/commit/9c45014099a4f7004fab6dd1278de2f4f2a393c5</a>)</li>
<li>[PHP] Remove deprecated PHP APIs FieldDescriptor getLabel, use
IsRepeated or isRequired instead. (<a
href="https://github.com/protocolbuffers/protobuf/commit/42081219920c6fad17ba6ddd1e28d111bcfb3345">https://github.com/protocolbuffers/protobuf/commit/42081219920c6fad17ba6ddd1e28d111bcfb3345</a>,
<a
href="https://github.com/protocolbuffers/protobuf/commit/cd76e675b14d00dda5623b30835d2bc7105fccc6">https://github.com/protocolbuffers/protobuf/commit/cd76e675b14d00dda5623b30835d2bc7105fccc6</a>,
<a
href="https://github.com/protocolbuffers/protobuf/commit/42081219920c6fad17ba6ddd1e28d111bcfb3345">https://github.com/protocolbuffers/protobuf/commit/42081219920c6fad17ba6ddd1e28d111bcfb3345</a>)</li>
<li>[PHP] Add PHP typehints for setters and remove redundant GPBUtil
checks (<a
href="https://redirect.github.com/protocolbuffers/protobuf/pull/25296">protocolbuffers/protobuf#25296</a>)
(<a
href="https://github.com/protocolbuffers/protobuf/commit/aee03b78929c02461a5f9d8e136a2a016359b0cd">https://github.com/protocolbuffers/protobuf/commit/aee03b78929c02461a5f9d8e136a2a016359b0cd</a>)</li>
<li>[PHP] support default values for editions/proto2 (<a
href="https://redirect.github.com/protocolbuffers/protobuf/pull/25161">protocolbuffers/protobuf#25161</a>)
(<a
href="https://github.com/protocolbuffers/protobuf/commit/b01099d56350551bae3da88b97bf3027274c9f17">https://github.com/protocolbuffers/protobuf/commit/b01099d56350551bae3da88b97bf3027274c9f17</a>)</li>
<li>[Python] Raise errors in OSS when assign bool to int/enum field in
Python Proto. (<a
href="https://github.com/protocolbuffers/protobuf/commit/5b116fe2f14f49dd0cc3b76089983717f211025c">https://github.com/protocolbuffers/protobuf/commit/5b116fe2f14f49dd0cc3b76089983717f211025c</a>)</li>
<li>[Python] Remove float_format/double_format from python proto
text_format (<a
href="https://github.com/protocolbuffers/protobuf/commit/e4854a186e0bfa867d5bfa5cd850608a948fd488">https://github.com/protocolbuffers/protobuf/commit/e4854a186e0bfa867d5bfa5cd850608a948fd488</a>)</li>
<li>[Python] Raise TypeError when convert non-timedelta to Duration, or
convert non-datetime to Timestamp in python proto. (Original code may
raise ArributeError) (<a
href="https://github.com/protocolbuffers/protobuf/commit/00aaca1b4d98954bc2933d7c8a5379ba6088124c">https://github.com/protocolbuffers/protobuf/commit/00aaca1b4d98954bc2933d7c8a5379ba6088124c</a>)</li>
<li>[Python] Remove float_precision from python proto json_format (<a
href="https://github.com/protocolbuffers/protobuf/commit/f027f1fcd52b9d080b7ee79f4024f53cf54e0dc5">https://github.com/protocolbuffers/protobuf/commit/f027f1fcd52b9d080b7ee79f4024f53cf54e0dc5</a>)</li>
<li>[Python] Remove deprecated FieldDescriptor::label() in OSS. Use
is_repeated() or is_required() instead (<a
href="https://github.com/protocolbuffers/protobuf/commit/b76faa921fdd244f374c7be0bddd4050fc42c292">https://github.com/protocolbuffers/protobuf/commit/b76faa921fdd244f374c7be0bddd4050fc42c292</a>)</li>
<li>[Python] Remove deprecated FieldDescriptor.label (<a
href="https://github.com/protocolbuffers/protobuf/commit/0a8ff55518ea5874478ad5b26515b31d186045a9">https://github.com/protocolbuffers/protobuf/commit/0a8ff55518ea5874478ad5b26515b31d186045a9</a>)</li>
<li>[Python] Remove deprecated UseDeprecatedLegacyJsonFieldConflicts()
(<a
href="https://github.com/protocolbuffers/protobuf/commit/c301c2ca286327a21c50c0c4cd877afc9c655b00">https://github.com/protocolbuffers/protobuf/commit/c301c2ca286327a21c50c0c4cd877afc9c655b00</a>)</li>
<li><a href="https://protobuf.dev/news/">Protobuf News</a> may include
additional announcements or pre-announcements for upcoming changes.</li>
<li><a href="https://protobuf.dev/support/migration/">Migration
Guide</a> may include additional guidance for breaking changes.</li>
</ul>
<h1>Bazel</h1>
<ul>
<li>Fix: cc_toolchain should prefer protoc when prebuilt flag is
flipped. (<a
href="https://redirect.github.com/protocolbuffers/protobuf/issues/25168">#25168</a>)
(<a
href="https://github.com/protocolbuffers/protobuf/commit/8c857c3a1c6a106b0a096f1c9fa504bfaca035a9">https://github.com/protocolbuffers/protobuf/commit/8c857c3a1c6a106b0a096f1c9fa504bfaca035a9</a>)</li>
<li>Breaking change: Remove deprecated ProtoInfo.transitive_imports. Use
equivalent transitive_sources instead (<a
href="https://github.com/protocolbuffers/protobuf/commit/0a5c2f6b633c1e5259f566cb42d30fe347b8aadb">https://github.com/protocolbuffers/protobuf/commit/0a5c2f6b633c1e5259f566cb42d30fe347b8aadb</a>)</li>
<li>Feat(bazel): wire up prebuilt protoc toolchain (<a
href="https://redirect.github.com/protocolbuffers/protobuf/issues/24115">#24115</a>)
(<a
href="https://github.com/protocolbuffers/protobuf/commit/cc23698b486e690ea2eb873cc7596a87c74a3ba6">https://github.com/protocolbuffers/protobuf/commit/cc23698b486e690ea2eb873cc7596a87c74a3ba6</a>)</li>
<li>Migrate <code>proto_descriptor_set</code> (<a
href="https://redirect.github.com/protocolbuffers/protobuf/issues/23369">#23369</a>)
(<a
href="https://github.com/protocolbuffers/protobuf/commit/8d4dfdd39a7a242a9ed631a6ab2192c57dd9b9c8">https://github.com/protocolbuffers/protobuf/commit/8d4dfdd39a7a242a9ed631a6ab2192c57dd9b9c8</a>)</li>
</ul>
<h1>Compiler</h1>
<ul>
<li>Ruby codegen: support generation of rbs files (<a
href="https://redirect.github.com/protocolbuffers/protobuf/issues/15633">#15633</a>)
(<a
href="https://github.com/protocolbuffers/protobuf/commit/6ebdf851ba78728f0aa145d38454ed9a316fb08d">https://github.com/protocolbuffers/protobuf/commit/6ebdf851ba78728f0aa145d38454ed9a316fb08d</a>)</li>
<li>Avoid collision name problems between a message named
<code>Xyz</code> and a direct sibling enum named <code>XyzView</code>
(<a
href="https://github.com/protocolbuffers/protobuf/commit/eba53e8f172b273d679759a72ce4250131ee3df1">https://github.com/protocolbuffers/protobuf/commit/eba53e8f172b273d679759a72ce4250131ee3df1</a>)</li>
<li>Generalizing and implementing ValidateFeatureSupport for both
Options and Features during proto parsing (<a
href="https://github.com/protocolbuffers/protobuf/commit/ed3c57114d8e2b47cca7697ddaa50c1b3762a6b0">https://github.com/protocolbuffers/protobuf/commit/ed3c57114d8e2b47cca7697ddaa50c1b3762a6b0</a>)</li>
<li>Fix a bug with custom features outside of the <code>pb</code>
package. (<a
href="https://github.com/protocolbuffers/protobuf/commit/872d3ce7a4da00d7dcec33ced20cfe45235935e8">https://github.com/protocolbuffers/protobuf/commit/872d3ce7a4da00d7dcec33ced20cfe45235935e8</a>)</li>
<li>Fix import option handling when include_imports isn't set. (<a
href="https://github.com/protocolbuffers/protobuf/commit/9ef9e80afd9bc8379d578fe67e5ab0738728c04e">https://github.com/protocolbuffers/protobuf/commit/9ef9e80afd9bc8379d578fe67e5ab0738728c04e</a>)</li>
<li>Fix a bug in STRICT check of namespaced enums to properly check for
'reserved 1 to max' (<a
href="https://github.com/protocolbuffers/protobuf/commit/1229d4adba24c0952ab85ce96bc7b7f8a1fe6d0f">https://github.com/protocolbuffers/protobuf/commit/1229d4adba24c0952ab85ce96bc7b7f8a1fe6d0f</a>)</li>
<li>Prevent accidental stripping of <code>debug_redact</code> options
via import option. (<a
href="https://github.com/protocolbuffers/protobuf/commit/f58b098bffa7ca4045ef7773b09151a6af5d0c28">https://github.com/protocolbuffers/protobuf/commit/f58b098bffa7ca4045ef7773b09151a6af5d0c28</a>)</li>
</ul>
<h1>C++</h1>
<ul>
<li>Add EnumerateEnumValues function. (<a
href="https://github.com/protocolbuffers/protobuf/commit/397d5d99db274b379d1384814074bf7df39d32f7">https://github.com/protocolbuffers/protobuf/commit/397d5d99db274b379d1384814074bf7df39d32f7</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/protocolbuffers/protobuf/commits">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=protobuf&package-manager=pip&previous-version=4.25.8&new-version=5.29.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/googleapis/google-cloud-python/network/alerts).

</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Anthonios Partheniou <partheniou@google.com>
Thank you for opening a Pull Request! Before submitting your PR, there
are a few things you can do to make sure it goes smoothly:
- [ ] Make sure to open an issue as a
[bug/issue](https://github.com/googleapis/google-cloud-python/issues)
before writing your code! That way we can discuss the change, evaluate
designs, and agree on the general idea
- [ ] Ensure the tests and linter pass
- [ ] Code coverage does not decrease (if any source code was changed)
- [ ] Appropriate docs were updated (if necessary)

Fixes #<issue_number_goes_here> 🦕
#17029)

This PR fixes the sqlalchemy-bigquery portion of Issue #16042.

Problem:
`test_compiled_query_literal_binds` was skipped for SQLAlchemy >= 2.0
because it was failing. The failure occurs because in SQLAlchemy 2.0,
`Connection.execute()` expects an executable object or a string (wrapped
in `text()`), and passing a `Compiled` object directly is no longer
supported.

Fix:
- Removed the skip condition for SQLAlchemy >= 2.0.
- Modified the test to wrap the compiled query string in
`sqlalchemy.text()` before passing it to `conn.execute()`.

This allows the test to run and pass on SQLAlchemy 2.0.
Onboard `google-maps-mapmanagement` API with initial `v2beta` version.

Produced by running the following commands:
```
$ V=$(sed -n 's/^version: *//p' librarian.yaml)
$ go run github.com/googleapis/librarian/tool/cmd/builddockerimages@${V} --version ${V} --language python
$ go run github.com/googleapis/librarian/cmd/librarian@${V} add google/maps/mapmanagement/v2beta
$ docker run -u $(id -u):$(id -g) -v .:/repo -v ~/.cache:/.cache -w /repo docker.io/library/librarian-python:${V}  generate google-maps-mapmanagement
```

Towards b/503325033
The contents of the change are:
* Fixed Sphinx format error: single backticks are replaced with double
backticks.
* Removed parameter verification to keep the client lean.
* Removed pre-GA notes as these functions are all GA'ed
* Fixed format of some other files .
jskeet and others added 22 commits May 18, 2026 05:02
This Pull Request drops support for Python <=3.9 in generated packages.
This is part of our ongoing effort to modernize the Cloud Python SDK
libraries and remove support for End-of-Life (EOL) Python versions.

- Removed Python <=3.9 from testing, configuration, and constraints
files.
- Resolved dependency conflicts arising from dropping Python <=3.9
support.
- Cleaned up obsolete code related to Python <=3.9 support.
- Updated select copyright dates
- Updated some autogenerated headings
- Updated some tests to resolve issues discovered during this migration.
…nly (#17062)

This is the result of regenerating all packages, but only committing
files which have only changed in a single line, and that's a copyright
line.
The changes include:
* Make all optional parameters default to None, which reduces the length
of compiled SQLs
* "Upper" the parameters at the API layer if necessary, so that we don't
need to repeat this logic in both compilers later
* Make all optional parameters default to None in the operator
definitions too, saving some lines in the unit tests

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
PR created by the Librarian CLI to initialize a release. Merging this PR
will auto trigger a release.

Librarian Version: v0.13.0
Language Image:
us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/python-librarian-generator@sha256:234b9d1f2ddb057ed7ac6a38db0bf8163d839c65c6cf88ade52530cddebce59e
<details><summary>bigframes: v2.40.0</summary>

##
[v2.40.0](bigframes-v2.39.0...bigframes-v2.40.0)
(2026-05-13)

### Features

* Add `bigframes.execution_history` API to track BigQuery jobs (#16588)
([fa20a74](fa20a740))
  ```python
  import bigframes.pandas as bpd
  bpd.options.compute.enable_execution_history = True
  df = bpd.read_gbq("my_table")
  # ... perform operations ...
  history = bpd.execution_history
  print(history.jobs) # Access BigQuery job details for executed queries
  ```

* Implement `ai.similarity` and `ai.embed` for text embeddings and
semantic similarity (#16771, #16759)
([d4afa2c](d4afa2c8),
[fcb4579](fcb4579b))
  ```python
  import bigframes.pandas as bpd
  # Generate embeddings
  df["embeddings"] = bpd.bigquery.ai.embed(df["text_col"])
  # Compute similarity
df["similarity"] = bpd.bigquery.ai.similarity(df["embeddings_a"],
df["embeddings_b"])
  ```

* Support `hparam_range` and `hparam_candidates` parameters for
hyperparameter tuning in model creation (#16640)
([ca47835](ca47835c))
* Update `ai.score`, `ai.classify` and `ai.if_` parameters to match
their SQL equivalents (#16919, #16990, #16857)
([9f42fe1](9f42fe14),
[e9c52b1](e9c52b12),
[f3cb4ad](f3cb4ad0))
* Support unstable sorting in `sort_values` and `sort_index` (#16665)
([bbdeb70](bbdeb70f))
* Support loading Avro and ORC data formats (#16555)
([6d46cba](6d46cba3))
* Add NumPy ufunc support directly on column expressions (#16554)
([2f792ab](2f792abd))

### Bug Fixes

* Fix bugs compiling ambiguous ids and in subqueries (#16617)
([479e44d](479e44dd))

* BigFrames respects bq default region (#16933)
([ef9945a](ef9945a5))

* avoid views when querying BigLake tables from SQL cells (#16562)
([fdd3e0d](fdd3e0de))

* avoid `copy` argument warning in `to_pandas` (#16917)
([fe5245b](fe5245b8))

### Performance Improvements

* Improve write api upload throughput (#16641)
([ef856b0](ef856b04))

### Documentation

* Add docs to the to_csv methods of dataframe and series (#16570)
([a8fccef](a8fccefd))

</details>
…6918)

**Overview**
This PR modernizes the tutorial notebooks across the BigFrames ecosystem
to align with the latest public API state and successfully completes the
migration path away from the deprecated internal .blob accessors and
private loading mechanisms (e.g. _from_glob_path).

The core objective is ensuring user-facing documentation perfectly
tracks active package behavior without invoking retirement warnings or
triggering internal attribute exceptions.

**Key Changes**
- Explicit URL Mapping: Replaced implicit complex type conversions
inside low-level AI function calls with deterministic, user-facing
patterns utilizing bbq.obj.get_access_url.
- Tutorial Stabilizations: Corrected a regression chain in
ai_movie_poster.ipynb wherein cascading dataframe types were left in raw
struct states, potentially breaking downstream filters. All extractions
are now strictly string-casted at generation time.
- Infrastructure Cleanup: Successfully replaced legacy references to
_from_glob_path and other private ingestion hooks with proper
bbq.obj.make_ref and standard read_gbq() patterns.
- Kaggle Integrity: Wrapped authentication segments in Kaggle notebooks
to prevent local import collisions and added missing output formatting.
- 

Fixes #< 478952827 > 🦕
Some lint errors sneaked in to the main branch of BigFrames.
This Pull Request drops support for Python <=3.9 in generated packages.
This is part of our ongoing effort to modernize the Cloud Python SDK
libraries and remove support for End-of-Life (EOL) Python versions.

- Removed Python <=3.9 from testing, configuration, and constraints
files.
- Resolved dependency conflicts arising from dropping Python <=3.9
support.
- Cleaned up obsolete code related to Python <=3.9 support.
- Updated select copyright dates
- Updated some autogenerated headings
- Updated some tests to resolve issues discovered during this migration.
This Pull Request drops support for Python <=3.9 in generated packages.
This is part of our ongoing effort to modernize the Cloud Python SDK
libraries and remove support for End-of-Life (EOL) Python versions.

- Removed Python <=3.9 from testing, configuration, and constraints
files.
- Resolved dependency conflicts arising from dropping Python <=3.9
support.
- Cleaned up obsolete code related to Python <=3.9 support.
- Updated select copyright dates
- Updated some autogenerated headings
- Updated some tests to resolve issues discovered during this migration.
This Pull Request drops support for Python <=3.9 in generated packages.
This is part of our ongoing effort to modernize the Cloud Python SDK
libraries and remove support for End-of-Life (EOL) Python versions.

- Removed Python <=3.9 from testing, configuration, and constraints
files.
- Resolved dependency conflicts arising from dropping Python <=3.9
support.
- Cleaned up obsolete code related to Python <=3.9 support.
- Updated select copyright dates
- Updated some autogenerated headings
- Updated some tests to resolve issues discovered during this migration.
This Pull Request drops support for Python <=3.9 in generated packages.
This is part of our ongoing effort to modernize the Cloud Python SDK
libraries and remove support for End-of-Life (EOL) Python versions.

- Removed Python <=3.9 from testing, configuration, and constraints
files.
- Resolved dependency conflicts arising from dropping Python <=3.9
support.
- Cleaned up obsolete code related to Python <=3.9 support.
- Updated select copyright dates
- Updated some autogenerated headings
- Updated some tests to resolve issues discovered during this migration.
…17127)

These packages have not yet been updated to generator version 1.32.0. We
should handle them with a separate PR per package which fixes any
post-processing files, unskips generation, and includes the generated
changes.

Packages skipped by this change:

- google-cloud-asset
- google-cloud-automl
- google-cloud-monitoring
- google-cloud-pubsub
- google-cloud-spanner
- google-cloud-storage
This is an already reviewed change as part of [this
PR](googleapis/python-spanner#1461) in old repo.

This change introduces logging for Spanner client options upon
initialization.

This allows customers to easily capture and inspect the configuration
being used, which is valuable for debugging and verification.

This feature mirrors the existing logSpannerOptions functionality in the
Java client, improving consistency across client libraries.
googleapis/java-spanner#4141
)

(This was caused by #17044, but wasn't caught *in* that PR as the
librarian version at the time wasn't checking for release consistency.)
Updates the Dialogflow API, which was previously blocked on a resource
name conflict.

This Pull Request also drops support for Python <=3.9 in generated
packages.
This is part of our ongoing effort to modernize the Cloud Python SDK
libraries and remove support for End-of-Life (EOL) Python versions.

- Removed Python <=3.9 from testing, configuration, and constraints
files.
- Resolved dependency conflicts arising from dropping Python <=3.9
support.
- Cleaned up obsolete code related to Python <=3.9 support.
- Updated select copyright dates
- Updated some autogenerated headings
- Updated some tests to resolve issues discovered during this migration.
This PR deprecates and cleans up experimental Multimodal Blob APIs in
BigQuery DataFrames to focus on core supported features.

Key Changes:

- Removed public APIs: from_glob_path and read_gbq_object_table were
removed from module exports and Session class.

- Exposed internal API: Added _from_glob_path as an internal API in the
module to support existing notebooks.


Fixes #<478952827> 🦕

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Relaxes DatasetReference.from_string and TableReference.from_string
validation.

Thank you for opening a Pull Request! Before submitting your PR, there
are a few things you can do to make sure it goes smoothly:
- [ ] Make sure to open an issue as a
[bug/issue](https://github.com/googleapis/google-cloud-python/issues)
before writing your code! That way we can discuss the change, evaluate
designs, and agree on the general idea
- [ ] Ensure the tests and linter pass
- [ ] Code coverage does not decrease (if any source code was changed)
- [ ] Appropriate docs were updated (if necessary)

Fixes b/512823729 🦕
…t FailedPrecondition and quota exhaustion (#17141)

Thank you for opening a Pull Request! Before submitting your PR, there
are a few things you can do to make sure it goes smoothly:
- [ ] Make sure to open an issue as a
[bug/issue](https://github.com/googleapis/google-cloud-python/issues)
before writing your code! That way we can discuss the change, evaluate
designs, and agree on the general idea
- [ ] Ensure the tests and linter pass
- [ ] Code coverage does not decrease (if any source code was changed)
- [ ] Appropriate docs were updated (if necessary)

### Root Cause
During Kokoro continuous test runs for Cloud Spanner samples, tests
restore databases from backups. The restored databases hold active
backend references to the backups (`backup.referencing_databases`) while
optimizing in the background.
During module teardown, `conftest.py` calls `database.drop()` and
immediately iterates to `backup.delete()`. Because `database.drop()` is
asynchronous on the Spanner backend, `backup.delete()` frequently fails
with a `FailedPrecondition` error (backup in use). This unhandled
exception crashes the fixture teardown generator, skipping
`instance.delete()` and leaking instances and backups.
As these leaked resources accumulate across frequent Kokoro runs in the
shared test project, subsequent runs fail due to `ResourceExhausted`
(quota exceeded) errors.
### Solution
- Created a robust retry helper (`retry_cleanup`) that retries on both
`ResourceExhausted` and `FailedPrecondition`.
- Isolated individual database drops and backup deletions within
`try...except exceptions.GoogleAPICallError` blocks so that an error on
a single resource never aborts the scrubbing generator.
- Unified this robust scrubbing logic across `cleanup_old_instances`,
`sample_instance`, and `multi_region_instance` teardown fixtures.
…st (#17140)

Thank you for opening a Pull Request! Before submitting your PR, there
are a few things you can do to make sure it goes smoothly:
- [ ] Make sure to open an issue as a
[bug/issue](https://github.com/googleapis/google-cloud-python/issues)
before writing your code! That way we can discuss the change, evaluate
designs, and agree on the general idea
- [ ] Ensure the tests and linter pass
- [ ] Code coverage does not decrease (if any source code was changed)
- [ ] Appropriate docs were updated (if necessary)

### Root Cause
In Python 3.13 (and under recent `pytest-asyncio` / `asyncio` runtimes),
the asynchronous event loop and task scheduling infrastructure makes
internal calls to `time.time()` during coroutine execution and retry
delay handling.

In `test_run_in_transaction_w_abort_w_retry_metadata_deadline`,
`time.time` was mocked using a helper that popped from a fixed 2-element
list on every invocation (`_results.pop(0)`). The extra internal event
loop calls exhausted `_results` prematurely, deterministically raising
an `IndexError: pop from empty list` when `_delay_until_retry` checked
the deadline.

### Solution
Updated the `_time` mock helper in
`packages/google-cloud-spanner/tests/unit/_async/test_session.py` to
return the last timestamp repeatedly once `_results` has reached its
final element:
```python
def _time(_results=[1, 1.5]):
    if len(_results) > 1:
        return _results.pop(0)
    return _results[0]
@nidhiii-27 nidhiii-27 requested review from a team as code owners May 18, 2026 05:03
@nidhiii-27 nidhiii-27 requested review from TrevorBergeron and removed request for a team May 18, 2026 05:03
@nidhiii-27 nidhiii-27 closed this May 18, 2026
@nidhiii-27 nidhiii-27 deleted the feat-storage-compose-delete-source-objects-5220279067164674388 branch May 18, 2026 05:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.