Skip to content

chore: librarian release pull request: 20260529T144404Z - #5

Open
suztomo wants to merge 10000 commits into
mainfrom
librarian-20260529T144404Z
Open

suztomo wants to merge 10000 commits into
mainfrom
librarian-20260529T144404Z

Conversation

@suztomo

@suztomo suztomo commented May 29, 2026

Copy link
Copy Markdown
Owner

PR created by the Librarian CLI to initialize a release. Merging this PR will auto trigger a release.

Librarian Version: v0.15.1-0.20260528141105-567c9bf1faa7
Language Image: us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/python-librarian-generator@sha256:234b9d1f2ddb057ed7ac6a38db0bf8163d839c65c6cf88ade52530cddebce59e

google-maps-mapmanagement: v0.1.0

v0.1.0 (2026-05-29)

Features

Jon Skeet and others added 30 commits April 30, 2026 09:57
…ig (googleapis#16883)

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> 🦕
…port (googleapis#16720)

In order for the gcloud CLI to support Regional Access Boundary, the
Python auth SDK needs to support blocking lookups as well as allowing an
initial seed RAB to be provided (gcloud will set this seed if the CLI
has a locally cached valid RAB available).

Additional details can be found at
[go/rab-python-gcloud-one-pager](https://docs.google.com/document/d/1PvwqXp-jznleIpA8UzXU9of6sMvHPZA8HN_TSSsWFcc/edit?resourcekey=0-yQowO9bsBsHdv_60zQsKnA&tab=t.0)

---------

Co-authored-by: nbayati <99771966+nbayati@users.noreply.github.com>
…gleapis#16857)

Reference:
https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-ai-if

I left out the `embeddings` param to keep things simple. It will be
introduced later.

---------

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.11.0
Language Image:
us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/python-librarian-generator@sha256:234b9d1f2ddb057ed7ac6a38db0bf8163d839c65c6cf88ade52530cddebce59e
<details><summary>django-google-spanner: v5.0.0</summary>

##
[v5.0.0](noahdietz/google-cloud-python@django-google-spanner-v4.0.3...django-google-spanner-v5.0.0)
(2026-04-30)

### Breaking changes

* Dropped support for Django 3.2 and 4.2.
* Minimum supported Python version is now 3.10 (as required by Django
5.2).

### Features

* Add support for Django 5.2

</details>
This PR was created outside of librarian due to b/501132869. b/501132869
should be resolved soon. In the meantime, we need to publish
`value_bitmask_filter` to avoid blocking other teams.

Steps used to create this PR

- Clone
[googleapis/googleapis](https://github.com/googleapis/googleapis) and
checkout the last generated commit
`a6cbf809c4c165e618ee23a059442af90a80a0f5` which matches what we have in
.librarian/state.yaml


https://github.com/googleapis/google-cloud-python/blob/8fa0f81cb35f93210ffb2020a8bc822a9eee5ec4/.librarian/state.yaml#L1169

- Apply this diff

```
(py392) partheniou@partheniou-vm-3:~/git/googleapis$ git diff
diff --git a/google/bigtable/v2/data.proto b/google/bigtable/v2/data.proto
index 8320a0c22f..af354b05a2 100644
--- a/google/bigtable/v2/data.proto
+++ b/google/bigtable/v2/data.proto
@@ -255,6 +255,15 @@ message ValueRange {
   }
 }
 
+// Restricts the output to cells whose values match the given bitmask.
+message ValueBitmask {
+  // Required. Mask applied to the value.
+  // Evaluated as: `(value & mask) == mask`
+  // The mask length must exactly match the value length, otherwise the cell is
+  // not considered a match.
+  bytes mask = 1 [(google.api.field_behavior) = REQUIRED];
+}
+
 // Takes a row as input and produces an alternate view of the row based on
 // specified rules. For example, a RowFilter might trim down a row to include
 // just the cells from columns matching a given regular expression, or might
@@ -514,6 +523,12 @@ message RowFilter {
     // will be applied to separate copies of the input. This may be relaxed in
     // the future.
     string apply_label_transformer = 19;
+
+    // Matches only cells with values that satisfy the condition `(value & mask)
+    // == mask`.
+    // The mask length must exactly match the value length, otherwise the cell
+    // is not considered a match.
+    ValueBitmask value_bitmask_filter = 20;
   }
 }
```

- Clone this repo. Checkout commit
`6cb5af5227e09e99ee12bb3542374f683b75d4b4` which is the last commit
where generation was run:

https://github.com/googleapis/google-cloud-python/commits/main/packages/google-cloud-bigtable

- Run `legacylibrarian generate
--api-source=<path/to/clone/of/googleapis>
--library=google-cloud-bigtable` to regenerate the library using the
local version of googleapis

- Revert changes to `.librarian/state.yaml`

Closes googleapis#16884
…6902)

PR created by the Librarian CLI to initialize a release. Merging this PR
will auto trigger a release.

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

##
[v2.50.0](googleapis/google-cloud-python@google-auth-v2.49.2...google-auth-v2.50.0)
(2026-04-30)

</details>
…6904)

PR created by the Librarian CLI to initialize a release. Merging this PR
will auto trigger a release.

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

##
[v2.37.0](googleapis/google-cloud-python@google-cloud-bigtable-v2.36.0...google-cloud-bigtable-v2.37.0)
(2026-04-30)

</details>
This isn't really generated, but this change will get
`.repo-metadata.json` up-to-date.

The package previously had generation disabled due to test failures.
Librarian is currently using an older version of Python; changing the
regex is simpler than updating Python. The generated docs link has
changed now that we've removed overrides.

This does not re-enable Bigtable generation, but means it'll be simpler
to get it generating again when other aspects are ready.
…gleapis#16900)

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> 🦕
…pis#16838)

This PR improves the accuracy of microbenchmark throughput calculations
by:
- Using `time.perf_counter()` for high-resolution timing.
- Tracking actual measured intervals for each worker thread/process.
- Correcting the aggregation logic for multi-process/multi-coroutine
runs.
- Updating reporting to handle granular duration data.
…rator (googleapis#16910)

> [!note]
> This PR has been updated to remove 3.7, 3.8, and 3.9 (with one
exception discussed below).

### Overview
This Pull Request updates the gapic-generator package and related CI
configurations to reflect the deprecation of Python 3.7 through 3.9. It
updates documentation, templates, and CI scripts to establish Python
3.10 as the new minimum supported version where applicable.

### Changes
#### Documentation:
* Updated installation and verification instructions in
packages/gapic-generator/docs to reference Python 3.10
#### Templates:
* Updated __init__.py.j2 templates in gapic/ads-templates to require
Python 3.10+ (updating sys.version_info checks and error messages).
* Removed outdated comments regarding Python 3.9 and below features
(like module-level __getattr__) to avoid confusion, as the baseline
runtime is now higher than the version noted in the comments.
* Updated mypy.ini.j2 to target Python 3.10.
* Cleaned up dead code (e.g. commented-out Jinja snippets) in the
templates.
#### CI Configurations:
* Removed Python 3.9 and below from the unit test matrix in
ci/run_single_test.sh.
* Updated comments regarding supported Python versions in
ci/run_conditional_tests.sh.

### Reasoning
Python 3.9 and below have reached End-of-Life (EOL) and are no longer
supported. These changes ensure that our generator and the libraries it
produces align with current support policies and reduce maintenance
burden by removing dead code paths.

> [!note]
> because the config that runs this PR checks is not updated yet, it
still wants to run 3.9 so we have a temp change to skip that nox
session. Once this PR merges future PRs will no longer attempt to run
3.9 and we will follow-up with a small PR to strip out that last 3.9
reference.



Fixes internal issue: http://b/482126936 🦕
chalmerlowe and others added 30 commits May 26, 2026 04:24
This adds a utility with the ability to scan for common references to
dependencies (Python runtimes and package dependencies) to facilitate
updating code when runtimes and dependencies change.

* It can be run against an entire repo OR against specific packages
within a monorepo
* It is customizable with [regex patterns and examples
here](https://github.com/googleapis/google-cloud-python/pull/16867/changes#diff-d17423afcf0604a287af7c6a590da37df7105674bbb715248d4f0c53545f3ea9)
* The test suite checks each regex against the examples to ensure the
efficacy of the patterns
* The current patterns account for edge cases such as finding `< 3.8`
when searching for references to `3.7` since they are semantically
equivalent even if syntactically different.
* The scanner produces a CSV report with:
```
path/filename, package name, line number, matching pattern, full line for context, etc.
```
This pull request bumps the Librarian version to v0.15.0.

The generate-all command (`google-cloud-python$ docker run -u $(id
-u):$(id -g) -v .:/repo -v ~/.cache:/.cache -w /repo
docker.io/library/librarian-python:${V} generate -v --all`) did not make
any code changes.
…is#17247)

This PR updates python to establish version 3.10 as the minimum
supported version.

### Changes

* **Configuration & Dependencies**:
* Updated the Python support matrix and classifiers across `setup.py`,
`noxfile.py`, and `CONTRIBUTING.rst` to require Python `>= 3.10`.
  * Regenerated and synchronized EOL runtime constraints files.
* Cleaned up and pruned obsolete warning filters inside `pytest.ini`
that were previously used for Python < 3.10.

* **Test Suite Enhancements**:
* Refactored `test_pipeline_explain_options_explain_mode` inside both
`test_system.py` and `test_system_async.py`.
* Previously, the tests expected an `InvalidArgument` exception since
Explain mode wasn't supported on pipeline queries. Since the live
backend now natively supports Explain mode on Pipeline queries, the
tests were updated to assert **successful plan metrics execution** and
verify that the correct `ExplainStats` protobuf structures are returned.

* **Librarian Generator Post-Processing**:
* Configured and integrated permanent EOL post-processing rules directly
inside
`.librarian/generator-input/client-post-processing/firestore-integration.yaml`
to ensure that all future gapic-generator runs automatically preserve
these EOL constraints changes and avoid generator overwrites.
…io errors. (googleapis#17260)

This PR updates the Python GAPIC generator templates to support modern
EOL Python support drops natively across the entire SDK.

### Changes
* **setup.py.j2**: Bumps the baseline minimum `grpcio` dependency
requirement to `>= 1.59.0`. This robust minimum requirement resolves the
`pytest-asyncio` event loop regressions universally, removing the need
for custom `pytest-asyncio` overrides.
* **noxfile.py.j2**: Replaced the hardcoded constraints path with a
dynamic constraints file path resolver at runtime, ensuring that
monorepos natively resolve to their version-specific constraints files
(e.g., `testing/constraints-3.10.txt`).
* **pytest-asyncio** Updates the gapic-generator in order to resolve an
issue with `pytest-asyncio` failures across Python runtimes 3.10 - 3.14.
…er (googleapis#17269)

### Problem
The `lower-bound-checker` tool has a parsing limitation in
`_lower_bound()` where any dependency specifiers containing exclusion
constraints (like `!=2.24.0` in `google-auth`) could cause the parser to
raise an `IndeterminableLowerBound` exception and fail.

### Solution
Updated `_lower_bound` in
`packages/google-cloud-testutils/test_utils/lower_bound_checker/lower_bound_checker.py`
to filter out `!=` exclusion operators from the set of specifiers before
determining the lower bound of the package. Since an exclusion operator
does not change the lower bound itself, this allows dependencies with
exclusions (like `packaging>=14.0, !=15.0` or `google-auth>=1.25.0,
!=2.24.0`) to be parsed successfully and their lower bounds resolved
correctly.

### Verification
1. Added new direct unit tests to
`packages/google-cloud-testutils/tests/unit/test_lower_bound_checker.py`
to verify `_lower_bound()` behaves as expected under single and multiple
exclusion constraints.
2. Updated existing end-to-end/integration tests in the test suite to
reflect the updated expectation (previously, `packaging>=14.0, !=15.0`
in the bad package dummy setup.py failed to parse and was in the invalid
package list; now, it is successfully parsed, and is no longer in the
invalid package list).
…e failure and correct `if` block (googleapis#17268)

During another PR, a failure in the cover nox session pointed at a lack
of unit test coverage for this recent addition to the repo. As a
constant, there is little benefit to instituting a unit test here. Adds
`# pragma: NO COVER` to `constants.py` to resolve the 100% coverage
check failure.

In addition a `select` function was inadvertently left out of an `if`
code block to correctly respond when feature does NOT have
`auto_populated_fields` during a recent generator update (~ 20260512).
* This error only shows up as an issue when code is generated in
packages that do not have `auto_populated_fields` and have been
generated very recently. In this case, during updates to
`google-cloud-logging`, we ran into this issue.
…7272)

PR created by the Librarian CLI to initialize a release. Merging this PR
will auto trigger a release.

Librarian Version: v0.15.0
Language Image:
us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/python-librarian-generator@sha256:234b9d1f2ddb057ed7ac6a38db0bf8163d839c65c6cf88ade52530cddebce59e
<details><summary>gapic-generator: v1.34.0</summary>

##
[v1.34.0](googleapis/google-cloud-python@gapic-generator-v1.33.0...gapic-generator-v1.34.0)
(2026-05-27)

### Bug Fixes

* add pragma to `constants.py` to resolve coverage failure and correct
`if` block (googleapis#17268)
([1436a23](googleapis@1436a23c))

* update incorrect urls in setup.py to point at monorepo vs splitrepo
(googleapis#17237)
([eaed04b](googleapis@eaed04ba))

</details>
…gleapis#17224)

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> 🦕
Remove installing dependencies for system tests from
`core_deps_from_source` and `prerelease_deps` nox sessions which only
run unit tests.
…oogleapis#17264)

Added "F" (Pyflakes) rules to the nox commands, which check unused imports and variables.
…essages (googleapis#17273)

This PR resolves the following failure in
googleapis#17245 ([build
log](https://github.com/googleapis/google-cloud-python/actions/runs/26527262176/job/78134171625?pr=17245))

```
==================================== ERRORS ====================================
_ ERROR collecting tests/unit/gapic/bigtable_admin_v2/test_bigtable_instance_admin.py _
tests/unit/gapic/bigtable_admin_v2/test_bigtable_instance_admin.py:7259: in <module>
    iam_policy_pb2.GetIamPolicyRequest({}),
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E   TypeError: _AddInitMethod.<locals>.init() takes 1 positional argument but 2 were given
_ ERROR collecting tests/unit/gapic/bigtable_admin_v2/test_bigtable_table_admin.py _
tests/unit/gapic/bigtable_admin_v2/test_bigtable_table_admin.py:11222: in <module>
    iam_policy_pb2.GetIamPolicyRequest({}),
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E   TypeError: _AddInitMethod.<locals>.init() takes 1 positional argument but 2 were given
```


To resolve the issue, this PR adds `**` to unpack fields as keyword
arguments, maintaining compatibility with both proto-plus and pure
protobuf messages.
…ogleapis#17276)

This PR updates the `google-cloud-logging` library to drop support for
end-of-life Python runtimes (3.7, 3.8, and 3.9) and modernize package
metadata and dependency constraints for Python 3.10+.

### Changes
* **Librarian Config**: Edited setup.py replacement in
`.librarian/generator-input/client-post-processing/logging-integration.yaml`
and added post-processing injection rules for
`testing/constraints-3.10.txt`.
* **Regeneration**: Re-compiled GAPIC client services cleanly using
`gapic-generator v1.33.0`, natively incorporating the `set_event_loop`
autouse asyncio loop fixture inside all service unit tests.
* **Codebase EOL Cleanup**: Removed obsolete warning filters from
`pytest.ini` and EOL skips from `test_logger.py` and `CONTRIBUTING.rst`.

🦕
…7280)

PR created by the Librarian CLI to initialize a release. Merging this PR
will auto trigger a release.

Librarian Version: v0.15.0
Language Image:
us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/python-librarian-generator@sha256:234b9d1f2ddb057ed7ac6a38db0bf8163d839c65c6cf88ade52530cddebce59e
<details><summary>gapic-generator: v1.34.1</summary>

##
[v1.34.1](googleapis/google-cloud-python@gapic-generator-v1.34.0...gapic-generator-v1.34.1)
(2026-05-27)

</details>
…is#17274)

They are copied from
https://github.com/googleapis/python-bigquery-dataframes/tree/main/.kokoro/continuous,
and are missing in the current setup.

Also removed "load" command from the `continuous-bigframes` config as we
already have a separated config for that test.

internal issue: b/509623551
…gle-spanner (googleapis#17284)

## Description
This PR implements missing nox sessions and refactors dependency
management inside `packages/django-google-spanner/noxfile.py` to align
with google-cloud standard practices.

---

## Key Changes

### 1. Constants Architecture
All dependencies and version definitions have been concentrated at the
top of `noxfile.py` in nestled, unpinned constants:
* `UNIT_TEST_STANDARD_DEPENDENCIES`: Standard testing frameworks/runners
(`mock`, `pytest`, `pytest-cov`, `coverage`).
* `UNIT_TEST_EXTERNAL_DEPENDENCIES`: Telemetry and setuptools helpers
(unpinned to delegate versioning strictly to `setup.py` and lower-bounds
in `constraints.txt`).
* `UNIT_TEST_DEPENDENCIES`: Connector library requirements
(`django~=5.2` and `sqlparse==0.3.1` pinned to protect SQL compiler
string assertions).
* `UNIT_TEST_MOCKSERVER_DEPENDENCIES`: Specialized mockserver overrides
(`django~=5.2`, `google-cloud-spanner>=3.55.0`, `sqlparse>=0.4.4`).

#### NOTES:
* **`core_deps_from_source` & `prerelease_deps`**: Standard dependencies
are first installed normally from PyPI, and then target core packages
are cleanly overwritten with local source paths/pre-releases using pip's
native `--ignore-installed --no-deps` flags.
* **`mypy`**: Implemented and configured to skip gracefully with a
standard `TODO` issue link (`issue/17047`) indicating that typehints
will be added on a separate task.
* **`format`**: Integrated standard Ruff formatting and import sorting.
Update Kokoro configs for google-cloud-python continuous and presubmit
jobs.

This will allow us to run `prerelease_deps` and `core_deps_from_source`
as part of the kokoro continuous job only, enabling us to remove the GHA
running these tests as part of the presubmit.

Googlers see: cl/922769555

Fixes: googleapis#17243
chore: enable generation / release for bigtable

Fixes b/510022189, b/507893758, b/507889482, b/503326310
Remove `prerelease` and `core_deps_from_source` tests from running in
GHA as part of presubmits. These tests will now be run as part of a
continuous Kokoro job instead.

Fixes googleapis#17243
Initialized an Angular workspace within
bigframes/display/table_widget_angular and configured a custom build
pipeline using esbuild to generate a single-file ESM output. This
establishes the infrastructure required for the planned Angular hybrid
approach for TableWidget.

Verified at: screen/8uAnJEYQr9nx655

Fixes #<505414691> 🦕
This PR removes the hardcoded list of packages in `.kokoro/system.sh` ,
to determine whether system tests should run, which is error prone. For
example, `google-cloud-bigquery` was missing from the list so system
tests would only run in release PRs.

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
`$ docker run -u $(id -u):$(id -g) -v .:/repo -v ~/.cache:/.cache -w
/repo docker.io/library/librarian-python:${V} generate -v
google-cloud-geminidataanalytics` where V is
`v0.15.1-0.20260528141105-567c9bf1faa7`.
PR created by the Librarian CLI to initialize a release. Merging this PR
will auto trigger a release.

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

##
[v2.41.0](googleapis/google-cloud-python@bigframes-v2.40.0...bigframes-v2.41.0)
(2026-05-28)

### Features

* support output_mode for ai.classify (googleapis#17097)
([098c35c](googleapis@098c35c5))

* complete deprecation and cleanup of multimodal blob APIs (googleapis#16618)
([3624f3b](googleapis@3624f3bb))

* set up Angular infrastructure for TableWidget (googleapis#16934)
([4d20bab](googleapis@4d20bab8))

* add more scalar array functions to `bigframes.bigquery` (googleapis#17213)
([4f8a6c8](googleapis@4f8a6c81))

* add `bigframes.bigquery.deterministic_decrypt*` and
`bigframes.bigquery.deterministic_encrypt` functions (googleapis#17212)
([85f3672](googleapis@85f36725))

* add `bigframes.bigquery.aead.*` scalar functions (googleapis#17168)
([a7e4d04](googleapis@a7e4d048))

* Defer unnamed @udf deployment until needed (googleapis#17217)
([ad3b8fa](googleapis@ad3b8fa9))

* support pandas inputs in more bigframes.bigquery functions (googleapis#17224)
([d4d8855](googleapis@d4d88554))

### Bug Fixes

* cast JSON and nested struct columns to string for anywidget rendering
(googleapis#17189)
([994a22d](googleapis@994a22d6))

* Respect display.progress_bar=None in background threads (googleapis#16715)
([07dd331](googleapis@07dd3315))

### Dependencies

* bump mistune from 3.1.3 to 3.2.1 in /packages/bigframes (googleapis#17202)
([52f2178](googleapis@52f21788))

* bump langsmith from 0.4.10 to 0.8.0 in /packages/bigframes (googleapis#17210)
([9dd0c02](googleapis@9dd0c02c))

* bump gdal from 3.8.4 to 3.13.0 in /packages/bigframes (googleapis#17204)
([900007b](googleapis@900007ba))

### Documentation

* modernize multimodal tutorials and migrate legacy blob APIs (googleapis#16918)
([05d80c3](googleapis@05d80c3c))

</details>
…gleapis#17290)

This pull request bumps the Librarian version to
v0.15.1-0.20260528141105-567c9bf1faa7

The generate-all command (google-cloud-python$ docker run -u $(id
-u):$(id -g) -v .:/repo -v ~/.cache:/.cache -w /repo
docker.io/library/librarian-python:${V} generate -v --all) made the code
changes in
googleapis@f352cbd
. The other commits are handwritten
…-spanner (googleapis#17285)

## Description
This PR implements missing nox sessions and refactors dependency
management inside `packages/sqlalchemy-spanner/noxfile.py` to align with
google-cloud standard practices.

---

## Key Changes

### 1. Constants Architecture
All dependencies and version definitions have been concentrated at the
top of `noxfile.py` in nestled constants:
* `UNIT_TEST_STANDARD_DEPENDENCIES`: Standard testing frameworks
(`mock`, `pytest`).
* `UNIT_TEST_EXTERNAL_DEPENDENCIES`: Telemetry requirements (fully
unpinned: `setuptools`, `opentelemetry-api`, `opentelemetry-sdk`,
`opentelemetry-instrumentation` to delegate version resolution strictly
to `setup.py` and `constraints`).
* `UNIT_TEST_DEPENDENCIES`: SQLAlchemy version specifications under test
(`sqlalchemy>=2.0`).

### 2. Expired database management
Updated the `create_test_database.py` file to add or tweak code to
ensure that expired databases are quickly deleted. During rapid
development cycles, the Spanner database count would quickly reach the
Spanner limit of 100 and system tests would fail. There were two
conditions that contributed being unable to quickly retest. In some
cases the system would not delete old databases at all because certain
triggers were not created. And in other cases, you needed to wait 4
hours before the databases would age off and you could run the system
tests again.

### NOTES:
* **`core_deps_from_source` & `prerelease_deps`**: Target packages are
cleanly overwritten with local source paths/pre-releases using pip's
native `--ignore-installed --no-deps` flags.
* **`mypy` & `docs` & `docfx`**: Configured to skip gracefully with
standard todos indicating that typehints and docs folders are not
present in this package.
* **`cover`**: Added standard coverage session which skips gracefully if
no `.coverage` database file has been created yet.
* **`format`**: Implemented Ruff format and check sessions, and
reformatted imports and code to team standards.

Fixes googleapis#17048 🦖
…ce with Spanner Omni (googleapis#17246)

This PR deprecates the `experimental_host` parameter across public
`Client`, `AsyncClient`, and DB-API `connect` interfaces, introducing
the new unified `instance_type` parameter.

The `instance_type` option supports `cloud` and `omni` connection types;
setting the type to `cloud` currently acts as a no-op, whereas
establishing a connection to a Spanner Omni instance strictly requires
setting `instance_type="omni"`.

Internally, all private `_experimental_host` attributes have been purged
and refactored to dynamically resolve endpoints via client properties,
all public docs-strings have been updated to describe this behavior.

Refer to discussion: [Spanner Client Library Configuration for
Omni](https://docs.google.com/document/d/1n-rsHkNAEwQbaICHKlFhPl3NN8a3QuOknn_tEhaowZQ/edit?resourcekey=0-LnCt0jSFXCoSuVttphq3FQ&tab=t.0)

Similar PR in java-spanner
googleapis/google-cloud-java#13236
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.